Author: psharples
Date: Wed Aug 15 14:00:20 2012
New Revision: 1373413
URL: http://svn.apache.org/viewvc?rev=1373413&view=rev
Log:
Fixed bug where there was a NPE when the keystore file could not be loaded for
the DigSig processor
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
incubator/wookie/trunk/src/org/apache/wookie/messages.properties
incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties
incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
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=1373413&r1=1373412&r2=1373413&view=diff
==============================================================================
---
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
(original)
+++
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
Wed Aug 15 14:00:20 2012
@@ -268,66 +268,70 @@ public class WidgetsController extends C
fac.setFeatures(Features.getFeatureNames());
fac.setStartPageProcessor(new StartPageProcessor());
if (VERIFYSIGNATURE) {
- InputStream stream = getServletContext().getResourceAsStream(
- "/WEB-INF/classes/" + KEYSTORE);
- KeyStore keyStore = KeyStore.getInstance("JKS");
- keyStore.load(stream, PASSWORD.toCharArray());
- stream.close();
- fac.setDigitalSignatureParser(new DigitalSignatureProcessor(keyStore,
- REJECTINVALID, REJECTUNTRUSTED));
- }
- W3CWidget widgetModel = fac.parse(zipFile);
+ InputStream stream = getServletContext().getResourceAsStream(
+ "/WEB-INF/classes/" + KEYSTORE);
+ if(stream != null){
+ KeyStore keyStore = KeyStore.getInstance("JKS");
+ keyStore.load(stream, PASSWORD.toCharArray());
+ stream.close();
+ fac.setDigitalSignatureParser(new
DigitalSignatureProcessor(keyStore,
+ REJECTINVALID, REJECTUNTRUSTED));
+ }else{
+ _logger.error(localizedMessages.getString("WidgetHotDeploy.4")
+
+ " (/WEB-INF/classes/" + KEYSTORE+") " +
localizedMessages.getString("WidgetHotDeploy.5"));
+ }
+ }
+ W3CWidget widgetModel = fac.parse(zipFile);
new WidgetJavascriptSyntaxAnalyzer(fac.getUnzippedWidgetDirectory());
- // File f = new File();
//
// Check if the widget model corresponds to an existing installed
widget
//
IPersistenceManager persistenceManager =
PersistenceManagerFactory.getPersistenceManager();
if (persistenceManager.findWidgetByGuid(widgetModel.getIdentifier())
== null) {
-
- //
- // 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;
-
+
+ //
+ // 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;
+
} else {
-
- //
- // Widget already exists, so update the widget metadata and
configuration details
- // and return 200
- //
-
WidgetFactory.update(widgetModel,persistenceManager.findWidgetByGuid(widgetModel.getIdentifier()),false,
zipFile);
- returnXml(WidgetImportHelper.createXMLWidgetDocument(widgetModel,
new File(fac.getUnzippedWidgetDirectory(), "config.xml"),
getWookieServerURL(request, "").toString(), true), response);
- return false;
-
+
+ //
+ // Widget already exists, so update the widget metadata and
configuration details
+ // and return 200
+ //
+
WidgetFactory.update(widgetModel,persistenceManager.findWidgetByGuid(widgetModel.getIdentifier()),false,
zipFile);
+ returnXml(WidgetImportHelper.createXMLWidgetDocument(widgetModel,
new File(fac.getUnzippedWidgetDirectory(), "config.xml"),
getWookieServerURL(request, "").toString(), true), response);
+ return false;
+
}
-
+
//
// Catch specific parsing and validation errors and throw exception
with error message
//
} catch (InvalidStartFileException ex) {
- _logger.error(ex);
- throw new InvalidParametersException(
- localizedMessages.getString("widgets.no-start-file") + "\n" +
ex.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ _logger.error(ex);
+ throw new InvalidParametersException(
+ localizedMessages.getString("widgets.no-start-file") + "\n" +
ex.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
} catch (BadManifestException ex) {
- _logger.error(ex);
- String message = ex.getMessage();
- if (ex.getMessage() == null || ex.getMessage().equals(""))message =
localizedMessages.getString("widgets.invalid-config-xml"); //$NON-NLS-1$
- if (ex instanceof InvalidContentTypeException)
- message =
localizedMessages.getString("widgets.unsupported-content-type");//$NON-NLS-1$
- throw new InvalidParametersException(message);
+ _logger.error(ex);
+ String message = ex.getMessage();
+ if (ex.getMessage() == null || ex.getMessage().equals(""))message =
localizedMessages.getString("widgets.invalid-config-xml"); //$NON-NLS-1$
+ if (ex instanceof InvalidContentTypeException)
+ message =
localizedMessages.getString("widgets.unsupported-content-type");//$NON-NLS-1$
+ throw new InvalidParametersException(message);
} catch (BadWidgetZipFileException ex) {
- _logger.error(ex);
- String message = ex.getMessage();
- if (ex.getMessage() == null || ex.getMessage().equals(""))message =
localizedMessages.getString("widgets.bad-zip-file"); //$NON-NLS-1$
- throw new InvalidParametersException(message);
+ _logger.error(ex);
+ String message = ex.getMessage();
+ if (ex.getMessage() == null || ex.getMessage().equals(""))message =
localizedMessages.getString("widgets.bad-zip-file"); //$NON-NLS-1$
+ throw new InvalidParametersException(message);
} catch (Exception ex) {
- _logger.error(ex);
- throw new InvalidParametersException(
- localizedMessages.getString("widgets.cant-parse-config-xml") + "\n"
+ ex.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ _logger.error(ex);
+ throw new InvalidParametersException(
+ localizedMessages.getString("widgets.cant-parse-config-xml") +
"\n" + ex.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/messages.properties
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/messages.properties?rev=1373413&r1=1373412&r2=1373413&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/messages.properties (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/messages.properties Wed Aug 15
14:00:20 2012
@@ -41,6 +41,8 @@ WidgetHotDeploy.0=Hot deploy disabled
WidgetHotDeploy.1=Hot deploy error: Unable to move dropped .wgt file to upload
folder
WidgetHotDeploy.2=Hot deploy error: file is not a valid widget package
WidgetHotDeploy.3=Hot deploy error: widget has invalid manifest
+WidgetHotDeploy.4=Unable to load specified key file.
+WidgetHotDeploy.5=Digital Signature Verification is not enabled.
WidgetServiceServlet.0=No valid requestid was found.
WidgetServiceServlet.1=completed
Modified: incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties?rev=1373413&r1=1373412&r2=1373413&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties Wed Aug
15 14:00:20 2012
@@ -41,6 +41,8 @@ WidgetHotDeploy.0=Hot deploy disabled (d
WidgetHotDeploy.1=Hot deploy error: Unable to move dropped .wgt file to upload
folder (dutch)
WidgetHotDeploy.2=Hot deploy error: file is not a valid widget package (dutch)
WidgetHotDeploy.3=Hot deploy error: widget has invalid manifest (dutch)
+WidgetHotDeploy.4=Unable to load specified key file.(dutch)
+WidgetHotDeploy.5=Digital Signature Verification is not enabled.(dutch)
WidgetServiceServlet.0=No valid requestid was found.(dutch)
WidgetServiceServlet.1=completed(dutch)
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=1373413&r1=1373412&r2=1373413&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
Wed Aug 15 14:00:20 2012
@@ -57,211 +57,216 @@ import org.apache.wookie.w3c.util.Widget
*
*/
public class ContextListener implements ServletContextListener {
- /*
- * In the case of the 'log4j.properties' file used within a server
environment
- * there is no need to explicitly load the file. It will be
automatically loaded as
- * long as it is placed at the root of the source code. This way it
eventually is found under...
- *
- * '/webappname/WEB-INF/classes' ...at runtime.
- */
- static Logger _logger =
Logger.getLogger(ContextListener.class.getName());
- public static Boolean usePreferenceInstanceQueues;
- public static Boolean useSharedDataInstanceQueues;
-
+ /*
+ * In the case of the 'log4j.properties' file used within a server
environment
+ * there is no need to explicitly load the file. It will be automatically
loaded as
+ * long as it is placed at the root of the source code. This way it
eventually is found under...
+ *
+ * '/webappname/WEB-INF/classes' ...at runtime.
+ */
+ static Logger _logger = Logger.getLogger(ContextListener.class.getName());
+ public static Boolean usePreferenceInstanceQueues;
+ public static Boolean useSharedDataInstanceQueues;
+
public void contextInitialized(ServletContextEvent event) {
- try {
- ServletContext context = event.getServletContext();
-
WidgetRuntimeHelper.setWebContextPath(context.getContextPath());
- /*
- * load the widgetserver.properties and
local.widget.properties file
- * and put it into this context as an attribute
'properties' available to all resources
- */
- File localPropsFile = new File(System.getProperty("user.dir") +
File.separator + "local.widgetserver.properties");
- PropertiesConfiguration localConfiguration = new
PropertiesConfiguration(localPropsFile);
- CompositeConfiguration configuration = new CompositeConfiguration();
- configuration.addConfiguration(localConfiguration);
- configuration.addConfiguration(new
PropertiesConfiguration("widgetserver.properties"));
-
- context.setAttribute("properties", (Configuration) configuration);
-
- // load these up now so we don't have to do it on every
request(i.e. filter) in the future
- usePreferenceInstanceQueues =
configuration.getBoolean(WidgetRuntimeHelper.USE_PREFERENCE_INSTANCE_QUEUES);
- useSharedDataInstanceQueues =
configuration.getBoolean(WidgetRuntimeHelper.USE_SHAREDDATA_INSTANCE_QUEUES);
-
- /*
- * Merge in system properties overrides
- */
- Iterator<Object> systemKeysIter =
System.getProperties().keySet().iterator();
- while (systemKeysIter.hasNext()) {
- String key = systemKeysIter.next().toString();
- if (configuration.containsKey(key) ||
key.startsWith("widget.")) {
- String setting = configuration.getString(key);
- String override = System.getProperty(key);
- if ((override != null) && (override.length() >
0) && !override.equals(setting)) {
- configuration.setProperty(key, override);
- if (setting != null) {
- _logger.info("Overridden server
configuration property: " + key + "=" +override);
- }
- }
- }
- }
-
- /*
- * Initialize persistence manager factory now, not on
first request
- */
- PersistenceManagerFactory.initialize(configuration);
-
- /*
- * Initialise the locale handler
- */
- LocaleHandler.getInstance().initialize(configuration);
- final Locale locale = new
Locale(configuration.getString("widget.default.locale"));
- final Messages localizedMessages =
LocaleHandler.getInstance().getResourceBundle(locale);
-
- /*
- * load the opensocial.properties file and put it into
this context
- * as an attribute 'opensocial' available to all
resources
- */
- File localOpenSocialPropsFile = new
File(System.getProperty("user.dir") + File.separator +
"local.opensocial.properties");
+ try {
+ ServletContext context = event.getServletContext();
+ WidgetRuntimeHelper.setWebContextPath(context.getContextPath());
+ /*
+ * load the widgetserver.properties and local.widget.properties
file
+ * and put it into this context as an attribute 'properties'
available to all resources
+ */
+ File localPropsFile = new File(System.getProperty("user.dir") +
File.separator + "local.widgetserver.properties");
+ PropertiesConfiguration localConfiguration = new
PropertiesConfiguration(localPropsFile);
+ CompositeConfiguration configuration = new
CompositeConfiguration();
+ configuration.addConfiguration(localConfiguration);
+ configuration.addConfiguration(new
PropertiesConfiguration("widgetserver.properties"));
+
+ context.setAttribute("properties", (Configuration) configuration);
+
+ // load these up now so we don't have to do it on every
request(i.e. filter) in the future
+ usePreferenceInstanceQueues =
configuration.getBoolean(WidgetRuntimeHelper.USE_PREFERENCE_INSTANCE_QUEUES);
+ useSharedDataInstanceQueues =
configuration.getBoolean(WidgetRuntimeHelper.USE_SHAREDDATA_INSTANCE_QUEUES);
+
+ /*
+ * Merge in system properties overrides
+ */
+ Iterator<Object> systemKeysIter =
System.getProperties().keySet().iterator();
+ while (systemKeysIter.hasNext()) {
+ String key = systemKeysIter.next().toString();
+ if (configuration.containsKey(key) ||
key.startsWith("widget.")) {
+ String setting = configuration.getString(key);
+ String override = System.getProperty(key);
+ if ((override != null) && (override.length() > 0) &&
!override.equals(setting)) {
+ configuration.setProperty(key, override);
+ if (setting != null) {
+ _logger.info("Overridden server configuration
property: " + key + "=" +override);
+ }
+ }
+ }
+ }
+
+ /*
+ * Initialize persistence manager factory now, not on first request
+ */
+ PersistenceManagerFactory.initialize(configuration);
+
+ /*
+ * Initialise the locale handler
+ */
+ LocaleHandler.getInstance().initialize(configuration);
+ final Locale locale = new
Locale(configuration.getString("widget.default.locale"));
+ final Messages localizedMessages =
LocaleHandler.getInstance().getResourceBundle(locale);
+
+ /*
+ * load the opensocial.properties file and put it into this
context
+ * as an attribute 'opensocial' available to all resources
+ */
+ File localOpenSocialPropsFile = new
File(System.getProperty("user.dir") + File.separator +
"local.opensocial.properties");
PropertiesConfiguration localOpenSocialConfiguration = new
PropertiesConfiguration(localOpenSocialPropsFile);
CompositeConfiguration opensocialConfiguration = new
CompositeConfiguration();
opensocialConfiguration.addConfiguration(localOpenSocialConfiguration);
opensocialConfiguration.addConfiguration(new
PropertiesConfiguration("opensocial.properties"));
- context.setAttribute("opensocial", (Configuration)
opensocialConfiguration);
-
- /*
- * Load installed features
- */
- Features.loadFeatures(context);
-
- /*
- * Run diagnostics
- */
- Diagnostics.run(context, configuration);
-
- /*
- * Start hot-deploy widget watcher
- */
- if (configuration.getBoolean("widget.hot_deploy")) {
- startWatcher(context, configuration,
localizedMessages);
- } else {
-
_logger.info(localizedMessages.getString("WidgetHotDeploy.0"));
- }
- }
- catch (ConfigurationException ex) {
- _logger.error("ConfigurationException thrown: "+
ex.toString());
- }
- }
-
- /**
- * Starts a watcher thread for hot-deploy of new widgets dropped into
the deploy folder
- * this is controlled using the
<code>widget.hot_deploy=true|false</code> property
- * and configured to look in the folder specified by the
<code>widget.deployfolder</code> property
- * @param context the current servlet context
- * @param configuration the configuration properties
- */
- private void startWatcher(final ServletContext context, final
Configuration configuration, final Messages localizedMessages){
- /*
- * Start watching for widget deployment
- */
- final File deploy = new
File(WidgetPackageUtils.convertPathToPlatform(context.getRealPath(configuration.getString("widget.deployfolder"))));
- final String UPLOADFOLDER =
context.getRealPath(configuration.getString("widget.useruploadfolder"));
- final String WIDGETFOLDER =
context.getRealPath(configuration.getString("widget.widgetfolder"));
- final String localWidgetFolderPath =
configuration.getString("widget.widgetfolder");
- final String[] locales =
configuration.getStringArray("widget.locales");
- final String contextPath = context.getContextPath();
- // Digital signature settings
- final boolean VERIFYSIGNATURE =
configuration.getBoolean("widget.deployment.verifysignature");//$NON-NLS-1$
- final boolean REJECTINVALID=
configuration.getBoolean("widget.deployment.rejectinvalidsignatures");
- final boolean REJECTUNTRUSTED=
configuration.getBoolean("widget.deployment.rejectuntrustedsignatures");
- final String PASSWORD =
configuration.getString("widget.deployment.trustedkeystore.password");
- final String KEYSTORE =
configuration.getString("widget.deployment.trustedkeystore");//$NON-NLS-1$
-
-
- Thread thr = new Thread(){
- public void run() {
- int interval = 5000;
- WgtWatcher watcher = new WgtWatcher();
- watcher.setWatchDir(deploy);
- watcher.setListener(new
WgtWatcher.FileChangeListener(){
- public void fileModified(File f) {
- // get persistence manager for this
thread
+ context.setAttribute("opensocial", (Configuration)
opensocialConfiguration);
+
+ /*
+ * Load installed features
+ */
+ Features.loadFeatures(context);
+
+ /*
+ * Run diagnostics
+ */
+ Diagnostics.run(context, configuration);
+
+ /*
+ * Start hot-deploy widget watcher
+ */
+ if (configuration.getBoolean("widget.hot_deploy")) {
+ startWatcher(context, configuration, localizedMessages);
+ } else {
+ _logger.info(localizedMessages.getString("WidgetHotDeploy.0"));
+ }
+ }
+ catch (ConfigurationException ex) {
+ _logger.error("ConfigurationException thrown: "+ ex.toString());
+ }
+ }
+
+ /**
+ * Starts a watcher thread for hot-deploy of new widgets dropped into the
deploy folder
+ * this is controlled using the <code>widget.hot_deploy=true|false</code>
property
+ * and configured to look in the folder specified by the
<code>widget.deployfolder</code> property
+ * @param context the current servlet context
+ * @param configuration the configuration properties
+ */
+ private void startWatcher(final ServletContext context, final
Configuration configuration, final Messages localizedMessages){
+ /*
+ * Start watching for widget deployment
+ */
+ final File deploy = new
File(WidgetPackageUtils.convertPathToPlatform(context.getRealPath(configuration.getString("widget.deployfolder"))));
+ final String UPLOADFOLDER =
context.getRealPath(configuration.getString("widget.useruploadfolder"));
+ final String WIDGETFOLDER =
context.getRealPath(configuration.getString("widget.widgetfolder"));
+ final String localWidgetFolderPath =
configuration.getString("widget.widgetfolder");
+ final String[] locales =
configuration.getStringArray("widget.locales");
+ final String contextPath = context.getContextPath();
+ // Digital signature settings
+ final boolean VERIFYSIGNATURE =
configuration.getBoolean("widget.deployment.verifysignature");//$NON-NLS-1$
+ final boolean REJECTINVALID=
configuration.getBoolean("widget.deployment.rejectinvalidsignatures");
+ final boolean REJECTUNTRUSTED=
configuration.getBoolean("widget.deployment.rejectuntrustedsignatures");
+ final String PASSWORD =
configuration.getString("widget.deployment.trustedkeystore.password");
+ final String KEYSTORE =
configuration.getString("widget.deployment.trustedkeystore");//$NON-NLS-1$
+
+
+ Thread thr = new Thread(){
+ public void run() {
+ int interval = 5000;
+ WgtWatcher watcher = new WgtWatcher();
+ watcher.setWatchDir(deploy);
+ watcher.setListener(new WgtWatcher.FileChangeListener(){
+ public void fileModified(File f) {
+ // get persistence manager for this thread
IPersistenceManager persistenceManager =
PersistenceManagerFactory.getPersistenceManager();
- try{
-
persistenceManager.begin();
- File upload =
WidgetFileUtils.dealWithDroppedFile(UPLOADFOLDER, f);
- W3CWidgetFactory fac =
new W3CWidgetFactory();
- fac.setLocales(locales);
-
fac.setLocalPath(contextPath+localWidgetFolderPath);
-
fac.setOutputDirectory(WIDGETFOLDER);
-
fac.setFeatures(Features.getFeatureNames());
-
fac.setStartPageProcessor(new StartPageProcessor());
- if (VERIFYSIGNATURE) {
- InputStream stream = context
- .getResourceAsStream("/WEB-INF/classes/" + KEYSTORE);
- KeyStore keyStore = KeyStore.getInstance("JKS");
- keyStore.load(stream, PASSWORD.toCharArray());
- stream.close();
- fac.setDigitalSignatureParser(new DigitalSignatureProcessor(
- keyStore, REJECTINVALID, REJECTUNTRUSTED));
- }
-
- W3CWidget model =
fac.parse(upload);
-
WidgetJavascriptSyntaxAnalyzer jsa = new
WidgetJavascriptSyntaxAnalyzer(fac.getUnzippedWidgetDirectory());
-
if(persistenceManager.findWidgetByGuid(model.getIdentifier()) == null) {
-
WidgetFactory.addNewWidget(model, upload, true);
- String message
= model.getLocalName("en") +"' - " +
localizedMessages.getString("WidgetAdminServlet.19");
-
_logger.info(message);
- } else {
- String message
= model.getLocalName("en") +"' - " +
localizedMessages.getString("WidgetAdminServlet.20");
-
WidgetFactory.update(model,
persistenceManager.findWidgetByGuid(model.getIdentifier()), true, upload);
-
_logger.info(message);
- }
-
persistenceManager.commit();
-
NewWidgetBroadcaster.broadcast(configuration, model.getIdentifier());
- } catch (IOException e) {
+ try{
+ persistenceManager.begin();
+ File upload =
WidgetFileUtils.dealWithDroppedFile(UPLOADFOLDER, f);
+ W3CWidgetFactory fac = new W3CWidgetFactory();
+ fac.setLocales(locales);
+
fac.setLocalPath(contextPath+localWidgetFolderPath);
+ fac.setOutputDirectory(WIDGETFOLDER);
+ fac.setFeatures(Features.getFeatureNames());
+ fac.setStartPageProcessor(new
StartPageProcessor());
+ if (VERIFYSIGNATURE) {
+ InputStream stream = context
+ .getResourceAsStream("/WEB-INF/classes/" +
KEYSTORE);
+ if(stream != null){
+ KeyStore keyStore =
KeyStore.getInstance("JKS");
+ keyStore.load(stream,
PASSWORD.toCharArray());
+ stream.close();
+ fac.setDigitalSignatureParser(new
DigitalSignatureProcessor(
+ keyStore, REJECTINVALID,
REJECTUNTRUSTED));
+ }else{
+
_logger.error(localizedMessages.getString("WidgetHotDeploy.4") +
+ " (/WEB-INF/classes/" +
KEYSTORE+") " + localizedMessages.getString("WidgetHotDeploy.5"));
+ }
+ }
+
+ W3CWidget model = fac.parse(upload);
+ WidgetJavascriptSyntaxAnalyzer jsa = new
WidgetJavascriptSyntaxAnalyzer(fac.getUnzippedWidgetDirectory());
+
if(persistenceManager.findWidgetByGuid(model.getIdentifier()) == null) {
+ WidgetFactory.addNewWidget(model, upload,
true);
+ String message = model.getLocalName("en") +"'
- " + localizedMessages.getString("WidgetAdminServlet.19");
+ _logger.info(message);
+ } else {
+ String message = model.getLocalName("en") +"'
- " + localizedMessages.getString("WidgetAdminServlet.20");
+ WidgetFactory.update(model,
persistenceManager.findWidgetByGuid(model.getIdentifier()), true, upload);
+ _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();
- _logger.error(error, e);
- } catch
(BadWidgetZipFileException e) {
+ String error =
f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.1") + " - " +
e.getLocalizedMessage();
+ _logger.error(error, e);
+ } catch (BadWidgetZipFileException e) {
persistenceManager.rollback();
- String error =
f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.2") + " - " +
e.getLocalizedMessage();
- _logger.error(error, e);
- } catch (BadManifestException
e) {
+ String error =
f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.2") + " - " +
e.getLocalizedMessage();
+ _logger.error(error, e);
+ } catch (BadManifestException e) {
persistenceManager.rollback();
- String error =
f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.3") + " - " +
e.getLocalizedMessage();
- _logger.error(error, e);
- } catch (Exception e) {
+ String error =
f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.3") + " - " +
e.getLocalizedMessage();
+ _logger.error(error, e);
+ } catch (Exception e) {
persistenceManager.rollback();
- String error =
f.getName()+":"+e.getLocalizedMessage();
- _logger.error(error, e);
- } finally {
- // close thread persistence manager
-
PersistenceManagerFactory.closePersistenceManager();
- }
- }
- public void fileRemoved(File f) {
- // Not implemented - the .wgt
files are removed as part of the deployment process
- }
- });
- try {
- while (true) {
- watcher.check();
- Thread.sleep(interval);
- }
- } catch (InterruptedException iex) {
- }
- }
- };
-
- thr.start();
-
- }
+ String error =
f.getName()+":"+e.getLocalizedMessage();
+ _logger.error(error, e);
+ } finally {
+ // close thread persistence manager
+
PersistenceManagerFactory.closePersistenceManager();
+ }
+ }
+ public void fileRemoved(File f) {
+ // Not implemented - the .wgt files are removed as
part of the deployment process
+ }
+ });
+ try {
+ while (true) {
+ watcher.check();
+ Thread.sleep(interval);
+ }
+ } catch (InterruptedException iex) {
+ }
+ }
+ };
+
+ thr.start();
+
+ }
- public void contextDestroyed(ServletContextEvent event){
+ public void contextDestroyed(ServletContextEvent event){
/*
* Terminate persistence manager factory
*/
- PersistenceManagerFactory.terminate();
- }
+ PersistenceManagerFactory.terminate();
+ }
}