fixed usage of datatypes from imported packages, fixed usage of attributes and attribute indexes in federated storages
1.1 --- a/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java Sat Jan 11 03:19:29 2003 +0000
1.2 +++ b/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java Mon Jan 13 09:56:58 2003 +0000
1.3 @@ -544,7 +544,7 @@
1.4
1.5 Set localAssocProxies = new HashSet();
1.6 Map localClassProxies = new HashMap();
1.7 - instantiatePackageContent(metaPackage, newPackage, clusteredInstances, localClassProxies, localAssocProxies);
1.8 + instantiatePackageContent(metaPackage, newPackage, clusteredInstances, localClassProxies, localAssocProxies, storageId);
1.9 resolveSuperclasses(localClassProxies);
1.10
1.11 // [PENDING] need to fix the mutex ordering and NPE and then uncomment this
1.12 @@ -664,7 +664,7 @@
1.13 * @param localClassProxies
1.14 * @param localAssocProxies
1.15 */
1.16 - private void instantiatePackageContent(MofPackage metaPackage, StorablePackage newPackage, Map clusteredInstances, Map localClassProxies, Set localAssocProxies) {
1.17 + private void instantiatePackageContent(MofPackage metaPackage, StorablePackage newPackage, Map clusteredInstances, Map localClassProxies, Set localAssocProxies, String storageId) {
1.18 Iterator superTypes = metaPackage.allSupertypes().iterator();
1.19 boolean thisTypeNotProcessed = true;
1.20 while (thisTypeNotProcessed || superTypes.hasNext()) {
1.21 @@ -729,19 +729,17 @@
1.22 } else if (element instanceof MofPackage) {
1.23 // Logger.getDefault().log("found inner package");
1.24 // Logger.getDefault().log("creating: META: " + element.refMofId() + ", IMMEDIATE: " + newPackage.refMofId() + ", CONTEXT: " + context);
1.25 - String storageId = MdrStorage.getStorageIdFromMofId(newPackage.getMofId());
1.26 StorablePackage pkg = createPackageHandler((MofPackage) element, newPackage, null, storageId, false);
1.27 - instantiatePackageContent((MofPackage) element, pkg, clusteredInstances, localClassProxies, localAssocProxies);
1.28 + instantiatePackageContent((MofPackage) element, pkg, clusteredInstances, localClassProxies, localAssocProxies, storageId);
1.29 } else if (element instanceof Import) {
1.30 Import imp = (Import) element;
1.31 -
1.32 - if (imp.isClustered()) {
1.33 - ModelElement metaElement = imp.getImportedNamespace();
1.34 - if (metaElement instanceof MofPackage) {
1.35 - MofPackage metaPkg = (MofPackage) metaElement;
1.36 + ModelElement metaElement = imp.getImportedNamespace();
1.37 + if (metaElement instanceof MofPackage) {
1.38 + MofPackage metaPkg = (MofPackage) metaElement;
1.39 + collectDTDescriptors(storageId, metaPkg, new HashSet());
1.40 + if (imp.isClustered()) {
1.41 RefPackage pkg = (RefPackage) clusteredInstances.get(((BaseObjectHandler)metaPkg)._getDelegate().getMofId());
1.42 if (pkg == null) {
1.43 - String storageId = MdrStorage.getStorageIdFromMofId(newPackage.getMofId());
1.44 pkg = instantiatePackage(null, newPackage, metaPkg, clusteredInstances, storageId, true);
1.45 clusteredInstances.put(((BaseObjectHandler)metaPkg)._getDelegate().getMofId(), pkg);
1.46 } else {
1.47 @@ -753,12 +751,51 @@
1.48 throw (DebugException) Logger.getDefault().annotate(new DebugException(), e);
1.49 }
1.50 } // if
1.51 - } // if
1.52 + } else if (metaElement instanceof EnumerationType) {
1.53 + createDTDescriptor(storageId, (EnumerationType) metaElement);
1.54 + } else if (metaElement instanceof StructureType) {
1.55 + createDTDescriptor(storageId, (StructureType) metaElement);
1.56 + } else if (metaElement instanceof MofClass) {
1.57 + collectDTDescriptors(storageId, (MofClass) metaElement, new HashSet());
1.58 + }
1.59 } // if
1.60 } // while
1.61 } // while
1.62 }
1.63
1.64 + private void collectDTDescriptors(String storageId, GeneralizableElement metaElement, Set visited) {
1.65 + Iterator superTypes = metaElement.allSupertypes().iterator();
1.66 + boolean thisTypeNotProcessed = true;
1.67 + while (thisTypeNotProcessed || superTypes.hasNext()) {
1.68 + Iterator it;
1.69 + if (thisTypeNotProcessed) {
1.70 + it = metaElement.getContents().iterator();
1.71 + thisTypeNotProcessed = false;
1.72 + } else {
1.73 + GeneralizableElement ge = (GeneralizableElement) superTypes.next();
1.74 + if (!visited.add(ge)) continue;
1.75 + it = ge.getContents().iterator();
1.76 + }
1.77 +
1.78 + collectDTDescriptors(storageId, it, visited);
1.79 + }
1.80 + }
1.81 +
1.82 + private void collectDTDescriptors(String storageId, Iterator it, Set visited) {
1.83 + while (it.hasNext()) {
1.84 + Object element = it.next();
1.85 + if (element instanceof MofPackage || element instanceof MofClass) {
1.86 + if (visited.add(element)) {
1.87 + collectDTDescriptors(storageId, (GeneralizableElement) element, visited);
1.88 + }
1.89 + } else if (element instanceof EnumerationType) {
1.90 + createDTDescriptor(storageId, (EnumerationType) element);
1.91 + } else if (element instanceof StructureType) {
1.92 + createDTDescriptor(storageId, (StructureType) element);
1.93 + }
1.94 + }
1.95 + }
1.96 +
1.97 /**
1.98 * Fills {@link #associationProxies}, {@link classProxies} and
1.99 * {@link classProxiesMofIds} with the proxies contained in <code>pkg</code>
1.100 @@ -812,27 +849,9 @@
1.101 for (Iterator it = metaPackage.getContents().iterator(); it.hasNext();) {
1.102 ModelElement element = (ModelElement) it.next();
1.103 if (element instanceof EnumerationType) {
1.104 - List members = new ArrayList(((EnumerationType) element).getLabels());
1.105 - String ifcName = TagSupport.getTypeFullName((StorableObject) ((BaseObjectHandler) element)._getDelegate());
1.106 - datatypes.put(element.getName(), new DatatypeDescriptor(mdrStorage, members, ifcName, storageId));
1.107 + datatypes.put(element.getName(), createDTDescriptor(storageId, (EnumerationType) element));
1.108 } else if (element instanceof StructureType) {
1.109 - ModelElement me;
1.110 - List members = new ArrayList();
1.111 - List memberTypes = new ArrayList();
1.112 -
1.113 - for (Iterator it2 = ((StructureType) element).getContents().iterator(); it2.hasNext();) {
1.114 - me = (ModelElement) it2.next();
1.115 - if (me instanceof StructureField) {
1.116 - members.add(me.getName());
1.117 - try {
1.118 - memberTypes.add(BaseObjectHandler.resolveInterface(TagSupport.getDataTypeName((StorableObject) ((BaseObjectHandler) ((StructureField) me).getType())._getDelegate())));
1.119 - } catch (ClassNotFoundException e) {
1.120 - throw (DebugException) Logger.getDefault().annotate(new DebugException(), e);
1.121 - }
1.122 - }
1.123 - }
1.124 - String ifcName = TagSupport.getTypeFullName((StorableObject) ((BaseObjectHandler) element)._getDelegate());
1.125 - datatypes.put(element.getName(), new DatatypeDescriptor(mdrStorage, element.getQualifiedName(), members, memberTypes, ifcName, storageId));
1.126 + datatypes.put(element.getName(), createDTDescriptor(storageId, (StructureType) element));
1.127 }
1.128 }
1.129 }
1.130 @@ -854,6 +873,32 @@
1.131 }
1.132 }
1.133
1.134 + private DatatypeDescriptor createDTDescriptor(String storageId, EnumerationType enum) {
1.135 + List members = new ArrayList(enum.getLabels());
1.136 + String ifcName = TagSupport.getTypeFullName((StorableObject) ((BaseObjectHandler) enum)._getDelegate());
1.137 + return new DatatypeDescriptor(mdrStorage, members, ifcName, storageId);
1.138 + }
1.139 +
1.140 + private DatatypeDescriptor createDTDescriptor(String storageId, StructureType struct) {
1.141 + ModelElement me;
1.142 + List members = new ArrayList();
1.143 + List memberTypes = new ArrayList();
1.144 +
1.145 + for (Iterator it2 = struct.getContents().iterator(); it2.hasNext();) {
1.146 + me = (ModelElement) it2.next();
1.147 + if (me instanceof StructureField) {
1.148 + members.add(me.getName());
1.149 + try {
1.150 + memberTypes.add(BaseObjectHandler.resolveInterface(TagSupport.getDataTypeName((StorableObject) ((BaseObjectHandler) ((StructureField) me).getType())._getDelegate())));
1.151 + } catch (ClassNotFoundException e) {
1.152 + throw (DebugException) Logger.getDefault().annotate(new DebugException(), e);
1.153 + }
1.154 + }
1.155 + }
1.156 + String ifcName = TagSupport.getTypeFullName((StorableObject) ((BaseObjectHandler) struct)._getDelegate());
1.157 + return new DatatypeDescriptor(mdrStorage, struct.getQualifiedName(), members, memberTypes, ifcName, storageId);
1.158 + }
1.159 +
1.160 /** Creates handler for Class Proxy */
1.161 private StorableClass createClassProxyHandler(MofClass metaObject, StorablePackage immediatePackage, Map localClassProxies) {
1.162 ModelElement element;
2.1 --- a/mdr/src/org/netbeans/mdr/handlers/FeaturedHandler.java Sat Jan 11 03:19:29 2003 +0000
2.2 +++ b/mdr/src/org/netbeans/mdr/handlers/FeaturedHandler.java Mon Jan 13 09:56:58 2003 +0000
2.3 @@ -65,20 +65,25 @@
2.4
2.5 protected final Object _preSet(String featureName, Object newValue) {
2.6 _lock(true);
2.7 - AttributeEvent event = new AttributeEvent(
2.8 - this,
2.9 - AttributeEvent.EVENT_ATTRIBUTE_SET,
2.10 - featureName,
2.11 - _getAttribute(featureName),
2.12 - newValue,
2.13 - AttributeEvent.POSITION_NONE
2.14 - );
2.15 - if (this instanceof RefObject) {
2.16 - _getDelegate().getMdrStorage().getEventNotifier().INSTANCE.firePlannedChange(this, event);
2.17 - } else {
2.18 - _getDelegate().getMdrStorage().getEventNotifier().CLASS.firePlannedChange(this, event);
2.19 - }
2.20 - return event;
2.21 + Object oldValue = _getAttribute(featureName);
2.22 +// if (newValue == oldValue || (newValue != null && newValue.equals(oldValue))) {
2.23 +// return null;
2.24 +// } else {
2.25 + AttributeEvent event = new AttributeEvent(
2.26 + this,
2.27 + AttributeEvent.EVENT_ATTRIBUTE_SET,
2.28 + featureName,
2.29 + oldValue,
2.30 + newValue,
2.31 + AttributeEvent.POSITION_NONE
2.32 + );
2.33 + if (this instanceof RefObject) {
2.34 + _getDelegate().getMdrStorage().getEventNotifier().INSTANCE.firePlannedChange(this, event);
2.35 + } else {
2.36 + _getDelegate().getMdrStorage().getEventNotifier().CLASS.firePlannedChange(this, event);
2.37 + }
2.38 + return event;
2.39 +// }
2.40 }
2.41
2.42 protected final void _postSet(Object extraInfo, boolean fail) {
3.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java Sat Jan 11 03:19:29 2003 +0000
3.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java Mon Jan 13 09:56:58 2003 +0000
3.3 @@ -1521,6 +1521,10 @@
3.4
3.5 public Storage getStorageByMofId (org.netbeans.mdr.persistence.MOFID mofId) {
3.6 String storageId = getStorageIdFromMofId (mofId);
3.7 + return getStorageById(storageId);
3.8 + }
3.9 +
3.10 + public Storage getStorageById(String storageId) {
3.11 if (storageId == null) {
3.12 return null;
3.13 }
4.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java Sat Jan 11 03:19:29 2003 +0000
4.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java Mon Jan 13 09:56:58 2003 +0000
4.3 @@ -359,7 +359,7 @@
4.4
4.5 /** Signals to the storage that this object will be changed.
4.6 */
4.7 - protected void objectWillChange() {
4.8 + public void objectWillChange() {
4.9 if (initFinished)
4.10 try {
4.11 getMdrStorage().objectStateWillChange(id);
4.12 @@ -370,7 +370,7 @@
4.13
4.14 /** Signals to the storage that this object has been changed.
4.15 */
4.16 - protected void objectChanged() {
4.17 + public void objectChanged() {
4.18 if (initFinished)
4.19 try {
4.20 getMdrStorage().objectStateChanged(id);
5.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableClass.java Sat Jan 11 03:19:29 2003 +0000
5.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableClass.java Mon Jan 13 09:56:58 2003 +0000
5.3 @@ -316,6 +316,10 @@
5.4 cls.objectWillChange();
5.5 AttributeDescriptor attribute = (AttributeDescriptor) cls.clAttrDescs.get(name);
5.6 Object oldValue = cls.clAttrValues.put(name, value);
5.7 +
5.8 +// if (value == oldValue || (value != null && value.equals(oldValue))) {
5.9 +// return;
5.10 +// }
5.11
5.12 if (!attribute.isMultivalued() && (value instanceof RefObject)) {
5.13 StorableObject storableObj = (StorableObject) ((BaseObjectHandler) value)._getDelegate();
5.14 @@ -871,7 +875,7 @@
5.15 }
5.16
5.17 void write(java.io.OutputStream outputStream) throws IOException {
5.18 - IOUtils.writeMOFID (outputStream, mofId, mdrStorage, mofId);
5.19 + IOUtils.writeMOFID (outputStream, mofId, mdrStorage.getStorageById(storageId));
5.20 IOUtils.writeString(outputStream, name);
5.21 IOUtils.writeInt(outputStream, typeIndex);
5.22 IOUtils.writeInt(outputStream, minSize);
5.23 @@ -961,13 +965,13 @@
5.24 }
5.25
5.26 public void write (java.io.OutputStream stream, StorableBaseObject storable) throws IOException {
5.27 - IOUtils.write (stream, id, storable);
5.28 + IOUtils.writeMOFID(stream, id, storable.getMdrStorage(), storable.getMofId());
5.29 IOUtils.writeString(stream, name);
5.30 IOUtils.writeBoolean(stream, isOrdered);
5.31 }
5.32
5.33 public void read (java.io.InputStream stream, StorableBaseObject storable) throws IOException {
5.34 - id = (org.netbeans.mdr.persistence.MOFID) IOUtils.read (stream, storable);
5.35 + id = IOUtils.readMOFID(stream, storable.getMdrStorage(), storable.getMofId());
5.36 name = IOUtils.readString(stream);
5.37 isOrdered = IOUtils.readBoolean(stream);
5.38 }
6.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableObject.java Sat Jan 11 03:19:29 2003 +0000
6.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableObject.java Mon Jan 13 09:56:58 2003 +0000
6.3 @@ -98,8 +98,12 @@
6.4 public void setAttribute(int attrIndex, Object value) throws StorageException {
6.5 check();
6.6 StorableClass.AttributeDescriptor attribute = getClassProxy().getAttrDesc(attrIndex);
6.7 -
6.8 Object oldValue = values[attrIndex];
6.9 +
6.10 +// if (value == oldValue || (value != null && value.equals(oldValue))) {
6.11 +// return;
6.12 +// }
6.13 +
6.14 objectWillChange();
6.15 values[attrIndex] = value;
6.16
6.17 @@ -427,7 +431,7 @@
6.18
6.19 if (attrDesc.isIndexed()) {
6.20
6.21 - Iterator iter = proxy.getIndexes(attrDesc.getMofId()).iterator();
6.22 + Iterator iter = proxy.getIndexes(attribId).iterator();
6.23 org.netbeans.mdr.persistence.MOFID outermostPackageId = getOutermostPackageId();
6.24 org.netbeans.mdr.persistence.MOFID mofId = getMofId();
6.25
7.1 --- a/mdr/src/org/netbeans/mdr/util/IOUtils.java Sat Jan 11 03:19:29 2003 +0000
7.2 +++ b/mdr/src/org/netbeans/mdr/util/IOUtils.java Mon Jan 13 09:56:58 2003 +0000
7.3 @@ -258,6 +258,8 @@
7.4 } else if (object instanceof MOFID) {
7.5 outputStream.write (T_MOFID);
7.6 writeMOFID (outputStream, (MOFID)object, storable.getMdrStorage(), storable.getMofId());
7.7 + } else if (object instanceof ValueWrapper) {
7.8 + write(outputStream, ((ValueWrapper) object).getValue(), storable);
7.9 } else {
7.10 throw new IOException("Unsupported type of object (object must be serializable): " + object.getClass().getName());
7.11 }
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2 +++ b/mdr/src/org/netbeans/mdr/util/ValueWrapper.java Mon Jan 13 09:56:58 2003 +0000
8.3 @@ -0,0 +1,21 @@
8.4 +/*
8.5 + * Sun Public License Notice
8.6 + *
8.7 + * The contents of this file are subject to the Sun Public License
8.8 + * Version 1.0 (the "License"). You may not use this file except in
8.9 + * compliance with the License. A copy of the License is available at
8.10 + * http://www.sun.com/
8.11 + *
8.12 + * The Original Code is NetBeans. The Initial Developer of the Original
8.13 + * Code is Sun Microsystems, Inc. Portions Copyright 1997-2001 Sun
8.14 + * Microsystems, Inc. All Rights Reserved.
8.15 + */
8.16 +package org.netbeans.mdr.util;
8.17 +
8.18 +/**
8.19 + *
8.20 + * @author mm109185
8.21 + */
8.22 +public interface ValueWrapper {
8.23 + public Object getValue();
8.24 +}