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;