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/02/24 00:06:11 UTC

svn commit: r915574 - in /incubator/wookie/trunk/src/org/apache/wookie: WidgetAdminServlet.java helpers/WidgetFactory.java helpers/WidgetInstanceFactory.java manager/IWidgetAdminManager.java manager/impl/WidgetAdminManager.java server/ContextListener.java

Author: scottbw
Date: Tue Feb 23 23:06:10 2010
New Revision: 915574

URL: http://svn.apache.org/viewvc?rev=915574&view=rev
Log:
Refactored some of the admin methods into static factories WidgetFactory and WidgetInstanceFactory to make the code easier to understand by keeping concerns together. Longer term I think the WidgetAdminManager can eventually be removed completely.

Added:
    incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
Modified:
    incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
    incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java
    incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java
    incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java

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=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java Tue Feb 23 23:06:10 2010
@@ -41,6 +41,7 @@
 import org.apache.wookie.exceptions.InvalidStartFileException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
+import org.apache.wookie.helpers.WidgetFactory;
 import org.apache.wookie.helpers.WidgetKeyManager;
 import org.apache.wookie.manager.IWidgetAdminManager;
 import org.apache.wookie.manager.impl.WidgetAdminManager;
@@ -370,7 +371,7 @@
 		String widgetId = request.getParameter("widgetId"); //$NON-NLS-1$
 		Widget widget = Widget.findById(Integer.parseInt(widgetId));
 		String guid = widget.getGuid();
