shuber 2004/08/05 15:26:43 CEST
Modified files: (Branch: JAHIA-4-0-BRANCH)
src/java/org/jahia/services/acl JahiaAbstractACL.java
src/java/org/jahia/services/version EntryLoadRequest.java
Log:
- Improved unserialization of JahiaAbstractACL service so that it may be
unserialized even when services are not yet initialized (which happens when Tomcat
starts up and unserializes session objects).
- Made EntryLoadRequest object serializable for better session serialization support.
Revision Changes Path
1.10.4.3 +28 -14 jahia/src/java/org/jahia/services/acl/JahiaAbstractACL.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/acl/JahiaAbstractACL.java.diff?r1=1.10.4.2&r2=1.10.4.3&f=h
1.18.4.2 +2 -1 jahia/src/java/org/jahia/services/version/EntryLoadRequest.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/version/EntryLoadRequest.java.diff?r1=1.18.4.1&r2=1.18.4.2&f=h
Index: JahiaAbstractACL.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/services/acl/Attic/JahiaAbstractACL.java,v
retrieving revision 1.10.4.2
retrieving revision 1.10.4.3
diff -u -r1.10.4.2 -r1.10.4.3
--- JahiaAbstractACL.java 30 Jul 2004 17:19:51 -0000 1.10.4.2
+++ JahiaAbstractACL.java 5 Aug 2004 13:26:43 -0000 1.10.4.3
@@ -142,11 +142,11 @@
// get the parent ACL reference if found
JahiaACL parent = null;
if (parentID > 0) {
- parent = mACLService.lookupACL (parentID);
+ parent = getService().lookupACL (parentID);
}
// Create the new ACL object.
- mACL = mACLService.createACL (parent);
+ mACL = getService().createACL (parent);
return (mACL != null);
}
@@ -170,7 +170,7 @@
boolean result = false;
synchronized (mACL) {
- if (mACLService.deleteACL (mACL)) {
+ if (getService().deleteACL (mACL)) {
mACL = null;
result = true;
}
@@ -191,7 +191,7 @@
public synchronized void load (int aclID)
throws ACLNotFoundException,
JahiaDatabaseException {
- mACL = mACLService.lookupACL (aclID);
+ mACL = getService().lookupACL (aclID);
}
@@ -268,7 +268,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.setInheritance (inheritance);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -310,7 +310,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.setUserEntry (user, entry);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -332,7 +332,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.removeUserEntry (user);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -353,7 +353,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.clearEntries (JahiaACL.USER_TYPE_ENTRY);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -419,7 +419,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.setGroupEntry (group, entry);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -441,7 +441,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.removeGroupEntry (group);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -462,7 +462,7 @@
testProxy ();
synchronized (mACL) {
boolean result = mACL.clearEntries (JahiaACL.GROUP_TYPE_ENTRY);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
return result;
}
}
@@ -643,9 +643,9 @@
public void setParentID (int parentID)
throws ACLNotFoundException,
JahiaDatabaseException {
- JahiaACL parentACL = mACLService.lookupACL (parentID);
+ JahiaACL parentACL = getService().lookupACL (parentID);
mACL.setParentACL (parentACL);
- mACLService.updateCache(mACL);
+ getService().updateCache(mACL);
}
//-------------------------------------------------------------------------
@@ -677,6 +677,20 @@
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException {
mACL = (JahiaACL) in.readObject();
- mACLService = JahiaACLManagerService.getInstance ();
+ mACLService = null;
+ }
+
+ /**
+ * Used to reconnect to ACL service, notably after an object is
+ * unserialized. We can't reconnect while unserializing because the
+ * services might not yet have been initialized yet (as in the case when
+ * restoring objects from serialized session).
+ * @return JahiaACLManagerService
+ */
+ private JahiaACLManagerService getService() {
+ if (mACLService == null) {
+ mACLService =
ServicesRegistry.getInstance().getJahiaACLManagerService();
+ }
+ return mACLService;
}
}
Index: EntryLoadRequest.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/services/version/Attic/EntryLoadRequest.java,v
retrieving revision 1.18.4.1
retrieving revision 1.18.4.2
diff -u -r1.18.4.1 -r1.18.4.2
--- EntryLoadRequest.java 21 Jul 2004 11:38:49 -0000 1.18.4.1
+++ EntryLoadRequest.java 5 Aug 2004 13:26:43 -0000 1.18.4.2
@@ -21,12 +21,13 @@
import org.jahia.services.fields.ContentField;
import org.jahia.utils.LanguageCodeConverters;
+import java.io.Serializable;
/**
* Class describing which entry of a field/container/containerlist to
* load
*/
-public class EntryLoadRequest implements Cloneable{
+public class EntryLoadRequest implements Cloneable, Serializable {
private static org.apache.log4j.Logger logger =
org.apache.log4j.Logger.getLogger(EntryLoadRequest.class);