diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/PersistableEntityMetadata.java b/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/PersistableEntityMetadata.java index 63ba9b016..bd2c16313 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/PersistableEntityMetadata.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/PersistableEntityMetadata.java @@ -26,17 +26,17 @@ import org.springframework.data.domain.Persistable; * @author Oliver Gierke */ @SuppressWarnings("rawtypes") -public class PersistableEntityMetadata extends - AbstractEntityMetadata { +public class PersistableEntityMetadata extends + AbstractEntityMetadata { /** * Creates a new {@link PersistableEntityMetadata}. * * @param domainClass */ - public PersistableEntityMetadata() { + public PersistableEntityMetadata(Class domainClass) { - super(Persistable.class); + super(domainClass); } @@ -48,7 +48,7 @@ public class PersistableEntityMetadata extends * .Object) */ @Override - public boolean isNew(Persistable entity) { + public boolean isNew(T entity) { return entity.isNew(); } @@ -61,7 +61,7 @@ public class PersistableEntityMetadata extends * org.springframework.data.repository.support.IdAware#getId(java.lang.Object * ) */ - public Object getId(Persistable entity) { + public Object getId(T entity) { return entity.getId(); } diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityInformationTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityInformationTests.java deleted file mode 100644 index 502a093e5..000000000 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityInformationTests.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2008-2010 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.repository.support; - -import static org.hamcrest.CoreMatchers.*; -import static org.junit.Assert.*; - -import org.junit.Test; -import org.springframework.data.domain.Persistable; - - -/** - * Unit test for {@link PersistableEntityMetadata}. - * - * @author Oliver Gierke - */ -public class PersistableEntityInformationTests { - - @Test - public void detectsPersistableCorrectly() throws Exception { - - PersistableEntityMetadata info = new PersistableEntityMetadata(); - - assertNewAndNoId(info, new PersistableEntity(null)); - assertNotNewAndId(info, new PersistableEntity(1L), 1L); - } - - - @SuppressWarnings("rawtypes") - private > void assertNewAndNoId( - S info, Persistable entity) { - - assertThat(info.isNew(entity), is(true)); - assertThat(info.getId(entity), is(nullValue())); - } - - - @SuppressWarnings("rawtypes") - private > void assertNotNewAndId( - S info, Persistable entity, Object id) { - - assertThat(info.isNew(entity), is(false)); - assertThat(info.getId(entity), is(id)); - } - - static class PersistableEntity implements Persistable { - - private static final long serialVersionUID = -5898780128204716452L; - - private final Long id; - - - public PersistableEntity(Long id) { - - this.id = id; - } - - - public Long getId() { - - return id; - } - - - public boolean isNew() { - - return id == null; - } - } -} diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityMetadataUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityMetadataUnitTests.java index b22620b91..a376376d9 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityMetadataUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/PersistableEntityMetadataUnitTests.java @@ -34,15 +34,15 @@ import org.springframework.data.domain.Persistable; @RunWith(MockitoJUnitRunner.class) public class PersistableEntityMetadataUnitTests { - static final PersistableEntityMetadata metadata = - new PersistableEntityMetadata(); + @SuppressWarnings("rawtypes") + static final PersistableEntityMetadata metadata = + new PersistableEntityMetadata(Persistable.class); @Mock Persistable persistable; @Test - @SuppressWarnings("serial") public void usesPersistablesGetId() throws Exception { when(persistable.getId()).thenReturn(2L, 1L, 3L); @@ -59,4 +59,30 @@ public class PersistableEntityMetadataUnitTests { assertThat(metadata.isNew(persistable), is(true)); assertThat(metadata.isNew(persistable), is(false)); } + + + @Test + public void returnsGivenClassAsEntityType() throws Exception { + + PersistableEntityMetadata info = + new PersistableEntityMetadata( + PersistableEntity.class); + + assertEquals(PersistableEntity.class, info.getJavaType()); + } + + @SuppressWarnings("serial") + static class PersistableEntity implements Persistable { + + public Long getId() { + + return null; + } + + + public boolean isNew() { + + return false; + } + } } diff --git a/src/main/resources/changelog.txt b/src/main/resources/changelog.txt index 6378d132e..be90e9b5b 100644 --- a/src/main/resources/changelog.txt +++ b/src/main/resources/changelog.txt @@ -9,6 +9,7 @@ Repository * Added support for 'Distinct' keyword in finder method names (DATACMNS-15) * Added support for 'In' and 'NotIn' keywords (DATACMNS-16) * Introduced metamodel for entities and repositories (DATACMNS-17) +* Fixed returning wrong class PersistableEntityMetadata(DATACMNS-19) Changes in version 1.0.0.M3 (2011-02-09) ----------------------------------------