You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ca...@apache.org on 2012/06/11 21:43:52 UTC

svn commit: r1348982 - in /rave/branches/model_interfaces/rave-providers/rave-opensocial-provider: rave-opensocial-client/ rave-opensocial-core/ rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ rave-opensocial-core/src/main/java/org...

Author: carlucci
Date: Mon Jun 11 19:43:51 2012
New Revision: 1348982

URL: http://svn.apache.org/viewvc?rev=1348982&view=rev
Log:
RAVE-672: refactor ApplicationData to interface

Added:
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/JpaApplicationData.java
      - copied, changed from r1348885, rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/conversion/
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverter.java
      - copied, changed from r1348928, rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/gadgets/oauth/model/conversion/JpaOAuthTokenInfoConverter.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/impl/
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/impl/ApplicationDataImpl.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/conversion/
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverterTest.java
Modified:
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-client/   (props changed)
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/   (props changed)
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/repository/impl/JpaApplicationDataRepository.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/service/impl/DefaultAppDataService.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/repository/JpaApplicationDataRepositoryTest.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/service/AppDataServiceTest.java
    rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-server/   (props changed)

Propchange: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-client/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jun 11 19:43:51 2012
@@ -2,3 +2,4 @@
 target
 .classpath
 .project
+*.iml

Propchange: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jun 11 19:43:51 2012
@@ -2,3 +2,4 @@
 target
 .classpath
 .project
+*.iml

Added: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java?rev=1348982&view=auto
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java (added)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java Mon Jun 11 19:43:51 2012
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.rave.opensocial.model;
+
+import java.util.Map;
+
+public interface ApplicationData {
+    Long getId();
+    void setId(Long id);
+
+    String getUserId();
+    void setUserId(String userId);
+
+    String getAppUrl();
+    void setAppUrl(String appUrl);
+
+    Map<String, String> getData();
+    void setData(Map<String, String> data);
+}

