Usages of string representation of mof id replaced by object representation of mof id, hard-referencing of string representation of mof id replaced by weak-referencing release40_beta2-BLD200409220200
authormmatula@netbeans.org
Wed, 01 Sep 2004 16:05:51 +0000
changeset 1575d8fa67238b07
parent 1574 d1ce26d4559f
child 1576 ae31e1823ee3
Usages of string representation of mof id replaced by object representation of mof id, hard-referencing of string representation of mof id replaced by weak-referencing
mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java
mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java
mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java
mdr/src/org/netbeans/mdr/handlers/PackageProxyHandler.java
mdr/src/org/netbeans/mdr/persistence/MOFID.java
     1.1 --- a/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java	Wed Sep 01 16:04:15 2004 +0000
     1.2 +++ b/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java	Wed Sep 01 16:05:51 2004 +0000
     1.3 @@ -364,7 +364,7 @@
     1.4          return null;
     1.5      }
     1.6      
     1.7 -    public void removeHandler(String mofId) {
     1.8 +    public void removeHandler(MOFID mofId) {
     1.9          synchronized (facilityCache) {
    1.10              facilityCache.remove(mofId);
    1.11          }
    1.12 @@ -372,13 +372,13 @@
    1.13       
    1.14      public void addHandler(BaseObjectHandler handler) {
    1.15          StorableBaseObject s = handler._getDelegate();
    1.16 -        Object lock = s.getMdrStorage().getStorageByMofId(s.getMofId());
    1.17 +        MOFID mofId = s.getMofId();
    1.18 +        Object lock = s.getMdrStorage().getStorageByMofId(mofId);
    1.19          if (lock == null)
    1.20              lock = facilityCache;
    1.21  
    1.22          synchronized (lock) {
    1.23              synchronized (facilityCache) {
    1.24 -                String mofId = s.getMofId().toString();
    1.25                  facilityCache.put(mofId, handler);
    1.26              }
    1.27          }
    1.28 @@ -579,7 +579,7 @@
    1.29          classCache.clear();
    1.30      }
    1.31      
    1.32 -    public RefBaseObject getHandler(String mofId) {
    1.33 +    public RefBaseObject getHandler(MOFID mofId) {
    1.34          synchronized (facilityCache) {
    1.35              return (BaseObjectHandler) (facilityCache.get(mofId));
    1.36          }
    1.37 @@ -596,7 +596,7 @@
    1.38              return null;
    1.39          }
    1.40  
    1.41 -        RefBaseObject refBO = getHandler(s.getMofId().toString());
    1.42 +        RefBaseObject refBO = getHandler(s.getMofId());
    1.43          if (refBO == null) {
    1.44              Class ifc = BaseObjectHandler.resolveClass(s);
    1.45              refBO = getHandler(s, ifc);
    1.46 @@ -635,14 +635,13 @@
    1.47              }
    1.48              /* create handler object, if necessary */
    1.49              Constructor cons = cl.getConstructor(new Class[] {cls});
    1.50 -                      
    1.51 -            Object lock = s.getMdrStorage().getStorageByMofId(s.getMofId());
    1.52 +            MOFID mofId = s.getMofId();
    1.53 +            Object lock = s.getMdrStorage().getStorageByMofId(mofId);
    1.54              if (lock == null)
    1.55                  lock = facilityCache;
    1.56              
    1.57              synchronized (lock) {
    1.58                  synchronized (facilityCache) {
    1.59 -                    String mofId = s.getMofId().toString();
    1.60                      Object oldRecord = facilityCache.get(mofId);
    1.61                      if (oldRecord == null) {
    1.62                          oldRecord = cons.newInstance(new Object[] {s});
    1.63 @@ -788,10 +787,10 @@
    1.64                  MOFID saMofId = (MOFID) it.next();
    1.65                  StorableAssociation sa = (StorableAssociation) mdrStorage.getObject(saMofId);
    1.66                  if (!((Association) getHandler(sa.getMetaObject())).isDerived()) {
    1.67 -                    Object metaCls = ((AssociationEnd) getByMofId(sa.getEnd1Id().toString())).getType();
    1.68 +                    Object metaCls = ((AssociationEnd) getByMofId(sa.getEnd1Id())).getType();
    1.69                      StorableClass cls = (StorableClass) classProxies.get(metaCls);
    1.70                      cls.addAssociationEnd(saMofId, sa.getEnd1Name(), sa.isAggregateA());
    1.71 -                    metaCls = ((AssociationEnd) getByMofId(sa.getEnd2Id().toString())).getType();
    1.72 +                    metaCls = ((AssociationEnd) getByMofId(sa.getEnd2Id())).getType();
    1.73                      cls = (StorableClass) classProxies.get(metaCls);
    1.74                      if (cls != null) {
    1.75                          cls.addAssociationEnd(saMofId, sa.getEnd2Name(), sa.isAggregateB());
    1.76 @@ -1367,14 +1366,14 @@
    1.77          private boolean cleaningUp = false;
    1.78  
    1.79          private class HandlerReference extends WeakReference {
    1.80 -            private String mofId;
    1.81 +            private MOFID mofId;
    1.82              // hard reference on an element when it should not be garbagecollected
    1.83              private RefBaseObject baseObject;
    1.84  
    1.85              public HandlerReference(BaseObjectHandler handler) {
    1.86                  super(handler, queue);
    1.87  
    1.88 -                mofId = handler._getDelegate().getMofId().toString();
    1.89 +                mofId = handler._getMofId();
    1.90                  
    1.91                  if (handler.refImmediatePackage() instanceof javax.jmi.model.ModelPackage || !(handler instanceof RefObject)) {
    1.92                      // the object is from a metamodel or it is a proxy => we will keep "hard" reference
    1.93 @@ -1385,7 +1384,7 @@
    1.94                  }
    1.95              }
    1.96  
    1.97 -            public String getProxyMofId() {
    1.98 +            public MOFID getProxyMofId() {
    1.99                  return mofId;
   1.100              }
   1.101          }
   1.102 @@ -1397,7 +1396,7 @@
   1.103              try {
   1.104                  while ((reference = (HandlerReference) queue.poll()) != null) {
   1.105      //                Logger.getDefault().log("Removing: " + reference.getProxyMofId());
   1.106 -                    String mofId = reference.getProxyMofId();
   1.107 +                    MOFID mofId = reference.getProxyMofId();
   1.108                      java.lang.ref.Reference currentRef = (java.lang.ref.Reference) super.remove(mofId);
   1.109                      if (currentRef != null && currentRef != reference && currentRef.get() != null) {
   1.110                          super.put(mofId, currentRef);
     2.1 --- a/mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java	Wed Sep 01 16:04:15 2004 +0000
     2.2 +++ b/mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java	Wed Sep 01 16:05:51 2004 +0000
     2.3 @@ -339,7 +339,7 @@
     2.4          boolean register = false;
     2.5          MOFID newMofId = storable.getMofId();
     2.6          if (this.mofId != null && !this.mofId.equals(newMofId)) {
     2.7 -            _getRepository().removeHandler(this.mofId.toString());
     2.8 +            _getRepository().removeHandler(this.mofId);
     2.9              register = true;
    2.10          }
    2.11          this.mofId = newMofId;
     3.1 --- a/mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java	Wed Sep 01 16:04:15 2004 +0000
     3.2 +++ b/mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java	Wed Sep 01 16:05:51 2004 +0000
     3.3 @@ -308,7 +308,7 @@
     3.4          } finally {
     3.5              _unlock(fail);
     3.6          }
     3.7 -        _getRepository().removeHandler(refMofId());
     3.8 +        _getRepository().removeHandler(_getMofId());
     3.9      }
    3.10      
    3.11      protected void _delete() {
     4.1 --- a/mdr/src/org/netbeans/mdr/handlers/PackageProxyHandler.java	Wed Sep 01 16:04:15 2004 +0000
     4.2 +++ b/mdr/src/org/netbeans/mdr/handlers/PackageProxyHandler.java	Wed Sep 01 16:05:51 2004 +0000
     4.3 @@ -326,7 +326,7 @@
     4.4          } finally {
     4.5              _unlock(fail);
     4.6          }
     4.7 -        _getRepository().removeHandler(refMofId());
     4.8 +        _getRepository().removeHandler(_getMofId());
     4.9      }
    4.10  
    4.11      /* -------------------------------------------------------------------- */
     5.1 --- a/mdr/src/org/netbeans/mdr/persistence/MOFID.java	Wed Sep 01 16:04:15 2004 +0000
     5.2 +++ b/mdr/src/org/netbeans/mdr/persistence/MOFID.java	Wed Sep 01 16:05:51 2004 +0000
     5.3 @@ -13,6 +13,7 @@
     5.4  package org.netbeans.mdr.persistence;
     5.5  
     5.6  import java.io.*;
     5.7 +import java.lang.ref.WeakReference;
     5.8  import java.text.*;
     5.9  import java.util.*;
    5.10  import org.netbeans.mdr.persistence.*;
    5.11 @@ -26,7 +27,7 @@
    5.12      public static final int STRING_LENGTH = 16;
    5.13      
    5.14      private long serialNumber;
    5.15 -    private String string = null;
    5.16 +    private WeakReference string;
    5.17      private String storageId = null;
    5.18  
    5.19      
    5.20 @@ -63,6 +64,7 @@
    5.21      /** compare MOFIDs as values
    5.22      */
    5.23      public boolean equals(Object o) {
    5.24 +        if (o == this) return true;
    5.25  	if (!(o instanceof MOFID))
    5.26  	    return false;
    5.27  	if (this.serialNumber != ((MOFID)o).serialNumber)
    5.28 @@ -98,10 +100,12 @@
    5.29       * Convert to external form.
    5.30       */
    5.31      public String toString() {
    5.32 -        if (string == null) {
    5.33 -            string = makeString(storageId, serialNumber);
    5.34 +        String result = string == null ? null : (String) string.get();
    5.35 +        if (result == null) {
    5.36 +            result = makeString(storageId, serialNumber);
    5.37 +            string = new WeakReference(result);
    5.38          }
    5.39 -        return string;
    5.40 +        return result;
    5.41      }
    5.42  
    5.43      private static int[] longwords;
    5.44 @@ -133,7 +137,9 @@
    5.45      public static MOFID fromString(String mofId) {
    5.46          int pos = mofId.lastIndexOf(':');
    5.47          if (pos >= 0) try {
    5.48 -            return new MOFID(Long.parseLong(mofId.substring(pos + 1), 16), mofId.substring(0, pos));
    5.49 +            MOFID result = new MOFID(Long.parseLong(mofId.substring(pos + 1), 16), mofId.substring(0, pos));
    5.50 +            result.string = new WeakReference(mofId);
    5.51 +            return result;
    5.52          } catch (NumberFormatException e) {
    5.53          } catch (IndexOutOfBoundsException e) {
    5.54          }