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);
+    }
+}


Reply via email to