You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2011/04/15 14:17:42 UTC
svn commit: r1092677 - in /incubator/wookie/trunk: etc/ddl-schema/
src-tests/org/apache/wookie/tests/beans/ src/org/apache/wookie/beans/
src/org/apache/wookie/beans/jcr/ src/org/apache/wookie/beans/jcr/impl/
src/org/apache/wookie/beans/jpa/ src/org/apa...
Author: scottbw
Date: Fri Apr 15 12:17:42 2011
New Revision: 1092677
URL: http://svn.apache.org/viewvc?rev=1092677&view=rev
Log:
Refactored to remove a lot of code relating SharedData and Participants directly to Widgets and WidgetInstances and replaced with a single "SharedDataHelper" service facade to manage all access to shared data - this means we consistently manage the relationship via the internal shared data key which is constructed in a single way. See WOOKIE-206.
Added:
incubator/wookie/trunk/src/org/apache/wookie/helpers/SharedDataHelper.java
Modified:
incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml
incubator/wookie/trunk/src-tests/org/apache/wookie/tests/beans/AbstractPersistenceTest.java
incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java
incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java
incubator/wookie/trunk/src/org/apache/wookie/beans/IWidgetInstance.java
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/WidgetImpl.java
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/wookie-schema.cnd
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/WidgetImpl.java
incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java
incubator/wookie/trunk/src/org/apache/wookie/controller/PropertiesController.java
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
Modified: incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml (original)
+++ incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml Fri Apr 15 12:17:42 2011
@@ -179,13 +179,6 @@
<column name="participant_display_name" required="true" size="255" type="VARCHAR"/>
<column name="participant_thumbnail_url" size="1024" type="VARCHAR"/>
<column name="sharedDataKey" required="true" size="255" type="VARCHAR"/>
- <column name="widget_id" required="true" type="INTEGER"/>
- <foreign-key foreignTable="Widget" name="FKParticipant1">
- <reference foreign="id" local="widget_id"/>
- </foreign-key>
- <index name="IXParticipant1">
- <index-column name="widget_id"/>
- </index>
</table>
<table name="Preference">
Modified: incubator/wookie/trunk/src-tests/org/apache/wookie/tests/beans/AbstractPersistenceTest.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src-tests/org/apache/wookie/tests/beans/AbstractPersistenceTest.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src-tests/org/apache/wookie/tests/beans/AbstractPersistenceTest.java (original)
+++ incubator/wookie/trunk/src-tests/org/apache/wookie/tests/beans/AbstractPersistenceTest.java Fri Apr 15 12:17:42 2011
@@ -162,7 +162,7 @@ public abstract class AbstractPersistenc
// create participant
IParticipant participant = persistenceManager.newInstance(IParticipant.class);
- participant.setWidget(widget);
+ //participant.setWidget(widget);
participant.setSharedDataKey("test-shared-data-key");
participant.setParticipantId("test");
participant.setParticipantDisplayName("");
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java Fri Apr 15 12:17:42 2011
@@ -38,20 +38,6 @@ public interface IParticipant extends IB
void setSharedDataKey(String sharedDataKey);
/**
- * Get owning widget instance.
- *
- * @return widget instance
- */
- IWidget getWidget();
-
- /**
- * Set owning widget instance.
- *
- * @param widget widget instance
- */
- void setWidget(IWidget widget);
-
- /**
* Get participant id.
*
* @return participant id
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java Fri Apr 15 12:17:42 2011
@@ -249,20 +249,6 @@ public interface IWidget extends ILocali
* @param preferenceDefaults preference defaults collection
*/
void setPreferenceDefaults(Collection<IPreferenceDefault> preferenceDefaults);
-
- /**
- * Get collection of shared data for this widget.
- *
- * @return shared data collection
- */
- Collection<ISharedData> getSharedData();
-
- /**
- * Set collection of shared data for this widget.
- *
- * @param sharedData shared data collection
- */
- void setSharedData(Collection<ISharedData> sharedData);
/**
* Get default widget title, (deprecated in favor of locale specifying APIs).
@@ -296,23 +282,6 @@ public interface IWidget extends ILocali
String getWidgetShortName();
/**
- * Get shared data with specified key for widget.
- *
- * @param sharedDataKey shared data key
- * @return shared data
- */
- ISharedData [] getSharedData(String sharedDataKey);
-
- /**
- * Get shared data with specified key and name for widget.
- *
- * @param sharedDataKey shared data key
- * @param name shared data name
- * @return shared data
- */
- ISharedData getSharedData(String sharedDataKey, String name);
-
- /**
* Get default start file url, (deprecated in favor of locale specifying APIs).
*
* @return start file url
@@ -386,46 +355,6 @@ public interface IWidget extends ILocali
IName name = (IName)LocalizationUtils.getLocalizedElement(names, new String[]{locale});
return ((name != null) ? WidgetFormattingUtils.getFormattedWidgetShortName(name) : IW3CXMLConfiguration.UNKNOWN);
}
-
- /**
- * Get shared data with specified key for widget.
- *
- * @param widget widget
- * @param sharedDataKey shared data key
- * @return shared data array
- */
- public static ISharedData [] getSharedData(IWidget widget, String sharedDataKey)
- {
- List<ISharedData> sharedDataList = new ArrayList<ISharedData>();
- for (ISharedData sharedData : widget.getSharedData())
- {
- if (sharedData.getSharedDataKey().equals(sharedDataKey))
- {
- sharedDataList.add(sharedData);
- }
- }
- return sharedDataList.toArray(new ISharedData[sharedDataList.size()]);
- }
-
- /**
- * Get shared data with specified key and name for widget.
- *
- * @param widget widget
- * @param sharedDataKey shared data key
- * @param name shared data name
- * @return shared data or null
- */
- public static ISharedData getSharedData(IWidget widget, String sharedDataKey, String name)
- {
- for (ISharedData sharedData : widget.getSharedData())
- {
- if (sharedData.getSharedDataKey().equals(sharedDataKey) && sharedData.getDkey().equals(name))
- {
- return sharedData;
- }
- }
- return null;
- }
/**
* Get widget start file url for locale.
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/IWidgetInstance.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/IWidgetInstance.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/IWidgetInstance.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/IWidgetInstance.java Fri Apr 15 12:17:42 2011
@@ -16,6 +16,7 @@ package org.apache.wookie.beans;
import java.util.Collection;
+import org.apache.wookie.helpers.SharedDataHelper;
import org.apache.wookie.w3c.ILocalizedElement;
/**
@@ -252,7 +253,7 @@ public interface IWidgetInstance extends
*/
public static ISharedData [] getSharedData(IWidgetInstance widgetInstance)
{
- return widgetInstance.getWidget().getSharedData(widgetInstance.getSharedDataKey());
+ return SharedDataHelper.findSharedData(widgetInstance);
}
/**
@@ -264,7 +265,7 @@ public interface IWidgetInstance extends
*/
public static ISharedData getSharedData(IWidgetInstance widgetInstance, String name)
{
- return widgetInstance.getWidget().getSharedData(widgetInstance.getSharedDataKey(), name);
+ return SharedDataHelper.findSharedData(widgetInstance, name);
}
/**
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/WidgetImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/WidgetImpl.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/WidgetImpl.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/WidgetImpl.java Fri Apr 15 12:17:42 2011
@@ -98,9 +98,6 @@ public class WidgetImpl extends Localize
@org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection(jcrName="wookie:preferenceDefaults", elementClassName=PreferenceDefaultImpl.class)
private Collection<PreferenceDefaultImpl> preferenceDefaultImpls;
- @org.apache.jackrabbit.ocm.mapper.impl.annotation.Collection(jcrName="wookie:sharedData", elementClassName=SharedDataImpl.class)
- private Collection<SharedDataImpl> sharedDataImpls;
-
/* (non-Javadoc)
* @see org.apache.wookie.beans.IWidget#getPackagePath()
*/
@@ -431,53 +428,6 @@ public class WidgetImpl extends Localize
}
/* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#getSharedData()
- */
- public Collection<ISharedData> getSharedData()
- {
- if (sharedDataImpls == null)
- {
- sharedDataImpls = new ArrayList<SharedDataImpl>();
- }
- return new IdCollection<SharedDataImpl,ISharedData>(sharedDataImpls);
- }
-
- /* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#setSharedData(java.util.Collection)
- */
- public void setSharedData(Collection<ISharedData> sharedData)
- {
- getSharedData().clear();
- if (sharedData != null)
- {
- for (ISharedData data : sharedData)
- {
- getSharedData().add((SharedDataImpl)data);
- }
- }
- }
-
- /**
- * Get shared data implementations collection.
- *
- * @return shared data implementations collection
- */
- public Collection<SharedDataImpl> getSharedDataImpls()
- {
- return sharedDataImpls;
- }
-
- /**
- * Set shared data implementations collection.
- *
- * @param sharedDataImpls shared data implementations collection
- */
- public void setSharedDataImpls(Collection<SharedDataImpl> sharedDataImpls)
- {
- this.sharedDataImpls = sharedDataImpls;
- }
-
- /* (non-Javadoc)
* @see org.apache.wookie.beans.IWidget#getStartFiles()
*/
public Collection<IStartFile> getStartFiles()
@@ -715,22 +665,6 @@ public class WidgetImpl extends Localize
}
/* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#getSharedData(java.lang.String)
- */
- public ISharedData [] getSharedData(String sharedDataKey)
- {
- return Utilities.getSharedData(this, sharedDataKey);
- }
-
- /* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#getSharedData(java.lang.String, java.lang.String)
- */
- public ISharedData getSharedData(String sharedDataKey, String name)
- {
- return Utilities.getSharedData(this, sharedDataKey, name);
- }
-
- /* (non-Javadoc)
* @see org.apache.wookie.beans.IWidget#getWidgetDescription()
*/
public String getWidgetDescription()
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/wookie-schema.cnd
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/wookie-schema.cnd?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/wookie-schema.cnd (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/wookie-schema.cnd Fri Apr 15 12:17:42 2011
@@ -97,7 +97,6 @@
+ wookie:descriptions (nt:unstructured) = nt:unstructured
+ wookie:startFiles (nt:unstructured) = nt:unstructured
+ wookie:preferenceDefaults (nt:unstructured) = nt:unstructured
-+ wookie:sharedData (nt:unstructured) = nt:unstructured
[wookie:accessRequest] > nt:base
- wookie:elementId (long)
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java Fri Apr 15 12:17:42 2011
@@ -688,7 +688,6 @@ public class JPAPersistenceManager imple
IWidget widget = widgetInstance.getWidget();
Query query = entityManager.createNamedQuery("PARTICIPANTS");
query.setParameter("sharedDataKey", sharedDataKey);
- query.setParameter("widget", widget);
List<IParticipant> participantsList = query.getResultList();
if ((participantsList != null) && !participantsList.isEmpty())
{
@@ -724,7 +723,6 @@ public class JPAPersistenceManager imple
String userId = widgetInstance.getUserId();
Query query = entityManager.createNamedQuery("PARTICIPANT_VIEWER");
query.setParameter("sharedDataKey", sharedDataKey);
- query.setParameter("widget", widget);
query.setParameter("userId", userId);
return (IParticipant)query.getSingleResult();
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java Fri Apr 15 12:17:42 2011
@@ -17,19 +17,15 @@ package org.apache.wookie.beans.jpa.impl
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Version;
import org.apache.wookie.beans.IParticipant;
-import org.apache.wookie.beans.IWidget;
/**
* ParticipantImpl - JPA IParticipant implementation.
@@ -39,8 +35,8 @@ import org.apache.wookie.beans.IWidget;
*/
@Entity(name="Participant")
@Table(name="Participant")
-@NamedQueries({@NamedQuery(name="PARTICIPANTS", query="SELECT p FROM Participant p WHERE p.sharedDataKey = :sharedDataKey AND p.widget = :widget"),
- @NamedQuery(name="PARTICIPANT_VIEWER", query="SELECT p FROM Participant p WHERE p.sharedDataKey = :sharedDataKey AND p.widget = :widget AND p.participantId = :userId")})
+@NamedQueries({@NamedQuery(name="PARTICIPANTS", query="SELECT p FROM Participant p WHERE p.sharedDataKey = :sharedDataKey"),
+ @NamedQuery(name="PARTICIPANT_VIEWER", query="SELECT p FROM Participant p WHERE p.sharedDataKey = :sharedDataKey AND p.participantId = :userId")})
public class ParticipantImpl implements IParticipant
{
@Id
@@ -69,10 +65,6 @@ public class ParticipantImpl implements
@Column(name="sharedDataKey", nullable=false)
private String sharedDataKey;
- @ManyToOne(fetch=FetchType.LAZY, optional=false)
- @JoinColumn(name="widget_id", referencedColumnName="id", nullable=false)
- private WidgetImpl widget;
-
/* (non-Javadoc)
* @see org.apache.wookie.beans.IBean#getId()
*/
@@ -144,20 +136,4 @@ public class ParticipantImpl implements
{
this.sharedDataKey = sharedDataKey;
}
-
- /* (non-Javadoc)
- * @see org.apache.wookie.beans.IParticipant#getWidget()
- */
- public IWidget getWidget()
- {
- return widget;
- }
-
- /* (non-Javadoc)
- * @see org.apache.wookie.beans.IParticipant#setWidget(org.apache.wookie.beans.IWidget)
- */
- public void setWidget(IWidget widget)
- {
- this.widget = (WidgetImpl)widget;
- }
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/WidgetImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/WidgetImpl.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/WidgetImpl.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/WidgetImpl.java Fri Apr 15 12:17:42 2011
@@ -312,33 +312,6 @@ public class WidgetImpl extends Localize
}
/* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#getSharedData()
- */
- public Collection<ISharedData> getSharedData()
- {
- if (sharedData == null)
- {
- sharedData = new ArrayList<SharedDataImpl>();
- }
- return new InverseRelationshipCollection<WidgetImpl,SharedDataImpl,ISharedData>(this, sharedData);
- }
-
- /* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#setSharedData(java.util.Collection)
- */
- public void setSharedData(Collection<ISharedData> sharedData)
- {
- getSharedData().clear();
- if (sharedData != null)
- {
- for (ISharedData data : sharedData)
- {
- getSharedData().add((SharedDataImpl)data);
- }
- }
- }
-
- /* (non-Javadoc)
* @see org.apache.wookie.beans.IWidget#getStartFiles()
*/
public Collection<IStartFile> getStartFiles()
@@ -500,22 +473,6 @@ public class WidgetImpl extends Localize
}
/* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#getSharedData(java.lang.String)
- */
- public ISharedData [] getSharedData(String sharedDataKey)
- {
- return Utilities.getSharedData(this, sharedDataKey);
- }
-
- /* (non-Javadoc)
- * @see org.apache.wookie.beans.IWidget#getSharedData(java.lang.String, java.lang.String)
- */
- public ISharedData getSharedData(String sharedDataKey, String name)
- {
- return Utilities.getSharedData(this, sharedDataKey, name);
- }
-
- /* (non-Javadoc)
* @see org.apache.wookie.beans.IWidget#getWidgetDescription()
*/
public String getWidgetDescription()
Modified: incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/ParticipantsController.java Fri Apr 15 12:17:42 2011
@@ -164,7 +164,6 @@ public class ParticipantsController exte
IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
Map<String, Object> map = new HashMap<String, Object>();
map.put("sharedDataKey", instance.getSharedDataKey());//$NON-NLS-1$
- map.put("widget", instance.getWidget());//$NON-NLS-1$
map.put("participantId", participantId);//$NON-NLS-1$
if (persistenceManager.findByValues(IParticipant.class, map).length != 0) return false;
@@ -174,7 +173,6 @@ public class ParticipantsController exte
participant.setParticipantDisplayName(participantDisplayName);
participant.setParticipantThumbnailUrl(participantThumbnailUrl);
participant.setSharedDataKey(instance.getSharedDataKey());
- participant.setWidget(instance.getWidget());
persistenceManager.save(participant);
return true;
}
@@ -192,7 +190,6 @@ public class ParticipantsController exte
IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
Map<String, Object> map = new HashMap<String, Object>();
map.put("sharedDataKey", instance.getSharedDataKey());//$NON-NLS-1$
- map.put("widget", instance.getWidget());//$NON-NLS-1$
map.put("participantId", participantId);//$NON-NLS-1$
participants = persistenceManager.findByValues(IParticipant.class, map);
if (participants.length != 1) return false;
Modified: incubator/wookie/trunk/src/org/apache/wookie/controller/PropertiesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/PropertiesController.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/PropertiesController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/PropertiesController.java Fri Apr 15 12:17:42 2011
@@ -33,6 +33,7 @@ import org.apache.wookie.exceptions.Reso
import org.apache.wookie.exceptions.ResourceNotFoundException;
import org.apache.wookie.exceptions.UnauthorizedAccessException;
import org.apache.wookie.helpers.Notifier;
+import org.apache.wookie.helpers.SharedDataHelper;
import org.apache.wookie.helpers.WidgetKeyManager;
/**
@@ -201,11 +202,11 @@ public class PropertiesController extend
IWidget widget = widgetInstance.getWidget();
IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
boolean found=false;
- ISharedData sharedData = widget.getSharedData(widgetInstance.getSharedDataKey(), name);
+ ISharedData sharedData = SharedDataHelper.findSharedData(widgetInstance, name);
if (sharedData != null)
{
- if(value==null || value.equalsIgnoreCase("null")){
- widget.getSharedData().remove(sharedData);
+ if(value==null || value.equalsIgnoreCase("null")){
+ persistenceManager.delete(sharedData);
}
else{
if(append){
@@ -219,12 +220,12 @@ public class PropertiesController extend
}
if(!found){
if(value!=null){
- String sharedDataKey = widgetInstance.getSharedDataKey();
+ String sharedDataKey = SharedDataHelper.getInternalSharedDataKey(widgetInstance);
sharedData = persistenceManager.newInstance(ISharedData.class);
sharedData.setSharedDataKey(sharedDataKey);
sharedData.setDkey(name);
sharedData.setDvalue(value);
- widget.getSharedData().add(sharedData);
+ persistenceManager.save(sharedData);
}
}
persistenceManager.save(widget);
Modified: incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=1092677&r1=1092676&r2=1092677&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java Fri Apr 15 12:17:42 2011
@@ -37,6 +37,7 @@ import org.apache.wookie.beans.util.IPer
import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.exceptions.InvalidWidgetCallException;
import org.apache.wookie.helpers.Notifier;
+import org.apache.wookie.helpers.SharedDataHelper;
import org.apache.wookie.helpers.WidgetInstanceFactory;
import org.apache.wookie.helpers.WidgetInstanceHelper;
import org.apache.wookie.helpers.WidgetKeyManager;
@@ -183,7 +184,7 @@ public class WidgetInstancesController e
public static void doGetWidget(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userId = request.getParameter("userid"); //$NON-NLS-1$
- String sharedDataKey = getSharedDataKey(request);
+ String sharedDataKey = request.getParameter("shareddatakey"); //$NON-NLS-1$
String serviceType = request.getParameter("servicetype"); //$NON-NLS-1$
String widgetId = request.getParameter("widgetid"); //$NON-NLS-1$
HttpSession session = request.getSession(true);
@@ -242,22 +243,22 @@ public class WidgetInstancesController e
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
- String sharedDataKey = getSharedDataKey(request);
+ String sharedDataKey = request.getParameter("shareddatakey"); //$NON-NLS-1$;
String cloneSharedDataKey = request.getParameter("cloneshareddatakey");
if (sharedDataKey == null || sharedDataKey.trim().equals("") || cloneSharedDataKey == null || cloneSharedDataKey.trim().equals("")){//$NON-NLS-1$ //$NON-NLS-2$
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return;
}
- String cloneKey = String.valueOf((request.getParameter("apikey")+":"+cloneSharedDataKey).hashCode());//$NON-NLS-1$
+ String cloneKey = SharedDataHelper.getInternalSharedDataKey(instance, cloneSharedDataKey);
IWidget widget = instance.getWidget();
IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
- for (ISharedData sharedData : widget.getSharedData(sharedDataKey))
+ for (ISharedData sharedData : SharedDataHelper.findSharedData(instance))
{
ISharedData clone = persistenceManager.newInstance(ISharedData.class);
clone.setDkey(sharedData.getDkey());
clone.setDvalue(sharedData.getDvalue());
clone.setSharedDataKey(cloneKey);
- widget.getSharedData().add(clone);
+ persistenceManager.save(clone);
}
boolean ok = persistenceManager.save(widget);
if (ok){
@@ -284,16 +285,6 @@ public class WidgetInstancesController e
}
// Utility methods
-
- /**
- * Returns the internal form of shared data key, which is hashed along with the API key. This
- * prevents shared data keys from clashing between different applications
- * @param request the HTTP request to retrieve the shared data key from
- * @return the shared data key
- */
- public static String getSharedDataKey(HttpServletRequest request){
- return String.valueOf((request.getParameter("apikey")+":"+request.getParameter("shareddatakey")).hashCode()); //$NON-NLS-1$ //$NON-NLS-2$
- }
/**
* Returns the absolute URL of the widget instance including id key, proxy url and opensocial token
@@ -347,7 +338,7 @@ public class WidgetInstancesController e
try {
String apiKey = URLDecoder.decode(request.getParameter("api_key"), "UTF-8"); //$NON-NLS-1$
String userId = URLDecoder.decode(request.getParameter("userid"), "UTF-8"); //$NON-NLS-1$
- String sharedDataKey = WidgetInstancesController.getSharedDataKey(request);
+ String sharedDataKey = request.getParameter("shareddatakey"); //$NON-NLS-1$;
String widgetId = request.getParameter("widgetid");
if (widgetId != null){
widgetId = URLDecoder.decode(widgetId, "UTF-8"); //$NON-NLS-1$
Added: incubator/wookie/trunk/src/org/apache/wookie/helpers/SharedDataHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/SharedDataHelper.java?rev=1092677&view=auto
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/SharedDataHelper.java (added)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/SharedDataHelper.java Fri Apr 15 12:17:42 2011
@@ -0,0 +1,60 @@
+/*
+ * Licensed 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.wookie.helpers;
+
+import java.util.HashMap;
+
+import org.apache.wookie.beans.ISharedData;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
+
+/**
+ * Service facade for managing SharedDataKeys in a consistent fashion.
+ *
+ * SharedDataKeys have an external form used by the host application (e.g. "tab23").
+ *
+ * However we also have an internal form which avoids potential collisions, and which is unique
+ * to the combination of the host application, external shared data key, and the widget URI
+ */
+public class SharedDataHelper {
+
+ public static String getInternalSharedDataKey(IWidgetInstance instance){
+ String key = instance.getSharedDataKey() + ":" + instance.getApiKey() + ":" + instance.getWidget().getGuid();
+ return String.valueOf(key.hashCode());
+ }
+
+ public static String getInternalSharedDataKey(IWidgetInstance instance, String sharedDataKey){
+ String key = sharedDataKey + ":" + instance.getApiKey() + ":" + instance.getWidget().getGuid();
+ return String.valueOf(key.hashCode());
+ }
+
+ public static ISharedData[] findSharedData(IWidgetInstance instance){
+ String sharedDataKey = SharedDataHelper.getInternalSharedDataKey(instance);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ return (ISharedData[]) persistenceManager.findByValue(ISharedData.class, "sharedDataKey", sharedDataKey);
+ }
+
+ public static ISharedData findSharedData(IWidgetInstance instance, String key){
+ String sharedDataKey = SharedDataHelper.getInternalSharedDataKey(instance);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("sharedDataKey", sharedDataKey);
+ params.put("dkey", key);
+ ISharedData[] results = (ISharedData[]) persistenceManager.findByValues(ISharedData.class, params);
+ if (results.length != 0) return results[0];
+ return null;
+ }
+
+}