Copied: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/JpaApplicationData.java (from r1348885, rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java)
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/JpaApplicationData.java?p2=rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/JpaApplicationData.java&p1=rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java&r1=1348885&r2=1348982&rev=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/ApplicationData.java (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/JpaApplicationData.java Mon Jun 11 19:43:51 2012
@@ -26,12 +26,12 @@ import java.util.Map;
 @Entity
 @Table(name = "application_data")
 @NamedQueries(value = {
-        @NamedQuery(name = ApplicationData.FIND_BY_USER_IDS_AND_APP_ID, query = "select a from ApplicationData a " +
-                "where a.userId IN :" + ApplicationData.USER_IDS_PARAM + " AND a.appUrl = :" + ApplicationData.APP_URL_PARAM),
-        @NamedQuery(name = ApplicationData.FIND_BY_USER_ID_AND_APP_ID, query = "select a from ApplicationData a " +
-                "where a.userId = :" + ApplicationData.USER_ID_PARAM + " AND a.appUrl = :" + ApplicationData.APP_URL_PARAM)
+        @NamedQuery(name = JpaApplicationData.FIND_BY_USER_IDS_AND_APP_ID, query = "select a from JpaApplicationData a " +
+                "where a.userId IN :" + JpaApplicationData.USER_IDS_PARAM + " AND a.appUrl = :" + JpaApplicationData.APP_URL_PARAM),
+        @NamedQuery(name = JpaApplicationData.FIND_BY_USER_ID_AND_APP_ID, query = "select a from JpaApplicationData a " +
+                "where a.userId = :" + JpaApplicationData.USER_ID_PARAM + " AND a.appUrl = :" + JpaApplicationData.APP_URL_PARAM)
 })
-public class ApplicationData implements BasicEntity {
+public class JpaApplicationData implements BasicEntity, ApplicationData {
     public static final String FIND_BY_USER_IDS_AND_APP_ID = "ApplicationData.findByUserIdsAndAppId";
     public static final String FIND_BY_USER_ID_AND_APP_ID = "ApplicationData.findByUserIdAndAppId";
 
@@ -58,44 +58,62 @@ public class ApplicationData implements 
     @Transient
     private Map<String, String> data;
 
-    public ApplicationData() {
+    public JpaApplicationData() {
     }
 
-    public ApplicationData(Long entityId, String userId, String appUrl, Map<String, String> data) {
+    public JpaApplicationData(Long entityId, String userId, String appUrl, Map<String, String> data) {
         this.entityId = entityId;
         this.userId = userId;
         this.appUrl = appUrl;
         this.data = data;
     }
 
+    @Override
+    public Long getId() {
+        return getEntityId();
+    }
+
+    @Override
+    public void setId(Long id) {
+        setEntityId(id);
+    }
+
+    @Override
     public Long getEntityId() {
         return entityId;
     }
 
+    @Override
     public void setEntityId(Long entityId) {
         this.entityId = entityId;
     }
 
+    @Override
     public String getUserId() {
         return userId;
     }
 
+    @Override
     public void setUserId(String userId) {
         this.userId = userId;
     }
 
+    @Override
     public String getAppUrl() {
         return appUrl;
     }
 
+    @Override
     public void setAppUrl(String appUrl) {
         this.appUrl = appUrl;
     }
 
+    @Override
     public Map<String, String> getData() {
         return data;
     }
 
+    @Override
     public void setData(Map<String, String> data) {
         this.data = data;
     }

Copied: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverter.java (from r1348928, rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/gadgets/oauth/model/conversion/JpaOAuthTokenInfoConverter.java)
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverter.java?p2=rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverter.java&p1=rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/gadgets/oauth/model/conversion/JpaOAuthTokenInfoConverter.java&r1=1348928&r2=1348982&rev=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/gadgets/oauth/model/conversion/JpaOAuthTokenInfoConverter.java (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverter.java Mon Jun 11 19:43:51 2012
@@ -16,58 +16,52 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.rave.gadgets.oauth.model.conversion;
+package org.apache.rave.opensocial.model.conversion;
 
-import org.apache.rave.gadgets.oauth.model.JpaOAuthTokenInfo;
-import org.apache.rave.gadgets.oauth.model.OAuthTokenInfo;
 import org.apache.rave.model.ModelConverter;
+import org.apache.rave.opensocial.model.ApplicationData;
+import org.apache.rave.opensocial.model.JpaApplicationData;
 import org.springframework.stereotype.Component;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 
 /**
- * Converts a OAuthTokenInfo to a JpaOAuthTokenInfo
+ * Converts a ApplicationData to a JpaApplicationData
  */
 @Component
-public class JpaOAuthTokenInfoConverter implements ModelConverter<OAuthTokenInfo, JpaOAuthTokenInfo> {
+public class JpaApplicationDataConverter implements ModelConverter<ApplicationData, JpaApplicationData> {
 
     @PersistenceContext
     private EntityManager manager;
 
     @Override
-    public Class<OAuthTokenInfo> getSourceType() {
-        return OAuthTokenInfo.class;
+    public Class<ApplicationData> getSourceType() {
+        return ApplicationData.class;
     }
 
     @Override
-    public JpaOAuthTokenInfo convert(OAuthTokenInfo source) {
-        return source instanceof JpaOAuthTokenInfo ? (JpaOAuthTokenInfo) source : createEntity(source);
+    public JpaApplicationData convert(ApplicationData source) {
+        return source instanceof JpaApplicationData ? (JpaApplicationData) source : createEntity(source);
     }
 
-    private JpaOAuthTokenInfo createEntity(OAuthTokenInfo source) {
-        JpaOAuthTokenInfo converted = null;
+    private JpaApplicationData createEntity(ApplicationData source) {
+        JpaApplicationData converted = null;
         if (source != null) {
-            converted = manager.find(JpaOAuthTokenInfo.class, source.getId());
+            converted = manager.find(JpaApplicationData.class, source.getId());
             if (converted == null) {
-                converted = new JpaOAuthTokenInfo();
+                converted = new JpaApplicationData();
             }
             updateProperties(source, converted);
         }
         return converted;
     }
 
-    private void updateProperties(OAuthTokenInfo source, JpaOAuthTokenInfo converted) {
+    private void updateProperties(ApplicationData source, JpaApplicationData converted) {
         converted.setEntityId(source.getId());
         converted.setId(source.getId());
-        converted.setAccessToken(source.getAccessToken());
         converted.setAppUrl(source.getAppUrl());
-        converted.setModuleId(source.getModuleId());
-        converted.setServiceName(source.getServiceName());
-        converted.setSessionHandle(source.getSessionHandle());
-        converted.setTokenExpireMillis(source.getTokenExpireMillis());
-        converted.setTokenName(source.getTokenName());
-        converted.setTokenSecret(source.getTokenSecret());
         converted.setUserId(source.getUserId());
+        converted.setData(source.getData());
     }
 }

Added: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/impl/ApplicationDataImpl.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/impl/ApplicationDataImpl.java?rev=1348982&view=auto
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/impl/ApplicationDataImpl.java (added)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/model/impl/ApplicationDataImpl.java Mon Jun 11 19:43:51 2012
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.rave.opensocial.model.impl;
+
+import org.apache.rave.opensocial.model.ApplicationData;
+
+import java.util.Map;
+
+public class ApplicationDataImpl implements ApplicationData {
+    private Long id;
+    private String userId;
+    private String appUrl;
+    private Map<String, String> data;
+
+    public ApplicationDataImpl() {}
+
+    public ApplicationDataImpl(Long id, String userId, String appUrl, Map<String, String> data) {
+        this.id = id;
+        this.userId = userId;
+        this.appUrl = appUrl;
+        this.data = data;
+    }
+
+    @Override
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @Override
+    public String getUserId() {
+        return userId;
+    }
+
+    @Override
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    @Override
+    public String getAppUrl() {
+        return appUrl;
+    }
+
+    @Override
+    public void setAppUrl(String appUrl) {
+        this.appUrl = appUrl;
+    }
+
+    @Override
+    public Map<String, String> getData() {
+        return data;
+    }
+
+    @Override
+    public void setData(Map<String, String> data) {
+        this.data = data;
+    }
+}

Modified: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/repository/impl/JpaApplicationDataRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/repository/impl/JpaApplicationDataRepository.java?rev=1348982&r1=1348981&r2=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/repository/impl/JpaApplicationDataRepository.java (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/repository/impl/JpaApplicationDataRepository.java Mon Jun 11 19:43:51 2012
@@ -21,27 +21,57 @@ package org.apache.rave.opensocial.repos
 import org.apache.commons.lang.StringUtils;
 import org.apache.rave.exception.DataSerializationException;
 import org.apache.rave.opensocial.model.ApplicationData;
+import org.apache.rave.opensocial.model.JpaApplicationData;
+import org.apache.rave.opensocial.model.conversion.JpaApplicationDataConverter;
 import org.apache.rave.opensocial.repository.ApplicationDataRepository;
-import org.apache.rave.persistence.jpa.AbstractJpaRepository;
+import org.apache.rave.util.CollectionUtils;
 import org.json.JSONException;
 import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Lob;
-import javax.persistence.TypedQuery;
+import javax.persistence.*;
 import java.util.*;
 
 import static org.apache.rave.persistence.jpa.util.JpaUtil.getSingleResult;
+import static org.apache.rave.persistence.jpa.util.JpaUtil.saveOrUpdate;
 
 @Repository
-public class JpaApplicationDataRepository extends AbstractJpaRepository<ApplicationData>
-        implements ApplicationDataRepository {
+public class JpaApplicationDataRepository implements ApplicationDataRepository {
 
-    public JpaApplicationDataRepository() {
-        super(JpaSerializableApplicationData.class);
+    @PersistenceContext
+    private EntityManager manager;
+
+    @Autowired
+    private JpaApplicationDataConverter converter;
+
+    @Override
+    public Class<? extends ApplicationData> getType() {
+        return JpaApplicationData.class;
+    }
+
+    @Override
+    public ApplicationData get(long id) {
+        JpaSerializableApplicationData applicationData = (JpaSerializableApplicationData) manager.find(JpaApplicationData.class, id);
+        if (applicationData != null) {
+            applicationData.deserializeData();
+        }
+        return applicationData;
+    }
+
+    @Override
+    @Transactional
+    public JpaApplicationData save(ApplicationData item) {
+        JpaApplicationData jpaAppData = converter.convert(item);
+        JpaSerializableApplicationData jpaSerializableApplicationData = getJpaSerializableApplicationData(jpaAppData);
+        jpaSerializableApplicationData.serializeData();
+        return saveOrUpdate(jpaSerializableApplicationData.getEntityId(), manager, jpaSerializableApplicationData);
+    }
+
+    @Override
+    public void delete(ApplicationData item) {
+        manager.remove(item instanceof JpaApplicationData ? item : get(item.getId()));
     }
 
     @Override
@@ -56,23 +86,23 @@ public class JpaApplicationDataRepositor
             return data;
         }
 
-        TypedQuery<JpaSerializableApplicationData> query = manager.createNamedQuery(ApplicationData.FIND_BY_USER_IDS_AND_APP_ID,
+        TypedQuery<JpaSerializableApplicationData> query = manager.createNamedQuery(JpaApplicationData.FIND_BY_USER_IDS_AND_APP_ID,
                 JpaSerializableApplicationData.class);
-        query.setParameter(ApplicationData.USER_IDS_PARAM, userIds);
-        query.setParameter(ApplicationData.APP_URL_PARAM, appId);
+        query.setParameter(JpaApplicationData.USER_IDS_PARAM, userIds);
+        query.setParameter(JpaApplicationData.APP_URL_PARAM, appId);
         List<JpaSerializableApplicationData> results = query.getResultList();
         for (JpaSerializableApplicationData applicationData : results) {
             applicationData.deserializeData();
         }
-        return new ArrayList<ApplicationData>(results);
+        return CollectionUtils.<ApplicationData>toBaseTypedList(results);
     }
 
     @Override
-    public ApplicationData getApplicationData(String personId, String appId) {
-        TypedQuery<JpaSerializableApplicationData> query = manager.createNamedQuery(ApplicationData.FIND_BY_USER_ID_AND_APP_ID,
+    public JpaApplicationData getApplicationData(String personId, String appId) {
+        TypedQuery<JpaSerializableApplicationData> query = manager.createNamedQuery(JpaApplicationData.FIND_BY_USER_ID_AND_APP_ID,
                 JpaSerializableApplicationData.class);
-        query.setParameter(ApplicationData.USER_ID_PARAM, personId);
-        query.setParameter(ApplicationData.APP_URL_PARAM, appId);
+        query.setParameter(JpaApplicationData.USER_ID_PARAM, personId);
+        query.setParameter(JpaApplicationData.APP_URL_PARAM, appId);
         JpaSerializableApplicationData applicationData = getSingleResult(query.getResultList());
         if (applicationData != null) {
             applicationData.deserializeData();
@@ -80,24 +110,7 @@ public class JpaApplicationDataRepositor
         return applicationData;
     }
 
-    @Override
-    public ApplicationData get(long id) {
-        JpaSerializableApplicationData applicationData = (JpaSerializableApplicationData) super.get(id);
-        if (applicationData != null) {
-            applicationData.deserializeData();
-        }
-        return applicationData;
-    }
-
-    @Override
-    @Transactional
-    public ApplicationData save(ApplicationData applicationData) {
-        JpaSerializableApplicationData jpaSerializableApplicationData = getJpaSerializableApplicationData(applicationData);
-        jpaSerializableApplicationData.serializeData();
-        return super.save(jpaSerializableApplicationData);
-    }
-
-    private JpaSerializableApplicationData getJpaSerializableApplicationData(ApplicationData applicationData) {
+    private JpaSerializableApplicationData getJpaSerializableApplicationData(JpaApplicationData applicationData) {
         if (applicationData instanceof JpaSerializableApplicationData) {
             return (JpaSerializableApplicationData) applicationData;
         }
@@ -114,7 +127,7 @@ public class JpaApplicationDataRepositor
      * uses this model for the actual persistence to the database.
      */
     @Entity
-    public static class JpaSerializableApplicationData extends ApplicationData {
+    public static class JpaSerializableApplicationData extends JpaApplicationData {
         @Lob
         @Column(name = "serialized_data")
         private String serializedData;

Modified: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/service/impl/DefaultAppDataService.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/service/impl/DefaultAppDataService.java?rev=1348982&r1=1348981&r2=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/service/impl/DefaultAppDataService.java (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/java/org/apache/rave/opensocial/service/impl/DefaultAppDataService.java Mon Jun 11 19:43:51 2012
@@ -21,7 +21,7 @@ package org.apache.rave.opensocial.servi
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.rave.opensocial.model.ApplicationData;
-import org.apache.rave.portal.model.JpaPerson;
+import org.apache.rave.opensocial.model.impl.ApplicationDataImpl;
 import org.apache.rave.portal.model.Person;
 import org.apache.rave.opensocial.repository.ApplicationDataRepository;
 import org.apache.rave.opensocial.service.SimplePersonService;
@@ -163,7 +163,7 @@ public class DefaultAppDataService imple
 
             //if there is no data, create an empty object to store the data in that we'll save when we're done
             if (applicationData == null) {
-                applicationData = new ApplicationData(null, personId, appId, new HashMap<String, String>());
+                applicationData = new ApplicationDataImpl(null, personId, appId, new HashMap<String, String>());
             }
 
             //if the fields parameter is empty, we can just use the values map directly since this is a full update

Modified: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml?rev=1348982&r1=1348981&r2=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/main/resources/META-INF/persistence.xml Mon Jun 11 19:43:51 2012
@@ -29,7 +29,7 @@
       <class>org.apache.rave.portal.model.JpaPersonProperty</class>
       <class>org.apache.rave.portal.model.JpaAddress</class>
       <class>org.apache.rave.portal.model.JpaOrganization</class>
-      <class>org.apache.rave.opensocial.model.ApplicationData</class>
+      <class>org.apache.rave.opensocial.model.JpaApplicationData</class>
       <class>org.apache.rave.opensocial.repository.impl.JpaApplicationDataRepository$JpaSerializableApplicationData</class>
       <class>org.apache.rave.gadgets.oauth.model.JpaOAuthTokenInfo</class>
       <class>org.apache.rave.gadgets.oauth.model.JpaOAuthConsumerStore</class>

Added: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverterTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverterTest.java?rev=1348982&view=auto
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverterTest.java (added)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/model/conversion/JpaApplicationDataConverterTest.java Mon Jun 11 19:43:51 2012
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.rave.opensocial.model.conversion;
+
+import org.apache.rave.opensocial.model.ApplicationData;
+import org.apache.rave.opensocial.model.JpaApplicationData;
+import org.apache.rave.opensocial.model.impl.ApplicationDataImpl;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.util.HashMap;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"classpath:rave-shindig-test-dataContext.xml", "classpath:rave-shindig-test-applicationContext.xml"})
+public class JpaApplicationDataConverterTest {
+
+    @Autowired
+    private JpaApplicationDataConverter applicationDataConverter;
+
+    @Test
+    public void noConversion() {
+        ApplicationData applicationData = new JpaApplicationData();
+        assertThat(applicationDataConverter.convert(applicationData), is(sameInstance(applicationData)));
+    }
+
+    @Test
+    public void nullConversion() {
+        ApplicationData applicationData = null;
+        assertThat(applicationDataConverter.convert(applicationData), is(nullValue()));
+    }
+
+    @Test
+    public void newApplicationData() {
+        ApplicationData applicationData = new ApplicationDataImpl();
+        applicationData.setId(1L);
+        applicationData.setAppUrl("url");
+        applicationData.setData(new HashMap<String, String>());
+        applicationData.setUserId("userid");
+
+        JpaApplicationData converted = applicationDataConverter.convert(applicationData);
+        assertThat(converted, is(not(sameInstance(applicationData))));
+        assertThat(converted, is(instanceOf(JpaApplicationData.class)));
+        assertThat(converted.getId(), is(equalTo(applicationData.getId())));
+        assertThat(converted.getEntityId(), is(equalTo(applicationData.getId())));
+        assertThat(converted.getAppUrl(), is(equalTo(applicationData.getAppUrl())));
+        assertThat(converted.getData(), is(equalTo(applicationData.getData())));
+        assertThat(converted.getUserId(), is(equalTo(applicationData.getUserId())));
+    }
+}
\ No newline at end of file

Modified: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/repository/JpaApplicationDataRepositoryTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/repository/JpaApplicationDataRepositoryTest.java?rev=1348982&r1=1348981&r2=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/repository/JpaApplicationDataRepositoryTest.java (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/repository/JpaApplicationDataRepositoryTest.java Mon Jun 11 19:43:51 2012
@@ -19,6 +19,7 @@
 package org.apache.rave.opensocial.repository;
 
 import org.apache.rave.opensocial.model.ApplicationData;
+import org.apache.rave.opensocial.model.JpaApplicationData;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -66,7 +67,7 @@ public class JpaApplicationDataRepositor
 
     @Test
     public void get_valid() {
-        ApplicationData applicationData = repository.get(VALID_APPLICATION_DATA_ID);
+        JpaApplicationData applicationData = (JpaApplicationData) repository.get(VALID_APPLICATION_DATA_ID);
         validateApplicationData(applicationData);
     }
 
@@ -78,7 +79,7 @@ public class JpaApplicationDataRepositor
 
     @Test
     public void getApplicationData_byUserIdAndApplicationId_valid() {
-        ApplicationData applicationData = repository.getApplicationData(VALID_USER_ID, VALID_APPLICATION_ID);
+        JpaApplicationData applicationData = (JpaApplicationData) repository.getApplicationData(VALID_USER_ID, VALID_APPLICATION_ID);
         validateApplicationData(applicationData);
     }
 
@@ -92,7 +93,7 @@ public class JpaApplicationDataRepositor
     public void getApplicationData_byUserIdsAndApplicationId_valid() {
         List<ApplicationData> applicationData = repository.getApplicationData(Arrays.asList(VALID_USER_ID),
                 VALID_APPLICATION_ID);
-        validateApplicationData(applicationData.get(0));
+        validateApplicationData((JpaApplicationData)applicationData.get(0));
     }
 
     @Test
@@ -109,17 +110,17 @@ public class JpaApplicationDataRepositor
                 VALID_APPLICATION_ID);
         //Since there is no appdata in the database for "NO-DATA-USER" we should only get back one result
         assertThat(applicationData.size(), is(equalTo(1)));
-        validateApplicationData(applicationData.get(0));
+        validateApplicationData((JpaApplicationData)applicationData.get(0));
     }
 
     @Test
     @Transactional
     @Rollback(true)
     public void save_newEntity() {
-        ApplicationData applicationData = new ApplicationData(null, VALID_USER_ID, SECOND_VALID_APPLICATION_ID,
+        ApplicationData applicationData = new JpaApplicationData(null, VALID_USER_ID, SECOND_VALID_APPLICATION_ID,
                 validApplicationDataMap);
 
-        ApplicationData saved = repository.save(applicationData);
+        JpaApplicationData saved = (JpaApplicationData)repository.save(applicationData);
         manager.flush();
         assertThat(saved.getEntityId(), is(notNullValue()));
     }
@@ -128,16 +129,16 @@ public class JpaApplicationDataRepositor
     @Transactional
     @Rollback(true)
     public void save_existingEntity() {
-        ApplicationData applicationData = new ApplicationData(VALID_APPLICATION_DATA_ID, VALID_USER_ID,
+        JpaApplicationData applicationData = new JpaApplicationData(VALID_APPLICATION_DATA_ID, VALID_USER_ID,
                 VALID_APPLICATION_ID, new HashMap<String, String>());
 
-        ApplicationData saved = repository.save(applicationData);
+        JpaApplicationData saved = (JpaApplicationData)repository.save(applicationData);
         manager.flush();
         assertThat(saved, is(not(sameInstance(applicationData))));
         assertThat(saved.getEntityId(), is(equalTo(applicationData.getEntityId())));
     }
 
-    private void validateApplicationData(ApplicationData applicationData) {
+    private void validateApplicationData(JpaApplicationData applicationData) {
         assertThat(applicationData, is(not(nullValue())));
         assertThat(applicationData.getEntityId(), is(equalTo(VALID_APPLICATION_DATA_ID)));
         assertThat(applicationData.getUserId(), is(equalTo(VALID_USER_ID)));

Modified: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/service/AppDataServiceTest.java
URL: http://svn.apache.org/viewvc/rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/service/AppDataServiceTest.java?rev=1348982&r1=1348981&r2=1348982&view=diff
==============================================================================
--- rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/service/AppDataServiceTest.java (original)
+++ rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-core/src/test/java/org/apache/rave/opensocial/service/AppDataServiceTest.java Mon Jun 11 19:43:51 2012
@@ -20,6 +20,7 @@
 package org.apache.rave.opensocial.service;
 
 import org.apache.rave.opensocial.model.ApplicationData;
+import org.apache.rave.opensocial.model.impl.ApplicationDataImpl;
 import org.apache.rave.portal.model.JpaPerson;
 import org.apache.rave.portal.model.Person;
 import org.apache.rave.opensocial.repository.ApplicationDataRepository;
@@ -75,7 +76,7 @@ public class AppDataServiceTest {
         validApplicationDataMap.put("color", "blue");
         validApplicationDataMap.put("speed", "fast");
         validApplicationDataMap.put("state", "MA");
-        validApplicationData = new ApplicationData(VALID_APPLICATION_DATA_ID, VALID_VIEWER_ID, VALID_APPLICATION_ID,
+        validApplicationData = new ApplicationDataImpl(VALID_APPLICATION_DATA_ID, VALID_VIEWER_ID, VALID_APPLICATION_ID,
                 validApplicationDataMap);
 
         validPerson = new JpaPerson();
@@ -163,7 +164,7 @@ public class AppDataServiceTest {
 
     @Test
     public void deletePersonData_validRequest_emptyApplicationData() throws Exception {
-        ApplicationData applicationData = new ApplicationData();
+        ApplicationData applicationData = new ApplicationDataImpl();
         testDeletePersonDataNoAppDataExpected(applicationData);
     }
 
@@ -306,11 +307,11 @@ public class AppDataServiceTest {
 
         appDataService.deletePersonData(userId, groupId, VALID_APPLICATION_ID, fieldsToDelete, securityToken);
 
-        ApplicationData expectedApplicationData = new ApplicationData(applicationData.getEntityId(),
+        ApplicationData expectedApplicationData = new ApplicationDataImpl(applicationData.getId(),
                 applicationData.getUserId(), applicationData.getAppUrl(), expectedApplicationDataAfterDelete);
 
         ApplicationData actualApplicationData = capturedApplicationData.getValue();
-        assertEquals(expectedApplicationData.getEntityId(), actualApplicationData.getEntityId());
+        assertEquals(expectedApplicationData.getId(), actualApplicationData.getId());
         assertEquals(expectedApplicationData.getUserId(), actualApplicationData.getUserId());
         assertEquals(expectedApplicationData.getAppUrl(), actualApplicationData.getAppUrl());
         assertEquals(expectedApplicationData.getData(), actualApplicationData.getData());
@@ -366,13 +367,13 @@ public class AppDataServiceTest {
 
         appDataService.updatePersonData(userId, groupId, VALID_APPLICATION_ID, fields, values, securityToken);
 
-        ApplicationData expectedApplicationData = applicationData == null ? new ApplicationData(null, VALID_USER_ID,
+        ApplicationDataImpl expectedApplicationData = applicationData == null ? new ApplicationDataImpl(null, VALID_USER_ID,
                 VALID_APPLICATION_ID, expectedApplicationDataAfterUpdate) :
-                new ApplicationData(applicationData.getEntityId(), applicationData.getUserId(),
+                new ApplicationDataImpl(applicationData.getId(), applicationData.getUserId(),
                         applicationData.getAppUrl(), expectedApplicationDataAfterUpdate);
 
         ApplicationData actualApplicationData = capturedApplicationData.getValue();
-        assertEquals(expectedApplicationData.getEntityId(), actualApplicationData.getEntityId());
+        assertEquals(expectedApplicationData.getId(), actualApplicationData.getId());
         assertEquals(expectedApplicationData.getUserId(), actualApplicationData.getUserId());
         assertEquals(expectedApplicationData.getAppUrl(), actualApplicationData.getAppUrl());
         assertEquals(expectedApplicationData.getData(), actualApplicationData.getData());

Propchange: rave/branches/model_interfaces/rave-providers/rave-opensocial-provider/rave-opensocial-server/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jun 11 19:43:51 2012
@@ -1,3 +1,4 @@
 .settings
 target
 .project
+*.iml