Author: psharples
Date: Tue Aug 14 11:03:57 2012
New Revision: 1372838

URL: http://svn.apache.org/viewvc?rev=1372838&view=rev
Log:
Initial version of broadcasting a new widget import.  See WOOKIE-362.

Added:
    incubator/wookie/trunk/src/org/apache/wookie/util/NewWidgetBroadcaster.java 
  (with props)
Modified:
    
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
    incubator/wookie/trunk/src/widgetserver.properties

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java?rev=1372838&r1=1372837&r2=1372838&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java 
Tue Aug 14 11:03:57 2012
@@ -39,6 +39,7 @@ import org.apache.wookie.helpers.WidgetF
 import org.apache.wookie.helpers.WidgetAdvertHelper;
 import org.apache.wookie.helpers.WidgetImportHelper;
 import org.apache.wookie.server.LocaleHandler;
+import org.apache.wookie.util.NewWidgetBroadcaster;
 import org.apache.wookie.util.WidgetFileUtils;
 import org.apache.wookie.util.WidgetJavascriptSyntaxAnalyzer;
 import org.apache.wookie.util.gadgets.GadgetUtils;
@@ -272,6 +273,7 @@ public class WidgetsController extends C
           // A new widget was created, so return 201
           //
           WidgetFactory.addNewWidget(widgetModel, zipFile,false);
+          NewWidgetBroadcaster.broadcast(properties, 
widgetModel.getIdentifier());
           returnXml(WidgetImportHelper.createXMLWidgetDocument(widgetModel, 
new File(fac.getUnzippedWidgetDirectory(), "config.xml"), 
getWookieServerURL(request, "").toString(), true), response);
           return true;
           

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=1372838&r1=1372837&r2=1372838&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
Tue Aug 14 11:03:57 2012
@@ -34,6 +34,7 @@ import org.apache.wookie.beans.util.Pers
 import org.apache.wookie.feature.Features;
 import org.apache.wookie.helpers.WidgetRuntimeHelper;
 import org.apache.wookie.helpers.WidgetFactory;
+import org.apache.wookie.util.NewWidgetBroadcaster;
 import org.apache.wookie.util.WgtWatcher;
 import org.apache.wookie.util.WidgetFileUtils;
 import org.apache.wookie.util.WidgetJavascriptSyntaxAnalyzer;
@@ -156,7 +157,7 @@ public class ContextListener implements 
         * @param context the current servlet context
         * @param configuration the configuration properties
         */
-       private void startWatcher(ServletContext context, Configuration 
configuration, final Messages localizedMessages){
+       private void startWatcher(ServletContext context, final Configuration 
configuration, final Messages localizedMessages){
                /*
                 * Start watching for widget deployment
                 */
@@ -187,7 +188,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, upload, true);        
+                                                               
WidgetFactory.addNewWidget(model, upload, true);
                                                                String message 
= model.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.19");
                                                                
_logger.info(message);
                                                        } else {
@@ -196,6 +197,7 @@ public class ContextListener implements 
                                                                
_logger.info(message);
                                                        }
                                                        
persistenceManager.commit();
+                                                       
NewWidgetBroadcaster.broadcast(configuration, model.getIdentifier());
                                                } catch (IOException e) {
                             persistenceManager.rollback();
                                                        String error = 
f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.1") + " - " + 
e.getLocalizedMessage();

Added: 
incubator/wookie/trunk/src/org/apache/wookie/util/NewWidgetBroadcaster.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/util/NewWidgetBroadcaster.java?rev=1372838&view=auto
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/util/NewWidgetBroadcaster.java 
(added)
+++ incubator/wookie/trunk/src/org/apache/wookie/util/NewWidgetBroadcaster.java 
Tue Aug 14 11:03:57 2012
@@ -0,0 +1,58 @@
+/*
+ *  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.util;
+
+import java.io.IOException;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.log4j.Logger;
+
+public class NewWidgetBroadcaster {
+
+    static Logger logger = 
Logger.getLogger(NewWidgetBroadcaster.class.getName());
+
+    static public void broadcast(Configuration properties, String widgetId){
+        boolean enabled = 
properties.getBoolean("widget.import.broadcast");//$NON-NLS-1$
+        if(enabled){
+            String url = 
properties.getString("widget.import.broadcast.url");//$NON-NLS-1$
+            if(url == null || widgetId == null || 
widgetId.equals("http://notsupported";)){//$NON-NLS-1$
+                return;
+            }
+            try {
+                HttpClient client = new HttpClient();
+                PostMethod post = new PostMethod(url);
+                post.addParameter("type", "W3C");//$NON-NLS-1$
+                post.addParameter("widgetId", widgetId);
+                client.executeMethod(post);
+                int code = post.getStatusCode();
+                if(code == 200){
+                    logger.info("Broadcast of imported widget " +widgetId+ " 
returned http code " + code);
+                }
+                else{
+                    logger.info("Broadcast of imported widget " +widgetId+ " 
returned http code " + code 
+                            + ". "+post.getResponseBodyAsString());
+                }
+            } catch (HttpException ex) { 
+                logger.error(ex);
+            } catch (IOException ex) {
+                logger.error(ex);
+            }
+        }
+    }
+ 
+}
+

Propchange: 
incubator/wookie/trunk/src/org/apache/wookie/util/NewWidgetBroadcaster.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/wookie/trunk/src/widgetserver.properties
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/widgetserver.properties?rev=1372838&r1=1372837&r2=1372838&view=diff
==============================================================================
--- incubator/wookie/trunk/src/widgetserver.properties (original)
+++ incubator/wookie/trunk/src/widgetserver.properties Tue Aug 14 11:03:57 2012
@@ -67,4 +67,8 @@ widget.shareddata.useinstancequeues=true
 # Validator service preferences
 # Allow **anyone** to upload .wgt packages to wookie for validation
 # Note: .wgt resources are removed after validation and are not imported 
permanently.
-widget.enable.validator=false
\ No newline at end of file
+widget.enable.validator=false
+# Broadcast imported widget events to specified url
+# The widget identifier is POSTed to the url defined in 
widget.import.broadcast.url
+widget.import.broadcast=false
+widget.import.broadcast.url=
\ No newline at end of file


Reply via email to