minor optimization BLD200310130100
authormmatula@netbeans.org
Fri, 10 Oct 2003 13:17:48 +0000
changeset 1361fa2c4c95ac9f
parent 1360 0ca9095ae2b2
child 1362 3d168ec5a6d3
minor optimization
mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java
mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java
     1.1 --- a/mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java	Thu Oct 09 20:18:25 2003 +0000
     1.2 +++ b/mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java	Fri Oct 10 13:17:48 2003 +0000
     1.3 @@ -18,6 +18,7 @@
     1.4  
     1.5  import javax.jmi.model.Namespace;
     1.6  import javax.jmi.reflect.*;
     1.7 +import javax.jmi.reflect.RefObject;
     1.8  
     1.9  import org.netbeans.mdr.storagemodel.*;
    1.10  import org.netbeans.mdr.persistence.MOFID;
    1.11 @@ -297,7 +298,7 @@
    1.12      // The storable hard reference is used only by transient objects
    1.13      // to prevent garbage collection.
    1.14      // For non transient objects it is null during the whole life cycle.
    1.15 -    private StorableBaseObject storable;
    1.16 +    private final StorableBaseObject storable;
    1.17      
    1.18      /* --------------------------------------------------------------------- */
    1.19      /* -- Constructor(s) --------------------------------------------------- */
    1.20 @@ -308,20 +309,20 @@
    1.21          this.mofId = storable.getMofId();
    1.22          //this.storableDelegate = storable;
    1.23          this.mdrStorage = storable.getMdrStorage();
    1.24 +        StorableBaseObject tempStorable;
    1.25          try {
    1.26              if (storable instanceof StorableObject && 
    1.27                  (((StorableObject)storable).getClassProxy ().isTransient ()) || 
    1.28                  (storable.getClass().getName().equals("org.netbeans.modules.classmodel.jmiimpl.physical.DeferredObject")) // [PENDING]
    1.29                  ) {
    1.30 -                this.storable = storable;
    1.31 -            }
    1.32 -            
    1.33 -            else {
    1.34 -                this.storable = null;
    1.35 +                tempStorable = storable;
    1.36 +            } else {
    1.37 +                tempStorable = null;
    1.38              }
    1.39          } catch (org.netbeans.mdr.persistence.StorageException se) {
    1.40 -            this.storable = null;
    1.41 +            tempStorable = null;
    1.42          }
    1.43 +        this.storable = tempStorable;
    1.44      }
    1.45      
    1.46      /* --------------------------------------------------------------------- */
    1.47 @@ -507,8 +508,8 @@
    1.48  
    1.49                  mofId = handler._getDelegate().getMofId();
    1.50                  
    1.51 -                if (handler.refImmediatePackage() instanceof javax.jmi.model.ModelPackage) {
    1.52 -                    // the object is from a metamodel => we will keep "hard" reference
    1.53 +                if (handler.refImmediatePackage() instanceof javax.jmi.model.ModelPackage || !(handler instanceof RefObject)) {
    1.54 +                    // the object is from a metamodel or it is a proxy => we will keep "hard" reference
    1.55                      baseObject = (RefBaseObject) handler;
    1.56                  } else {
    1.57                      // the object is not a metamodel object => we will not keep "hard" reference on it
     2.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java	Thu Oct 09 20:18:25 2003 +0000
     2.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java	Fri Oct 10 13:17:48 2003 +0000
     2.3 @@ -33,6 +33,9 @@
     2.4      /** MOFID of this object's outermost package */
     2.5      private transient org.netbeans.mdr.persistence.MOFID outermostPackage = null; // value inited lazy on @link #getOutermostPackage method first call
     2.6      
     2.7 +    private transient StorablePackage immediatePackageObj = null;
     2.8 +    private transient StorablePackage outermostPackageObj = null;
     2.9 +    
    2.10      /** Storage reference */
    2.11      private transient Storage storage;
    2.12      
    2.13 @@ -101,7 +104,10 @@
    2.14       * @return immediate package
    2.15       */    
    2.16      public StorablePackage getImmediatePackage() throws StorageException {
    2.17 -        return (StorablePackage) getMdrStorage().getObject(immediatePackage);
    2.18 +        if (immediatePackageObj == null) {
    2.19 +            immediatePackageObj = (StorablePackage) getMdrStorage().getObject(immediatePackage);
    2.20 +        }
    2.21 +        return immediatePackageObj;
    2.22      }
    2.23      
    2.24      /** Returns MOFID of immediate package of this object.
    2.25 @@ -149,7 +155,10 @@
    2.26       * @return outermost package
    2.27       */    
    2.28      public StorablePackage getOutermostPackage() throws StorageException {        
    2.29 -        return (StorablePackage) getMdrStorage().getObject(getOutermostPackageId());
    2.30 +        if (outermostPackageObj == null) {
    2.31 +            outermostPackageObj = (StorablePackage) getMdrStorage().getObject(getOutermostPackageId());
    2.32 +        }
    2.33 +        return outermostPackageObj;
    2.34      }
    2.35  
    2.36      /** Returns MOFID of this object.