-		if(manager.removeWidgetAndReferences(Integer.parseInt(widgetId))){
+		if(WidgetFactory.destroy(Integer.parseInt(widgetId))){
 			if(WidgetPackageUtils.removeWidgetResources(WIDGETFOLDER, guid)){			
 				session.setAttribute("message_value", localizedMessages.getString("WidgetAdminServlet.12"));			 //$NON-NLS-1$ //$NON-NLS-2$ 
 			}
@@ -477,7 +478,8 @@
 				IManifestModel widgetModel = WidgetPackageUtils.processWidgetPackage(zipFile,properties.getString("widget.widgetfolder"), WIDGETFOLDER,UPLOADFOLDER,locales);//$NON-NLS-1$
 				if(!Widget.exists(widgetModel.getIdentifier())){	
 					// ADD
-					int dbkey = manager.addNewWidget(widgetModel, new String[]{});
+					Widget widget = WidgetFactory.addNewWidget(widgetModel);
+					int dbkey = widget.getId();
 					// widget added
 					session.setAttribute("message_value", "'"+ widgetModel.getLocalName("en") +"' - " + localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 					retrieveServices(session);

Added: 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=915574&view=auto
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java (added)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Tue Feb 23 23:06:10 2010
@@ -0,0 +1,272 @@
+/*
+ *  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.helpers;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.apache.wookie.beans.AccessRequest;
+import org.apache.wookie.beans.Description;
+import org.apache.wookie.beans.Feature;
+import org.apache.wookie.beans.License;
+import org.apache.wookie.beans.Name;
+import org.apache.wookie.beans.Param;
+import org.apache.wookie.beans.PreferenceDefault;
+import org.apache.wookie.beans.StartFile;
+import org.apache.wookie.beans.Widget;
+import org.apache.wookie.beans.WidgetDefault;
+import org.apache.wookie.beans.WidgetIcon;
+import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.WidgetType;
+import org.apache.wookie.manifestmodel.IAccessEntity;
+import org.apache.wookie.manifestmodel.IContentEntity;
+import org.apache.wookie.manifestmodel.IDescriptionEntity;
+import org.apache.wookie.manifestmodel.IFeatureEntity;
+import org.apache.wookie.manifestmodel.IIconEntity;
+import org.apache.wookie.manifestmodel.ILicenseEntity;
+import org.apache.wookie.manifestmodel.IManifestModel;
+import org.apache.wookie.manifestmodel.INameEntity;
+import org.apache.wookie.manifestmodel.IParamEntity;
+import org.apache.wookie.manifestmodel.IPreferenceEntity;
+
+/**
+ * Factory for creating and destroying Widgets
+ */
+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 grantAccessRequests whether to automatically grant access requests for the widget
+	 * @return the widget
+	 */
+	public static Widget addNewWidget(IManifestModel model, boolean grantAccessRequests) {
+		return addNewWidget(model,null, grantAccessRequests);
+	}
+
+	/**
+	 * Adds a new widget
+	 * @param model the model of the widget to add
+	 * @return the widget
+	 */
+	public static Widget addNewWidget(IManifestModel model) {
+		return addNewWidget(model,null,false);
+	}
+
+	/**
+	 * Adds a new widget
+	 * @param model the model of the widget to add
+	 * @param widgetTypes the types to allocate the widget to
+	 * @return the widget
+	 */
+	public static Widget addNewWidget(IManifestModel model,String[] widgetTypes) {
+		return addNewWidget(model,widgetTypes,false);
+	}	
+
+
+	/**
+	 * Constructs a new Widget and persists it and all dependent objects
+	 * @param model the model for the widget
+	 * @param widgetTypes the types to set for the widget
+	 * @param grantAccessRequests whether to grant access requests created for the widget
+	 * @return the widget
+	 */
+	public static Widget addNewWidget(IManifestModel model, String[] widgetTypes, boolean grantAccessRequests) {	
+		Widget widget = createWidget(model);
+		createTypes(widgetTypes, widget);
+		createStartFiles(model,widget);
+		createNames(model,widget);
+		createDescriptions(model,widget);
+		createIcons(model, widget);
+		createLicenses(model,widget);		
+		createPreferences(model,widget);
+		createFeatures(model,widget);
+		createAccessRequests(model, widget, grantAccessRequests);
+		return widget;	       
+	}
+
+	private static Widget createWidget(IManifestModel model){
+		Widget widget;
+		widget = new Widget();												
+		widget.setWidgetAuthor(model.getAuthor());
+		widget.setWidgetAuthorEmail(model.getAuthorEmail());
+		widget.setWidgetAuthorHref(model.getAuthorHref());
+		widget.setGuid(model.getIdentifier());
+		widget.setHeight(model.getHeight());
+		widget.setWidth(model.getWidth());
+		widget.setVersion(model.getVersion());
+		widget.save();	
+		return widget;
+	}
+
+	@SuppressWarnings("unchecked")
+	private static void createTypes(String[] widgetTypes, Widget widget){
+		WidgetType widgetType;
+		if (widgetTypes!=null){
+			for(int i=0;i<widgetTypes.length;i++){
+				widgetType = new WidgetType();
+				widgetType.setWidgetContext(widgetTypes[i]);
+				widgetType.setWidget(widget);
+				widget.getWidgetTypes().add(widgetType);
+				widgetType.save();
+			}
+		}
+	}
+
+	private static void createStartFiles(IManifestModel model, Widget widget){
+		for (IContentEntity page:model.getContentList()){
+			StartFile start = new StartFile();
+			start.setCharset(page.getCharSet());
+			start.setLang(page.getLang());
+			start.setUrl(page.getSrc());
+			start.setWidget(widget);
+			start.save();
+		}
+	}
+
+	private static void createNames(IManifestModel model, Widget widget){
+		for (INameEntity name:model.getNames()){
+			Name widgetName = new Name();
+			widgetName.setLang(name.getLang());
+			widgetName.setDir(name.getDir());
+			widgetName.setName(name.getName());
+			widgetName.setShortName(name.getShort());
+			widgetName.setWidget(widget);
+			widgetName.save();
+		}
+	}
+
+	private static void createDescriptions(IManifestModel model, Widget widget){
+		for (IDescriptionEntity desc:model.getDescriptions()){
+			Description widgetDesc = new Description();
+			widgetDesc.setContent(desc.getDescription());
+			widgetDesc.setLang(desc.getLang());
+			widgetDesc.setDir(desc.getDir());
+			widgetDesc.setWidget(widget);
+			widgetDesc.save();
+		}
+	}
+
+	private static void createIcons(IManifestModel model, Widget widget){
+		for(IIconEntity icon: model.getIconsList()){
+			WidgetIcon widgetIcon = new WidgetIcon(icon.getSrc(),icon.getHeight(),icon.getWidth(),icon.getLang(), widget);
+			widgetIcon.save();
+		}
+	}
+
+	private static void createLicenses(IManifestModel model, Widget widget){
+		for(ILicenseEntity licenseModel: model.getLicensesList()){
+			License license = new License(licenseModel.getLicenseText(),licenseModel.getHref(), licenseModel.getLang(), licenseModel.getDir(), widget);
+			license.save();
+		}
+	}
+
+	private static void createPreferences(IManifestModel model, Widget widget){
+		for(IPreferenceEntity prefEntity : model.getPrefences()){
+			PreferenceDefault prefenceDefault = new PreferenceDefault();
+			prefenceDefault.setPreference(prefEntity.getName());
+			prefenceDefault.setValue(prefEntity.getValue());
+			prefenceDefault.setReadOnly(prefEntity.isReadOnly());
+			prefenceDefault.setWidget(widget);
+			prefenceDefault.save();
+		}
+	}
+
+	private static void createFeatures(IManifestModel model, Widget widget){
+		for(IFeatureEntity featureEntity: model.getFeatures()){
+			Feature feature = new Feature();
+			feature.setFeatureName(featureEntity.getName());
+			feature.setRequired(featureEntity.isRequired());
+			feature.setWidget(widget);
+			feature.save();			
+			// now attach all parameters to this feature.
+			for(IParamEntity paramEntity : featureEntity.getParams()){
+				Param param = new Param();
+				param.setParameterName(paramEntity.getName());
+				param.setParameterValue(paramEntity.getValue());
+				param.setParentFeature(feature);
+				param.save();
+			}
+		}
+	}
+
+	private static void createAccessRequests(IManifestModel model, Widget widget, boolean grantAccessRequests){
+		for(IAccessEntity accessEntity:model.getAccessList()){
+			AccessRequest acc = new AccessRequest();
+			acc.setOrigin(accessEntity.getOrigin());
+			acc.setSubdomains(accessEntity.hasSubDomains());
+			acc.setWidget(widget);
+			acc.setGranted(grantAccessRequests);
+			if (grantAccessRequests){
+				_logger.info("access policy granted for "+widget.getWidgetTitle("en")+" to access "+acc.getOrigin());
+			}
+			acc.save();
+		}
+	}
+
+	/**
+	 * Destroy a widget and all dependent objects and references
+	 * @param id the id of the widget
+	 * @return true if the widget is destroyed successfully
+	 */
+	public static boolean destroy(int id){
+		Widget widget = Widget.findById(Integer.valueOf(id));
+		return destroy(widget);
+	}
+
+	/**
+	 * Destroy a widget and all dependent objects and references
+	 * @param widget the widget to destroy
+	 * @return true if the widget is destroyed successfully
+	 */
+	public static boolean destroy(Widget widget){
+
+		if(widget==null) return false;
+		
+		// remove any defaults for this widget
+		WidgetDefault[] widgetDefault = WidgetDefault.findByValue("widgetId", widget.getId());
+		if (widgetDefault.length == 1) widgetDefault[0].delete();
+		
+		// remove any widget instances for this widget
+		WidgetInstance[] instances = WidgetInstance.findByValue("widget", widget);	
+		for(WidgetInstance instance : instances){
+			WidgetInstanceFactory.destroy(instance);
+		}
+		
+		// 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){	
+			widgetTypes[j].delete();
+		}
+
+		// remove PreferenceDefaults
+		PreferenceDefault.delete(PreferenceDefault.findByValue("widget", widget));
+
+		// remove Features
+		for(Feature feature :Feature.findByValue("widget", widget)){
+			Param.delete(Param.findByValue("parentFeature", feature));
+			feature.delete();
+		}
+		
+		// remove any AccessRequests
+		AccessRequest.delete(AccessRequest.findByValue("widget", widget));
+
+		// remove the widget itself
+		widget.delete();
+		return true;
+	} 
+
+}

Modified: incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetInstanceFactory.java Tue Feb 23 23:06:10 2010
@@ -19,8 +19,10 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
+import org.apache.wookie.beans.Participant;
 import org.apache.wookie.beans.Preference;
 import org.apache.wookie.beans.PreferenceDefault;
+import org.apache.wookie.beans.SharedData;
 import org.apache.wookie.beans.Widget;
 import org.apache.wookie.beans.WidgetInstance;
 import org.apache.wookie.util.HashGenerator;
@@ -194,6 +196,17 @@
 		pref.setReadOnly(readOnly);
 		pref.save();	
 	}
+	
+	/**
+	 * Destroy a widget instance and all references to it
+	 * @param instance
+	 */
+	public static void destroy(WidgetInstance instance){
+		SharedData.delete(SharedData.findByValue("widgetInstance", instance));
+		Preference.delete(Preference.findByValue("widgetInstance", instance));
+		Participant.delete(Participant.findByValue("widgetInstance", instance));
+		instance.delete();
+	}
 
 }
 

