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 2010/06/16 16:16:40 UTC

svn commit: r955236 [8/10] - in /incubator/wookie/branches/pluggablepersistence: ./ WebContent/WEB-INF/ WebContent/admin/ WebContent/webmenu/ ant/ etc/ddl-schema/ etc/tomcat/ etc/tomcat/conf/ parser/java/src/org/apache/wookie/w3c/util/ scripts/ scripts...

Added: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetInstanceImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetInstanceImpl.java?rev=955236&view=auto
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetInstanceImpl.java (added)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetInstanceImpl.java Wed Jun 16 14:16:36 2010
@@ -0,0 +1,411 @@
+/*
+ *  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.beans.jpa.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+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.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Version;
+
+import org.apache.openjpa.persistence.ElementDependent;
+import org.apache.openjpa.persistence.ExternalValues;
+import org.apache.openjpa.persistence.Type;
+
+import org.apache.wookie.beans.IPreference;
+import org.apache.wookie.beans.ISharedData;
+import org.apache.wookie.beans.IToken;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.jpa.InverseRelationshipCollection;
+
+/**
+ * WidgetInstanceImpl - JPA IWidgetInstance implementation.
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+@Entity(name="WidgetInstance")
+@Table(name="WidgetInstance")
+@NamedQueries({@NamedQuery(name="WIDGET_INSTANCE", query="SELECT wi FROM WidgetInstance wi JOIN wi.widget w JOIN w.widgetTypes wt WHERE wi.apiKey = :apiKey AND wi.userId = :userId AND wi.sharedDataKey = :sharedDataKey AND wt.widgetContext = :widgetContext"),
+               @NamedQuery(name="WIDGET_INSTANCE_GUID", query="SELECT wi FROM WidgetInstance wi JOIN wi.widget w WHERE wi.apiKey = :apiKey AND wi.userId = :userId AND wi.sharedDataKey = :sharedDataKey AND w.guid = :guid"),
+               @NamedQuery(name="WIDGET_INSTANCE_ID", query="SELECT wi FROM WidgetInstance wi WHERE wi.idKey = :idKey")})
+public class WidgetInstanceImpl implements IWidgetInstance
+{
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    @Column(name="id", nullable=false)
+    private int id;
+
+    @Version
+    @Column(name="jpa_version")
+    @SuppressWarnings("unused")
+    private int jpaVersion;
+
+    @Basic(optional=false)
+    @Column(name="apikey", nullable=false)
+    private String apiKey;
+
+    @Basic(optional=false)
+    @Column(name="userId", nullable=false)
+    private String userId;
+
+    @Basic
+    @Column(name="sharedDataKey")
+    private String sharedDataKey;
+
+    @Basic
+    @Column(name="nonce")
+    private String nonce;
+
+    @Basic(optional=false)
+    @Column(name="idKey", nullable=false)
+    private String idKey;
+
+    @Basic(optional=false)
+    @Column(name="opensocialToken", nullable=false)
+    private String opensocialToken;
+
+    @ManyToOne(fetch=FetchType.LAZY, optional=false)
+    @JoinColumn(name="widget_id", referencedColumnName="id", nullable=false)
+    private WidgetImpl widget;
+
+    @Basic
+    @Column(name="updated")
+    @ExternalValues({"true=t","false=f","null="})
+    @Type(String.class)
+    private Boolean updated;
+    
+    @Basic
+    @Column(name="shown")
+    @ExternalValues({"true=t","false=f","null="})
+    @Type(String.class)
+    private Boolean shown;
+    
+    @Basic
+    @Column(name="hidden")
+    @ExternalValues({"true=t","false=f","null="})
+    @Type(String.class)
+    private Boolean hidden;
+    
+    @Basic
+    @Column(name="locked")
+    @ExternalValues({"true=t","false=f","null="})
+    @Type(String.class)
+    private Boolean locked;
+    
+    @Basic
+    @Column(name="lang")
+    private String lang;
+    
+    @OneToMany(mappedBy="widgetInstance", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
+    @ElementDependent
+    private Collection<PreferenceImpl> preferences;
+
+    @OneToMany(mappedBy="widgetInstance", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
+    @ElementDependent
+    private Collection<TokenImpl> tokens;
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getApiKey()
+     */
+    public String getApiKey()
+    {
+        return apiKey;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setApiKey(java.lang.String)
+     */
+    public void setApiKey(String apiKey)
+    {
+        this.apiKey = apiKey;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IBean#getId()
+     */
+    public Object getId()
+    {
+        return id;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getIdKey()
+     */
+    public String getIdKey()
+    {
+        return idKey;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setIdKey(java.lang.String)
+     */
+    public void setIdKey(String idKey)
+    {
+        this.idKey = idKey;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getLang()
+     */
+    public String getLang()
+    {
+        return lang;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setLang(java.lang.String)
+     */
+    public void setLang(String lang)
+    {
+        this.lang = lang;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getNonce()
+     */
+    public String getNonce()
+    {
+        return nonce;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setNonce(java.lang.String)
+     */
+    public void setNonce(String nonce)
+    {
+        this.nonce = nonce;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getOpensocialToken()
+     */
+    public String getOpensocialToken()
+    {
+        return opensocialToken;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setOpensocialToken(java.lang.String)
+     */
+    public void setOpensocialToken(String opensocialToken)
+    {
+        this.opensocialToken = opensocialToken;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getPreferences()
+     */
+    public Collection<IPreference> getPreferences()
+    {
+        if (preferences == null)
+        {
+            preferences = new ArrayList<PreferenceImpl>();
+        }
+        return new InverseRelationshipCollection<WidgetInstanceImpl,PreferenceImpl,IPreference>(this, preferences);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setPreferences(java.util.Collection)
+     */
+    public void setPreferences(Collection<IPreference> preferences)
+    {
+        getPreferences().clear();
+        if (preferences != null)
+        {
+            for (IPreference preference : preferences)
+            {
+                getPreferences().add((PreferenceImpl)preference);
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getSharedDataKey()
+     */
+    public String getSharedDataKey()
+    {
+        return sharedDataKey;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setSharedDataKey(java.lang.String)
+     */
+    public void setSharedDataKey(String sharedDataKey)
+    {
+        this.sharedDataKey = sharedDataKey;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getTokens()
+     */
+    public Collection<IToken> getTokens()
+    {
+        if (tokens == null)
+        {
+            tokens = new ArrayList<TokenImpl>();
+        }
+        return new InverseRelationshipCollection<WidgetInstanceImpl,TokenImpl,IToken>(this, tokens);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setTokens(java.util.Collection)
+     */
+    public void setTokens(Collection<IToken> tokens)
+    {
+        getTokens().clear();
+        if (tokens != null)
+        {
+            for (IToken token : tokens)
+            {
+                getTokens().add((TokenImpl)token);
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getUserId()
+     */
+    public String getUserId()
+    {
+        return userId;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setUserId(java.lang.String)
+     */
+    public void setUserId(String userId)
+    {
+        this.userId = userId;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getWidget()
+     */
+    public IWidget getWidget()
+    {
+        return widget;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setWidget(org.apache.wookie.beans.IWidget)
+     */
+    public void setWidget(IWidget widget)
+    {
+        this.widget = (WidgetImpl)widget;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#isHidden()
+     */
+    public boolean isHidden()
+    {
+        return ((hidden != null) ? hidden.booleanValue() : false);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setHidden(boolean)
+     */
+    public void setHidden(boolean hidden)
+    {
+        this.hidden = (hidden ? Boolean.TRUE : Boolean.FALSE);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#isLocked()
+     */
+    public boolean isLocked()
+    {
+        return ((locked != null) ? locked.booleanValue() : false);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setLocked(boolean)
+     */
+    public void setLocked(boolean locked)
+    {
+        this.locked = (locked ? Boolean.TRUE : Boolean.FALSE);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#isShown()
+     */
+    public boolean isShown()
+    {
+        return ((shown != null) ? shown.booleanValue() : false);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setShown(boolean)
+     */
+    public void setShown(boolean shown)
+    {
+        this.shown = (shown ? Boolean.TRUE : Boolean.FALSE);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#isUpdated()
+     */
+    public boolean isUpdated()
+    {
+        return ((updated != null) ? updated.booleanValue() : false);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#setUpdated(boolean)
+     */
+    public void setUpdated(boolean updated)
+    {
+        this.updated = (updated ? Boolean.TRUE : Boolean.FALSE);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getPreference(java.lang.String)
+     */
+    public IPreference getPreference(String key)
+    {
+        return Utilities.getPreference(this, key);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getSharedData()
+     */
+    public ISharedData [] getSharedData()
+    {
+        return Utilities.getSharedData(this);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetInstance#getSharedData(java.lang.String)
+     */
+    public ISharedData getSharedData(String name)
+    {
+        return Utilities.getSharedData(this, name);
+    }
+}

Added: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetServiceImpl.java?rev=955236&view=auto
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetServiceImpl.java (added)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetServiceImpl.java Wed Jun 16 14:16:36 2010
@@ -0,0 +1,75 @@
+/*
+ *  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.beans.jpa.impl;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Version;
+
+import org.apache.wookie.beans.IWidgetService;
+
+/**
+ * WidgetServiceImpl - JPA IWidgetService implementation.
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+@Entity(name="WidgetService")
+@Table(name="WidgetService")
+public class WidgetServiceImpl implements IWidgetService
+{
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    @Column(name="id", nullable=false)
+    private int id;
+
+    @Version
+    @Column(name="jpa_version")
+    @SuppressWarnings("unused")
+    private int jpaVersion;
+
+    @Basic(optional=false)
+    @Column(name="service_name", nullable=false)
+    private String serviceName;
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IBean#getId()
+     */
+    public Object getId()
+    {
+        return id;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetService#getServiceName()
+     */
+    public String getServiceName()
+    {
+        return serviceName;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetService#setServiceName(java.lang.String)
+     */
+    public void setServiceName(String serviceName)
+    {
+        this.serviceName = serviceName;
+    }
+}

Added: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetTypeImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetTypeImpl.java?rev=955236&view=auto
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetTypeImpl.java (added)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/impl/WidgetTypeImpl.java Wed Jun 16 14:16:36 2010
@@ -0,0 +1,85 @@
+/*
+ *  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.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.Table;
+import javax.persistence.Version;
+
+import org.apache.wookie.beans.IWidgetType;
+import org.apache.wookie.beans.jpa.IInverseRelationship;
+
+/**
+ * WidgetTypeImpl - JPA IWidgetType implementation.
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+@Entity(name="WidgetType")
+@Table(name="WidgetType")
+public class WidgetTypeImpl implements IWidgetType, IInverseRelationship<WidgetImpl>
+{
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    @Column(name="id", nullable=false)
+    @SuppressWarnings("unused")
+    private int id;
+
+    @Version
+    @Column(name="jpa_version")
+    @SuppressWarnings("unused")
+    private int jpaVersion;
+
+    @ManyToOne(fetch=FetchType.LAZY)
+    @JoinColumn(name="widget_id", referencedColumnName="id")
+    @SuppressWarnings("unused")
+    private WidgetImpl widget;
+    
+    @Basic
+    @Column(name="widget_context")
+    private String widgetContext;
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.util.IInverseRelationship#updateInverseRelationship(java.lang.Object)
+     */
+    public void updateInverseRelationship(WidgetImpl owningObject)
+    {
+        widget = owningObject;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetType#getWidgetContext()
+     */
+    public String getWidgetContext()
+    {
+        return widgetContext;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.wookie.beans.IWidgetType#setWidgetContext(java.lang.String)
+     */
+    public void setWidgetContext(String widgetContext)
+    {
+        this.widgetContext = widgetContext;
+    }
+}

Added: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/persistence.properties
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/persistence.properties?rev=955236&view=auto
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/persistence.properties (added)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/jpa/persistence.properties Wed Jun 16 14:16:36 2010
@@ -0,0 +1,19 @@
+# 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.
+
+openjpa.Log=log4j
+openjpa.jdbc.SchemaFactory=native(ForeignKeys=true)
+openjpa.DataCache=true(CacheSize=1000,SoftReferenceSize=0)
+openjpa.QueryCache=CacheSize=100,SoftReferenceSize=0
+openjpa.DataCacheTimeout=3600000
+openjpa.RemoteCommitProvider=sjvm
+#openjpa.RemoteCommitProvider=tcp(Port=5636,Addresses=10.0.0.1;10.0.0.2)

Added: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/IPersistenceManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/IPersistenceManager.java?rev=955236&view=auto
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/IPersistenceManager.java (added)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/IPersistenceManager.java Wed Jun 16 14:16:36 2010
@@ -0,0 +1,237 @@
+/*
+ *  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.beans.util;
+
+import java.util.Map;
+
+import org.apache.wookie.beans.IAccessRequest;
+import org.apache.wookie.beans.IBean;
+import org.apache.wookie.beans.IParticipant;
+import org.apache.wookie.beans.IServerFeature;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetInstance;
+
+/**
+ * IPersistenceManager - beans persistence manager interface.
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public interface IPersistenceManager
+{
+    /**
+     * Begin persistence manager transaction.
+     */
+    void begin();
+    
+    /**
+     * Commit persistence manager transaction.
+     */
+    void commit();
+    
+    /**
+     * Rollback persistence manager transaction
+     */
+    void rollback();
+    
+    /**
+     * Close persistence manager.
+     */
+    void close();
+    
+    /**
+     * Find persistent bean by generic id.
+     * 
+     * @param beanInterface interface of bean to retrieve
+     * @param id id object of bean to retrieve
+     * @return retrieved bean instance or null if not found
+     */
+    <T extends IBean> T findById(Class<T> beanInterface, Object id);
+    
+    /**
+     * Find persistent beans with matching value for specified field.
+     * 
+     * @param beansInterface interface of beans to retrieve
+     * @param name name of field to match
+     * @param value value of field to match
+     * @return retrieved matching beans array or empty array if none found
+     */
+    <T extends IBean> T [] findByValue(Class<T> beansInterface, String name, Object value);
+
+    /**
+     * Find ordered persistent beans with matching value for specified field.
+     * 
+     * @param beansInterface interface of beans to retrieve
+     * @param name name of field to match
+     * @param value value of field to match
+     * @param orderBy name of field to order matching beans
+     * @param ascending ascending order flag
+     * @return retrieved matching beans array or empty array if none found
+     */
+    <T extends IBean> T [] findByValue(Class<T> beansInterface, String name, Object value, String orderBy, boolean ascending);
+    
+    /**
+     * Find persistent beans with matching values for specified fields.
+     * 
+     * @param beansInterface interface of beans to retrieve
+     * @param values name/value map of fields to match
+     * @return retrieved matching beans array or empty array if none found
+     */
+    <T extends IBean> T [] findByValues(Class<T> beansInterface, Map<String,Object> values);
+
+    /**
+     * Find ordered persistent beans with matching values for specified fields.
+     * 
+     * @param beansInterface interface of beans to retrieve
+     * @param values name/value map of fields to match
+     * @param orderBy name of field to order matching beans
+     * @param ascending ascending order flag
+     * @return retrieved matching beans array or empty array if none found
+     */
+    <T extends IBean> T [] findByValues(Class<T> beansInterface, Map<String,Object> values, String orderBy, boolean ascending);
+
+    /**
+     * Find all persistent beans.
+     * 
+     * @param beansInterface interface of beans to retrieve
+     * @return retrieved matching beans array or empty array if none found
+     */
+    <T extends IBean> T [] findAll(Class<T> beansInterface);
+
+    /**
+     * Create new instance of persistent class.
+     * 
+     * @param instanceInterface interface of persistent class to create.
+     * @return new instance
+     */
+    <T> T newInstance(Class<T> instanceInterface);
+
+    /**
+     * Save persistent bean.
+     * 
+     * @param bean previously retrieved bean to save.
+     * @return operation success flag
+     */
+    boolean save(IBean bean);
+    
+    /**
+     * Delete persistent bean.
+     * 
+     * @param bean previously retrieved bean to delete.
+     * @return operation success flag
+     */
+    boolean delete(IBean bean);
+    
+    /**
+     * Delete persistent beans.
+     * 
+     * @param bean previously retrieved beans to delete.
+     * @return operation success flag
+     */
+    boolean delete(IBean [] beans);
+    
+    /**
+     * Custom GUID IWidget query.
+     *  
+     * @param guid GUID matching query value
+     * @return retrieved IWidget bean instance or null if not found
+     */
+    IWidget findWidgetByGuid(String guid);
+
+    /**
+     * Custom default widget type IWidget query.
+     *  
+     * @param widgetContext default widget type matching query value
+     * @return retrieved IWidget bean instance or null if not found
+     */
+    IWidget findWidgetDefaultByType(String widgetContext);
+
+    /**
+     * Custom widget type IWidgets query.
+     *  
+     * @param widgetContext widget type matching query value
+     * @return retrieved matching IWidget beans array or empty array if none found
+     */
+    IWidget [] findWidgetsByType(String widgetContext);
+
+    /**
+     * Custom service type IWidgetInstance query.
+     * 
+     * @param apiKey API key matching query value
+     * @param userId user id matching query value
+     * @param sharedDataKey shared data key matching query value
+     * @param serviceContext service type matching query value
+     * @return retrieved IWidgetInstance bean instance or null if not found
+     */
+    IWidgetInstance findWidgetInstance(String apiKey, String userId, String sharedDataKey, String serviceContext);
+
+    /**
+     * Custom widget GUID IWidgetInstance query.
+     * 
+     * @param apiKey API key matching query value
+     * @param userId user id matching query value
+     * @param sharedDataKey shared data key matching query value
+     * @param widgetGuid widget GUID matching query value
+     * @return retrieved IWidgetInstance bean instance or null if not found
+     */
+    IWidgetInstance findWidgetInstanceByGuid(String apiKey, String userId, String sharedDataKey, String widgetGuid);
+
+    /**
+     * Custom id key IWidgetInstance query.
+     * 
+     * @param idKey id key matching query value
+     * @return retrieved IWidgetInstance bean instance or null if not found
+     */
+    IWidgetInstance findWidgetInstanceByIdKey(String idKey);
+    
+    /**
+     * Custom widget instance IParticipant query.
+     * 
+     * @param widgetInstance widget instance query value
+     * @return retrieved matching IParticipant beans array or empty array if none found
+     */
+    IParticipant [] findParticipants(IWidgetInstance widgetInstance);
+    
+    /**
+     * Custom widget instance viewer IParticipant query.
+     * 
+     * @param widgetInstance widget instance query value
+     * @return retrieved IParticipant bean instance or null if not found
+     */
+    IParticipant findParticipantViewer(IWidgetInstance widgetInstance);
+
+    /**
+     * Custom name IServerFeature query.
+     * 
+     * @param name name query value
+     * @return retrieved IServerFeature bean instance or null if not found
+     */
+    IServerFeature findServerFeatureByName(String name);
+    
+    /**
+     * Custom name IAccessRequest query.
+     * 
+     * @param widget widget query value
+     * @return retrieved matching IAccessRequest beans array or empty array if none found
+     */
+    IAccessRequest [] findApplicableAccessRequests(IWidget widget);
+    
+    /**
+     * Custom IServerFeature names query.
+     * 
+     * @return retrieved IServerFeature beans names array or empty array if none found
+     */
+    String [] findServerFeatureNames();
+}

Added: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java?rev=955236&view=auto
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java (added)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/beans/util/PersistenceManagerFactory.java Wed Jun 16 14:16:36 2010
@@ -0,0 +1,274 @@
+/*
+ *  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.beans.util;
+
+import java.lang.reflect.Method;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.wookie.beans.IApiKey;
+import org.apache.wookie.beans.IDescription;
+import org.apache.wookie.beans.IName;
+import org.apache.wookie.beans.IStartFile;
+import org.apache.wookie.beans.IWhitelist;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetDefault;
+import org.apache.wookie.beans.IWidgetIcon;
+import org.apache.wookie.beans.IWidgetService;
+import org.apache.wookie.beans.IWidgetType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * PersistenceManagerFactory - factory to create and manage IPersistenceManager
+ *                             instances per application thread.
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class PersistenceManagerFactory
+{
+    private static final Logger logger = LoggerFactory.getLogger(PersistenceManagerFactory.class);
+
+    public static final String PERSISTENCE_MANAGER_CLASS_NAME_PROPERTY_NAME = "widget.persistence.manager.classname";
+    public static final String PERSISTENCE_MANAGER_CLASS_NAME_DEFAULT = "org.apache.wookie.beans.jpa.JPAPersistenceManager";
+    public static final String PERSISTENCE_MANAGER_INITIALIZE_STORE_PROPERTY_NAME = "widget.persistence.manager.initstore";
+    
+    private static boolean initialized;
+    private static Class<?> persistenceManagerClass;
+    private static ThreadLocal<IPersistenceManager> threadPersistenceManager = new ThreadLocal<IPersistenceManager>();
+    
+    /**
+     * Initialize factory with configuration.
+     * 
+     * @param configuration configuration properties
+     */
+    public static void initialize(Configuration configuration)
+    {
+        if (!initialized)
+        {
+            // initialize persistence manager implementation and
+            // initialize persistent store if specified
+            String className = configuration.getString(PERSISTENCE_MANAGER_CLASS_NAME_PROPERTY_NAME, PERSISTENCE_MANAGER_CLASS_NAME_DEFAULT);
+            boolean initializeStore = configuration.getBoolean(PERSISTENCE_MANAGER_INITIALIZE_STORE_PROPERTY_NAME, false);
+            try
+            {
+                persistenceManagerClass = Class.forName(className);
+
+                Method initializeMethod = persistenceManagerClass.getMethod("initialize", Configuration.class, boolean.class);
+                initializeMethod.invoke(null, configuration, initializeStore);
+            }
+            catch (Exception e)
+            {
+                throw new RuntimeException("Unable to load or initialize PersistenceManager class: "+e, e);                
+            }
+            
+            initialized = true;
+
+            // initialize persistence store using persistence manager
+            if (initializeStore)
+            {
+                try
+                {
+                    // allocate and begin persistence manager transaction
+                    IPersistenceManager persistenceManager = getPersistenceManager();
+                    persistenceManager.begin();
+
+                    // Widget
+                    IWidget widget = persistenceManager.newInstance(IWidget.class);
+                    widget.setHeight(350);
+                    widget.setWidth(500);
+                    widget.setGuid("http://notsupported");
+                    widget.setWidgetAuthor("Paul Sharples");
+                    widget.setWidgetAuthorEmail("p.sharples@bolton.ac.uk");
+                    widget.setWidgetAuthorHref("http://iec.bolton.ac.uk");
+                    widget.setVersion("v1.0");
+                    IName widgetName = persistenceManager.newInstance(IName.class);
+                    widgetName.setName("Unsupported widget widget");
+                    widgetName.setShortName("Unsupported");
+                    widget.getNames().add(widgetName);
+                    IDescription widgetDescription = persistenceManager.newInstance(IDescription.class);
+                    widgetDescription.setContent("This widget is a placeholder for when no corresponding widget is found for a given type");
+                    widget.getDescriptions().add(widgetDescription);
+                    IStartFile widgetStartFile = persistenceManager.newInstance(IStartFile.class);
+                    widgetStartFile.setUrl("/wookie/wservices/notsupported/index.htm");
+                    widget.getStartFiles().add(widgetStartFile);
+                    IStartFile widgetBUStartFile = persistenceManager.newInstance(IStartFile.class);
+                    widgetBUStartFile.setUrl("/wookie/wservices/notsupported/locales/bu/index.htm");
+                    widgetBUStartFile.setLang("bu");
+                    widget.getStartFiles().add(widgetBUStartFile);
+                    IStartFile widgetFRStartFile = persistenceManager.newInstance(IStartFile.class);
+                    widgetFRStartFile.setUrl("/wookie/wservices/notsupported/locales/fr/index.htm");
+                    widgetFRStartFile.setLang("fr");
+                    widget.getStartFiles().add(widgetFRStartFile);
+                    IStartFile widgetENStartFile = persistenceManager.newInstance(IStartFile.class);
+                    widgetENStartFile.setUrl("/wookie/wservices/notsupported/locales/en/index.htm");
+                    widgetENStartFile.setLang("en");
+                    widget.getStartFiles().add(widgetENStartFile);
+                    IWidgetType widgetType = persistenceManager.newInstance(IWidgetType.class);
+                    widgetType.setWidgetContext("unsupported");
+                    widget.getWidgetTypes().add(widgetType);
+                    IWidgetIcon widgetIcon = persistenceManager.newInstance(IWidgetIcon.class);
+                    widgetIcon.setSrc("/wookie/shared/images/defaultwidget.png");
+                    widgetIcon.setHeight(80);
+                    widgetIcon.setWidth(80);
+                    widgetIcon.setLang("en");
+                    widget.getWidgetIcons().add(widgetIcon);
+                    persistenceManager.save(widget);
+
+                    // WidgetDefault
+                    IWidgetDefault widgetDefault = persistenceManager.newInstance(IWidgetDefault.class);
+                    widgetDefault.setWidget(widget);
+                    widgetDefault.setWidgetContext("unsupported");
+                    persistenceManager.save(widgetDefault);
+
+                    // WidgetService
+                    IWidgetService unsupportedWidgetService = persistenceManager.newInstance(IWidgetService.class);
+                    unsupportedWidgetService.setServiceName("unsupported");
+                    persistenceManager.save(unsupportedWidgetService);
+                    IWidgetService chatWidgetService = persistenceManager.newInstance(IWidgetService.class);
+                    chatWidgetService.setServiceName("chat");
+                    persistenceManager.save(chatWidgetService);
+                    IWidgetService gamesWidgetService = persistenceManager.newInstance(IWidgetService.class);
+                    gamesWidgetService.setServiceName("games");
+                    persistenceManager.save(gamesWidgetService);
+                    IWidgetService votingWidgetService = persistenceManager.newInstance(IWidgetService.class);
+                    votingWidgetService.setServiceName("voting");
+                    persistenceManager.save(votingWidgetService);
+                    IWidgetService weatherWidgetService = persistenceManager.newInstance(IWidgetService.class);
+                    weatherWidgetService.setServiceName("weather");
+                    persistenceManager.save(weatherWidgetService);
+
+                    // Whitelist
+                    IWhitelist localhostIPAddrWhitelist = persistenceManager.newInstance(IWhitelist.class);
+                    localhostIPAddrWhitelist.setfUrl("http://127.0.0.1");
+                    persistenceManager.save(localhostIPAddrWhitelist);
+                    IWhitelist localhostWhitelist = persistenceManager.newInstance(IWhitelist.class);
+                    localhostWhitelist.setfUrl("http://localhost");
+                    persistenceManager.save(localhostWhitelist);
+                    IWhitelist wookieServerWhitelist = persistenceManager.newInstance(IWhitelist.class);
+                    wookieServerWhitelist.setfUrl("http://incubator.apache.org/wookie");
+                    persistenceManager.save(wookieServerWhitelist);
+
+                    // ApiKey
+                    IApiKey apiKey = persistenceManager.newInstance(IApiKey.class);
+                    apiKey.setValue("TEST");
+                    apiKey.setEmail("test@127.0.0.1");
+                    persistenceManager.save(apiKey);
+
+                    // commit persistence manager transaction
+                    persistenceManager.commit();
+                }
+                finally
+                {
+                    // close persistence manager transaction
+                    closePersistenceManager();
+                }
+            }
+            
+            logger.info("Initialized with "+className);
+        }
+        else
+        {
+            throw new RuntimeException("PersistenceManagerFactory already initialized");
+        }
+    }
+    
+    /**
+     * Get persistence manager associated with current thread,
+     * allocate new persistence manager if required.
+     * 
+     * @return persistence manager
+     */
+    public static IPersistenceManager getPersistenceManager()
+    {
+        if (initialized)
+        {
+            // get persistence manager associated with current thread or
+            // create new persistence manager instance for current thread
+            IPersistenceManager persistenceManager = threadPersistenceManager.get();
+            if (!persistenceManagerClass.isInstance(persistenceManager))
+            {
+                try
+                {
+                    persistenceManager = (IPersistenceManager)persistenceManagerClass.newInstance();
+                    threadPersistenceManager.set(persistenceManager);
+                }
+                catch (Exception e)
+                {
+                    throw new RuntimeException("Unable to instantiate PersistenceManager: "+e, e);
+                }
+            }
+            return persistenceManager;
+        }
+        else
+        {
+            throw new RuntimeException("PersistenceManagerFactory not initialized");            
+        }
+    }
+    
+    /**
+     * Close and remove persistence manager associated with current
+     * thread.
+     */
+    public static void closePersistenceManager()
+    {
+        if (initialized)
+        {
+            // close and remove persistence manager associated with current thread
+            IPersistenceManager persistenceManager = threadPersistenceManager.get();
+            if (persistenceManager != null)
+            {
+                persistenceManager.close();
+                threadPersistenceManager.remove();
+            }
+            else
+            {
+                throw new RuntimeException("PersistenceManager already closed or not allocated for thread");
+            }
+        }
+        else
+        {
+            throw new RuntimeException("PersistenceManagerFactory not initialized");            
+        }
+    }
+
+    /**
+     * Terminate factory.
+     */
+    public static void terminate()
+    {
+        if (initialized)
+        {
+            initialized = false;
+
+            // terminate persistence manager implementation
+            try
+            {
+                Method terminateMethod = persistenceManagerClass.getMethod("terminate", (Class [])null);
+                terminateMethod.invoke(null, (Object [])null);
+            }
+            catch (Exception e)
+            {
+                throw new RuntimeException("Unable to terminate PersistenceManager class: "+e, e);                
+            }
+
+            logger.info("Terminated");
+        }
+        else
+        {
+            throw new RuntimeException("PersistenceManagerFactory not initialized");
+        }
+    }
+}

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/ParticipantsController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/ParticipantsController.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/ParticipantsController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/ParticipantsController.java Wed Jun 16 14:16:36 2010
@@ -24,8 +24,10 @@ import javax.servlet.http.HttpServletRes
 import javax.servlet.http.HttpSession;
 
 import org.apache.log4j.Logger;
-import org.apache.wookie.beans.Participant;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IParticipant;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
@@ -72,9 +74,10 @@ public class ParticipantsController exte
 	@Override
 	public void show(String resourceId,HttpServletRequest request, HttpServletResponse response) throws UnauthorizedAccessException,ResourceNotFoundException, IOException{
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if (instance == null) throw new ResourceNotFoundException();
-		Participant[] participants = Participant.getParticipants(instance);
+		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IParticipant[] participants = persistenceManager.findParticipants(instance);
 		returnXml(ParticipantHelper.createXMLParticipantsDocument(participants), response);
 	}
 
@@ -89,18 +92,18 @@ public class ParticipantsController exte
 			UnauthorizedAccessException {
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
 
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if (instance == null) throw new InvalidParametersException();
 		
 		HttpSession session = request.getSession(true);						
-		String participant_id = request.getParameter("participant_id"); //$NON-NLS-1$
-		String participant_display_name = request.getParameter("participant_display_name"); //$NON-NLS-1$
-		String participant_thumbnail_url = request.getParameter("participant_thumbnail_url"); //$NON-NLS-1$
+		String participantId = request.getParameter("participant_id"); //$NON-NLS-1$
+		String participantDisplayName = request.getParameter("participant_display_name"); //$NON-NLS-1$
+		String participantThumbnailUrl = request.getParameter("participant_thumbnail_url"); //$NON-NLS-1$
 		
 		// Check required params
-		if (participant_id == null || participant_id.trim().equals("")) throw new InvalidParametersException();
+		if (participantId == null || participantId.trim().equals("")) throw new InvalidParametersException();
 
-		if (addParticipantToWidgetInstance(instance, participant_id, participant_display_name, participant_thumbnail_url)){
+		if (addParticipantToWidgetInstance(instance, participantId, participantDisplayName, participantThumbnailUrl)){
 			Notifier.notifyWidgets(session, instance, Notifier.PARTICIPANTS_UPDATED);
 			return true;
 		} else {
@@ -119,11 +122,11 @@ public class ParticipantsController exte
 			throws ResourceNotFoundException, UnauthorizedAccessException,
 			InvalidParametersException {
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if (instance == null) throw new InvalidParametersException();
 		HttpSession session = request.getSession(true);						
-		String participant_id = request.getParameter("participant_id"); //$NON-NLS-1$
-		if(removeParticipantFromWidgetInstance(instance, participant_id)){
+		String participantId = request.getParameter("participant_id"); //$NON-NLS-1$
+		if(removeParticipantFromWidgetInstance(instance, participantId)){
 			Notifier.notifyWidgets(session, instance, Notifier.PARTICIPANTS_UPDATED);
 			return true;
 		}else{
@@ -139,25 +142,26 @@ public class ParticipantsController exte
 	 * @param participantThumbnailUrl the thumbnail url property of the participant to add
 	 * @return true if the participant was successfully added, otherwise false
 	 */
-	public static boolean addParticipantToWidgetInstance(WidgetInstance instance,
+	public static boolean addParticipantToWidgetInstance(IWidgetInstance instance,
 			String participantId, String participantDisplayName,
 			String participantThumbnailUrl) {
 
 		// Does participant already exist?
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("sharedDataKey", instance.getSharedDataKey());//$NON-NLS-1$
-		map.put("widgetGuid", instance.getWidget().getGuid());//$NON-NLS-1$
-		map.put("participant_id", participantId);//$NON-NLS-1$
-		if (Participant.findByValues(map).length != 0) return false;		
+		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;		
 
 		// Add participant
-		Participant participant = new Participant();
-		participant.setParticipant_id(participantId);
-		participant.setParticipant_display_name(participantDisplayName);
-		participant.setParticipant_thumbnail_url(participantThumbnailUrl);
+		IParticipant participant = persistenceManager.newInstance(IParticipant.class);
+		participant.setParticipantId(participantId);
+		participant.setParticipantDisplayName(participantDisplayName);
+		participant.setParticipantThumbnailUrl(participantThumbnailUrl);
 		participant.setSharedDataKey(instance.getSharedDataKey());
-		participant.setWidgetGuid(instance.getWidget().getGuid());
-		participant.save();
+		participant.setWidget(instance.getWidget());
+		persistenceManager.save(participant);
 		return true;
 	}
 
@@ -167,18 +171,19 @@ public class ParticipantsController exte
 	 * @param participantId the id property of the participant
 	 * @return true if the participant is successfully removed, otherwise false
 	 */
-	private static boolean removeParticipantFromWidgetInstance(WidgetInstance instance,
+	private static boolean removeParticipantFromWidgetInstance(IWidgetInstance instance,
 			String participantId) {
-		Participant[] participants;
+		IParticipant[] participants;
 		// Does participant exist?
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("sharedDataKey", instance.getSharedDataKey());//$NON-NLS-1$
-		map.put("widgetGuid", instance.getWidget().getGuid());//$NON-NLS-1$
-		map.put("participant_id", participantId);//$NON-NLS-1$
-		participants = Participant.findByValues(map);
+		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;	
 		// Remove participant
-		Participant.delete(participants[0]);
+		persistenceManager.delete(participants[0]);
 		return true;
 	}
 }
\ No newline at end of file

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/PropertiesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/PropertiesController.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/PropertiesController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/PropertiesController.java Wed Jun 16 14:16:36 2010
@@ -22,9 +22,12 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.log4j.Logger;
-import org.apache.wookie.beans.Preference;
-import org.apache.wookie.beans.SharedData;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IPreference;
+import org.apache.wookie.beans.ISharedData;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
@@ -79,16 +82,16 @@ public class PropertiesController extend
 			HttpServletResponse response) throws ResourceNotFoundException,
 			UnauthorizedAccessException, IOException {
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if (instance == null) throw new ResourceNotFoundException();
 		String name = request.getParameter("propertyname"); //$NON-NLS-1$
 		if (name == null || name.trim().equals("")) throw new ResourceNotFoundException();
 		String value = null;
 		// Note that preferences and shared data keys may be the same!
 		// We let the shared data values override.
-		Preference pref = Preference.findPreferenceForInstance(instance, name);
+		IPreference pref = instance.getPreference(name);
 		if (pref != null) value = pref.getDvalue();
-		SharedData data = SharedData.findSharedDataForInstance(instance, name);
+		ISharedData data = instance.getSharedData(name);
 		if (data != null) value = data.getDvalue();
 		if (value == null) throw new ResourceNotFoundException();
 		PrintWriter out = response.getWriter();
@@ -101,7 +104,7 @@ public class PropertiesController extend
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
 		if (request.getParameter("value") != null) throw new InvalidParametersException();//$NON-NLS-1$
 		String name = request.getParameter("propertyname"); //$NON-NLS-1$
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if (instance == null) throw new InvalidParametersException();
 		if (name == null || name.trim().equals("")) throw new InvalidParametersException();
 		
@@ -142,7 +145,7 @@ public class PropertiesController extend
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
 		String name = request.getParameter("propertyname"); //$NON-NLS-1$
 		String value = request.getParameter("propertyvalue"); //$NON-NLS-1$
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if (instance == null) throw new InvalidParametersException();
 		if (name == null || name.trim().equals("")) throw new InvalidParametersException();
 		
@@ -160,30 +163,29 @@ public class PropertiesController extend
 	 * @param name
 	 * @param value
 	 */
-	public static boolean updatePreference(WidgetInstance widgetInstance, String name, String value){
+	public static boolean updatePreference(IWidgetInstance widgetInstance, String name, String value){
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
         boolean found=false;
-        for (Preference preference : Preference.findPreferencesForInstance(widgetInstance)){
-        	if(preference.getDkey().equals(name)){
-        		// if the value is null we need to remove the tuple
-        		if(value==null || value.equalsIgnoreCase("null")){  
-        			preference.delete();     			
-        		}
-        		else{    
-        			preference.setDvalue(value);
-        			preference.save();
-        		}
-        		found=true;
-        	}
+        IPreference preference = widgetInstance.getPreference(name);
+        if (preference != null)
+        {
+            if(value==null || value.equalsIgnoreCase("null")){  
+                widgetInstance.getPreferences().remove(preference);
+            }
+            else{    
+                preference.setDvalue(value);
+            }
+            found=true;
         }
         if(!found){  
         	if (value != null){
-        		Preference pref = new Preference();
-        		pref.setWidgetInstance(widgetInstance);
-        		pref.setDkey(name);
-        		pref.setDvalue(value);	
-        		pref.save();
+                preference = persistenceManager.newInstance(IPreference.class);
+        		preference.setDkey(name);
+        		preference.setDvalue(value);
+        		widgetInstance.getPreferences().add(preference);
         	}
         }  
+        persistenceManager.save(widgetInstance);
         return found;
 	}
 	
@@ -195,38 +197,37 @@ public class PropertiesController extend
 	 * @param append
 	 * @return
 	 */
-	public synchronized static boolean updateSharedDataEntry(WidgetInstance widgetInstance, String name, String value, boolean append){
-		boolean found=false;
-		for (SharedData sharedData : SharedData.findSharedDataForInstance(widgetInstance)){
-			if(sharedData.getDkey().equals(name)){
-				// if the value is null we need to remove the tuple
-				if(value==null || value.equalsIgnoreCase("null")){   
-					sharedData.delete();
-				}
-				else{    
-					if(append){
-						sharedData.setDvalue(sharedData.getDvalue() + value);
-					}
-					else{
-						sharedData.setDvalue(value);
-					}
-					sharedData.save();
-				}
-				found=true;
-			}       	
-		}
+	public synchronized static boolean updateSharedDataEntry(IWidgetInstance widgetInstance, String name, String value, boolean append){
+		IWidget widget = widgetInstance.getWidget();
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+        boolean found=false;
+        ISharedData sharedData = widget.getSharedData(widgetInstance.getSharedDataKey(), name);
+        if (sharedData != null)
+        {
+            if(value==null || value.equalsIgnoreCase("null")){   
+                widget.getSharedData().remove(sharedData);
+            }
+            else{    
+                if(append){
+                    sharedData.setDvalue(sharedData.getDvalue() + value);
+                }
+                else{
+                    sharedData.setDvalue(value);
+                }
+            }
+            found=true;
+        }
 		if(!found){     
 			if(value!=null){
 				String sharedDataKey = widgetInstance.getSharedDataKey();		
-				SharedData sharedData= new SharedData();
-				sharedData.setWidgetGuid(widgetInstance.getWidget().getGuid());
+				sharedData = persistenceManager.newInstance(ISharedData.class);
 				sharedData.setSharedDataKey(sharedDataKey);
 				sharedData.setDkey(name);
 				sharedData.setDvalue(value);
-				sharedData.save();
 			}
 		}
-		return found;
+        persistenceManager.save(widget);
+        return found;
 	}
 
 	/// Utilities

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetAccessRequestPolicyController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetAccessRequestPolicyController.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetAccessRequestPolicyController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetAccessRequestPolicyController.java Wed Jun 16 14:16:36 2010
@@ -19,8 +19,10 @@ import java.net.URI;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wookie.beans.AccessRequest;
-import org.apache.wookie.beans.Widget;
+import org.apache.wookie.beans.IAccessRequest;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
@@ -40,16 +42,17 @@ public class WidgetAccessRequestPolicyCo
 			HttpServletResponse response) throws UnauthorizedAccessException,
 			IOException {
 
-		AccessRequest[] accessRequests = null;
+		IAccessRequest[] accessRequests = null;
 		
 		String widgetId = request.getParameter("widgetId");
-		if (widgetId == null){
-			accessRequests = AccessRequest.findAll();
-		}
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+        if (widgetId == null){
+            accessRequests = persistenceManager.findAll(IAccessRequest.class);
+        }
 		if (widgetId != null && widgetId.trim().length()>0){
 			// Filter by widgetId
-			Widget widget = Widget.findById(widgetId);
-			if (widget != null) accessRequests = AccessRequest.findByValue("widget",widget);
+			IWidget widget = persistenceManager.findById(IWidget.class, widgetId);
+            if (widget != null) accessRequests = persistenceManager.findByValue(IAccessRequest.class, "widget", widget);
 		}
 		
 		switch (format(request)) {
@@ -62,12 +65,13 @@ public class WidgetAccessRequestPolicyCo
 	protected void show(String resourceId, HttpServletRequest request,
 			HttpServletResponse response) throws ResourceNotFoundException,
 			UnauthorizedAccessException, IOException {
-		AccessRequest ar = AccessRequest.findById(Integer.valueOf(resourceId));
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IAccessRequest ar = persistenceManager.findById(IAccessRequest.class, resourceId);
 		if (ar == null) throw new ResourceNotFoundException();
 		
 		switch (format(request)) {
-			case XML: returnXml(AccessRequestHelper.createXMLAccessRequestDocument(new AccessRequest[]{ar}),response);break;
-			case HTML: returnHtml(AccessRequestHelper.createAccessRequestHTMLTable(new AccessRequest[]{ar}),response);break;
+			case XML: returnXml(AccessRequestHelper.createXMLAccessRequestDocument(new IAccessRequest[]{ar}),response);break;
+			case HTML: returnHtml(AccessRequestHelper.createAccessRequestHTMLTable(new IAccessRequest[]{ar}),response);break;
 		}
 	}
 
@@ -75,13 +79,14 @@ public class WidgetAccessRequestPolicyCo
 	protected void update(String resourceId, HttpServletRequest request)
 			throws ResourceNotFoundException, InvalidParametersException,
 			UnauthorizedAccessException {
-		AccessRequest ar = AccessRequest.findById(Integer.valueOf(resourceId));
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+        IAccessRequest ar = persistenceManager.findById(IAccessRequest.class, resourceId);
 		if (ar == null) throw new ResourceNotFoundException();
 		String granted = request.getParameter("granted");
 		if (granted == null) throw new InvalidParametersException();
 		if (!granted.equals("true") && !granted.equals("false")) throw new InvalidParametersException();
-		if (granted.equals("true")) grantAccess(ar);
-		if (granted.equals("false")) revokeAccess(ar);
+		if (granted.equals("true")) grantAccess(persistenceManager, ar);
+		if (granted.equals("false")) revokeAccess(persistenceManager, ar);
 	}
 	
 	@Override
@@ -101,34 +106,36 @@ public class WidgetAccessRequestPolicyCo
 		String subdomains = request.getParameter("subdomains");
 		
 		String widgetId = request.getParameter("widgetId");
-		Widget widget = Widget.findById(Integer.valueOf(widgetId));
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IWidget widget = persistenceManager.findById(IWidget.class, widgetId);
 		if (widget == null) throw new InvalidParametersException();
 		
-		AccessRequest ar = new AccessRequest();
+		IAccessRequest ar = persistenceManager.newInstance(IAccessRequest.class);
 		ar.setOrigin(origin);
 		if (subdomains.equals("true")) ar.setSubdomains(true);
 		ar.setGranted(false);
 		ar.setWidget(widget);
-		return ar.save();
+		return persistenceManager.save(ar);
 	}
 
 	@Override
 	protected boolean remove(String resourceId, HttpServletRequest request)
 			throws ResourceNotFoundException, UnauthorizedAccessException,
 			InvalidParametersException {
-		AccessRequest ar = AccessRequest.findById(Integer.valueOf(resourceId));
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+        IAccessRequest ar = persistenceManager.findById(IAccessRequest.class, resourceId);
 		if (ar == null) throw new ResourceNotFoundException();
-		return ar.delete();
+		return persistenceManager.delete(ar);
 	}
 
-	private void grantAccess(AccessRequest ar){
+	private void grantAccess(IPersistenceManager persistenceManager, IAccessRequest ar){
 		ar.setGranted(true);
-		ar.save();
+        persistenceManager.save(ar);
 	}
 	
-	private void revokeAccess(AccessRequest ar){
+	private void revokeAccess(IPersistenceManager persistenceManager, IAccessRequest ar){
 		ar.setGranted(false);
-		ar.save();
+		persistenceManager.save(ar);
 	}
 	
 	/**

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetInstancesController.java Wed Jun 16 14:16:36 2010
@@ -18,6 +18,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.Collection;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -25,11 +26,15 @@ import javax.servlet.http.HttpServletRes
 import javax.servlet.http.HttpSession;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.jackrabbit.core.persistence.PersistenceManager;
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
-import org.apache.wookie.beans.SharedData;
-import org.apache.wookie.beans.StartFile;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.ISharedData;
+import org.apache.wookie.beans.IStartFile;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidWidgetCallException;
 import org.apache.wookie.helpers.Notifier;
 import org.apache.wookie.helpers.WidgetInstanceFactory;
@@ -154,7 +159,7 @@ public class WidgetInstancesController e
 
 	public static void doStopWidget(HttpServletRequest request, HttpServletResponse response) throws IOException{				
 		Messages localizedMessages = LocaleHandler.localizeMessages(request);
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);	
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);	
 		if(instance!=null){
 			lockWidgetInstance(instance);
 			Notifier.notifyWidgets(request.getSession(), instance, Notifier.STATE_UPDATED);
@@ -166,7 +171,7 @@ public class WidgetInstancesController e
 
 	public static void doResumeWidget(HttpServletRequest request, HttpServletResponse response) throws IOException{					
 		Messages localizedMessages = LocaleHandler.localizeMessages(request); 
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		if(instance!=null){
 			unlockWidgetInstance(instance);
 			Notifier.notifyWidgets(request.getSession(), instance, Notifier.STATE_UPDATED);
@@ -196,7 +201,7 @@ public class WidgetInstancesController e
 		
 		checkProxy(request);
 		
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 		String locale = request.getParameter("locale");//$NON-NLS-1$
 		
 		// Widget exists
@@ -212,8 +217,9 @@ public class WidgetInstancesController e
 					(locale != null && instance.getLang()==null) || 					
 					(locale != null && !instance.getLang().equals(locale))
 			){
+			        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 					instance.setLang(locale);
-					instance.save();
+					persistenceManager.save(instance);
 			}
 			response.setStatus(HttpServletResponse.SC_OK);			
 		}
@@ -231,7 +237,7 @@ public class WidgetInstancesController e
 	}  
 	
 	public static void cloneSharedData(HttpServletRequest request, HttpServletResponse response){
-		WidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);	
+		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);	
 		if (instance == null){
 			response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
 			return;			
@@ -243,7 +249,17 @@ public class WidgetInstancesController e
 			return;
 		}
 		String cloneKey = String.valueOf((request.getParameter("apikey")+":"+cloneSharedDataKey).hashCode());//$NON-NLS-1$ 
-		boolean ok = SharedData.clone(sharedDataKey, instance.getWidget().getGuid(), cloneKey);
+        IWidget widget = instance.getWidget();
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		for (ISharedData sharedData : widget.getSharedData(sharedDataKey))
+		{
+		    ISharedData clone = persistenceManager.newInstance(ISharedData.class);
+            clone.setDkey(sharedData.getDkey());
+            clone.setDvalue(sharedData.getDvalue());
+            clone.setSharedDataKey(cloneKey);
+            widget.getSharedData().add(clone);
+		}
+		boolean ok = persistenceManager.save(widget);
 		if (ok){
 			response.setStatus(HttpServletResponse.SC_OK);
 		} else {
@@ -251,18 +267,20 @@ public class WidgetInstancesController e
 		}
 	}
 	
-	public synchronized static void lockWidgetInstance(WidgetInstance instance){
+	public synchronized static void lockWidgetInstance(IWidgetInstance instance){
 		//doLock(instance, true);
 		PropertiesController.updateSharedDataEntry(instance, "isLocked", "true", false);//$NON-NLS-1$ //$NON-NLS-2$
 		instance.setLocked(true);
-		instance.save();
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+        persistenceManager.save(instance);
 	}
 
-	public synchronized static void unlockWidgetInstance(WidgetInstance instance){
+	public synchronized static void unlockWidgetInstance(IWidgetInstance instance){
 		//doLock(instance, false);
 		PropertiesController.updateSharedDataEntry(instance, "isLocked", "false", false);//$NON-NLS-1$ //$NON-NLS-2$
 		instance.setLocked(false);
-		instance.save();
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+        persistenceManager.save(instance);
 	}
 	
 	// Utility methods
@@ -284,12 +302,13 @@ public class WidgetInstancesController e
 	 * @return the absolute URL
 	 * @throws IOException
 	 */
-	protected static String getUrl(HttpServletRequest request, WidgetInstance instance) throws IOException{
+	protected static String getUrl(HttpServletRequest request, IWidgetInstance instance) throws IOException{
 		String url = "";
-		
-		StartFile sf = (StartFile) LocalizationUtils.getLocalizedElement(StartFile.findByValue("widget", instance.getWidget()), new String[]{instance.getLang()});
+
+		Collection<IStartFile> startFiles = instance.getWidget().getStartFiles();
+        IStartFile sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{instance.getLang()});
 		// Try default locale if no appropriate localization found
-		if (sf == null) sf = (StartFile) LocalizationUtils.getLocalizedElement(StartFile.findByValue("widget", instance.getWidget()), null);
+		if (sf == null) sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, null);
 		// No start file found, so throw an exception
 		if (sf == null) throw new IOException("No start file located for widget "+instance.getWidget().getGuid());
 		
@@ -315,12 +334,13 @@ public class WidgetInstancesController e
 	 * @param request
 	 * @return
 	 */
-	public static WidgetInstance findWidgetInstance(HttpServletRequest request){
-		WidgetInstance instance;
+	public static IWidgetInstance findWidgetInstance(HttpServletRequest request){
+		IWidgetInstance instance;
 		
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 		String id_key = request.getParameter("id_key"); //$NON-NLS-1$
 		if (id_key != null & id_key != ""){
-			instance = WidgetInstance.findByIdKey(id_key);
+			instance = persistenceManager.findWidgetInstanceByIdKey(id_key);
 			return instance;
 		}
 		
@@ -330,9 +350,9 @@ public class WidgetInstancesController e
 		String serviceType = request.getParameter("servicetype"); //$NON-NLS-1$
 		String widgetId = request.getParameter("widgetid"); //$NON-NLS-1$
 		if (widgetId != null){
-			instance = WidgetInstance.getWidgetInstanceById(apiKey, userId, sharedDataKey, widgetId);
+			instance = persistenceManager.findWidgetInstanceByGuid(apiKey, userId, sharedDataKey, widgetId);
 		} else {
-			instance = WidgetInstance.getWidgetInstance(apiKey, userId, sharedDataKey, serviceType);
+			instance = persistenceManager.findWidgetInstance(apiKey, userId, sharedDataKey, serviceType);
 		}
 		return instance;
 	}

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetServicesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetServicesController.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetServicesController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetServicesController.java Wed Jun 16 14:16:36 2010
@@ -15,15 +15,17 @@
 package org.apache.wookie.controller;
 
 import java.io.IOException;
-import java.util.Set;
+import java.util.Iterator;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetDefault;
-import org.apache.wookie.beans.WidgetService;
-import org.apache.wookie.beans.WidgetType;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetDefault;
+import org.apache.wookie.beans.IWidgetService;
+import org.apache.wookie.beans.IWidgetType;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
@@ -55,7 +57,7 @@ public class WidgetServicesController ex
 	 * @see org.apache.wookie.controller.Controller#show(java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 	 */
 	protected void show(String resourceId, HttpServletRequest request, HttpServletResponse response) throws ResourceNotFoundException, IOException{
-		WidgetService ws = getWidgetService(resourceId);
+		IWidgetService ws = getWidgetService(resourceId);
 		returnXml(WidgetServiceHelper.createXMLWidgetServiceDocument(ws, getLocalPath(request),getLocales(request)), response);
 	}
 
@@ -63,7 +65,8 @@ public class WidgetServicesController ex
 	 * @see org.apache.wookie.controller.Controller#index(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 	 */
 	protected void index(HttpServletRequest request, HttpServletResponse response) throws IOException{
-		WidgetService[] ws = WidgetService.findAll();
+	    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IWidgetService[] ws = persistenceManager.findAll(IWidgetService.class);
 		boolean defaults = (request.getParameter("defaults") != null);
 		returnXml(WidgetServiceHelper.createXMLWidgetServicesDocument(ws, getLocalPath(request),defaults, getLocales(request)), response);
 	}
@@ -84,14 +87,15 @@ public class WidgetServicesController ex
 	 */
 	public static boolean create(String resourceId) throws ResourceDuplicationException,InvalidParametersException{
 		if (resourceId == null || resourceId.trim().equals("")) throw new InvalidParametersException();
-		WidgetService ws;
+		IWidgetService ws;
 		try {
 			ws = getWidgetService(resourceId);
 			throw new ResourceDuplicationException();
 		} catch (ResourceNotFoundException e) {
-			ws = new WidgetService();
+		    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+			ws = persistenceManager.newInstance(IWidgetService.class);
 			ws.setServiceName(resourceId);
-			return ws.save();
+			return persistenceManager.save(ws);
 		}
 	}
 
@@ -111,28 +115,30 @@ public class WidgetServicesController ex
 	 * @throws ResourceNotFoundException
 	 */
 	public static boolean remove(String resourceId) throws ResourceNotFoundException {
-		WidgetService service = getWidgetService(resourceId);
+		IWidgetService service = getWidgetService(resourceId);
 		if (service == null) throw new ResourceNotFoundException();
 		String serviceName = service.getServiceName();
 		
 		// if exists, remove from widget default table
-		WidgetDefault[] widgetDefaults = WidgetDefault.findByValue("widgetContext", serviceName);
-		WidgetDefault.delete(widgetDefaults);
+		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IWidgetDefault[] widgetDefaults = persistenceManager.findByValue(IWidgetDefault.class, "widgetContext", serviceName);
+		persistenceManager.delete(widgetDefaults);
 		
 		// delete from the widget service table
-		service.delete();	
+		persistenceManager.delete(service);	
 		// remove any widgetTypes for each widget that match
-		Widget[] widgets = Widget.findByType(serviceName);
+		IWidget[] widgets = persistenceManager.findWidgetsByType(serviceName);
 		if (widgets == null||widgets.length==0) return true;
-		for(Widget widget : widgets){
+		for(IWidget widget : widgets){
 			// remove any widget types for this widget
-			Set<?> types = widget.getWidgetTypes();
-		    WidgetType[] widgetTypes = types.toArray(new WidgetType[types.size()]);		        
-		    for(int j=0;j<widgetTypes.length;++j){	
-		    	if(serviceName.equalsIgnoreCase(widgetTypes[j].getWidgetContext())){
-		    		widgetTypes[j].delete();
-		    	}
-			}
+		    Iterator<IWidgetType> typesIter = widget.getWidgetTypes().iterator();
+		    while(typesIter.hasNext()) {
+		        IWidgetType widgetType = typesIter.next();
+                if(serviceName.equalsIgnoreCase(widgetType.getWidgetContext())){
+                    typesIter.remove();
+                }
+		    }
+		    persistenceManager.save(widget);
 		}					
 		return true;
 	}
@@ -145,10 +151,11 @@ public class WidgetServicesController ex
 			throws ResourceNotFoundException,InvalidParametersException {
 		String name = request.getParameter("name");
 		if (name == null || name.trim().equals("")) throw new InvalidParametersException();
-		WidgetService ws = getWidgetService(resourceId);
+		IWidgetService ws = getWidgetService(resourceId);
 		if (ws == null) throw new ResourceNotFoundException();
 		ws.setServiceName(name);
-		ws.save();
+		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		persistenceManager.save(ws);
 	}
 	
 	// Utilities
@@ -159,13 +166,12 @@ public class WidgetServicesController ex
 	 * @param resourceId
 	 * @return
 	 */
-	private static WidgetService getWidgetService(String resourceId) throws ResourceNotFoundException{
+	private static IWidgetService getWidgetService(String resourceId) throws ResourceNotFoundException{
 		if (resourceId == null) throw new ResourceNotFoundException();
-		WidgetService ws = null;
-		if (isAnInteger(resourceId)){
-			ws = WidgetService.findById(Integer.valueOf(resourceId));
-		} else {
-			WidgetService[] wsa = WidgetService.findByValue("serviceName", resourceId);
+		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IWidgetService ws = persistenceManager.findById(IWidgetService.class, resourceId);
+		if (ws == null) {
+			IWidgetService[] wsa = persistenceManager.findByValue(IWidgetService.class, "serviceName", resourceId);
 			if (wsa != null && wsa.length == 1) ws = wsa[0];
 		}
 		if (ws == null) throw new ResourceNotFoundException();

Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/controller/WidgetsController.java Wed Jun 16 14:16:36 2010
@@ -21,8 +21,10 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetDefault;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetDefault;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
 import org.apache.wookie.helpers.WidgetHelper;
 
@@ -68,11 +70,12 @@ public class WidgetsController extends C
 	 */
 	protected void show(String resourceId, HttpServletRequest request,
 			HttpServletResponse response) throws ResourceNotFoundException, IOException {
-		if (!isAnInteger(resourceId)){
+		if ((resourceId != null) && (resourceId.length() > 0)){
 			index(resourceId, request, response);
 			return;
 		}
-		Widget widget = Widget.findById(Integer.valueOf(resourceId));
+		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+		IWidget widget = persistenceManager.findById(IWidget.class, resourceId);
 		if (widget == null) throw new ResourceNotFoundException();
 		returnXml(WidgetHelper.createXMLWidgetsDocument(widget, getLocalPath(request), getLocales(request)),response);
 	}	
@@ -96,31 +99,32 @@ public class WidgetsController extends C
 	 */
 	private void index(String resourceId, HttpServletRequest request,
 			HttpServletResponse response) throws IOException {
-		Widget widget = null;
-		Widget[] widgets;
+		IWidget widget = null;
+		IWidget[] widgets;
 		
 		// If the request has the parameter ?all, return all widgets.
 		// If the request contains a String resource identifier
 		// such as "/chat", return all matching widgets
+        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 		if (request.getParameter("all") != null
 				|| (resourceId != null && !resourceId.equals(""))) {
 			if (resourceId != null && !resourceId.equals("")) {
-				widgets = Widget.findByType(resourceId);
+				widgets = persistenceManager.findWidgetsByType(resourceId);
 			} else {
-				widgets = Widget.findAll();
+				widgets = persistenceManager.findAll(IWidget.class);
 			}
 			// Otherwise, return default widgets for the defined services. In
 			// future we may want
 			// to move this into the Services controller.
 		} else {
-			ArrayList<Widget> widgetsarr = new ArrayList<Widget>();
-			for (WidgetDefault widgetDefault : WidgetDefault.findAll()) {
-				widget = Widget.findById(widgetDefault.getWidgetId());
-				if (widget.getId() != 1) {
+			ArrayList<IWidget> widgetsarr = new ArrayList<IWidget>();
+			for (IWidgetDefault widgetDefault : persistenceManager.findAll(IWidgetDefault.class)) {
+				widget = widgetDefault.getWidget();
+				if (!widget.getGuid().equals("http://notsupported")) {
 					widgetsarr.add(widget);
 				}
 			}
-			widgets = (Widget[])widgetsarr.toArray(new Widget[widgetsarr.size()]);
+			widgets = (IWidget[])widgetsarr.toArray(new IWidget[widgetsarr.size()]);
 		}
 		returnXml(WidgetHelper.createXMLWidgetsDocument(widgets, getLocalPath(request), getLocales(request)),response);
 	}