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);
  

Reply via email to