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 2014/02/07 17:10:50 UTC

svn commit: r1565709 - in /wookie/trunk/wookie-server/src/main/java/org/apache/wookie: controller/WidgetsController.java helpers/WidgetFactory.java helpers/WidgetInstanceFactory.java

Author: scottbw
Date: Fri Feb  7 16:10:50 2014
New Revision: 1565709

URL: http://svn.apache.org/r1565709
Log:
Replaced references to persistence manager with references to the WidgetMetadataService SPI

Modified:
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetsController.java
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetFactory.java
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetInstanceFactory.java

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetsController.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetsController.java?rev=1565709&r1=1565708&r2=1565709&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetsController.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetsController.java Fri Feb  7 16:10:50 2014
@@ -28,8 +28,6 @@ import org.apache.commons.configuration.
 import org.apache.commons.io.IOUtils;
 import org.apache.wookie.Messages;
 import org.apache.wookie.beans.IWidget;
-import org.apache.wookie.beans.util.IPersistenceManager;
-import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
@@ -38,6 +36,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.services.WidgetMetadataService;
 import org.apache.wookie.util.NewWidgetBroadcaster;
 import org.apache.wookie.util.W3CWidgetFactoryUtils;
 import org.apache.wookie.util.WidgetFileUtils;
@@ -78,13 +77,8 @@ public class WidgetsController extends C
       throws ResourceNotFoundException, InvalidParametersException,
       UnauthorizedAccessException {
     
-    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-    IWidget widget = persistenceManager.findWidgetByGuid(resourceId);
-    // attempt to get specific widget by id
-    if (widget == null) {
-      persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-      widget = persistenceManager.findById(IWidget.class, resourceId);
-    }
+	IWidget widget = WidgetMetadataService.Factory.getInstance().getWidget(resourceId);
+    
     // return widget result
     if (widget == null) throw new ResourceNotFoundException();
     
@@ -106,14 +100,8 @@ public class WidgetsController extends C
       HttpServletResponse response) throws ResourceNotFoundException,
       IOException {
 
-    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-    // attempt to get specific widget by URI
-    IWidget widget = persistenceManager.findWidgetByGuid(resourceId);
-    // attempt to get specific widget by id
-    if (widget == null) {
-      persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-      widget = persistenceManager.findById(IWidget.class, resourceId);
-    }
+	IWidget widget = WidgetMetadataService.Factory.getInstance().getWidget(resourceId);
+
     // return widget result
     if (widget == null)
       throw new ResourceNotFoundException();
@@ -164,9 +152,8 @@ public class WidgetsController extends C
 	 */
 	private void index(String resourceId, HttpServletRequest request,
 			HttpServletResponse response) throws IOException {
-
-    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-    IWidget[] widgets = persistenceManager.findAll(IWidget.class);
+		
+        IWidget[] widgets = WidgetMetadataService.Factory.getInstance().getAllWidgets();
 		returnXml(WidgetAdvertHelper.createXMLWidgetsDocument(widgets, getWookieServerURL(request, "").toString(), getLocales(request)),response);
 	}
 	
@@ -182,14 +169,7 @@ public class WidgetsController extends C
     //
     // Identify the widget to delete
     //
-    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-    IWidget widget = persistenceManager.findWidgetByGuid(resourceId);
-    // attempt to get specific widget by id
-    if (widget == null) {
-      persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-      widget = persistenceManager.findById(IWidget.class, resourceId);
-    }
-    
+    IWidget widget = WidgetMetadataService.Factory.getInstance().getWidget(resourceId);
     if (widget == null) throw new ResourceNotFoundException();
     
     //
@@ -269,9 +249,8 @@ public class WidgetsController extends C
         
         //
         // Check if the widget model corresponds to an existing installed widget
-        //
-        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-        if (persistenceManager.findWidgetByGuid(widgetId) == null) {
+        //        
+        if (WidgetMetadataService.Factory.getInstance().getWidget(widgetId) == null) {
 
             //
             // A new widget was created, so return 201
@@ -287,7 +266,8 @@ public class WidgetsController extends C
             // Widget already exists, so update the widget metadata and configuration details
             // and return 200
             //
-            WidgetFactory.update(widgetModel,persistenceManager.findWidgetByGuid(widgetId), true, zipFile);
+        	IWidget widget = WidgetMetadataService.Factory.getInstance().getWidget(widgetId);
+            WidgetFactory.update(widgetModel,widget, true, zipFile);
             returnXml(WidgetImportHelper.createXMLWidgetDocument(widgetModel, new File(fac.getUnzippedWidgetDirectory(), "config.xml"), getWookieServerURL(request, "").toString(), true), response);
             return false;
 
@@ -342,9 +322,8 @@ public class WidgetsController extends C
 
 	  //
 	  // If the gadget is not already registered, add it
-	  //
-	  IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-	  if(persistenceManager.findWidgetByGuid(widget.getIdentifier()) == null){
+	  //	  
+	  if(WidgetMetadataService.Factory.getInstance().getWidget(widget.getIdentifier()) == null){
 	    WidgetFactory.addNewWidget(widget);
 	    return true;
 	  } else {

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetFactory.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetFactory.java?rev=1565709&r1=1565708&r2=1565709&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetFactory.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetFactory.java Fri Feb  7 16:10:50 2014
@@ -17,26 +17,12 @@ import java.io.File;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.log4j.Logger;
-import org.apache.wookie.beans.IParticipant;
-import org.apache.wookie.beans.IPreference;
-import org.apache.wookie.beans.ISharedData;
 import org.apache.wookie.beans.IWidget;
-import org.apache.wookie.beans.IWidgetInstance;
-import org.apache.wookie.beans.SharedContext;
-import org.apache.wookie.beans.util.IPersistenceManager;
-import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.proxy.Policies;
 import org.apache.wookie.proxy.Policy;
+import org.apache.wookie.services.WidgetMetadataService;
 import org.apache.wookie.util.WidgetFileUtils;
 import org.apache.wookie.w3c.IAccess;
-import org.apache.wookie.w3c.IAuthor;
-import org.apache.wookie.w3c.IContent;
-import org.apache.wookie.w3c.IName;
-import org.apache.wookie.w3c.IFeature;
-import org.apache.wookie.w3c.IDescription;
-import org.apache.wookie.w3c.IParam;
-import org.apache.wookie.w3c.IIcon;
-import org.apache.wookie.w3c.ILicense;
 import org.apache.wookie.w3c.W3CWidget;
 
 /**
@@ -76,130 +62,22 @@ public class WidgetFactory {
 	 * @return the widget
 	 */
 	public static IWidget addNewWidget(W3CWidget model, boolean grantAccessRequests) {
-	    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-		IWidget widget = createWidget(persistenceManager, model);
-		createAuthor(persistenceManager, model, widget);
-		createStartFiles(persistenceManager, model,widget);
-		createNames(persistenceManager, model,widget);
-		createDescriptions(persistenceManager, model,widget);
-		createIcons(persistenceManager, model, widget);
-		createLicenses(persistenceManager, model,widget);		
-		createPreferences(persistenceManager, model,widget);
-		createFeatures(persistenceManager, model,widget);
-        persistenceManager.save(widget);
-		createAccessRequests(persistenceManager, model, widget, grantAccessRequests);
 		
-    _logger.info("'"+model.getLocalName("en") +"' - " + "Widget was successfully imported into the system as "+widget.getLocalName("en"));
+		//
+		// Import the metadata into the repository service
+		//
+		IWidget widget = WidgetMetadataService.Factory.getInstance().importWidget(model, null);
+		
+		//
+		// Create access requests
+		//
+		createAccessRequests(model, widget, grantAccessRequests);
+		
+		_logger.info("'"+model.getLocalName("en") +"' - " + "Widget was successfully imported into the system as "+widget.getLocalName("en"));
     
 		return widget;	       
 	}
 
-	private static IWidget createWidget(IPersistenceManager persistenceManager, W3CWidget model){
-		IWidget widget;
-		widget = persistenceManager.newInstance(IWidget.class);		
-		widget.setDir(model.getDir());
-		widget.setLang(model.getLang());
-		widget.setDefaultLocale(model.getDefaultLocale());
-		widget.setIdentifier(model.getIdentifier());
-		widget.setHeight(model.getHeight());
-		widget.setWidth(model.getWidth());
-		widget.setVersion(model.getVersion());
-		widget.setUpdateLocation(model.getUpdateLocation());
-		return widget;
-	}
-	
-	private static void createAuthor(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-	   if (model.getAuthor() != null){
-	      IAuthor author = persistenceManager.newInstance(IAuthor.class);
-	      author.setAuthorName(model.getAuthor().getAuthorName());
-	      author.setEmail(model.getAuthor().getEmail());
-	      author.setHref(model.getAuthor().getHref());
-	      author.setDir(model.getAuthor().getDir());
-	      author.setLang(model.getAuthor().getLang());
-	      widget.setAuthor(author);
-	    }
-	}
-
-	private static void createStartFiles(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for (IContent page:model.getContentList()){
-			IContent start = persistenceManager.newInstance(IContent.class);
-			start.setCharSet(page.getCharSet());
-			start.setLang(page.getLang());
-			start.setSrc(page.getSrc());
-            widget.getContentList().add(start);
-		}
-	}
-
-	private static void createNames(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for (IName name:model.getNames()){
-			IName widgetName = persistenceManager.newInstance(IName.class);
-			widgetName.setLang(name.getLang());
-			widgetName.setDir(name.getDir());
-			widgetName.setName(name.getName());
-			widgetName.setShort(name.getShort());
-            widget.getNames().add(widgetName);
-            persistenceManager.save(widget);
-		}
-	}
-
-	private static void createDescriptions(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for (IDescription desc:model.getDescriptions()){
-			IDescription widgetDesc = persistenceManager.newInstance(IDescription.class);
-			widgetDesc.setDescription(desc.getDescription());
-			widgetDesc.setLang(desc.getLang());
-			widgetDesc.setDir(desc.getDir());
-            widget.getDescriptions().add(widgetDesc);
-		} 
-	}
-
-	private static void createIcons(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for(IIcon icon: model.getIcons()){
-            IIcon widgetIcon = persistenceManager.newInstance(IIcon.class);
-            widgetIcon.setSrc(icon.getSrc());
-            widgetIcon.setHeight(icon.getHeight());
-            widgetIcon.setWidth(icon.getWidth());
-            widgetIcon.setLang(icon.getLang());
-            widget.getIcons().add(widgetIcon);
-		}
-	}
-
-	private static void createLicenses(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for(ILicense licenseModel: model.getLicenses()){
-            ILicense license = persistenceManager.newInstance(ILicense.class);
-            license.setLicenseText(licenseModel.getLicenseText());
-            license.setHref(licenseModel.getHref());
-            license.setLang(licenseModel.getLang());
-            license.setDir(licenseModel.getDir());
-            widget.getLicenses().add(license);
-		}
-	}
-
-	private static void createPreferences(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for(org.apache.wookie.w3c.IPreference pref : model.getPreferences()){
-			org.apache.wookie.w3c.IPreference preferenceDefault = persistenceManager.newInstance(org.apache.wookie.w3c.IPreference.class);
-			preferenceDefault.setName(pref.getName());
-			preferenceDefault.setValue(pref.getValue());
-			preferenceDefault.setReadOnly(pref.isReadOnly());
-            widget.getPreferences().add(preferenceDefault);
-		}
-	}
-
-	private static void createFeatures(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
-		for(IFeature ofeature: model.getFeatures()){
-            IFeature feature = persistenceManager.newInstance(IFeature.class);
-			feature.setName(ofeature.getName());
-			feature.setRequired(ofeature.isRequired());
-            widget.getFeatures().add(feature);
-			// now attach all parameters to this feature.
-			for(org.apache.wookie.w3c.IParam oparam : ofeature.getParameters()){
-	            IParam param = persistenceManager.newInstance(IParam.class);
-				param.setName(oparam.getName());
-				param.setValue(oparam.getValue());
-	            feature.getParameters().add(param);
-			}
-		}
-	}
-
 	/**
 	 * Create or update the access policies associated with a widget
 	 * @param persistenceManager the persistence manager
@@ -207,32 +85,32 @@ public class WidgetFactory {
 	 * @param widget the Wookie widget object
 	 * @param grantAccessRequests whether access requests are granted by default
 	 */
-	private static void createAccessRequests(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget, boolean grantAccessRequests){
-	  try {
-      //
-      // Remove any existing access policies
-      //
-      Policies.getInstance().clearPolicies(widget.getIdentifier());
-
-      //
-      // Create access policies for each access request in the widget model
-      //
-      for(IAccess access:model.getAccessList()){
-        Policy policy = new Policy();
-        policy.setOrigin(access.getOrigin());
-        policy.setScope(widget.getIdentifier());
-        policy.setDirective("DENY");
-        if (grantAccessRequests){
-          policy.setDirective("ALLOW");
-          _logger.info("access policy granted for "+widget.getLocalName("en")+" to access "+policy.getOrigin());
-        }
-        Policies.getInstance().addPolicy(policy);
-      }
-    } catch (ConfigurationException e) {
-      _logger.error("problem with policies configuration", e);
-    } catch (Exception e) {
-      _logger.error("problem setting policies", e);
-    }
+	private static void createAccessRequests(W3CWidget model, IWidget widget, boolean grantAccessRequests){
+		try {
+			//
+			// Remove any existing access policies
+			//
+			Policies.getInstance().clearPolicies(widget.getIdentifier());
+
+			//
+			// Create access policies for each access request in the widget model
+			//
+			for(IAccess access:model.getAccessList()){
+				Policy policy = new Policy();
+				policy.setOrigin(access.getOrigin());
+				policy.setScope(widget.getIdentifier());
+				policy.setDirective("DENY");
+				if (grantAccessRequests){
+					policy.setDirective("ALLOW");
+					_logger.info("access policy granted for "+widget.getLocalName("en")+" to access "+policy.getOrigin());
+				}
+				Policies.getInstance().addPolicy(policy);
+			}
+		} catch (ConfigurationException e) {
+			_logger.error("problem with policies configuration", e);
+		} catch (Exception e) {
+			_logger.error("problem setting policies", e);
+		}
 	}
 
 	/**
@@ -241,57 +119,28 @@ public class WidgetFactory {
 	 * @return true if the widget is destroyed successfully
 	 */
 	public static boolean destroy(IWidget widget, String resourcesPath){
-	  
 
-		if(widget==null) return false;
-		
-		String widgetGuid = widget.getIdentifier();
-		String widgetName = widget.getLocalName("en");
-		
-    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-		
-		// remove any widget instances for this widget
-		IWidgetInstance[] instances = persistenceManager.findByValue(IWidgetInstance.class, "widget", widget);	
-		for(IWidgetInstance instance : instances){
-			
-			// Delete all participants and shared data associated with any instances
-			//
-			// Note that we don't call this within WidgetInstanceFactory.destroy() as 
-			// if called in a different context (to remove just one instance) it would 
-			// have the side effect of deleting participants and shared data from other instances,
-			// not just the one being deleted.
-			//
-			// Note also that we have to use the instance as the hook for removing participants as there is no
-			// specific query for getting participants for a widget.
-			//						
-			IParticipant[] participants = new SharedContext(instance).getParticipants();
-			persistenceManager.delete(participants);
-	        ISharedData[] sharedData = new SharedContext(instance).getSharedData();
-	        persistenceManager.delete(sharedData);
-	        
-			// remove any preferences
-			IPreference[] preferences = instance.getPreferences().toArray(new IPreference[instance.getPreferences().size()]);// persistenceManager.findByValue(IPreference.class, "widgetInstance", instance);
-			persistenceManager.delete(preferences);
-			
-			// remove the instance
-			WidgetInstanceFactory.destroy(instance);
-			
-		}
+		//
+		// Remove the metadata from the repository
+		//
+		WidgetMetadataService.Factory.getInstance().removeWidget(widget);
 
+		//
 		// remove any AccessRequests
-    try {
-      Policies.getInstance().clearPolicies(widget.getIdentifier());
-    } catch (ConfigurationException e) {
-      _logger.error("Problem with properties configuration", e);
-    }
-        
-		// remove the widget db entry itself
-		persistenceManager.delete(widget);
-		// now remove the widget file resources
-		WidgetFileUtils.removeWidgetResources(resourcesPath, widgetGuid);
+		//
+		try {
+			Policies.getInstance().clearPolicies(widget.getIdentifier());
+		} catch (ConfigurationException e) {
+			_logger.error("Problem with properties configuration", e);
+		}
 		
-    _logger.info("'"+widgetName+"' - " + "Widget was successfully deleted from the system.");
-    
+		//
+		// now remove the widget file resources
+		//
+		WidgetFileUtils.removeWidgetResources(resourcesPath, widget.getIdentifier());
+
+		_logger.info("'"+widget.getLocalName("en")+"' - " + "Widget was successfully deleted from the system.");
+
 		return true;
 	} 
 	
@@ -302,46 +151,9 @@ public class WidgetFactory {
 	 * @param grantAccessRequests set to true to grant any access requests defined by the model
 	 */
 	public static void update( W3CWidget model, IWidget widget,  boolean grantAccessRequests, File zipFile){
-	    IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-	   
-		widget.setDir(model.getDir());
-        widget.setLang(model.getLang());
-        widget.setDefaultLocale(model.getDefaultLocale());
-		
-        //
-        // Don't override the identifier - see WOOKIE-383
-        //
-        //widget.setIdentifier(model.getIdentifier());
-        
-		widget.setHeight(model.getHeight());
-		widget.setWidth(model.getWidth());
-		widget.setVersion(model.getVersion());
-		widget.setUpdateLocation(model.getUpdateLocation());
-		
-		// Clear old values
-		widget.setContentList(null);
-		widget.setNames(null);
-		widget.setDescriptions(null);
-		widget.setLicenses(null);
-		widget.setFeatures(null);	
-		widget.setIcons(null);
-		widget.setPreferences(null);
-		// We set this here to ensure widgets already imported in to
-		// a 0.9.0 version of wookie get this value set. See WOOKIE-256
-	    if(zipFile != null){
-	    	widget.setPackagePath(zipFile.getPath());
-	    }
-		// Set with updated values
-		createAuthor(persistenceManager, model,widget);
-		createStartFiles(persistenceManager, model,widget);
-		createNames(persistenceManager, model,widget);
-		createDescriptions(persistenceManager, model,widget);
-		createIcons(persistenceManager, model, widget);
-		createLicenses(persistenceManager, model,widget);		
-		createPreferences(persistenceManager, model,widget);
-		createFeatures(persistenceManager, model,widget);
-        persistenceManager.save(widget);
-		createAccessRequests(persistenceManager, model, widget, grantAccessRequests);
+	    
+		WidgetMetadataService.Factory.getInstance().updateWidget(widget, model);
+		createAccessRequests(model, widget, grantAccessRequests);
 
 		_logger.info("'"+model.getLocalName("en") +"' - " + "Widget was successfully updated in the system.");
 	}

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetInstanceFactory.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetInstanceFactory.java?rev=1565709&r1=1565708&r2=1565709&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetInstanceFactory.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/helpers/WidgetInstanceFactory.java Fri Feb  7 16:10:50 2014
@@ -24,6 +24,7 @@ import org.apache.wookie.beans.IWidget;
 import org.apache.wookie.beans.IWidgetInstance;
 import org.apache.wookie.beans.util.IPersistenceManager;
 import org.apache.wookie.beans.util.PersistenceManagerFactory;
+import org.apache.wookie.services.WidgetMetadataService;
 import org.apache.wookie.util.HashGenerator;
 import org.apache.wookie.util.opensocial.OpenSocialUtils;
 import org.apache.wookie.w3c.util.LocalizationUtils;
@@ -69,7 +70,7 @@ public class WidgetInstanceFactory{
 	public static IWidgetInstance defaultInstance(String locale){
         IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 		IWidgetInstance instance = persistenceManager.newInstance(IWidgetInstance.class);
-		instance.setWidget(persistenceManager.findWidgetByGuid("http://notsupported")); //$NON-NLS-1$
+		instance.setWidget(WidgetMetadataService.Factory.getInstance().getWidget("http://notsupported")); //$NON-NLS-1$
 		instance.setIdKey("0000");
 		instance.setLang(locale);
 		instance.setOpensocialToken("");
@@ -92,7 +93,7 @@ public class WidgetInstanceFactory{
 			// Widget ID or Widget Type?
 	        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
 			if (widgetId != null){
-				widget = persistenceManager.findWidgetByGuid(widgetId);
+				widget = WidgetMetadataService.Factory.getInstance().getWidget(widgetId);
 			} 
 			// Unsupported
 			if (widget == null) return null;