Fix of refOutermostPackage (now returns "this" on outermost package) and refQuery (takes designator of other end)
1.1 --- a/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java Mon Jun 17 09:47:21 2002 +0000
1.2 +++ b/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java Mon Jun 17 16:18:33 2002 +0000
1.3 @@ -551,7 +551,8 @@
1.4 for (Iterator contents = cls.getContents().iterator(); contents.hasNext();) {
1.5 me = (ModelElement) contents.next();
1.6 if (me instanceof Reference) {
1.7 - end = ((Reference) me).getReferencedEnd();
1.8 + end = ((Reference) me).getExposedEnd();
1.9 + //System.out.println("registering reference: " + me.getName() + " for end: " + end.getName());
1.10 sc.addReferenceDescriptor(me.refMofId(), me.getName(), (String) associationProxies.get(end.getContainer().refMofId()), end.getName());
1.11 }
1.12 if ((me instanceof Tag) && (TAGID_INDEX.equals (((Tag) me).getTagId()))) {
2.1 --- a/mdr/src/org/netbeans/mdr/handlers/AEIndexSetWrapper.java Mon Jun 17 09:47:21 2002 +0000
2.2 +++ b/mdr/src/org/netbeans/mdr/handlers/AEIndexSetWrapper.java Mon Jun 17 16:18:33 2002 +0000
2.3 @@ -123,7 +123,7 @@
2.4 notifier.firePlannedChange(source, event);
2.5 RefObject objectA;
2.6 RefObject objectB;
2.7 - if (this.queryFirstEnd) {
2.8 + if (!this.queryFirstEnd) {
2.9 objectA = (RefObject) obj;
2.10 objectB = this.fixed;
2.11 }
2.12 @@ -160,7 +160,7 @@
2.13 notifier.firePlannedChange(source, event);
2.14 RefObject objectA;
2.15 RefObject objectB;
2.16 - if (this.queryFirstEnd) {
2.17 + if (!this.queryFirstEnd) {
2.18 objectA = (RefObject) obj;
2.19 objectB = this.fixed;
2.20 }
2.21 @@ -215,7 +215,7 @@
2.22 notifier.firePlannedChange(source, event);
2.23 RefObject objectA;
2.24 RefObject objectB;
2.25 - if (queryFirstEnd) {
2.26 + if (!queryFirstEnd) {
2.27 objectA = lastRead;
2.28 objectB = fixed;
2.29 }
3.1 --- a/mdr/src/org/netbeans/mdr/handlers/AEIndexUListWrapper.java Mon Jun 17 09:47:21 2002 +0000
3.2 +++ b/mdr/src/org/netbeans/mdr/handlers/AEIndexUListWrapper.java Mon Jun 17 16:18:33 2002 +0000
3.3 @@ -46,7 +46,7 @@
3.4 result = wrap(innerList.get(param));
3.5 RefObject objectA;
3.6 RefObject objectB;
3.7 - if (queryFirstEnd) {
3.8 + if (!queryFirstEnd) {
3.9 objectA = (RefObject) result;
3.10 objectB = this.fixed;
3.11 }
3.12 @@ -80,7 +80,7 @@
3.13 notifier.firePlannedChange(source, event);
3.14 RefObject objectA;
3.15 RefObject objectB;
3.16 - if (queryFirstEnd) {
3.17 + if (!queryFirstEnd) {
3.18 objectA = (RefObject) obj;
3.19 objectB = this.fixed;
3.20 }
3.21 @@ -118,7 +118,7 @@
3.22 RefObject objectB1;
3.23 RefObject objectA2;
3.24 RefObject objectB2;
3.25 - if (this.queryFirstEnd) {
3.26 + if (!this.queryFirstEnd) {
3.27 objectA1 = (RefObject)result;
3.28 objectB1 = this.fixed;
3.29 objectA2 = (RefObject) obj;
3.30 @@ -235,7 +235,7 @@
3.31 RefObject objectB1;
3.32 RefObject objectA2;
3.33 RefObject objectB2;
3.34 - if (queryFirstEnd) {
3.35 + if (!queryFirstEnd) {
3.36 objectA1 = lastRead;
3.37 objectB1 = fixed;
3.38 objectA2 = (RefObject)obj;
3.39 @@ -276,7 +276,7 @@
3.40 notifier.firePlannedChange(source, event);
3.41 RefObject objectA;
3.42 RefObject objectB;
3.43 - if (queryFirstEnd) {
3.44 + if (!queryFirstEnd) {
3.45 objectA = (RefObject) obj;
3.46 objectB = fixed;
3.47 }
3.48 @@ -357,7 +357,7 @@
3.49 notifier.firePlannedChange(source, event);
3.50 RefObject objectA;
3.51 RefObject objectB;
3.52 - if (queryFirstEnd) {
3.53 + if (!queryFirstEnd) {
3.54 objectA = lastRead;
3.55 objectB = fixed;
3.56 }
4.1 --- a/mdr/src/org/netbeans/mdr/handlers/AssociationHandler.java Mon Jun 17 09:47:21 2002 +0000
4.2 +++ b/mdr/src/org/netbeans/mdr/handlers/AssociationHandler.java Mon Jun 17 16:18:33 2002 +0000
4.3 @@ -130,7 +130,7 @@
4.4 this,
4.5 AssociationEvent.EVENT_ASSOCIATION_ADD,
4.6 associationEnd1,
4.7 - getAssociationDelegate().getEnd2Name(),
4.8 + getAssociationDelegate().getEnd1Name(),
4.9 null,
4.10 associationEnd2,
4.11 AssociationEvent.POSITION_NONE
4.12 @@ -168,7 +168,7 @@
4.13 this,
4.14 AssociationEvent.EVENT_ASSOCIATION_REMOVE,
4.15 associationEnd1,
4.16 - getAssociationDelegate().getEnd2Name(),
4.17 + getAssociationDelegate().getEnd1Name(),
4.18 associationEnd2,
4.19 null,
4.20 AssociationEvent.POSITION_NONE
4.21 @@ -257,9 +257,9 @@
4.22 } catch (ClassCastException e) {
4.23 // this will throw TypeMismatchException or DebugException if the mismatch is not found
4.24 if (getAssociationDelegate().getEnd1Name().equals(endName)) {
4.25 + getAssociationDelegate().checkType(queryObject, null);
4.26 + } else {
4.27 getAssociationDelegate().checkType(null, queryObject);
4.28 - } else {
4.29 - getAssociationDelegate().checkType(queryObject, null);
4.30 }
4.31 // this is here only to make the compiler happy
4.32 return null;
5.1 --- a/mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java Mon Jun 17 09:47:21 2002 +0000
5.2 +++ b/mdr/src/org/netbeans/mdr/handlers/BaseObjectHandler.java Mon Jun 17 16:18:33 2002 +0000
5.3 @@ -316,7 +316,12 @@
5.4
5.5 public final RefPackage refOutermostPackage() {
5.6 try {
5.7 - return (RefPackage) getHandler(_getDelegate().getOutermostPackage());
5.8 + StorableBaseObject pkg = _getDelegate().getOutermostPackage();
5.9 + if (pkg.getMofId().equals(refMofId())) {
5.10 + return (RefPackage) this;
5.11 + } else {
5.12 + return (RefPackage) getHandler(pkg);
5.13 + }
5.14 } catch (StorageException e) {
5.15 e.printStackTrace();
5.16 throw new DebugException();
6.1 --- a/mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java Mon Jun 17 09:47:21 2002 +0000
6.2 +++ b/mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java Mon Jun 17 16:18:33 2002 +0000
6.3 @@ -95,6 +95,7 @@
6.4 try {
6.5 StorableClass.ReferenceDescriptor reference = getInstanceDelegate().getClassProxy().getReferenceDescriptor(featureName);
6.6 AssociationHandler assoc = (AssociationHandler) getHandler(reference.getAssociation());
6.7 + //System.out.println("getting reference " + featureName + " for end: " + reference.getEndName());
6.8 return assoc._query(reference.getEndName(), (RefObject) this);
6.9 } catch (StorageException e) {
6.10 e.printStackTrace();
7.1 --- a/mdr/src/org/netbeans/mdr/handlers/gen/AssociationGenerator.java Mon Jun 17 09:47:21 2002 +0000
7.2 +++ b/mdr/src/org/netbeans/mdr/handlers/gen/AssociationGenerator.java Mon Jun 17 16:18:33 2002 +0000
7.3 @@ -78,12 +78,12 @@
7.4 // <associationEnd1>(<associationEnd2>)
7.5 if (((Boolean) ends[0].getAttribute(MOFConstants.SH_MODEL_ASSOCIATION_END_IS_NAVIGABLE)).booleanValue()) {
7.6 MultiplicityType multiplicity = (MultiplicityType) ends[0].getAttribute(MOFConstants.SH_MODEL_ASSOCIATION_END_MULTIPLICITY);
7.7 - methods.add(getAssocMethod(QUERY_PREFIX + firstUpper(end1SubstName), new String[] {end2Class}, multiplicity.getUpper() == 1 ? end1Class : (multiplicity.isOrdered() ? DT_ORDERED : DT_MULTIVALUED), M_QUERY_NAME, M_QUERY_DESC, M_QUERY_TYPE, end1Name, "_query"));
7.8 + methods.add(getAssocMethod(QUERY_PREFIX + firstUpper(end1SubstName), new String[] {end2Class}, multiplicity.getUpper() == 1 ? end1Class : (multiplicity.isOrdered() ? DT_ORDERED : DT_MULTIVALUED), M_QUERY_NAME, M_QUERY_DESC, M_QUERY_TYPE, end2Name, "_query"));
7.9 }
7.10 // <associationEnd2>(<associationEnd1>)
7.11 if (((Boolean) ends[1].getAttribute(MOFConstants.SH_MODEL_ASSOCIATION_END_IS_NAVIGABLE)).booleanValue()) {
7.12 MultiplicityType multiplicity = (MultiplicityType) ends[1].getAttribute(MOFConstants.SH_MODEL_ASSOCIATION_END_MULTIPLICITY);
7.13 - methods.add(getAssocMethod(QUERY_PREFIX + firstUpper(end2SubstName), new String[] {end1Class}, multiplicity.getUpper() == 1 ? end2Class : (multiplicity.isOrdered() ? DT_ORDERED : DT_MULTIVALUED), M_QUERY_NAME, M_QUERY_DESC, M_QUERY_TYPE, end2Name, "_query"));
7.14 + methods.add(getAssocMethod(QUERY_PREFIX + firstUpper(end2SubstName), new String[] {end1Class}, multiplicity.getUpper() == 1 ? end2Class : (multiplicity.isOrdered() ? DT_ORDERED : DT_MULTIVALUED), M_QUERY_NAME, M_QUERY_DESC, M_QUERY_TYPE, end1Name, "_query"));
7.15 }
7.16 if (((Boolean) ends[0].getAttribute(MOFConstants.SH_MODEL_ASSOCIATION_END_IS_CHANGEABLE)).booleanValue() && ((Boolean) ends[1].getAttribute(MOFConstants.SH_MODEL_ASSOCIATION_END_IS_CHANGEABLE)).booleanValue()) {
7.17 // add(<associationEnd1>, <associationEnd2>)
8.1 --- a/mdr/src/org/netbeans/mdr/handlers/gen/TagSupport.java Mon Jun 17 09:47:21 2002 +0000
8.2 +++ b/mdr/src/org/netbeans/mdr/handlers/gen/TagSupport.java Mon Jun 17 16:18:33 2002 +0000
8.3 @@ -79,7 +79,7 @@
8.4 StorableObject tag = null;
8.5
8.6 try {
8.7 - Collection tags = (Collection) storable.getOutermostPackage().getAssociation(MOFConstants.SH_MODEL_ATTACHES_TO).queryObjects(MOFConstants.SH_MODEL_ATTACHES_TO_TAG, storable.getMofId());
8.8 + Collection tags = (Collection) storable.getOutermostPackage().getAssociation(MOFConstants.SH_MODEL_ATTACHES_TO).queryObjects(MOFConstants.SH_MODEL_ATTACHES_TO_MODEL_ELEMENT, storable.getMofId());
8.9 StorableObject temp;
8.10 for (Iterator it = tags.iterator(); it.hasNext();) {
8.11 temp = (StorableObject) it.next();
9.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/BootReader.java Mon Jun 17 09:47:21 2002 +0000
9.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/BootReader.java Mon Jun 17 16:18:33 2002 +0000
9.3 @@ -62,6 +62,8 @@
9.4 private final Hashtable proxyIdByXmiId = new Hashtable();
9.5 /** forward proxies references */
9.6 private final HashSet proxyReferences = new HashSet();
9.7 + /** association ends by other ends (FQNs) */
9.8 + private final HashMap otherEnds = new HashMap();
9.9
9.10 /** parsed XMI document */
9.11 private Document document = null;
9.12 @@ -367,6 +369,9 @@
9.13 } catch (NumberFormatException e) {
9.14 throw new DebugException("Wrong format of multiplicity");
9.15 }
9.16 +
9.17 + otherEnds.put(name + "." + endAName, name + "." + endBName);
9.18 + otherEnds.put(name + "." + endBName, name + "." + endAName);
9.19
9.20 if (name.equals(MdrStorage.MODEL_CONTAINS)) {
9.21 containsAssociation = storableAssociation;
9.22 @@ -771,7 +776,9 @@
9.23 for (Iterator features = od.getFeatures().iterator(); features.hasNext(); ) {
9.24 feature = (Feature) features.next();
9.25 if (feature.getType() == feature.REFERENCE) {
9.26 - ((StorableClass)sc).addReferenceDescriptor(feature.getName(), feature.getName().substring(feature.getName().lastIndexOf('.') + 1), (String) proxyIdByName.get(feature.getAssocName()), feature.getAssocEndName().substring(feature.getAssocEndName().lastIndexOf('.') + 1));
9.27 + String endName = (String) otherEnds.get(feature.getAssocEndName());
9.28 +// System.out.println("registering reference: " + feature.getName() + " for end: " + endName);
9.29 + ((StorableClass)sc).addReferenceDescriptor(feature.getName(), feature.getName().substring(feature.getName().lastIndexOf('.') + 1), (String) proxyIdByName.get(feature.getAssocName()), endName.substring(endName.lastIndexOf('.') + 1));
9.30 }
9.31 }
9.32 }
10.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java Mon Jun 17 09:47:21 2002 +0000
10.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/MdrStorage.java Mon Jun 17 16:18:33 2002 +0000
10.3 @@ -49,7 +49,7 @@
10.4 /* -- Private static constants ---------------------------------------- */
10.5 /* -------------------------------------------------------------------- */
10.6
10.7 - private static final int STORAGE_VERSION = 11;
10.8 + private static final int STORAGE_VERSION = 12;
10.9
10.10 // names of global storage indexes
10.11 private static final String IDX_MDR_STORAGE_PROPERTIES = "Properties";
11.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableAssociation.java Mon Jun 17 09:47:21 2002 +0000
11.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableAssociation.java Mon Jun 17 16:18:33 2002 +0000
11.3 @@ -268,7 +268,7 @@
11.4 */
11.5 public Object queryObjects(String endName, String obj) throws StorageException {
11.6 //System.out.println("query: end: " + endName + ", endA:" + endA + ", endB:" + endB);
11.7 - boolean isEndA = endName.equals(endA);
11.8 + boolean isEndA = endName.equals(endB);
11.9 boolean multi = isEndA ? multiValuedA : multiValuedB;
11.10 boolean order = isEndA ? orderedA : orderedB;
11.11 Index index = isEndA ? aIndex : bIndex;
11.12 @@ -276,7 +276,7 @@
11.13 Class type = isEndA ? typeA : typeB;
11.14 int min = isEndA ? minA : minB;
11.15 int max = isEndA ? maxA : maxB;
11.16 - String endId = isEndA ? endAId : endBId;
11.17 + String endId = isEndA ? endBId : endAId;
11.18 boolean aggr = isEndA ? aggrA : aggrB;
11.19 boolean otherAggr = isEndA ? aggrB : aggrA;
11.20 Object result;
11.21 @@ -296,16 +296,16 @@
11.22
11.23 public void verify(Collection violations) throws StorageException {
11.24 for (Iterator it = aIndex.keySet().iterator(); it.hasNext();) {
11.25 - verifyEnd(violations, endA, (String) it.next());
11.26 + verifyEnd(violations, endB, (String) it.next());
11.27 }
11.28 for (Iterator it = bIndex.keySet().iterator(); it.hasNext();) {
11.29 - verifyEnd(violations, endB, (String) it.next());
11.30 + verifyEnd(violations, endA, (String) it.next());
11.31 }
11.32 }
11.33
11.34 public void verifyEnd(Collection violations, String end, String object) throws StorageException {
11.35 - int min = end.equals(endA) ? minA : minB;
11.36 - String endId = end.equals(endA) ? endAId : endBId;
11.37 + int min = end.equals(endB) ? minA : minB;
11.38 + String endId = end.equals(endB) ? endAId : endBId;
11.39 Object result = queryObjects(end, object);
11.40 if ((result == null && min > 0) ||
11.41 (result instanceof Collection && ((Collection) result).size() < min)) {
11.42 @@ -336,9 +336,9 @@
11.43 */
11.44 public boolean addLink (String a, String b) throws StorageException {
11.45 if (multiValuedA) {
11.46 - return ((Collection) queryObjects(endA, b)).add(a);
11.47 + return ((Collection) queryObjects(endB, b)).add(a);
11.48 } else if (multiValuedB) {
11.49 - return ((Collection) queryObjects(endB, a)).add(b);
11.50 + return ((Collection) queryObjects(endA, a)).add(b);
11.51 } else {
11.52 try {
11.53 StorableObject oA = null, oB = null;
12.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java Mon Jun 17 09:47:21 2002 +0000
12.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableBaseObject.java Mon Jun 17 16:18:33 2002 +0000
12.3 @@ -81,7 +81,7 @@
12.4 this.outermostPackage = parentOutermost;
12.5 }
12.6 } else {
12.7 - this.outermostPackage = null;
12.8 + this.outermostPackage = this.id;
12.9 }
12.10 }
12.11
12.12 @@ -120,9 +120,9 @@
12.13 */
12.14 public String getOutermostPackageId() {
12.15 if (outermostPackage == null) {
12.16 - // value have to be inited
12.17 + // value has to be inited
12.18 if (immediatePackage == null) {
12.19 - outermostPackage = immediatePackage; // the object is proxy of an outermost package
12.20 + outermostPackage = getMofId(); // the object is proxy of an outermost package
12.21 } else {
12.22 StorableBaseObject temp, pkg;
12.23 try {
13.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableClass.java Mon Jun 17 09:47:21 2002 +0000
13.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableClass.java Mon Jun 17 16:18:33 2002 +0000
13.3 @@ -177,7 +177,9 @@
13.4 } // for
13.5 IndexDescriptor indexDesc = new IndexDescriptor (indexName, fields);
13.6 indexDescs [y] = indexDesc;
13.7 - getMdrStorage().createAdditionalIndex((getOutermostPackageId() == null ? getImmediatePackageId() : getOutermostPackageId()), indexName);
13.8 +// [???] why was it checking for outermost == null?
13.9 +// getMdrStorage().createAdditionalIndex((getOutermostPackageId() == null ? getImmediatePackageId() : getOutermostPackageId()), indexName);
13.10 + getMdrStorage().createAdditionalIndex(getOutermostPackageId(), indexName);
13.11 } // for
13.12 objectChanged ();
13.13 }
13.14 @@ -713,7 +715,7 @@
13.15 }
13.16
13.17 public boolean isFirstEnd() {
13.18 - return getAssociation().getEnd1Name().equals(endName);
13.19 + return getAssociation().getEnd2Name().equals(endName);
13.20 }
13.21
13.22 }
14.1 --- a/mdr/src/org/netbeans/mdr/storagemodel/StorableObject.java Mon Jun 17 09:47:21 2002 +0000
14.2 +++ b/mdr/src/org/netbeans/mdr/storagemodel/StorableObject.java Mon Jun 17 16:18:33 2002 +0000
14.3 @@ -148,11 +148,11 @@
14.4 StorableAssociation assocObj = (StorableAssociation) getMdrStorage().getObject(reference.getAssociationId());
14.5
14.6 if (reference.getEndName().equals(assocObj.getEnd1Name())) {
14.7 + objB = referencedObjectId;
14.8 + objA = getMofId();
14.9 + } else {
14.10 objA = referencedObjectId;
14.11 objB = getMofId();
14.12 - } else {
14.13 - objB = referencedObjectId;
14.14 - objA = getMofId();
14.15 }
14.16
14.17 assocObj.addLink(objA, objB);
14.18 @@ -233,6 +233,8 @@
14.19 if (id != attribComposite) {
14.20 // check for Composition Violation
14.21 if (attribComposite != null) {
14.22 +// [PENDING] uncomment this after the final JMI gets released
14.23 +// throw new javax.jmi.reflect.CompositionViolationException(BaseObjectHandler.getHandler(this), (RefObject) BaseObjectHandler.getHandler(getMdrStorage().getObject(elementId)));
14.24 throw new DebugException("Instance already has a composite: " + getMofId()); // object is already contained in another object
14.25 }
14.26 // check for Composition Cycle
14.27 @@ -278,7 +280,7 @@
14.28 if (!((Association) assoc.refMetaObject()).isDerived()) {
14.29 boolean isAggregateA = assocStorable.isAggregateA();
14.30 boolean isAggregateB = assocStorable.isAggregateB();
14.31 - Object temp = assoc._handleQuery(assocStorable.getEnd1Name(), thisObject);
14.32 + Object temp = assoc._handleQuery(assocStorable.getEnd2Name(), thisObject);
14.33 if (temp != null) {
14.34 if (temp instanceof Collection) {
14.35 for (Iterator itt = ((Collection)temp).iterator(); itt.hasNext();) {
14.36 @@ -294,7 +296,7 @@
14.37 }
14.38 }
14.39
14.40 - temp = assoc._handleQuery(assocStorable.getEnd2Name(), thisObject);
14.41 + temp = assoc._handleQuery(assocStorable.getEnd1Name(), thisObject);
14.42 if (temp != null) {
14.43 if (temp instanceof Collection) {
14.44 for (Iterator itt = ((Collection)temp).iterator(); itt.hasNext();) {
15.1 --- a/mdr/src/org/netbeans/mdr/util/MOFConstants.java Mon Jun 17 09:47:21 2002 +0000
15.2 +++ b/mdr/src/org/netbeans/mdr/util/MOFConstants.java Mon Jun 17 16:18:33 2002 +0000
15.3 @@ -71,7 +71,8 @@
15.4 public static final String SH_MODEL_OPERATION_EXCEPTIONS = "exceptions";
15.5 public static final String SH_MODEL_IMPORT = "Import";
15.6 public static final String SH_MODEL_ATTACHES_TO = "AttachesTo";
15.7 - public static final String SH_MODEL_ATTACHES_TO_TAG = "tag";
15.8 +// public static final String SH_MODEL_ATTACHES_TO_TAG = "tag";
15.9 + public static final String SH_MODEL_ATTACHES_TO_MODEL_ELEMENT = "modelElement";
15.10 public static final String SH_MODEL_TAG_TAG_ID = "tagId";
15.11 public static final String SH_MODEL_TAG_VALUES = "values";
15.12