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