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/06/16 16:16:40 UTC
svn commit: r955236 [9/10] - in
/incubator/wookie/branches/pluggablepersistence: ./ WebContent/WEB-INF/
WebContent/admin/ WebContent/webmenu/ ant/ etc/ddl-schema/ etc/tomcat/
etc/tomcat/conf/ parser/java/src/org/apache/wookie/w3c/util/ scripts/
scripts...
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/FeatureLoader.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/FeatureLoader.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/FeatureLoader.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/FeatureLoader.java Wed Jun 16 14:16:36 2010
@@ -15,9 +15,9 @@ package org.apache.wookie.feature;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.Logger;
-import org.apache.wookie.beans.ServerFeature;
-import org.apache.wookie.util.hibernate.DBManagerFactory;
-import org.apache.wookie.util.hibernate.IDBManager;
+import org.apache.wookie.beans.IServerFeature;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.w3c.util.IRIValidator;
import java.util.Iterator;
@@ -36,12 +36,12 @@ public class FeatureLoader {
*/
@SuppressWarnings("unchecked")
public static void loadFeatures(PropertiesConfiguration config){
- final IDBManager dbManager = DBManagerFactory.getDBManager();
- dbManager.beginTransaction();
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ persistenceManager.begin();
// Remove existing features
- for (ServerFeature sf: ServerFeature.findAll()){
- sf.delete();
+ for (IServerFeature sf: persistenceManager.findAll(IServerFeature.class)){
+ persistenceManager.delete(sf);
}
// Add features in properties configuration
@@ -50,11 +50,11 @@ public class FeatureLoader {
String klass = (String) i.next();
String name = config.getString(klass);
try {
- ServerFeature sf = createFeature(name, klass);
+ IServerFeature sf = createFeature(name, klass);
// Only install it if there isn't an existing
// feature with the same name
- if (ServerFeature.findByName(name) == null){
- sf.save();
+ if (persistenceManager.findServerFeatureByName(name) == null){
+ persistenceManager.save(sf);
_logger.info("Installed feature:"+name);
} else {
_logger.error("Error installing feature: "+name+" was already installed");
@@ -64,48 +64,62 @@ public class FeatureLoader {
_logger.error("Error installing feature:"+e.getMessage());
}
}
- dbManager.commitTransaction();
+
+ persistenceManager.commit();
+ PersistenceManagerFactory.closePersistenceManager();
}
- /**
+ /**
+ * Validates a feature for the supplied parameters, or throws
+ * an exception if the feature specified is not a valid.
+ * @param name the name of the feature, which must be a valid IRI
+ * @param klass the Class name of the feature, which must implement the IFeature interface
+ */
+ @SuppressWarnings("unchecked")
+ public static void validateFeature(String name, String klass) throws Exception{
+ // Are required parameters missing?
+ if (name == null || klass == null){
+ throw new Exception("Invalid feature");
+ }
+ // Does the class exist?
+ Class theClass;
+ try {
+ theClass = Class.forName(klass);
+ } catch (Exception e) {
+ throw new Exception("Invalid feature: class not found");
+ }
+ // Does the class implement IFeature?
+ boolean implementsFeature = false;
+ Class[] interfaces = theClass.getInterfaces();
+ if (interfaces != null) {
+ if (interfaces.length > 0){
+ if (interfaces[0].getName().equals("org.apache.wookie.feature.IFeature")) implementsFeature = true;
+ }
+ }
+ if (!implementsFeature) throw new Exception("Invalid feature: class is not a Feature class");
+
+ // Does the feature name match that in the class?
+ if (!((IFeature) theClass.newInstance()).getName().equals(name)) throw new Exception("Invalid feature: feature name supplied and name in the class do not match");;
+
+ // Is the feature name a valid IRI?
+ if (!IRIValidator.isValidIRI(name)){
+ throw new Exception("Invalid feature: name is not a valid IRI");
+ }
+ }
+
+ /**
* Returns a valid ServerFeature for the supplied parameters, or throws
* an exception if the feature specified is not a valid ServerFeature.
* @param name the name of the feature, which must be a valid IRI
* @param klass the Class name of the feature, which must implement the IFeature interface
*/
- @SuppressWarnings("unchecked")
- public static ServerFeature createFeature(String name, String klass) throws Exception{
- // Are required parameters missing?
- if (name == null || klass == null){
- throw new Exception("Invalid feature");
- }
- // Does the class exist?
- Class theClass;
- try {
- theClass = Class.forName(klass);
- } catch (Exception e) {
- throw new Exception("Invalid feature: class not found");
- }
- // Does the class implement IFeature?
- boolean implementsFeature = false;
- Class[] interfaces = theClass.getInterfaces();
- if (interfaces != null) {
- if (interfaces.length > 0){
- if (interfaces[0].getName().equals("org.apache.wookie.feature.IFeature")) implementsFeature = true;
- }
- }
- if (!implementsFeature) throw new Exception("Invalid feature: class is not a Feature class");
-
- // Does the feature name match that in the class?
- if (!((IFeature) theClass.newInstance()).getName().equals(name)) throw new Exception("Invalid feature: feature name supplied and name in the class do not match");;
-
- // Is the feature name a valid IRI?
- if (!IRIValidator.isValidIRI(name)){
- throw new Exception("Invalid feature: name is not a valid IRI");
- }
-
+ public static IServerFeature createFeature(String name, String klass) throws Exception{
+ // validate feature
+ validateFeature(name, klass);
+
// All is well, create the SF and return it
- ServerFeature sf = new ServerFeature();
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IServerFeature sf = persistenceManager.newInstance(IServerFeature.class);
sf.setClassName(klass);
sf.setFeatureName(name);
return sf;
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/wave/WaveAPIImpl.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/wave/WaveAPIImpl.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/wave/WaveAPIImpl.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/feature/wave/WaveAPIImpl.java Wed Jun 16 14:16:36 2010
@@ -20,9 +20,11 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.wookie.Messages;
-import org.apache.wookie.beans.Participant;
-import org.apache.wookie.beans.SharedData;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IParticipant;
+import org.apache.wookie.beans.ISharedData;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.controller.PropertiesController;
import org.apache.wookie.feature.IFeature;
import org.apache.wookie.helpers.Notifier;
@@ -70,13 +72,14 @@ public class WaveAPIImpl implements IFea
return state;
}
// check if instance is valid
- WidgetInstance widgetInstance = WidgetInstance.findByIdKey(id_key);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
if (widgetInstance == null){
state.put("message", localizedMessages.getString("WidgetAPIImpl.0")); //$NON-NLS-1$
return state;
}
//
- for(SharedData data : SharedData.findSharedDataForInstance(widgetInstance)){
+ for(ISharedData data : widgetInstance.getSharedData()){
state.put(data.getDkey(), data.getDvalue());
}
return state;
@@ -89,9 +92,10 @@ public class WaveAPIImpl implements IFea
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
Messages localizedMessages = LocaleHandler.localizeMessages(request);
if(id_key == null) return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
- WidgetInstance widgetInstance = WidgetInstance.findByIdKey(id_key);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
if(widgetInstance==null) return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
- Participant[] participants = Participant.getParticipants(widgetInstance);
+ IParticipant[] participants = persistenceManager.findParticipants(widgetInstance);
return ParticipantHelper.createJSONParticipantsDocument(participants);
}
@@ -102,9 +106,10 @@ public class WaveAPIImpl implements IFea
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
Messages localizedMessages = LocaleHandler.localizeMessages(request);
if(id_key == null) return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
- WidgetInstance widgetInstance = WidgetInstance.findByIdKey(id_key);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
if(widgetInstance == null) return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
- Participant participant = Participant.getViewer(widgetInstance);
+ IParticipant participant = persistenceManager.findParticipantViewer(widgetInstance);
if (participant != null) return ParticipantHelper.createJSONParticipantDocument(participant); //$NON-NLS-1$
return null; // no viewer i.e. widget is anonymous
}
@@ -115,7 +120,8 @@ public class WaveAPIImpl implements IFea
public String submitDelta(String id_key, Map<String,String>map){
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
Messages localizedMessages = LocaleHandler.localizeMessages(request);
- WidgetInstance widgetInstance = WidgetInstance.findByIdKey(id_key);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
if(widgetInstance == null) return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
if(widgetInstance.isLocked()) return localizedMessages.getString("WidgetAPIImpl.2"); //$NON-NLS-1$
//
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/AccessRequestHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/AccessRequestHelper.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/AccessRequestHelper.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/AccessRequestHelper.java Wed Jun 16 14:16:36 2010
@@ -13,7 +13,7 @@
*/
package org.apache.wookie.helpers;
-import org.apache.wookie.beans.AccessRequest;
+import org.apache.wookie.beans.IAccessRequest;
/**
* Helper for rendering Widget Access Request Policies (WARP)
@@ -27,10 +27,10 @@ public class AccessRequestHelper {
* @param accessRequests
* @return
*/
- public static String createXMLAccessRequestDocument(AccessRequest[] accessRequests){
+ public static String createXMLAccessRequestDocument(IAccessRequest[] accessRequests){
String document = XMLDECLARATION;
document += "\n<policies>\n";
- for (AccessRequest ar:accessRequests){
+ for (IAccessRequest ar:accessRequests){
document += toXml(ar);
}
document += "</policies>\n";
@@ -42,17 +42,17 @@ public class AccessRequestHelper {
* @param accessRequests
* @return
*/
- public static String createAccessRequestHTMLTable(AccessRequest[] accessRequests){
+ public static String createAccessRequestHTMLTable(IAccessRequest[] accessRequests){
String document = "<table width=\"500\" class=\"ui-widget ui-widget-content\" align=\"center\">\n";
document+= "<tr class=\"ui-widget-header\"><td colspan=\"5\">Policies</td></tr> ";
- for (AccessRequest ar:accessRequests){
+ for (IAccessRequest ar:accessRequests){
document += toHtml(ar);
}
document += "</table>\n";
return document;
}
- private static String toXml(AccessRequest ar){
+ private static String toXml(IAccessRequest ar){
String xml = "\t<policy ";
xml += "id=\""+ar.getId()+"\" ";
xml += "widget=\""+ar.getWidget().getId()+"\" ";
@@ -67,7 +67,7 @@ public class AccessRequestHelper {
return xml;
}
- public static String toHtml(AccessRequest ar){
+ public static String toHtml(IAccessRequest ar){
String html = "";
if (ar.isGranted()){
html += "<tr style=\"background-color:#9FC\">";
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/Notifier.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/Notifier.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/Notifier.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/Notifier.java Wed Jun 16 14:16:36 2010
@@ -20,7 +20,7 @@ import java.util.Iterator;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IWidgetInstance;
import org.apache.wookie.util.SiblingPageNormalizer;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
@@ -45,7 +45,7 @@ public class Notifier {
* @param instance the widget instance whose siblings should be invoked
* @param method the method to invoke on sibling widget instances
*/
- public static void notifyWidgets(HttpSession session, WidgetInstance instance, String method){
+ public static void notifyWidgets(HttpSession session, IWidgetInstance instance, String method){
ServletContext ctx = session.getServletContext();
ServerContext sctx = ServerContextFactory.get(ctx);
String currentPage = new SiblingPageNormalizer().getNormalizedPage(instance);
@@ -58,7 +58,7 @@ public class Notifier {
* current script session. Only use this method within a DWR thread.
* @param widgetInstance the instance that is the source of the update
*/
- public static void notifySiblings(WidgetInstance widgetInstance){
+ public static void notifySiblings(IWidgetInstance widgetInstance){
String sharedDataKey = widgetInstance.getSharedDataKey();
String script = "Widget.onSharedUpdate(\""+sharedDataKey+"\");"; //$NON-NLS-1$ //$NON-NLS-2$
callSiblings(widgetInstance,script);
@@ -68,7 +68,7 @@ public class Notifier {
* Calls a script in sibling widget instances within the scope of the current DWR thread
* @param call the JS method to call on the widget start file
*/
- public static void callSiblings(WidgetInstance instance, String call){
+ public static void callSiblings(IWidgetInstance instance, String call){
WebContext wctx = WebContextFactory.get();
String currentPage = new SiblingPageNormalizer().getNormalizedPage(instance);
Collection<?> pages = wctx.getScriptSessionsByPage(currentPage);
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/ParticipantHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/ParticipantHelper.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/ParticipantHelper.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/ParticipantHelper.java Wed Jun 16 14:16:36 2010
@@ -13,7 +13,7 @@
*/
package org.apache.wookie.helpers;
-import org.apache.wookie.beans.Participant;
+import org.apache.wookie.beans.IParticipant;
/**
* A helper for Participants
@@ -29,8 +29,8 @@ public class ParticipantHelper {
* @param participant
* @return
*/
- public static String createXMLParticipantsDocument(Participant participant){
- Participant[] participants = {participant};
+ public static String createXMLParticipantsDocument(IParticipant participant){
+ IParticipant[] participants = {participant};
return createXMLParticipantsDocument(participants);
}
@@ -41,24 +41,24 @@ public class ParticipantHelper {
* @param localIconPath
* @return
*/
- public static String createXMLParticipantsDocument(Participant[] participants){
+ public static String createXMLParticipantsDocument(IParticipant[] participants){
String document = XMLDECLARATION;
document += "\n<participants>\n"; //$NON-NLS-1$
- for (Participant participant:participants){
+ for (IParticipant participant:participants){
document += toXml(participant);
}
document += "</participants>\n"; //$NON-NLS-1$
return document;
}
- public static String createJSONParticipantDocument(Participant participant){
+ public static String createJSONParticipantDocument(IParticipant participant){
return "{\"Participant\":"+ParticipantHelper.toJson(participant)+"}"; //$NON-NLS-1$
}
- public static String createJSONParticipantsDocument(Participant[] participants){
+ public static String createJSONParticipantsDocument(IParticipant[] participants){
String json = "{\"Participants\":[";//$NON-NLS-1$
String delimit = "";
- for (Participant participant: participants){
+ for (IParticipant participant: participants){
json+=delimit+toJson(participant);
delimit = ","; //$NON-NLS-1$
}
@@ -72,10 +72,10 @@ public class ParticipantHelper {
* @param participant the participant to represent
* @return the XML representation of the participant
*/
- public static String toXml(Participant participant){
- return "<participant id=\""+participant.getParticipant_id()+
- "\" display_name=\""+participant.getParticipant_display_name()+
- "\" thumbnail_url=\""+participant.getParticipant_thumbnail_url()+
+ public static String toXml(IParticipant participant){
+ return "<participant id=\""+participant.getParticipantId()+
+ "\" display_name=\""+participant.getParticipantDisplayName()+
+ "\" thumbnail_url=\""+participant.getParticipantThumbnailUrl()+
"\" />"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
@@ -84,11 +84,11 @@ public class ParticipantHelper {
* @param participant
* @return
*/
- public static String toJson(Participant participant){
+ public static String toJson(IParticipant participant){
String json = "{"+
- "\"participant_id\":\""+participant.getParticipant_id()+
- "\", \"participant_display_name\":\""+participant.getParticipant_display_name()+
- "\", \"participant_thumbnail_url\":\""+participant.getParticipant_thumbnail_url()+"\"}";
+ "\"participant_id\":\""+participant.getParticipantId()+
+ "\", \"participant_display_name\":\""+participant.getParticipantDisplayName()+
+ "\", \"participant_thumbnail_url\":\""+participant.getParticipantThumbnailUrl()+"\"}";
return json; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetFactory.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetFactory.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetFactory.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetFactory.java Wed Jun 16 14:16:36 2010
@@ -13,22 +13,22 @@
*/
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.beans.IAccessRequest;
+import org.apache.wookie.beans.IDescription;
+import org.apache.wookie.beans.IFeature;
+import org.apache.wookie.beans.ILicense;
+import org.apache.wookie.beans.IName;
+import org.apache.wookie.beans.IParam;
+import org.apache.wookie.beans.IPreferenceDefault;
+import org.apache.wookie.beans.IStartFile;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetDefault;
+import org.apache.wookie.beans.IWidgetIcon;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.IWidgetType;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.w3c.IAccessEntity;
import org.apache.wookie.w3c.IContentEntity;
import org.apache.wookie.w3c.IDescriptionEntity;
@@ -52,7 +52,7 @@ public class WidgetFactory {
* @param grantAccessRequests whether to automatically grant access requests for the widget
* @return the widget
*/
- public static Widget addNewWidget(W3CWidget model, boolean grantAccessRequests) {
+ public static IWidget addNewWidget(W3CWidget model, boolean grantAccessRequests) {
return addNewWidget(model,null, grantAccessRequests);
}
@@ -61,7 +61,7 @@ public class WidgetFactory {
* @param model the model of the widget to add
* @return the widget
*/
- public static Widget addNewWidget(W3CWidget model) {
+ public static IWidget addNewWidget(W3CWidget model) {
return addNewWidget(model,null,false);
}
@@ -71,7 +71,7 @@ public class WidgetFactory {
* @param widgetTypes the types to allocate the widget to
* @return the widget
*/
- public static Widget addNewWidget(W3CWidget model,String[] widgetTypes) {
+ public static IWidget addNewWidget(W3CWidget model,String[] widgetTypes) {
return addNewWidget(model,widgetTypes,false);
}
@@ -83,23 +83,25 @@ public class WidgetFactory {
* @param grantAccessRequests whether to grant access requests created for the widget
* @return the widget
*/
- public static Widget addNewWidget(W3CWidget 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);
+ public static IWidget addNewWidget(W3CWidget model, String[] widgetTypes, boolean grantAccessRequests) {
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = createWidget(persistenceManager, model);
+ createTypes(persistenceManager, widgetTypes, 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);
return widget;
}
- private static Widget createWidget(W3CWidget model){
- Widget widget;
- widget = new Widget();
+ private static IWidget createWidget(IPersistenceManager persistenceManager, W3CWidget model){
+ IWidget widget;
+ widget = persistenceManager.newInstance(IWidget.class);
widget.setWidgetAuthor(model.getAuthor());
widget.setWidgetAuthorEmail(model.getAuthorEmail());
widget.setWidgetAuthorHref(model.getAuthorHref());
@@ -107,112 +109,110 @@ public class WidgetFactory {
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;
+ private static void createTypes(IPersistenceManager persistenceManager, String[] widgetTypes, IWidget widget){
+ IWidgetType widgetType;
if (widgetTypes!=null){
for(int i=0;i<widgetTypes.length;i++){
- widgetType = new WidgetType();
+ widgetType = persistenceManager.newInstance(IWidgetType.class);
widgetType.setWidgetContext(widgetTypes[i]);
- widgetType.setWidget(widget);
widget.getWidgetTypes().add(widgetType);
- widgetType.save();
}
}
}
- private static void createStartFiles(W3CWidget model, Widget widget){
+ private static void createStartFiles(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
for (IContentEntity page:model.getContentList()){
- StartFile start = new StartFile();
+ IStartFile start = persistenceManager.newInstance(IStartFile.class);
start.setCharset(page.getCharSet());
start.setLang(page.getLang());
start.setUrl(page.getSrc());
- start.setWidget(widget);
- start.save();
+ widget.getStartFiles().add(start);
}
}
- private static void createNames(W3CWidget model, Widget widget){
+ private static void createNames(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
for (INameEntity name:model.getNames()){
- Name widgetName = new Name();
+ IName widgetName = persistenceManager.newInstance(IName.class);
widgetName.setLang(name.getLang());
widgetName.setDir(name.getDir());
widgetName.setName(name.getName());
widgetName.setShortName(name.getShort());
- widgetName.setWidget(widget);
- widgetName.save();
+ widget.getNames().add(widgetName);
}
}
- private static void createDescriptions(W3CWidget model, Widget widget){
+ private static void createDescriptions(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
for (IDescriptionEntity desc:model.getDescriptions()){
- Description widgetDesc = new Description();
+ IDescription widgetDesc = persistenceManager.newInstance(IDescription.class);
widgetDesc.setContent(desc.getDescription());
widgetDesc.setLang(desc.getLang());
widgetDesc.setDir(desc.getDir());
- widgetDesc.setWidget(widget);
- widgetDesc.save();
+ widget.getDescriptions().add(widgetDesc);
}
}
- private static void createIcons(W3CWidget model, Widget widget){
+ private static void createIcons(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
for(IIconEntity icon: model.getIconsList()){
- WidgetIcon widgetIcon = new WidgetIcon(icon.getSrc(),icon.getHeight(),icon.getWidth(),icon.getLang(), widget);
- widgetIcon.save();
+ IWidgetIcon widgetIcon = persistenceManager.newInstance(IWidgetIcon.class);
+ widgetIcon.setSrc(icon.getSrc());
+ widgetIcon.setHeight(icon.getHeight());
+ widgetIcon.setWidth(icon.getWidth());
+ widgetIcon.setLang(icon.getLang());
+ widget.getWidgetIcons().add(widgetIcon);
}
}
- private static void createLicenses(W3CWidget model, Widget widget){
+ private static void createLicenses(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
for(ILicenseEntity licenseModel: model.getLicensesList()){
- License license = new License(licenseModel.getLicenseText(),licenseModel.getHref(), licenseModel.getLang(), licenseModel.getDir(), widget);
- license.save();
+ ILicense license = persistenceManager.newInstance(ILicense.class);
+ license.setText(licenseModel.getLicenseText());
+ license.setHref(licenseModel.getHref());
+ license.setLang(licenseModel.getLang());
+ license.setDir(licenseModel.getDir());
+ widget.getLicenses().add(license);
}
}
- private static void createPreferences(W3CWidget model, Widget widget){
+ private static void createPreferences(IPersistenceManager persistenceManager, W3CWidget model, IWidget 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();
+ IPreferenceDefault preferenceDefault = persistenceManager.newInstance(IPreferenceDefault.class);
+ preferenceDefault.setPreference(prefEntity.getName());
+ preferenceDefault.setValue(prefEntity.getValue());
+ preferenceDefault.setReadOnly(prefEntity.isReadOnly());
+ widget.getPreferenceDefaults().add(preferenceDefault);
}
}
- private static void createFeatures(W3CWidget model, Widget widget){
+ private static void createFeatures(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget){
for(IFeatureEntity featureEntity: model.getFeatures()){
- Feature feature = new Feature();
+ IFeature feature = persistenceManager.newInstance(IFeature.class);
feature.setFeatureName(featureEntity.getName());
feature.setRequired(featureEntity.isRequired());
- feature.setWidget(widget);
- feature.save();
+ widget.getFeatures().add(feature);
// now attach all parameters to this feature.
for(IParamEntity paramEntity : featureEntity.getParams()){
- Param param = new Param();
+ IParam param = persistenceManager.newInstance(IParam.class);
param.setParameterName(paramEntity.getName());
param.setParameterValue(paramEntity.getValue());
- param.setParentFeature(feature);
- param.save();
+ feature.getParameters().add(param);
}
}
}
- private static void createAccessRequests(W3CWidget model, Widget widget, boolean grantAccessRequests){
+ private static void createAccessRequests(IPersistenceManager persistenceManager, W3CWidget model, IWidget widget, boolean grantAccessRequests){
for(IAccessEntity accessEntity:model.getAccessList()){
- AccessRequest acc = new AccessRequest();
+ IAccessRequest acc = persistenceManager.newInstance(IAccessRequest.class);
acc.setOrigin(accessEntity.getOrigin());
acc.setSubdomains(accessEntity.hasSubDomains());
- acc.setWidget(widget);
acc.setGranted(grantAccessRequests);
+ acc.setWidget(widget);
if (grantAccessRequests){
_logger.info("access policy granted for "+widget.getWidgetTitle("en")+" to access "+acc.getOrigin());
}
- acc.save();
+ persistenceManager.save(acc);
}
}
@@ -221,8 +221,9 @@ public class WidgetFactory {
* @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));
+ public static boolean destroy(Object id){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = persistenceManager.findById(IWidget.class, id);
return destroy(widget);
}
@@ -231,41 +232,27 @@ public class WidgetFactory {
* @param widget the widget to destroy
* @return true if the widget is destroyed successfully
*/
- public static boolean destroy(Widget widget){
+ public static boolean destroy(IWidget 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();
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetDefault[] widgetDefault = persistenceManager.findByValue(IWidgetDefault.class, "widget", widget);
+ if (widgetDefault.length == 1) persistenceManager.delete(widgetDefault[0]);
// remove any widget instances for this widget
- WidgetInstance[] instances = WidgetInstance.findByValue("widget", widget);
- for(WidgetInstance instance : instances){
+ IWidgetInstance[] instances = persistenceManager.findByValue(IWidgetInstance.class, "widget", widget);
+ for(IWidgetInstance 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));
-
+ IAccessRequest[] accessRequests = persistenceManager.findByValue(IAccessRequest.class, "widget", widget);
+ persistenceManager.delete(accessRequests);
+
// remove the widget itself
- widget.delete();
+ persistenceManager.delete(widget);
return true;
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetHelper.java Wed Jun 16 14:16:36 2010
@@ -16,13 +16,13 @@ package org.apache.wookie.helpers;
import java.net.MalformedURLException;
import java.net.URL;
-import org.apache.wookie.beans.Description;
-import org.apache.wookie.beans.License;
-import org.apache.wookie.beans.Name;
-import org.apache.wookie.beans.PreferenceDefault;
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetIcon;
-import org.apache.wookie.beans.WidgetType;
+import org.apache.wookie.beans.IDescription;
+import org.apache.wookie.beans.ILicense;
+import org.apache.wookie.beans.IName;
+import org.apache.wookie.beans.IPreferenceDefault;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetIcon;
+import org.apache.wookie.beans.IWidgetType;
import org.apache.wookie.w3c.util.LocalizationUtils;
/**
@@ -40,8 +40,8 @@ public class WidgetHelper {
* @param localIconPath
* @return
*/
- public static String createXMLWidgetsDocument(Widget widget, String localIconPath, String[] locales){
- Widget[] widgets = {widget};
+ public static String createXMLWidgetsDocument(IWidget widget, String localIconPath, String[] locales){
+ IWidget[] widgets = {widget};
return createXMLWidgetsDocument(widgets, localIconPath, locales);
}
@@ -52,10 +52,10 @@ public class WidgetHelper {
* @param localIconPath
* @return
*/
- public static String createXMLWidgetsDocument(Widget[] widgets, String localIconPath, String[] locales){
+ public static String createXMLWidgetsDocument(IWidget[] widgets, String localIconPath, String[] locales){
String document = XMLDECLARATION;
document += "\n<widgets>\n";
- for (Widget widget:widgets){
+ for (IWidget widget:widgets){
document += toXml(widget, localIconPath, locales);
}
document += "</widgets>\n";
@@ -69,7 +69,7 @@ public class WidgetHelper {
* @param localIconPath the local path to prefix any local icons, typically the server URL
* @return the XML representation of the widget
*/
- public static String toXml(Widget widget, String localIconPath, String[] locales){
+ public static String toXml(IWidget widget, String localIconPath, String[] locales){
String out = getWidgetElement(widget);
out += getName(widget, locales);
out += getDescription(widget, locales);
@@ -82,7 +82,7 @@ public class WidgetHelper {
return out;
}
- private static String getWidgetElement(Widget widget){
+ private static String getWidgetElement(IWidget widget){
if (widget == null) return null;
String width = "";
String height = "";
@@ -103,7 +103,7 @@ public class WidgetHelper {
return out;
}
- private static String getAuthor(Widget widget){
+ private static String getAuthor(IWidget widget){
String out = "\t\t<author";
if (widget.getWidgetAuthorEmail() != null) out+= " email=\""+widget.getWidgetAuthorEmail()+"\"";
if (widget.getWidgetAuthorHref() != null) out+= " href=\""+widget.getWidgetAuthorHref()+"\"";
@@ -113,11 +113,10 @@ public class WidgetHelper {
return out;
}
- private static String getLicenses(Widget widget, String[] locales){
+ private static String getLicenses(IWidget widget, String[] locales){
String out = "";
- License[] licenses = License.findByValue("widget", widget);
- licenses = (License[]) LocalizationUtils.processElementsByLocales(licenses, locales);
- for (License license: licenses){
+ ILicense[] licenses = (ILicense[])LocalizationUtils.processElementsByLocales(widget.getLicenses(), locales);
+ for (ILicense license: licenses){
out +="\t\t<license ";
if (license.getLang()!=null) out+=" xml:lang=\""+license.getLang()+"\"";
if (license.getHref()!=null) out+=" href=\""+license.getHref()+"\"";
@@ -127,17 +126,16 @@ public class WidgetHelper {
return out;
}
- private static String getPreferences(Widget widget){
+ private static String getPreferences(IWidget widget){
String out = "";
- PreferenceDefault[] prefs = PreferenceDefault.findByValue("widget",widget);
- for (PreferenceDefault pref : prefs) {
+ for (IPreferenceDefault pref : widget.getPreferenceDefaults()) {
out += "\t\t<preference name=\"" + pref.getPreference() + "\" value=\""+pref.getValue()+"\" readonly=\"" + (pref.isReadOnly()? "true" : "false") + "\"/>";
}
return out;
}
- private static String getName(Widget widget, String[] locales){
- Name name = (Name) LocalizationUtils.getLocalizedElement(Name.findByValue("widget", widget),locales);
+ private static String getName(IWidget widget, String[] locales){
+ IName name = (IName)LocalizationUtils.getLocalizedElement(widget.getNames(),locales);
String shortName = null;
String longName = null;
if (name != null) {
@@ -153,8 +151,8 @@ public class WidgetHelper {
return out;
}
- private static String getDescription(Widget widget, String[] locales){
- Description desc = (Description) LocalizationUtils.getLocalizedElement(Description.findByValue("widget", widget), locales);
+ private static String getDescription(IWidget widget, String[] locales){
+ IDescription desc = (IDescription)LocalizationUtils.getLocalizedElement(widget.getDescriptions(), locales);
String out = "\t\t<description";
if (desc!= null && desc.getDir()!=null) out+=" dir=\""+desc.getDir()+"\"";
out += ">";
@@ -163,26 +161,25 @@ public class WidgetHelper {
return out;
}
- private static String getTags(Widget widget){
+ private static String getTags(IWidget widget){
String out = "";
- WidgetType[] types = WidgetType.findByValue("widget", widget);
- for (WidgetType type:types){
+ for (IWidgetType type:widget.getWidgetTypes()){
out +="\t\t<category>"+type.getWidgetContext()+"</category>\n";
}
return out;
}
- private static String getIcons(Widget widget, String[] locales, String localIconPath){
+ private static String getIcons(IWidget widget, String[] locales, String localIconPath){
URL urlWidgetIcon = null;
String out = "";
- WidgetIcon[] icons;
+ IWidgetIcon[] icons;
if (locales != null && locales.length != 0){
- icons = (WidgetIcon[]) LocalizationUtils.processElementsByLocales(WidgetIcon.findForWidget(widget), locales);
+ icons = (IWidgetIcon[])LocalizationUtils.processElementsByLocales(widget.getWidgetIcons(), locales);
} else {
- icons = WidgetIcon.findForWidget(widget);
+ icons = widget.getWidgetIcons().toArray(new IWidgetIcon[widget.getWidgetIcons().size()]);
}
if (icons!=null){
- for (WidgetIcon icon: icons){
+ for (IWidgetIcon icon: icons){
try {
// If local...
if (!icon.getSrc().startsWith("http")) {
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceFactory.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceFactory.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceFactory.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceFactory.java Wed Jun 16 14:16:36 2010
@@ -19,12 +19,12 @@ import javax.servlet.http.HttpSession;
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.beans.IPreference;
+import org.apache.wookie.beans.IPreferenceDefault;
+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.util.HashGenerator;
import org.apache.wookie.util.opensocial.OpenSocialUtils;
import org.apache.wookie.w3c.util.LocalizationUtils;
@@ -67,9 +67,10 @@ public class WidgetInstanceFactory{
* Return the "default widget" instance
* @return
*/
- public static WidgetInstance defaultInstance(String locale){
- WidgetInstance instance = new WidgetInstance();
- instance.setWidget(Widget.findDefaultByType("unsupported")); //$NON-NLS-1$
+ public static IWidgetInstance defaultInstance(String locale){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance instance = persistenceManager.newInstance(IWidgetInstance.class);
+ instance.setWidget(persistenceManager.findWidgetDefaultByType("unsupported")); //$NON-NLS-1$
instance.setIdKey("0000");
instance.setLang(locale);
instance.setOpensocialToken("");
@@ -87,17 +88,18 @@ public class WidgetInstanceFactory{
* @param localizedMessages
* @return
*/
- public WidgetInstance newInstance(String apiKey, String userId, String sharedDataKey, String serviceType, String widgetId, String lang){
+ public IWidgetInstance newInstance(String apiKey, String userId, String sharedDataKey, String serviceType, String widgetId, String lang){
try {
- Widget widget;
- WidgetInstance widgetInstance;
+ IWidget widget;
+ IWidgetInstance widgetInstance;
// Widget ID or Widget Type?
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
if (widgetId != null){
- widget = Widget.findByGuid(widgetId);
+ widget = persistenceManager.findWidgetByGuid(widgetId);
}
else {
// does this type of widget exist?
- widget = Widget.findDefaultByType(serviceType);
+ widget = persistenceManager.findWidgetDefaultByType(serviceType);
}
// Unsupported
if (widget == null) return null;
@@ -118,7 +120,7 @@ public class WidgetInstanceFactory{
Configuration properties = (Configuration) session.getServletContext().getAttribute("opensocial"); //$NON-NLS-1$
- widgetInstance = addNewWidgetInstance(apiKey, userId, sharedDataKey, widget, nonce, hashKey, properties, lang);
+ widgetInstance = addNewWidgetInstance(persistenceManager, apiKey, userId, sharedDataKey, widget, nonce, hashKey, properties, lang);
return widgetInstance;
} catch (Exception ex) {
return null;
@@ -127,6 +129,7 @@ public class WidgetInstanceFactory{
/**
* Create a new widget instance object, populate its default values, and save it.
+ * @param persistenceManager
* @param api_key
* @param userId
* @param sharedDataKey
@@ -136,8 +139,8 @@ public class WidgetInstanceFactory{
* @param properties
* @return
*/
- private WidgetInstance addNewWidgetInstance(String api_key, String userId, String sharedDataKey, Widget widget, String nonce, String idKey, Configuration properties, String lang) {
- WidgetInstance widgetInstance = new WidgetInstance();
+ private IWidgetInstance addNewWidgetInstance(IPersistenceManager persistenceManager, String api_key, String userId, String sharedDataKey, IWidget widget, String nonce, String idKey, Configuration properties, String lang) {
+ IWidgetInstance widgetInstance = persistenceManager.newInstance(IWidgetInstance.class);
widgetInstance.setUserId(userId);
widgetInstance.setSharedDataKey(sharedDataKey);
widgetInstance.setIdKey(idKey);
@@ -166,46 +169,43 @@ public class WidgetInstanceFactory{
}
}
- // Save
- widgetInstance.save();
-
// add in the sharedDataKey as a preference so that a widget can know
// what sharedData event to listen to later
- setPreference(widgetInstance, "sharedDataKey", sharedDataKey, true);//$NON-NLS-1$
+ setPreference(persistenceManager, widgetInstance, "sharedDataKey", sharedDataKey, true);//$NON-NLS-1$
// add in widget defaults
- PreferenceDefault[] prefs = PreferenceDefault.findByValue("widget", widget);
- if (prefs == null) return null;
- for (PreferenceDefault pref: prefs){
- setPreference(widgetInstance, pref.getPreference(), pref.getValue(),pref.isReadOnly());
+ for (IPreferenceDefault pref: widget.getPreferenceDefaults()){
+ setPreference(persistenceManager, widgetInstance, pref.getPreference(), pref.getValue(),pref.isReadOnly());
}
+
+ // Save
+ persistenceManager.save(widgetInstance);
+
return widgetInstance;
}
/**
* Initialize a preference for the instance
+ * @param persistenceManager
* @param instance
* @param key
* @param value
*/
- private void setPreference(WidgetInstance widgetInstance, String key, String value, boolean readOnly){
- Preference pref = new Preference();
- pref.setWidgetInstance(widgetInstance);
+ private void setPreference(IPersistenceManager persistenceManager, IWidgetInstance widgetInstance, String key, String value, boolean readOnly){
+ IPreference pref = persistenceManager.newInstance(IPreference.class);
pref.setDkey(key);
pref.setDvalue(value);
pref.setReadOnly(readOnly);
- pref.save();
+ widgetInstance.getPreferences().add(pref);
}
/**
* 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();
+ public static void destroy(IWidgetInstance instance){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ persistenceManager.delete(instance);
}
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceHelper.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceHelper.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetInstanceHelper.java Wed Jun 16 14:16:36 2010
@@ -13,8 +13,8 @@
*/
package org.apache.wookie.helpers;
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetInstance;
import org.apache.wookie.w3c.IW3CXMLConfiguration;
/**
@@ -33,9 +33,9 @@ public class WidgetInstanceHelper {
* @param urlWidgetProxyServer the local URL of the proxy service
* @return
*/
- public static String createXMLWidgetInstanceDocument(WidgetInstance instance, String url){
+ public static String createXMLWidgetInstanceDocument(IWidgetInstance instance, String url){
String xml = XMLDECLARATION;
- Widget widget = instance.getWidget();
+ IWidget widget = instance.getWidget();
// Return a default width and height where the original value is either not provided
// or of an invalid range (<0)
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetKeyManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetKeyManager.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetKeyManager.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetKeyManager.java Wed Jun 16 14:16:36 2010
@@ -23,7 +23,9 @@ import org.apache.commons.mail.SimpleEma
import org.apache.log4j.Logger;
import org.apache.wookie.Messages;
-import org.apache.wookie.beans.ApiKey;
+import org.apache.wookie.beans.IApiKey;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.exceptions.SystemUnavailableException;
import org.apache.wookie.util.HashGenerator;
import org.apache.wookie.w3c.util.RandomGUID;
@@ -43,18 +45,19 @@ public class WidgetKeyManager{
if (value == null) return false;
if (value.trim().equals("")) return false;
value = value.trim();
- ApiKey[] key = ApiKey.findByValue("value", value);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IApiKey[] key = persistenceManager.findByValue(IApiKey.class, "value", value);
if (key == null || key.length !=1) return false;
- return revokeKey(key[0]);
+ return revokeKey(persistenceManager, key[0]);
}
/**
* Revoke a key
* @param key the key to revoke
*/
- private static boolean revokeKey(ApiKey key){
+ private static boolean revokeKey(IPersistenceManager persistenceManager, IApiKey key){
if (key == null) return false;
- key.delete();
+ persistenceManager.delete(key);
return true;
}
@@ -67,8 +70,9 @@ public class WidgetKeyManager{
* @throws SystemUnavailableException if there is a problem generating the key
*/
public static void createKey(HttpServletRequest request, String email, Messages localizedMessages) throws SystemUnavailableException, EmailException {
-
- ApiKey key = new ApiKey();
+
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IApiKey key = persistenceManager.newInstance(IApiKey.class);
key.setEmail(email);
// generate a nonce
@@ -85,7 +89,7 @@ public class WidgetKeyManager{
hashKey = hashKey.replaceAll("\\+", ".pl."); //$NON-NLS-1$ //$NON-NLS-2$
key.setValue(hashKey);
- key.save();
+ persistenceManager.save(key);
String message = localizedMessages.getString("WidgetKeyManager.0")+hashKey+" \n"; //$NON-NLS-1$//$NON-NLS-2$
message+="\n" + localizedMessages.getString("WidgetKeyManager.1"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -112,7 +116,8 @@ public class WidgetKeyManager{
// Empty key/empty origin
if (key.trim().equals("")) return false; //$NON-NLS-1$
- ApiKey[] apiKey = ApiKey.findByValue("value", key);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IApiKey[] apiKey = persistenceManager.findByValue(IApiKey.class, "value", key);
if (apiKey == null || apiKey.length !=1) {
_logger.info("Invalid API key supplied: " + key);
return false;
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetServiceHelper.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetServiceHelper.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetServiceHelper.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/helpers/WidgetServiceHelper.java Wed Jun 16 14:16:36 2010
@@ -13,8 +13,10 @@
*/
package org.apache.wookie.helpers;
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetService;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetService;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
public class WidgetServiceHelper {
@@ -26,7 +28,7 @@ public class WidgetServiceHelper {
* @param localIconPath
* @return
*/
- public static String createXMLWidgetServiceDocument(WidgetService service, String localIconPath, String[] locales){
+ public static String createXMLWidgetServiceDocument(IWidgetService service, String localIconPath, String[] locales){
return XMLDECLARATION + WidgetServiceHelper.toXml(service, localIconPath, locales);
}
@@ -36,10 +38,10 @@ public class WidgetServiceHelper {
* @param localIconPath
* @return
*/
- public static String createXMLWidgetServicesDocument(WidgetService[] services, String localIconPath, boolean defaults, String[] locales){
+ public static String createXMLWidgetServicesDocument(IWidgetService[] services, String localIconPath, boolean defaults, String[] locales){
String out = XMLDECLARATION;
out+="<services>\n";
- for (WidgetService service: services){
+ for (IWidgetService service: services){
out += WidgetServiceHelper.toXml(service,localIconPath,defaults, locales);
}
out+="</services>\n";
@@ -52,7 +54,7 @@ public class WidgetServiceHelper {
* @param localIconPath
* @return
*/
- private static String toXml(WidgetService service, String localIconPath, String[] locales){
+ private static String toXml(IWidgetService service, String localIconPath, String[] locales){
return toXml(service, localIconPath,false, locales);
}
@@ -62,15 +64,16 @@ public class WidgetServiceHelper {
* @param localIconPath
* @return
*/
- private static String toXml(WidgetService service, String localIconPath, boolean defaults, String[] locales){
+ private static String toXml(IWidgetService service, String localIconPath, boolean defaults, String[] locales){
String out = "\n<service name=\""+service.getServiceName()+"\">\n";
- Widget[] widgets;
+ IWidget[] widgets;
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
if (defaults){
- widgets = new Widget[]{Widget.findDefaultByType(service.getServiceName())};
+ widgets = new IWidget[]{persistenceManager.findWidgetDefaultByType(service.getServiceName())};
} else {
- widgets = Widget.findByType(service.getServiceName());
+ widgets = persistenceManager.findWidgetsByType(service.getServiceName());
}
- for (Widget widget:widgets) out += WidgetHelper.toXml(widget, localIconPath, locales);
+ for (IWidget widget:widgets) out += WidgetHelper.toXml(widget, localIconPath, locales);
out +="</service>\n";
return out;
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/IWidgetAdminManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/IWidgetAdminManager.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/IWidgetAdminManager.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/IWidgetAdminManager.java Wed Jun 16 14:16:36 2010
@@ -28,14 +28,14 @@ public interface IWidgetAdminManager {
* @param widgetId
* @param widgetType
*/
- boolean removeSingleWidgetType(int widgetId, String widgetType);
+ boolean removeSingleWidgetType(String widgetId, String widgetType);
/**
* 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
*/
- void setDefaultWidget(int key, String widgetType);
+ void setDefaultWidget(String key, String widgetType);
/**
* FRom a given widget db key, allow to add multiple types
@@ -43,7 +43,7 @@ public interface IWidgetAdminManager {
* @param widgetTypes
* @param maximize
*/
- void setWidgetTypesForWidget(int dbKey,
+ void setWidgetTypesForWidget(String dbKey,
String[] widgetTypes, boolean maximize);
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/impl/WidgetAdminManager.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/impl/WidgetAdminManager.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/manager/impl/WidgetAdminManager.java Wed Jun 16 14:16:36 2010
@@ -15,14 +15,16 @@
package org.apache.wookie.manager.impl;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
import org.apache.log4j.Logger;
import org.apache.wookie.Messages;
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetDefault;
-import org.apache.wookie.beans.WidgetType;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.IWidgetDefault;
+import org.apache.wookie.beans.IWidgetType;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.manager.IWidgetAdminManager;
/**
@@ -43,93 +45,106 @@ public class WidgetAdminManager implemen
this.localizedMessages = localizedMessages;
}
- private void deleteWidgetDefaultByIdAndServiceType(int widgetKey, String serviceType){
+ private void deleteWidgetDefaultByIdAndServiceType(Object widgetKey, String serviceType){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = persistenceManager.findById(IWidget.class, widgetKey);
Map<String, Object> map = new HashMap<String, Object>();
- map.put("widgetId", widgetKey);
+ map.put("widget", widget);
map.put("widgetContext", serviceType);
- WidgetDefault[] widgetDefaults;
- widgetDefaults = WidgetDefault.findByValues(map);
- WidgetDefault.delete(widgetDefaults);
+ IWidgetDefault[] widgetDefaults = persistenceManager.findByValues(IWidgetDefault.class, map);
+ persistenceManager.delete(widgetDefaults);
}
- 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);
- map.put("widgetContext", serviceType);
- WidgetType[] types = WidgetType.findByValues(map);
- if (types == null || types.length !=1) return false;
- return true;
+ private boolean doesServiceExistForWidget(Object dbkey, String serviceType){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = persistenceManager.findById(IWidget.class, dbkey);
+ Iterator<IWidgetType> typesIter = widget.getWidgetTypes().iterator();
+ while (typesIter.hasNext())
+ {
+ IWidgetType type = typesIter.next();
+ if (type.getWidgetContext().equalsIgnoreCase(serviceType))
+ {
+ return true;
+ }
+ }
+ return false;
}
/* (non-Javadoc)
- * @see org.apache.wookie.manager.IWidgetAdminManager#removeSingleWidgetType(int, java.lang.String)
+ * @see org.apache.wookie.manager.IWidgetAdminManager#removeSingleWidgetType(java.lang.String, java.lang.String)
*/
- public boolean removeSingleWidgetType(int widgetId, String widgetType) {
+ public boolean removeSingleWidgetType(String widgetId, String widgetType) {
boolean response = false;
- Widget widget = Widget.findById(Integer.valueOf(widgetId));
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = persistenceManager.findById(IWidget.class, widgetId);
// 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){
- if(widgetType.equalsIgnoreCase(widgetTypes[j].getWidgetContext())){
- // BUG FIX
- // Using only the deleteObject method meant that
- // the set still contained this widgetType.
- // So we also remove it from the list
- types.remove(widgetTypes[j]);
- widgetTypes[j].delete();
- response = true;
- }
- }
+ Iterator<IWidgetType> typesIter = widget.getWidgetTypes().iterator();
+ while (typesIter.hasNext())
+ {
+ IWidgetType type = typesIter.next();
+ if (type.getWidgetContext().equalsIgnoreCase(widgetType))
+ {
+ typesIter.remove();
+ response = true;
+ }
+ }
+ if (response)
+ {
+ persistenceManager.save(widget);
+ }
// if it exists as a service default, then remove it
deleteWidgetDefaultByIdAndServiceType(widgetId, widgetType);
return response;
}
/* (non-Javadoc)
- * @see org.apache.wookie.manager.IWidgetAdminManager#setDefaultWidget(int, java.lang.String)
+ * @see org.apache.wookie.manager.IWidgetAdminManager#setDefaultWidget(java.lang.String, java.lang.String)
*/
- public void setDefaultWidget(int key, String widgetType){
+ public void setDefaultWidget(String key, String widgetType){
boolean found=false;
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = persistenceManager.findById(IWidget.class, key);
// does it already exist in the widgetdefault table?
- WidgetDefault[] currentDefaults = WidgetDefault.findAll();
+ IWidgetDefault [] currentDefaults = persistenceManager.findAll(IWidgetDefault.class);
for(int i=0;i<currentDefaults.length;i++){
if(currentDefaults[i].getWidgetContext().equalsIgnoreCase(widgetType)){
// found it so update to new widget id
- currentDefaults[i].setWidgetId(key);
- currentDefaults[i].save();
+ currentDefaults[i].setWidget(widget);
+ persistenceManager.save(currentDefaults[i]);
found=true;
}
}
// didnt find it already set, so add new one
if(!found){
- WidgetDefault wd = new WidgetDefault();
+ IWidgetDefault wd = persistenceManager.newInstance(IWidgetDefault.class);
wd.setWidgetContext(widgetType);
- wd.setWidgetId(key);
- wd.save();
+ wd.setWidget(widget);
+ persistenceManager.save(wd);
}
}
/* (non-Javadoc)
- * @see org.apache.wookie.manager.IWidgetAdminManager#setWidgetTypesForWidget(int, java.lang.String[], boolean)
+ * @see org.apache.wookie.manager.IWidgetAdminManager#setWidgetTypesForWidget(java.lang.String, java.lang.String[], boolean)
*/
- @SuppressWarnings("unchecked")
- public void setWidgetTypesForWidget(int dbKey, String[] widgetTypes, boolean maximize){
- Widget widget = Widget.findById(dbKey);
+ public void setWidgetTypesForWidget(String dbKey, String[] widgetTypes, boolean maximize){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidget widget = persistenceManager.findById(IWidget.class, dbKey);
- WidgetType widgetType;
+ boolean widgetTypesSet = false;
if (widgetTypes!=null){
for(int i=0;i<widgetTypes.length;i++){
if(!doesServiceExistForWidget(widget.getId(), widgetTypes[i])){
- widgetType = new WidgetType();
+ IWidgetType widgetType = persistenceManager.newInstance(IWidgetType.class);
widgetType.setWidgetContext(widgetTypes[i]);
- widgetType.setWidget(widget);
widget.getWidgetTypes().add(widgetType);
- widgetType.save();
+ widgetTypesSet = true;
}
}
- }
+ }
+ if (widgetTypesSet)
+ {
+ persistenceManager.save(widget);
+ }
}
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/proxy/ProxyServlet.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/proxy/ProxyServlet.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/proxy/ProxyServlet.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/proxy/ProxyServlet.java Wed Jun 16 14:16:36 2010
@@ -31,10 +31,12 @@ import javax.servlet.http.HttpServletRes
import org.apache.commons.configuration.Configuration;
import org.apache.commons.httpclient.auth.AuthenticationException;
import org.apache.log4j.Logger;
-import org.apache.wookie.beans.AccessRequest;
-import org.apache.wookie.beans.Whitelist;
-import org.apache.wookie.beans.Widget;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IAccessRequest;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.IWhitelist;
+import org.apache.wookie.beans.IWidget;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
/**
* A web proxy servlet which will translate calls for content and return them as if they came from
@@ -73,7 +75,8 @@ public class ProxyServlet extends HttpSe
}
// Check that the request is coming from a valid widget
- WidgetInstance instance = WidgetInstance.findByIdKey(request.getParameter("instanceid_key"));
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance instance = persistenceManager.findWidgetInstanceByIdKey(request.getParameter("instanceid_key"));
if(instance == null && !isDefaultGadget(request)){
response.sendError(HttpServletResponse.SC_FORBIDDEN,"<error>"+UNAUTHORISED_MESSAGE+"</error>");
return;
@@ -166,9 +169,10 @@ public class ProxyServlet extends HttpSe
* @param aUrl
* @return
*/
- public boolean isAllowed(URI requestedUri, WidgetInstance instance){
+ public boolean isAllowed(URI requestedUri, IWidgetInstance instance){
// Check global whitelist
- for (Whitelist whiteList : Whitelist.findAll()){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ for (IWhitelist whiteList : persistenceManager.findAll(IWhitelist.class)){
// TODO - make this better then just comparing the beginning...
if(requestedUri.toString().toLowerCase().startsWith(whiteList.getfUrl().toLowerCase()))
return true;
@@ -186,8 +190,9 @@ public class ProxyServlet extends HttpSe
* @param widget the Widget requesting access to the URI
* @return true if a policy grants access to the requested URI
*/
- private boolean isAllowedByPolicy(URI requestedUri, Widget widget){
- for (AccessRequest policy: AccessRequest.findAllApplicable(widget))
+ private boolean isAllowedByPolicy(URI requestedUri, IWidget widget){
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ for (IAccessRequest policy: persistenceManager.findApplicableAccessRequests(widget))
if (policy.isAllowed(requestedUri)) return true;
fLogger.warn("No policy grants widget "+widget.getWidgetTitle("en")+" access to: "+requestedUri.toString());
return false;
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/ContextListener.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/ContextListener.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/ContextListener.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/ContextListener.java Wed Jun 16 14:16:36 2010
@@ -14,35 +14,33 @@
package org.apache.wookie.server;
-
import java.io.File;
import java.io.IOException;
+import java.util.Iterator;
import java.util.Locale;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.Logger;
import org.apache.wookie.Messages;
-import org.apache.wookie.beans.ServerFeature;
-import org.apache.wookie.beans.Widget;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.feature.FeatureLoader;
import org.apache.wookie.helpers.FlashMessage;
import org.apache.wookie.helpers.WidgetFactory;
import org.apache.wookie.util.WgtWatcher;
import org.apache.wookie.util.WidgetFileUtils;
-import org.apache.wookie.util.hibernate.DBManagerFactory;
-import org.apache.wookie.util.hibernate.HibernateUtil;
-import org.apache.wookie.util.hibernate.IDBManager;
import org.apache.wookie.util.html.StartPageProcessor;
import org.apache.wookie.w3c.W3CWidget;
import org.apache.wookie.w3c.W3CWidgetFactory;
import org.apache.wookie.w3c.exceptions.BadManifestException;
import org.apache.wookie.w3c.exceptions.BadWidgetZipFileException;
import org.apache.wookie.w3c.util.WidgetPackageUtils;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
/**
* ContextListener - does some init work and makes certain things are available
@@ -62,11 +60,10 @@ public class ContextListener implements
*/
static Logger _logger = Logger.getLogger(ContextListener.class.getName());
- public void contextInitialized(ServletContextEvent event) {
- // start hibernate now, not on first request
- HibernateUtil.getSessionFactory();
+ public void contextInitialized(ServletContextEvent event) {
try {
ServletContext context = event.getServletContext();
+
/*
* load the widgetserver.properties file and put it into this context
* as an attribute 'properties' available to all resources
@@ -83,6 +80,30 @@ public class ContextListener implements
_logger.info("Using default widget server properties, configure your local server using: " + localPropsFile.toString());
}
context.setAttribute("properties", (Configuration) configuration);
+
+ /*
+ * 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
*/
@@ -161,24 +182,24 @@ public class ContextListener implements
final String contextPath = context.getContextPath();
Thread thr = new Thread(){
public void run() {
- /** Get a DBManager for this thread. */
- final IDBManager dbManager = DBManagerFactory.getDBManager();
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{
- dbManager.beginTransaction();
+ persistenceManager.begin();
File upload = WidgetFileUtils.dealWithDroppedFile(UPLOADFOLDER, f);
W3CWidgetFactory fac = new W3CWidgetFactory();
fac.setLocales(locales);
fac.setLocalPath(contextPath+localWidgetFolderPath);
fac.setOutputDirectory(WIDGETFOLDER);
- fac.setFeatures(ServerFeature.getFeatureNames());
+ fac.setFeatures(persistenceManager.findServerFeatureNames());
fac.setStartPageProcessor(new StartPageProcessor());
W3CWidget model = fac.parse(upload);
- if(!Widget.exists(model.getIdentifier())) {
+ if(persistenceManager.findWidgetByGuid(model.getIdentifier()) == null) {
WidgetFactory.addNewWidget(model, true);
String message = model.getLocalName("en") +"' - " + localizedMessages.getString("WidgetAdminServlet.19");
_logger.info(message);
@@ -188,23 +209,30 @@ public class ContextListener implements
_logger.info(message);
FlashMessage.getInstance().message(message);
}
- dbManager.commitTransaction();
+ persistenceManager.commit();
} catch (IOException e) {
+ persistenceManager.rollback();
String error = f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.1");
FlashMessage.getInstance().error(error);
_logger.error(error);
} catch (BadWidgetZipFileException e) {
+ persistenceManager.rollback();
String error = f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.2");
FlashMessage.getInstance().error(error);
_logger.error(error);
} catch (BadManifestException e) {
+ persistenceManager.rollback();
String error = f.getName()+":"+localizedMessages.getString("WidgetHotDeploy.3");
FlashMessage.getInstance().error(error);
_logger.error(error);
} catch (Exception e) {
+ persistenceManager.rollback();
String error = f.getName()+":"+e.getLocalizedMessage();
FlashMessage.getInstance().error(error);
_logger.error(error);
+ } finally {
+ // close thread persistence manager
+ PersistenceManagerFactory.closePersistenceManager();
}
}
public void fileRemoved(File f) {
@@ -217,7 +245,6 @@ public class ContextListener implements
Thread.sleep(interval);
}
} catch (InterruptedException iex) {
- dbManager.closeSession();
}
}
};
@@ -227,6 +254,9 @@ public class ContextListener implements
}
public void contextDestroyed(ServletContextEvent event){
- HibernateUtil.getSessionFactory().close(); // Free all resources
+ /*
+ * Terminate persistence manager factory
+ */
+ PersistenceManagerFactory.terminate();
}
}
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/LocalizedResourceFilter.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/LocalizedResourceFilter.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/LocalizedResourceFilter.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/LocalizedResourceFilter.java Wed Jun 16 14:16:36 2010
@@ -29,7 +29,9 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.configuration.Configuration;
-import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.beans.IWidgetInstance;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
import org.apache.wookie.w3c.util.LocalizationUtils;
import org.apache.wookie.w3c.util.WidgetPackageUtils;
@@ -71,7 +73,8 @@ public class LocalizedResourceFilter imp
// Find the instance key in the current session
String key = (String)filterConfig.getServletContext().getAttribute("id_key");
if (key != null){
- WidgetInstance instance = WidgetInstance.findByIdKey(key);
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ IWidgetInstance instance = persistenceManager.findWidgetInstanceByIdKey(key);
if (instance != null){
// Only if we have a valid instance and a resource which has no localization
// parameter do we start the locale algorithm
@@ -121,7 +124,7 @@ public class LocalizedResourceFilter imp
* @param instance
* @return the localized path for the resource; if none is found, the original path is returned
*/
- private String getLocalizedResource(String originalPath, WidgetInstance instance){
+ private String getLocalizedResource(String originalPath, IWidgetInstance instance){
// Remove the context URI from the path, or this will mess up
// the algorithm for locating the file using its real path
String context = filterConfig.getServletContext().getContextPath();
@@ -177,7 +180,7 @@ public class LocalizedResourceFilter imp
* @param instance
* @return
*/
- private String getWidgetInstanceBasePath(WidgetInstance instance){
+ private String getWidgetInstanceBasePath(IWidgetInstance instance){
String guid = instance.getWidget().getGuid();
Configuration config = (Configuration) filterConfig.getServletContext().getAttribute("properties");
final String localWidgetFolderPath = filterConfig.getServletContext().getContextPath()+config.getString("widget.widgetfolder");
Modified: incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/MainFilter.java
URL: http://svn.apache.org/viewvc/incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/MainFilter.java?rev=955236&r1=955235&r2=955236&view=diff
==============================================================================
--- incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/MainFilter.java (original)
+++ incubator/wookie/branches/pluggablepersistence/src/org/apache/wookie/server/MainFilter.java Wed Jun 16 14:16:36 2010
@@ -23,8 +23,8 @@ import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
-import org.apache.wookie.util.hibernate.DBManagerFactory;
-import org.apache.wookie.util.hibernate.IDBManager;
+import org.apache.wookie.beans.util.IPersistenceManager;
+import org.apache.wookie.beans.util.PersistenceManagerFactory;
/**
* Filter to set DB transactions
@@ -36,13 +36,21 @@ public class MainFilter implements Filte
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
throws IOException, ServletException {
- /** Get a DBManager for this thread. */
- final IDBManager dbManager = DBManagerFactory.getDBManager();
- dbManager.beginTransaction();
- chain.doFilter(request, response);
- dbManager.commitTransaction();
- // Close the session [This method checks if the session is open]
- dbManager.closeSession();
+ // get persistence manager for this thread
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ try {
+ // start and commit transaction around servlet invocation
+ persistenceManager.begin();
+ chain.doFilter(request, response);
+ persistenceManager.commit();
+ } catch (Throwable t) {
+ // rollback transaction on exception
+ persistenceManager.rollback();
+ throw new RuntimeException();
+ } finally {
+ // close thread persistence manager
+ PersistenceManagerFactory.closePersistenceManager();
+ }
}
public void init(FilterConfig arg0) throws ServletException {