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