Author: scottbw
Date: Mon Feb 14 20:44:42 2011
New Revision: 1070658

URL: http://svn.apache.org/viewvc?rev=1070658&view=rev
Log:
Modified the Widget model and also the WidgetFactory so that when adding a 
Widget a reference to its .wgt archive file is retained. This is part of the 
changes needed to support WOOKIE-182. Note that we do not at present guarantee 
that an uploaded.wgt is never overridden by another upload of a different 
widget with the same filename, which is something that needs to be fixed.

Modified:
    incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml
    incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
    incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.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/impl/WidgetImpl.java
    incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.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=1070658&r1=1070657&r2=1070658&view=diff
==============================================================================
--- incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml (original)
+++ incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml Mon Feb 14 20:44:42 
2011
@@ -23,6 +23,7 @@
   <table name="Widget">
     <column name="id" primaryKey="true" required="true" type="INTEGER"/>
     <column name="jpa_version" type="INTEGER"/>
+    <column name="package_path" size="255" type="VARCHAR"/>
     <column name="height" type="INTEGER"/>
     <column name="width" type="INTEGER"/>
     <column name="guid" required="true" size="255" type="VARCHAR"/>

Modified: incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java?rev=1070658&r1=1070657&r2=1070658&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java Mon 
Feb 14 20:44:42 2011
@@ -491,7 +491,7 @@ public class WidgetAdminServlet extends 
                                WidgetJavascriptSyntaxAnalyzer jsa = new 
WidgetJavascriptSyntaxAnalyzer(fac.getUnzippedWidgetDirectory());               
               
                    
if(persistenceManager.findWidgetByGuid(widgetModel.getIdentifier()) == null){
                                        // ADD
-                                       IWidget widget = 
WidgetFactory.addNewWidget(widgetModel);
+                                       IWidget widget = 
WidgetFactory.addNewWidget(widgetModel, null, zipFile, false);
                                        Object dbkey = widget.getId();
                                        // widget added
                                        request.setAttribute("message_value", 
"'"+ widgetModel.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ 
//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$                                      

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=1070658&r1=1070657&r2=1070658&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/IWidget.java Mon Feb 14 
20:44:42 2011
@@ -31,6 +31,15 @@ import org.apache.wookie.w3c.util.Locali
  */
 public interface IWidget extends ILocalizedBean, IBean
 {
+       /**
+        * Get the path to the .wgt file used to install the widget
+        * @return
+        */
+       String getPackagePath();
+
+       void setPackagePath(String path);
+       
+       
     /**
      * Get widget height.
      * 

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=1070658&r1=1070657&r2=1070658&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 
Mon Feb 14 20:44:42 2011
@@ -50,6 +50,9 @@ public class WidgetImpl extends Localize
     @Field(uuid=true)
     private String uuid;
     
+    @Field(jcrName="wookie:packagePath")
+    private String packagePath;
+    
     @Field(jcrName="wookie:height")
     private Integer height;
     
@@ -97,8 +100,22 @@ public class WidgetImpl extends Localize
     
     
@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()
+     */
+    public String getPackagePath() {
+               return packagePath;
+       }
+    
+       /* (non-Javadoc)
+        * @see org.apache.wookie.beans.IWidget#setPackagePath(java.lang.String)
+        */
+       public void setPackagePath(String path) {
+               packagePath = path;
+       }
+
+       /* (non-Javadoc)
      * @see org.apache.wookie.beans.IWidget#getDescriptions()
      */
     public Collection<IDescription> getDescriptions()

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=1070658&r1=1070657&r2=1070658&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 
Mon Feb 14 20:44:42 2011
@@ -78,6 +78,7 @@
 + wookie:parameters (nt:unstructured) = nt:unstructured
 
 [wookie:widget] > nt:base, mix:referenceable
+- wookie:packagePath (string)
 - wookie:height (long)
 - wookie:width (long)
 - wookie:guid (string) mandatory

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=1070658&r1=1070657&r2=1070658&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 
Mon Feb 14 20:44:42 2011
@@ -67,6 +67,10 @@ public class WidgetImpl extends Localize
     @Column(name="jpa_version")
     @SuppressWarnings("unused")
     private int jpaVersion;
+    
+    @Basic
+    @Column(name="package_path")
+    private String packagePath;
 
     @Basic
     @Column(name="height")
@@ -558,4 +562,21 @@ public class WidgetImpl extends Localize
     {
         return Utilities.getWidgetIconLocation(this, "en");
     }
+
+       /* (non-Javadoc)
+        * @see org.apache.wookie.beans.IWidget#getPackagePath()
+        */
+       public String getPackagePath() {
+               return packagePath;
+       }
+
+       /* (non-Javadoc)
+        * @see org.apache.wookie.beans.IWidget#setPackagePath(java.lang.String)
+        */
+       public void setPackagePath(String path) {
+               packagePath = path;
+               
+       }
+       
+       
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java?rev=1070658&r1=1070657&r2=1070658&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Mon 
Feb 14 20:44:42 2011
@@ -13,6 +13,8 @@
  */
 package org.apache.wookie.helpers;
 
+import java.io.File;
+
 import org.apache.log4j.Logger;
 import org.apache.wookie.beans.IAccessRequest;
 import org.apache.wookie.beans.IDescription;
@@ -49,6 +51,20 @@ import org.apache.wookie.w3c.IPreference
 public class WidgetFactory {
        static Logger _logger = Logger.getLogger(WidgetFactory.class.getName());
 
+       
+       /**
+        * Adds a new widget
+        * @param model the model of the widget to add
+        * @param file the .wgt file the Widget was loaded from
+        * @param grantAccessRequests whether to automatically grant access 
requests for the widget
+        * @return the widget
+        */
+       public static IWidget addNewWidget(W3CWidget model,String[] 
widgetTypes, File file, boolean grantAccessRequests) {
+               IWidget widget = addNewWidget(model,widgetTypes, 
grantAccessRequests);
+               widget.setPackagePath(file.getPath());
+               return widget;
+       }
+       
        /**
         * Adds a new widget
         * @param model the model of the widget to add

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java?rev=1070658&r1=1070657&r2=1070658&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
Mon Feb 14 20:44:42 2011
@@ -202,7 +202,7 @@ public class ContextListener implements 
                                                        W3CWidget model = 
fac.parse(upload);
                                                        
WidgetJavascriptSyntaxAnalyzer jsa = new 
WidgetJavascriptSyntaxAnalyzer(fac.getUnzippedWidgetDirectory());
                                                        
if(persistenceManager.findWidgetByGuid(model.getIdentifier()) == null) {
-                                                               
WidgetFactory.addNewWidget(model, true);        
+                                                               
WidgetFactory.addNewWidget(model, null, upload, true);  
                                                                String message 
= model.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.19");
                                                                
_logger.info(message);
                                                                
FlashMessage.getInstance().message(message);


Reply via email to