Modified: incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manager/IWidgetAdminManager.java Tue Feb 23 23:06:10 2010
@@ -14,8 +14,6 @@
 
 package org.apache.wookie.manager;
 
-import org.apache.wookie.manifestmodel.IManifestModel;
-
 /**
  * Interface for admin functions
  * 
@@ -26,51 +24,6 @@
 public interface IWidgetAdminManager {
 
 	/**
-	 * Adds a new widget
-	 * @param model the model of the widget to add
-	 * @param widgetTypes the types to allocate the widget to
-	 * @return true if successfully added, otherwise false
-	 */
-	int addNewWidget(IManifestModel model, String[] widgetTypes);
-	
-	/**
-	 * Adds a new widget
-	 * @param model the model of the widget to add
-	 * @return true if successfully added, otherwise false
-	 */
-	int addNewWidget(IManifestModel model);
-	
-	/**
-	 * Adds a new widget
-	 * @param model the model of the widget to add
-	 * @param grantAccessRequests whether to automatically grant access requests for the widget
-	 * @return true if successfully added, otherwise false
-	 */
-	int addNewWidget(IManifestModel model, boolean grantAccessRequests);
-
-	/**
-	 * delete any default types that belong to a given widgetid
-	 */
-	void deleteWidgetDefaultById(int widgetKey);
-
-	/**
-	 * from a given widgetKey & service type, remove the default widget entry
-	 * @param widgetKey
-	 * @param serviceType
-	 */
-	void deleteWidgetDefaultByIdAndServiceType(int widgetKey,
-			String serviceType);
-
-	/**
-	 * Check to see if a service type is currently listed for a particular widget
-	 * @param dbkey
-	 * @param serviceType
-	 * @return
-	 */
-	boolean doesServiceExistForWidget(int dbkey,
-			String serviceType);
-
-	/**
 	 * Find if this widget is maximizable, from given key
 	 * @param dbKey
 	 * @return
@@ -85,13 +38,6 @@
 	boolean removeSingleWidgetType(int widgetId, String widgetType);
 
 	/**
-	 * Remove a widget and any references in the DB - i.e. WidgetInstances 
-	 * @param widgetId
-	 * @return
-	 */
-	boolean removeWidgetAndReferences(int widgetId);
-
-	/**
 	 * Sets a given widget to be the default for a given context - i.e. chat or discussion etc...
 	 * @param key - the key of the widget to set as defult
 	 * @param widgetType - the type of widget

Modified: incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java?rev=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java Tue Feb 23 23:06:10 2010
@@ -20,34 +20,10 @@
 
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
-import org.apache.wookie.beans.AccessRequest;
-import org.apache.wookie.beans.Description;
-import org.apache.wookie.beans.Feature;
-import org.apache.wookie.beans.License;
-import org.apache.wookie.beans.Name;
-import org.apache.wookie.beans.Param;
-import org.apache.wookie.beans.Participant;
-import org.apache.wookie.beans.Preference;
-import org.apache.wookie.beans.PreferenceDefault;
-import org.apache.wookie.beans.SharedData;
-import org.apache.wookie.beans.StartFile;
-import org.apache.wookie.beans.Whitelist;
 import org.apache.wookie.beans.Widget;
 import org.apache.wookie.beans.WidgetDefault;
-import org.apache.wookie.beans.WidgetIcon;
-import org.apache.wookie.beans.WidgetInstance;
 import org.apache.wookie.beans.WidgetType;
 import org.apache.wookie.manager.IWidgetAdminManager;
-import org.apache.wookie.manifestmodel.IAccessEntity;
-import org.apache.wookie.manifestmodel.IContentEntity;
-import org.apache.wookie.manifestmodel.IDescriptionEntity;
-import org.apache.wookie.manifestmodel.IFeatureEntity;
-import org.apache.wookie.manifestmodel.IIconEntity;
-import org.apache.wookie.manifestmodel.ILicenseEntity;
-import org.apache.wookie.manifestmodel.IManifestModel;
-import org.apache.wookie.manifestmodel.INameEntity;
-import org.apache.wookie.manifestmodel.IParamEntity;
-import org.apache.wookie.manifestmodel.IPreferenceEntity;
 
 /**
  * WidgetAdminManager
@@ -67,142 +43,7 @@
 		this.localizedMessages = localizedMessages;	
 	}
 	
-	public int addNewWidget(IManifestModel model, boolean grantAccessRequests) {
-		return addNewWidget(model,null, grantAccessRequests);
-	}
-
-	public int addNewWidget(IManifestModel model) {
-		return addNewWidget(model,null,false);
-	}
-	
-	public int addNewWidget(IManifestModel model,String[] widgetTypes) {
-		return addNewWidget(model,widgetTypes,false);
-	}	
-
-	@SuppressWarnings("unchecked")
-	public int addNewWidget(IManifestModel model, String[] widgetTypes, boolean grantAccessRequests) {
-		// NOTE: we pass the whole model here, so that we can create all the DB hooks more easily.
-		int newWidgetIdx = -1;			
-		Widget widget;
-		widget = new Widget();												
-		widget.setWidgetAuthor(model.getAuthor());
-		widget.setWidgetAuthorEmail(model.getAuthorEmail());
-		widget.setWidgetAuthorHref(model.getAuthorHref());
-		widget.setGuid(model.getIdentifier());
-		widget.setHeight(model.getHeight());
-		widget.setWidth(model.getWidth());
-		widget.setVersion(model.getVersion());
-		widget.save();	
-		WidgetType widgetType;
-		if (widgetTypes!=null){
-			for(int i=0;i<widgetTypes.length;i++){
-				widgetType = new WidgetType();
-				widgetType.setWidgetContext(widgetTypes[i]);
-				widgetType.setWidget(widget);
-				widget.getWidgetTypes().add(widgetType);
-				widgetType.save();
-			}
-		}
-		newWidgetIdx = widget.getId();
-		
-		// Start Files
-		for (IContentEntity page:model.getContentList()){
-			StartFile start = new StartFile();
-			start.setCharset(page.getCharSet());
-			start.setLang(page.getLang());
-			start.setUrl(page.getSrc());
-			start.setWidget(widget);
-			start.save();
-		}
-		
-		// Names
-		for (INameEntity name:model.getNames()){
-			Name widgetName = new Name();
-			widgetName.setLang(name.getLang());
-			widgetName.setDir(name.getDir());
-			widgetName.setName(name.getName());
-			widgetName.setShortName(name.getShort());
-			widgetName.setWidget(widget);
-			widgetName.save();
-		}
-		
-		// Descriptions
-		for (IDescriptionEntity desc:model.getDescriptions()){
-			Description widgetDesc = new Description();
-			widgetDesc.setContent(desc.getDescription());
-			widgetDesc.setLang(desc.getLang());
-			widgetDesc.setDir(desc.getDir());
-			widgetDesc.setWidget(widget);
-			widgetDesc.save();
-		}
-		
-		// Icons
-		for(IIconEntity icon: model.getIconsList()){
-			WidgetIcon widgetIcon = new WidgetIcon(icon.getSrc(),icon.getHeight(),icon.getWidth(),icon.getLang(), widget);
-			widgetIcon.save();
-		}
-		
-		// Licenses
-		for(ILicenseEntity licenseModel: model.getLicensesList()){
-			License license = new License(licenseModel.getLicenseText(),licenseModel.getHref(), licenseModel.getLang(), licenseModel.getDir(), widget);
-			license.save();
-		}
-
-		// Save default preferences				
-		for(IPreferenceEntity prefEntity : model.getPrefences()){
-			PreferenceDefault prefenceDefault = new PreferenceDefault();
-			prefenceDefault.setPreference(prefEntity.getName());
-			prefenceDefault.setValue(prefEntity.getValue());
-			prefenceDefault.setReadOnly(prefEntity.isReadOnly());
-			prefenceDefault.setWidget(widget);
-			prefenceDefault.save();
-		}
-
-		// Save Features
-		for(IFeatureEntity featureEntity: model.getFeatures()){
-			Feature feature = new Feature();
-			feature.setFeatureName(featureEntity.getName());
-			feature.setRequired(featureEntity.isRequired());
-			feature.setWidget(widget);
-			feature.save();			
-			// now attach all parameters to this feature.
-			for(IParamEntity paramEntity : featureEntity.getParams()){
-				Param param = new Param();
-				param.setParameterName(paramEntity.getName());
-				param.setParameterValue(paramEntity.getValue());
-				param.setParentFeature(feature);
-				param.save();
-			}
-		}
-		
-		// Save Access Requests
-		for(IAccessEntity accessEntity:model.getAccessList()){
-			AccessRequest acc = new AccessRequest();
-			acc.setOrigin(accessEntity.getOrigin());
-			acc.setSubdomains(accessEntity.hasSubDomains());
-			acc.setWidget(widget);
-			acc.setGranted(grantAccessRequests);
-			if (grantAccessRequests){
-				_logger.info("access policy granted for "+widget.getWidgetTitle("en")+" to access "+acc.getOrigin());
-			}
-			acc.save();
-		}
-
-		return newWidgetIdx;	       
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.apache.wookie.manager.IWidgetAdminManager#deleteWidgetDefaultById(int)
-	 */
-	public void deleteWidgetDefaultById(int widgetKey){		
-		WidgetDefault[] widgetDefault = WidgetDefault.findByValue("widgetId", widgetKey);
-		if (widgetDefault.length == 1) widgetDefault[0].delete();
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.apache.wookie.manager.IWidgetAdminManager#deleteWidgetDefaultByIdAndServiceType(int, java.lang.String)
-	 */
-	public void deleteWidgetDefaultByIdAndServiceType(int widgetKey, String serviceType){
+	private void deleteWidgetDefaultByIdAndServiceType(int widgetKey, String serviceType){
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("widgetId", widgetKey);
 		map.put("widgetContext", serviceType);
@@ -211,10 +52,7 @@
 		WidgetDefault.delete(widgetDefaults);
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.apache.wookie.manager.IWidgetAdminManager#doesServiceExistForWidget(int, java.lang.String)
-	 */
-	public boolean doesServiceExistForWidget(int dbkey, String serviceType){
+	private boolean doesServiceExistForWidget(int dbkey, String serviceType){
 		Widget widget = Widget.findById(Integer.valueOf(dbkey));
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("widget", widget);
@@ -260,49 +98,6 @@
 	}
 	
 	/* (non-Javadoc)
-	 * @see org.apache.wookie.manager.IWidgetAdminManager#removeWidgetAndReferences(int)
-	 */
-	public boolean removeWidgetAndReferences(int widgetId){
-		// get the widget
-		Widget widget = Widget.findById(Integer.valueOf(widgetId));
-		// remove any defaults for this widget
-		deleteWidgetDefaultById(widgetId);
-		
-		if(widget==null) return false;
-		// find any widget instances for this widget
-		WidgetInstance[] instances = WidgetInstance.findByValue("widget", widget);		
-		// try to remove prefs, shareddata and then the instances
-		for(WidgetInstance inst : instances){
-			SharedData.delete(SharedData.findByValue("widgetInstance", inst));
-			Preference.delete(Preference.findByValue("widgetInstance", inst));
-			Participant.delete(Participant.findByValue("widgetInstance", inst));
-			inst.delete();
-		}
-		// 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){	
-        	widgetTypes[j].delete();
-		}
-        
-        //Delete any PreferenceDefaults
-        PreferenceDefault.delete(PreferenceDefault.findByValue("widget", widget));
-        
-        // next do the features & children params
-        for(Feature feature :Feature.findByValue("widget", widget)){
-        	Param.delete(Param.findByValue("parentFeature", feature));
-        	feature.delete();
-        }
-        
-		// remove the widget itself
-        widget.delete();
-		return true;
-	} 
-	
-	
-	
-	
-	/* (non-Javadoc)
 	 * @see org.apache.wookie.manager.IWidgetAdminManager#setDefaultWidget(int, java.lang.String)
 	 */
 	public void setDefaultWidget(int key, String widgetType){

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=915574&r1=915573&r2=915574&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java Tue Feb 23 23:06:10 2010
@@ -28,7 +28,7 @@
 import org.apache.wookie.exceptions.BadManifestException;
 import org.apache.wookie.exceptions.BadWidgetZipFileException;
 import org.apache.wookie.feature.FeatureLoader;
-import org.apache.wookie.manager.impl.WidgetAdminManager;
+import org.apache.wookie.helpers.WidgetFactory;
 import org.apache.wookie.manifestmodel.IManifestModel;
 import org.apache.wookie.util.WgtWatcher;
 import org.apache.wookie.util.WidgetPackageUtils;
@@ -161,9 +161,8 @@
 	 						dbManager.beginTransaction();
 	 						File upload = WidgetPackageUtils.dealWithDroppedFile(UPLOADFOLDER, f);
 	 						IManifestModel model = WidgetPackageUtils.processWidgetPackage(upload, localWidgetFolderPath, WIDGETFOLDER, UPLOADFOLDER, locales);
-	 						WidgetAdminManager manager = new WidgetAdminManager(null);
 	 						if(!Widget.exists(model.getIdentifier())) {
-	 							manager.addNewWidget(model, true);	
+	 							WidgetFactory.addNewWidget(model, true);	
 	 							_logger.info(model.getLocalName("en") +"' - " + localizedMessages.getString("WidgetAdminServlet.19"));
 	 						} else {
 	 							_logger.info(model.getLocalName("en") +"' - " + localizedMessages.getString("WidgetAdminServlet.20"));