diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java index 78779db1c..d43553de0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/MappingElasticsearchEntityInformation.java @@ -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"); * 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.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; -import org.springframework.data.mapping.model.BeanWrapper; -import org.springframework.data.repository.core.support.AbstractEntityInformation; +import org.springframework.data.repository.core.support.PersistentEntityInformation; import org.springframework.util.Assert; /** @@ -34,44 +33,27 @@ import org.springframework.util.Assert; * @author Rizwan Idrees * @author Mohsin Husen * @author Ryan Henszey + * @author Oliver Gierke */ -public class MappingElasticsearchEntityInformation extends AbstractEntityInformation +public class MappingElasticsearchEntityInformation extends PersistentEntityInformation implements ElasticsearchEntityInformation { private static final Logger logger = LoggerFactory.getLogger(MappingElasticsearchEntityInformation.class); private final ElasticsearchPersistentEntity entityMetadata; private final String indexName; private final String type; - private Class idClass; public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity entity) { this(entity, null, null); } public MappingElasticsearchEntityInformation(ElasticsearchPersistentEntity entity, String indexName, String type) { - super(entity.getType()); + super(entity); this.entityMetadata = entity; this.indexName = indexName; 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 getIdType() { - return (Class) idClass; - } @Override public String getIdAttribute() { @@ -96,7 +78,7 @@ public class MappingElasticsearchEntityInformation e ElasticsearchPersistentProperty versionProperty = entityMetadata.getVersionProperty(); try { if (versionProperty != null) { - return (Long) BeanWrapper.create(entity, null).getProperty(versionProperty); + return (Long) entityMetadata.getPropertyAccessor(entity).getProperty(versionProperty); } } catch (Exception e) { throw new IllegalStateException("failed to load version field", e); @@ -109,7 +91,7 @@ public class MappingElasticsearchEntityInformation e ElasticsearchPersistentProperty parentProperty = entityMetadata.getParentIdProperty(); try { if (parentProperty != null) { - return (String) BeanWrapper.create(entity, null).getProperty(parentProperty); + return (String) entityMetadata.getPropertyAccessor(entity).getProperty(parentProperty); } } catch (Exception e) { throw new IllegalStateException("failed to load parent ID: " + e, e);