mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-07-04 01:32:11 +00:00
DATASOLR-250 - Switched to PersistentEntityInformation to avoid reference to BeanWrapper.
MappingElasticsearchEntityInformation now extends PersistentEntityInformation over AbstractInformation to be able to use the default implementations of getId(…) and getIdType(). Related ticket: DATACMNS-738.
This commit is contained in:
parent
9524b2cc8d
commit
ae1a873705
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013 the original author or authors.
|
* Copyright 2013-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -21,8 +21,7 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
|
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
|
||||||
import org.springframework.data.mapping.model.BeanWrapper;
|
import org.springframework.data.repository.core.support.PersistentEntityInformation;
|
||||||
import org.springframework.data.repository.core.support.AbstractEntityInformation;
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,44 +33,27 @@ import org.springframework.util.Assert;
|
|||||||
* @author Rizwan Idrees
|
* @author Rizwan Idrees
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
* @author Ryan Henszey
|
* @author Ryan Henszey
|
||||||
|
* @author Oliver Gierke
|
||||||
*/
|
*/
|
||||||
public class MappingElasticsearchEntityInformation<T, ID extends Serializable> extends AbstractEntityInformation<T, ID>
|
public class MappingElasticsearchEntityInformation<T, ID extends Serializable> extends PersistentEntityInformation<T, ID>
|
||||||
implements ElasticsearchEntityInformation<T, ID> {
|
implements ElasticsearchEntityInformation<T, ID> {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(MappingElasticsearchEntityInformation.class);
|
private static final Logger logger = LoggerFactory.getLogger(MappingElasticsearchEntityInformation.class);
|
||||||
private final ElasticsearchPersistentEntity<T> entityMetadata;
|
private final ElasticsearchPersistentEntity<T> entityMetadata;
|
||||||
private final String indexName;
|
private final String indexName;
|
||||||
private final String type;
|
private final String type;
|
||||||
private Class<?> idClass;
|
|
||||||
|
|
||||||
public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity<T> entity) {
|
public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity<T> entity) {
|
||||||
this(entity, null, null);
|
this(entity, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity<T> entity, String indexName, String type) {
|
public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity<T> entity, String indexName, String type) {
|
||||||
super(entity.getType());
|
super(entity);
|
||||||
this.entityMetadata = entity;
|
this.entityMetadata = entity;
|
||||||
this.indexName = indexName;
|
this.indexName = indexName;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.idClass = entity.getIdProperty().getType();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public ID getId(T entity) {
|
|
||||||
ElasticsearchPersistentProperty id = entityMetadata.getIdProperty();
|
|
||||||
try {
|
|
||||||
return (ID) BeanWrapper.create(entity, null).getProperty(id);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new IllegalStateException("ID could not be resolved", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
|
||||||
public Class<ID> getIdType() {
|
|
||||||
return (Class<ID>) idClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getIdAttribute() {
|
public String getIdAttribute() {
|
||||||
@ -96,7 +78,7 @@ public class MappingElasticsearchEntityInformation<T, ID extends Serializable> e
|
|||||||
ElasticsearchPersistentProperty versionProperty = entityMetadata.getVersionProperty();
|
ElasticsearchPersistentProperty versionProperty = entityMetadata.getVersionProperty();
|
||||||
try {
|
try {
|
||||||
if (versionProperty != null) {
|
if (versionProperty != null) {
|
||||||
return (Long) BeanWrapper.create(entity, null).getProperty(versionProperty);
|
return (Long) entityMetadata.getPropertyAccessor(entity).getProperty(versionProperty);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalStateException("failed to load version field", e);
|
throw new IllegalStateException("failed to load version field", e);
|
||||||
@ -109,7 +91,7 @@ public class MappingElasticsearchEntityInformation<T, ID extends Serializable> e
|
|||||||
ElasticsearchPersistentProperty parentProperty = entityMetadata.getParentIdProperty();
|
ElasticsearchPersistentProperty parentProperty = entityMetadata.getParentIdProperty();
|
||||||
try {
|
try {
|
||||||
if (parentProperty != null) {
|
if (parentProperty != null) {
|
||||||
return (String) BeanWrapper.create(entity, null).getProperty(parentProperty);
|
return (String) entityMetadata.getPropertyAccessor(entity).getProperty(parentProperty);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalStateException("failed to load parent ID: " + e, e);
|
throw new IllegalStateException("failed to load parent ID: " + e, e);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user