Author: mfranklin
Date: Tue Mar 19 23:41:58 2013
New Revision: 1458573

URL: http://svn.apache.org/r1458573
Log:
Handling extension properties in Activity streams in jpa provider agnostic way 
(RAVE-915)

Modified:
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsItem.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsMediaLink.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsEntryImpl.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsMediaLinkImpl.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsObjectImpl.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
    rave/trunk/rave-components/rave-jpa/pom.xml
    
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsItem.java
    
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsMediaLink.java

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsItem.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsItem.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsItem.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsItem.java
 Tue Mar 19 23:41:58 2013
@@ -20,7 +20,7 @@
 package org.apache.rave.portal.model;
 
 import java.util.Date;
-import java.util.HashMap;
+import java.util.Map;
 
 
 public interface ActivityStreamsItem {
@@ -35,8 +35,8 @@ public interface ActivityStreamsItem {
     public void setUrl(String url);
     public String getObjectType();
     public void setObjectType(String objectType);
-    public HashMap getExtensions();
-    public void setExtensions(HashMap extensions);
-    public HashMap getOpenSocial();
-    public void setOpenSocial(HashMap openSocial);
+    public Map getExtensions();
+    public void setExtensions(Map extensions);
+    public Map getOpenSocial();
+    public void setOpenSocial(Map openSocial);
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsMediaLink.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsMediaLink.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsMediaLink.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ActivityStreamsMediaLink.java
 Tue Mar 19 23:41:58 2013
@@ -20,7 +20,7 @@
 package org.apache.rave.portal.model;
 
 
-import java.util.HashMap;
+import java.util.Map;
 
 public interface ActivityStreamsMediaLink {
 
@@ -45,7 +45,7 @@ public interface ActivityStreamsMediaLin
 
     public String getUrl() ;
 
-    public void setOpenSocial(HashMap social);
+    public void setOpenSocial(Map social);
 
-    public HashMap getOpenSocial();
+    public Map getOpenSocial();
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsEntryImpl.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsEntryImpl.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsEntryImpl.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsEntryImpl.java
 Tue Mar 19 23:41:58 2013
@@ -25,7 +25,7 @@ import org.apache.rave.portal.model.Acti
 import org.apache.rave.portal.model.ActivityStreamsObject;
 
 import java.util.Date;
-import java.util.HashMap;
+import java.util.Map;
 import java.util.logging.Logger;
 
 /**
@@ -121,9 +121,9 @@ public class ActivityStreamsEntryImpl im
 
     private String objectType;
 
-    private HashMap openSocial;
+    private Map openSocial;
 
-    private HashMap extensions;
+    private Map extensions;
 
     /**
      * Create a new empty DeserializableActivityEntry
@@ -168,26 +168,26 @@ public class ActivityStreamsEntryImpl im
 
     /** {@inheritDoc} */
 
-    public HashMap getOpenSocial() {
+    public Map getOpenSocial() {
         return openSocial;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void setOpenSocial(HashMap openSocial) {
+    public void setOpenSocial(Map openSocial) {
 
         this.openSocial = openSocial;
     }
 
     /** {@inheritDoc} */
 
-    public HashMap getExtensions() {
+    public Map getExtensions() {
         return extensions;
     }
 
     /** {@inheritDoc} */
-    public void setExtensions(HashMap extensions) {
+    public void setExtensions(Map extensions) {
 
 
         this.extensions = extensions;

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsMediaLinkImpl.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsMediaLinkImpl.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsMediaLinkImpl.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsMediaLinkImpl.java
 Tue Mar 19 23:41:58 2013
@@ -23,8 +23,7 @@ package org.apache.rave.portal.model.imp
 
 import org.apache.rave.portal.model.ActivityStreamsMediaLink;
 
-import java.util.HashMap;
-
+import java.util.Map;
 
 
 public class ActivityStreamsMediaLinkImpl implements ActivityStreamsMediaLink{
@@ -41,7 +40,7 @@ public class ActivityStreamsMediaLinkImp
 
     private String id;
 
-    private HashMap openSocial;
+    private Map openSocial;
 
 
 
@@ -109,12 +108,12 @@ public class ActivityStreamsMediaLinkImp
 
     /** {@inheritDoc} */
 
-    public HashMap getOpenSocial() {
+    public Map getOpenSocial() {
         return openSocial;
     }
 
     /** {@inheritDoc} */
-    public void setOpenSocial(HashMap openSocial) {
+    public void setOpenSocial(Map openSocial) {
         this.openSocial = openSocial;
 
     }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsObjectImpl.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsObjectImpl.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsObjectImpl.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/impl/ActivityStreamsObjectImpl.java
 Tue Mar 19 23:41:58 2013
@@ -24,8 +24,8 @@ import org.apache.rave.portal.model.Acti
 import org.apache.rave.portal.model.ActivityStreamsObject;
 
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 public class ActivityStreamsObjectImpl implements ActivityStreamsObject {
@@ -119,9 +119,9 @@ public class ActivityStreamsObjectImpl i
 
     private String objectType;
 
-    private HashMap openSocial;
+    private Map openSocial;
 
-    private HashMap extensions;
+    private Map extensions;
 
     /**
      * Constructs an empty ActivityObject.
@@ -173,14 +173,14 @@ public class ActivityStreamsObjectImpl i
      * {@inheritDoc}
      */
 
-    public HashMap getOpenSocial() {
+    public Map getOpenSocial() {
         return openSocial;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void setOpenSocial(HashMap openSocial) {
+    public void setOpenSocial(Map openSocial) {
 
         this.openSocial = openSocial;
     }
@@ -189,16 +189,14 @@ public class ActivityStreamsObjectImpl i
      * {@inheritDoc}
      */
 
-    public HashMap getExtensions() {
+    public Map getExtensions() {
         return extensions;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void setExtensions(HashMap extensions) {
-
-
+    public void setExtensions(Map extensions) {
         this.extensions = extensions;
     }
 

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
 Tue Mar 19 23:41:58 2013
@@ -23,17 +23,11 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.repository.*;
-import org.codehaus.jackson.map.AnnotationIntrospector;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
-import org.codehaus.jackson.mrbean.MrBeanModule;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.Resource;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
-import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -41,6 +35,8 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
+import static org.apache.rave.util.JsonUtils.parse;
+
 public class DataImporter {
 
     private DataImporter.Executor dataExecutor;
@@ -58,7 +54,7 @@ public class DataImporter {
     public void importData() {
         if (scriptLocations != null && dataExecutor.needsLoading()) {
             for (Resource resource : scriptLocations) {
-                ModelWrapper wrapper = mapObject(resource);
+                ModelWrapper wrapper = parse(resource, ModelWrapper.class);
                 dataExecutor.loadData(wrapper);
             }
         }
@@ -68,23 +64,6 @@ public class DataImporter {
         this.dataExecutor = dataExecutor;
     }
 
-    private ModelWrapper mapObject(Resource resource) {
-        try {
-            return getMapper().readValue(resource.getFile(), 
ModelWrapper.class);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private ObjectMapper getMapper() {
-        ObjectMapper jacksonMapper = new ObjectMapper();
-        AnnotationIntrospector primary = new JacksonAnnotationIntrospector();
-        jacksonMapper.setAnnotationIntrospector(primary);
-        
jacksonMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
 false);
-        jacksonMapper.registerModule(new MrBeanModule());
-        return jacksonMapper;
-    }
-
     public static interface Executor {
         boolean needsLoading();
         void loadData(ModelWrapper models);

Modified: rave/trunk/rave-components/rave-jpa/pom.xml
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-jpa/pom.xml?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-jpa/pom.xml (original)
+++ rave/trunk/rave-components/rave-jpa/pom.xml Tue Mar 19 23:41:58 2013
@@ -73,6 +73,10 @@
         <!-- Jackson JSON Mapper -->
         <dependency>
             <groupId>org.codehaus.jackson</groupId>
+            <artifactId>jackson-mrbean</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jackson</groupId>
             <artifactId>jackson-mapper-asl</artifactId>
         </dependency>
 
@@ -139,7 +143,6 @@
             <artifactId>freemarker</artifactId>
         </dependency>
 
-
         <!-- Test -->
         <dependency>
             <groupId>junit</groupId>

Modified: 
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsItem.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsItem.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsItem.java
 (original)
+++ 
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsItem.java
 Tue Mar 19 23:41:58 2013
@@ -22,7 +22,10 @@ package org.apache.rave.portal.model;
 
 import javax.persistence.*;
 import java.util.Date;
-import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.rave.util.JsonUtils.parse;
+import static org.apache.rave.util.JsonUtils.stringify;
 
 @Entity
 @Access(AccessType.FIELD)
@@ -56,12 +59,11 @@ public class JpaActivityStreamsItem impl
     @Basic
     private String objectType;
 
-    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-    private HashMap openSocial;
-
+    @Lob
+    private String openSocial;
 
-    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-    private HashMap extensions;
+    @Lob
+    private String extensions;
 
     public Long getEntityId() {
         return entityId;
@@ -111,19 +113,19 @@ public class JpaActivityStreamsItem impl
         this.objectType = objectType;
     }
 
-    public HashMap getOpenSocial() {
-        return openSocial;
+    public Map getOpenSocial() {
+        return parse(this.openSocial, Map.class);
     }
 
-    public void setOpenSocial(HashMap openSocial) {
-        this.openSocial = openSocial;
+    public void setOpenSocial(Map openSocial) {
+        this.openSocial = stringify(openSocial);
     }
 
-    public HashMap getExtensions() {
-        return extensions;
+    public Map getExtensions() {
+        return parse(this.extensions, Map.class);
     }
 
-    public void setExtensions(HashMap extensions) {
-        this.extensions = extensions;
+    public void setExtensions(Map extensions) {
+        this.extensions = stringify(extensions);
     }
 }

Modified: 
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsMediaLink.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsMediaLink.java?rev=1458573&r1=1458572&r2=1458573&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsMediaLink.java
 (original)
+++ 
rave/trunk/rave-components/rave-jpa/src/main/java/org/apache/rave/portal/model/JpaActivityStreamsMediaLink.java
 Tue Mar 19 23:41:58 2013
@@ -21,8 +21,10 @@ package org.apache.rave.portal.model;
 
 
 import javax.persistence.*;
-import java.util.HashMap;
+import java.util.Map;
 
+import static org.apache.rave.util.JsonUtils.parse;
+import static org.apache.rave.util.JsonUtils.stringify;
 
 
 @Entity
@@ -59,9 +61,8 @@ public class JpaActivityStreamsMediaLink
     @Basic
     private Integer width;
 
-    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-    private HashMap openSocial;
-
+    @Lob
+    private String openSocial;
 
     /**
      * Create a new MediaLink
@@ -135,13 +136,13 @@ public class JpaActivityStreamsMediaLink
 
     /** {@inheritDoc} */
 
-    public HashMap getOpenSocial() {
-        return openSocial;
+    public Map getOpenSocial() {
+        return parse(this.openSocial, Map.class);
     }
 
     /** {@inheritDoc} */
-    public void setOpenSocial(HashMap openSocial) {
-        this.openSocial = openSocial;
+    public void setOpenSocial(Map openSocial) {
+        this.openSocial = stringify(openSocial);
 
     }
 


Reply via email to