Author: mfranklin
Date: Thu May 31 15:15:51 2012
New Revision: 1344762
URL: http://svn.apache.org/viewvc?rev=1344762&view=rev
Log:
Added Tests for JPA Converter (Supports RAVE-625)
Added:
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaConverterTest.java
Modified:
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaConverter.java
Modified:
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaConverter.java
URL:
http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaConverter.java?rev=1344762&r1=1344761&r2=1344762&view=diff
==============================================================================
---
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaConverter.java
(original)
+++
rave/branches/model_interfaces/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/conversion/JpaConverter.java
Thu May 31 15:15:51 2012
@@ -19,11 +19,11 @@ public class JpaConverter {
//Converters are all Spring beans with their own dependencies.
private static JpaConverter instance;
- Map<Class<?>, Converter> converterMap;
+ Map<Class<?>, ModelConverter> converterMap;
@Autowired
public JpaConverter(List<ModelConverter> converters) {
- converterMap = new HashMap<Class<?>, Converter>();
+ converterMap = new HashMap<Class<?>, ModelConverter>();
for(ModelConverter converter : converters) {
converterMap.put(converter.getSourceType(), converter);
}
@@ -32,11 +32,15 @@ public class JpaConverter {
@SuppressWarnings("unchecked")
public <S, T> T convert(S source, Class<S> clazz) {
- return (T)converterMap.get(clazz).convert(source);
+ if(converterMap.containsKey(clazz)) {
+ return (T)converterMap.get(clazz).convert(source);
+ } else {
+ throw new IllegalArgumentException("No ModelConverter found for
type " + clazz);
+ }
}
@SuppressWarnings("unchecked")
- public <S,T> Converter<S, T> getConverter(Class<S> clazz) {
+ public <S,T> ModelConverter<S, T> getConverter(Class<S> clazz) {
return converterMap.get(clazz);
}
Added:
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaConverterTest.java
URL:
http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaConverterTest.java?rev=1344762&view=auto
==============================================================================
---
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaConverterTest.java
(added)
+++
rave/branches/model_interfaces/rave-components/rave-core/src/test/java/org/apache/rave/portal/model/conversion/JpaConverterTest.java
Thu May 31 15:15:51 2012
@@ -0,0 +1,67 @@
+package org.apache.rave.portal.model.conversion;
+
+import org.apache.rave.model.ModelConverter;
+import org.apache.rave.portal.model.*;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public class JpaConverterTest {
+
+ private List<ModelConverter> converters;
+
+ @Before
+ public void setup() throws NoSuchFieldException, IllegalAccessException {
+ ModelConverter personConverter = createMock(ModelConverter.class);
+
expect(personConverter.getSourceType()).andReturn(Person.class).anyTimes();
+ expect(personConverter.convert(isA(PersonImpl.class))).andReturn(new
JpaPerson());
+ replay(personConverter);
+
+ ModelConverter addressConverter = createMock(ModelConverter.class);
+
expect(addressConverter.getSourceType()).andReturn(Address.class).anyTimes();
+ expect(addressConverter.convert(isA(AddressImpl.class))).andReturn(new
JpaAddress());
+ replay(addressConverter);
+
+ List<ModelConverter> converters = new ArrayList<ModelConverter>();
+ converters.add(personConverter);
+ converters.add(addressConverter);
+ this.converters = converters;
+ Field instance = JpaConverter.class.getDeclaredField("instance");
+ instance.setAccessible(true);
+ instance.set(null, null);
+ }
+
+ @Test(expected=IllegalStateException.class)
+ public void noInstance() {
+ JpaConverter.getInstance();
+ }
+
+ @Test
+ public void converts() {
+ new JpaConverter(converters);
+ assertThat(JpaConverter.getInstance().convert(new AddressImpl(),
Address.class), is(instanceOf(JpaAddress.class)));
+ assertThat(JpaConverter.getInstance().convert(new PersonImpl(),
Person.class), is(instanceOf(JpaPerson.class)));
+
+ }
+
+ @Test
+ public void getMap() {
+ new JpaConverter(converters);
+ ModelConverter<Address, JpaAddress> converter =
JpaConverter.getInstance().getConverter(Address.class);
+ assertThat(converter, is(not(nullValue())));
+ assertThat(converter.getSourceType(), is(equalTo(Address.class)));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void notFound() {
+ new JpaConverter(converters);
+ JpaConverter.getInstance().convert(new GroupImpl(), Group.class);
+ }
+}