svn commit: r13107 - trunk/src_new/org/argouml: i18n notation notation/providers notation/providers/uml uml/diagram/ui

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: mvw
Date: 2007-07-22 11:22:09-0700
New Revision: 13107

Added:
   trunk/src_new/org/argouml/notation/providers/MultiplicityNotation.java   (contents, props changed)
   trunk/src_new/org/argouml/notation/providers/uml/MultiplicityNotationUml.java   (contents, props changed)
Modified:
   trunk/src_new/org/argouml/i18n/parsing.properties
   trunk/src_new/org/argouml/notation/NotationProviderFactory2.java
   trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java
   trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java
   trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java
   trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java

Log:
Reduce the dependency on org.argouml.notation.providers.uml from the UI.

Introduced a NotationProvider for a multiplicity.

Modified: trunk/src_new/org/argouml/i18n/parsing.properties
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/i18n/parsing.properties?view=diff&rev=13107&p1=trunk/src_new/org/argouml/i18n/parsing.properties&p2=trunk/src_new/org/argouml/i18n/parsing.properties&r1=13106&r2=13107
==============================================================================
--- trunk/src_new/org/argouml/i18n/parsing.properties	(original)
+++ trunk/src_new/org/argouml/i18n/parsing.properties	2007-07-22 11:22:09-0700
@@ -75,6 +75,8 @@
   [ name ":" ] [ location ]
 parsing.help.fig-message = Enter the message definition according: \
   sequence ":" [ return_list ":=" ] name "(" [arg_list] ")"
+parsing.help.fig-multiplicity = Enter the multiplicity, \
+  e.g. like "1..*".
 parsing.help.fig-node = Enter the name of the node according: \
   [ "<<" stereotype ">>" ]  name
 parsing.help.fig-nodeinstance = Enter the name of the nodeinstance according: \

Modified: trunk/src_new/org/argouml/notation/NotationProviderFactory2.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/notation/NotationProviderFactory2.java?view=diff&rev=13107&p1=trunk/src_new/org/argouml/notation/NotationProviderFactory2.java&p2=trunk/src_new/org/argouml/notation/NotationProviderFactory2.java&r1=13106&r2=13107
==============================================================================
--- trunk/src_new/org/argouml/notation/NotationProviderFactory2.java	(original)
+++ trunk/src_new/org/argouml/notation/NotationProviderFactory2.java	2007-07-22 11:22:09-0700
@@ -145,6 +145,11 @@
     public static final int TYPE_ASSOCIATION_NAME = 18;
 
     /**
+     * The text shown for a multiplicity.
+     */
+    public static final int TYPE_MULTIPLICITY = 19;
+
+    /**
      * defaultLanguage the Notation language used by default, i.e. UML
      */
     private NotationName defaultLanguage;

Added: trunk/src_new/org/argouml/notation/providers/MultiplicityNotation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/notation/providers/MultiplicityNotation.java?view=auto&rev=13107
==============================================================================
--- (empty file)
+++ trunk/src_new/org/argouml/notation/providers/MultiplicityNotation.java	2007-07-22 11:22:09-0700
@@ -0,0 +1,52 @@
+// $Id$
+// Copyright (c) 2007 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.notation.providers;
+
+import org.argouml.model.Model;
+import org.argouml.notation.NotationProvider;
+
+/**
+ * This abstract class forms the basis of all Notation providers
+ * for the text shown in the Fig that represents a Multiplicity.
+ * Subclass this for all languages. <p>
+ * 
+ * This NotationProvider is a bit special, in that it does not 
+ * generate for the given UML element, but for its multiplicity.
+ *
+ * @author Michiel
+ */
+public abstract class MultiplicityNotation extends NotationProvider {
+
+    /**
+     * The constructor.
+     *
+     * @param multiplicityOwner the UML element that has a Multiplicity
+     */
+    public MultiplicityNotation(Object multiplicityOwner) {
+        // If this fails, then there is a problem...
+        Model.getFacade().getMultiplicity(multiplicityOwner);
+    }
+
+}

Modified: trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java?view=diff&rev=13107&p1=trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java&p2=trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java&r1=13106&r2=13107
==============================================================================
--- trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java	(original)
+++ trunk/src_new/org/argouml/notation/providers/uml/InitNotationUml.java	2007-07-22 11:22:09-0700
@@ -109,7 +109,9 @@
         npf.addNotationProvider(
                 NotationProviderFactory2.TYPE_ASSOCIATION_NAME,
                 name, AssociationNameNotationUml.class);
-
+        npf.addNotationProvider(
+                NotationProviderFactory2.TYPE_MULTIPLICITY,
+                name, MultiplicityNotationUml.class);
 
         NotationProviderFactory2.getInstance().setDefaultNotation(name);
 

Added: trunk/src_new/org/argouml/notation/providers/uml/MultiplicityNotationUml.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/notation/providers/uml/MultiplicityNotationUml.java?view=auto&rev=13107
==============================================================================
--- (empty file)
+++ trunk/src_new/org/argouml/notation/providers/uml/MultiplicityNotationUml.java	2007-07-22 11:22:09-0700
@@ -0,0 +1,93 @@
+// $Id$
+// Copyright (c) 2007 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.notation.providers.uml;
+
+import java.text.ParseException;
+import java.util.HashMap;
+
+import org.argouml.application.events.ArgoEventPump;
+import org.argouml.application.events.ArgoEventTypes;
+import org.argouml.application.events.ArgoHelpEvent;
+import org.argouml.i18n.Translator;
+import org.argouml.model.Model;
+import org.argouml.notation.providers.MultiplicityNotation;
+
+/**
+ * The UML notation for a Multiplicity. <p>
+ * 
+ * This NotationProvider is a bit special, in that it does not 
+ * generate for the given UML element, but for its multiplicity.
+ *
+ * @author Michiel
+ */
+public class MultiplicityNotationUml extends MultiplicityNotation {
+
+    /**
+     * @param multiplicityOwner the UML element to represent the multiplicity of
+     */
+    public MultiplicityNotationUml(Object multiplicityOwner) {
+        super(multiplicityOwner);
+    }
+
+    @Override
+    public String getParsingHelp() {
+        return "parsing.help.fig-multiplicity";
+    }
+
+    @Override
+    public void parse(Object multiplicityOwner, String text) {
+        try {
+            parseMultiplicity(multiplicityOwner, text);
+        } catch (ParseException pe) {
+            String msg = "statusmsg.bar.error.parsing.multiplicity";
+            Object[] args = {pe.getLocalizedMessage(),
+                             new Integer(pe.getErrorOffset()), };
+            ArgoEventPump.fireEvent(new ArgoHelpEvent(
+                    ArgoEventTypes.HELP_CHANGED, this,
+                    Translator.messageFormat(msg, args)));
+        }
+    }
+
+    protected Object parseMultiplicity(Object multiplicityOwner, String s1) 
+        throws ParseException {
+        String s = s1.trim();
+        Object multi = null;
+        try {
+            multi = Model.getDataTypesFactory().createMultiplicity(s);
+        } catch (IllegalArgumentException iae) {
+            throw new ParseException(iae.getLocalizedMessage(), 0);
+        }
+        Model.getCoreHelper().setMultiplicity(multiplicityOwner, multi);
+        return multi;
+    }
+    
+    @Override
+    public String toString(Object multiplicityOwner, HashMap args) {
+        Object mulitiplicity = 
+            Model.getFacade().getMultiplicity(multiplicityOwner);
+        return NotationUtilityUml.generateMultiplicity(mulitiplicity);
+    }
+
+}

Modified: trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java?view=diff&rev=13107&p1=trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java&p2=trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java&r1=13106&r2=13107
==============================================================================
--- trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java	(original)
+++ trunk/src_new/org/argouml/uml/diagram/ui/FigAssociation.java	2007-07-22 11:22:09-0700
@@ -47,7 +47,6 @@
 import org.argouml.model.Model;
 import org.argouml.notation.NotationProvider;
 import org.argouml.notation.NotationProviderFactory2;
-import org.argouml.notation.providers.uml.NotationUtilityUml;
 import org.argouml.ui.ArgoJMenu;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.tigris.gef.base.Layer;
@@ -166,6 +165,17 @@
         destMult.setOwner(dest);
     }
 
+    @Override
+    protected void initNotationProviders(Object own) {
+        super.initNotationProviders(own);
+        Object[] ends = 
+            Model.getFacade().getConnections(own).toArray();
+        Object source = ends[0];
+        Object dest = ends[1];
+        srcMult.initNotationProviders(source);
+        destMult.initNotationProviders(dest);
+    }
+
     /*
      * @see org.argouml.uml.diagram.ui.FigEdgeModelElement#updateListeners(java.lang.Object, java.lang.Object)
      */
@@ -203,41 +213,14 @@
             return;
         }
 
-	String msg =
-	    Translator.localize("statusmsg.bar.error.parsing.multiplicity");
-
 	if (ft == srcGroup.getRole()) {
             ((FigRole) ft).parse();
 	} else if (ft == destGroup.getRole()) {
             ((FigRole) ft).parse();
 	} else if (ft == srcMult) {
-	    Object srcAE = (conn.toArray())[0];
-	    try {
-	        Object multi = Model.getDataTypesFactory()
-	                        .createMultiplicity(srcMult.getText());
-	        Model.getCoreHelper().setMultiplicity(srcAE, multi);
-	    } catch (IllegalArgumentException e) {
-	        Object[] args = {e.getLocalizedMessage()};
-                ArgoEventPump.fireEvent(new ArgoHelpEvent(
-                            ArgoEventTypes.HELP_CHANGED, this,
-                    Translator.messageFormat(msg, args)));
-	        srcMult.setText(NotationUtilityUml.generateMultiplicity(
-                        Model.getFacade().getMultiplicity(srcAE)));
-	    }
+            srcMult.textEdited();
 	} else if (ft == destMult) {
-	    Object destAE = (conn.toArray())[1];
-	    try {
-	        Object multi = Model.getDataTypesFactory()
-	                        .createMultiplicity(destMult.getText());
-	        Model.getCoreHelper().setMultiplicity(destAE, multi);
-	    } catch (IllegalArgumentException e) {
-	        Object[] args = {e.getLocalizedMessage()};
-                ArgoEventPump.fireEvent(new ArgoHelpEvent(
-                            ArgoEventTypes.HELP_CHANGED, this,
-                    Translator.messageFormat(msg, args)));
-                destMult.setText(NotationUtilityUml.generateMultiplicity(
-                        Model.getFacade().getMultiplicity(destAE)));
-	    }
+            destMult.textEdited();
 	}
     }
 
@@ -251,9 +234,9 @@
         } else if (ft == destGroup.getRole()) {
             showHelp(destGroup.getRole().getParsingHelp());
         } else if (ft == srcMult) {
-            showHelp("parsing.help.fig-association-source-multiplicity");
+            srcMult.textEditStarted();
         } else if (ft == destMult) {
-            showHelp("parsing.help.fig-association-destination-multiplicity");
+            destMult.textEditStarted();
         } else {
             super.textEditStarted(ft);
         }
@@ -532,12 +515,16 @@
 
 /**
  * A Fig representing the multiplicty of some model element.
- * This has potential reuse for other edges showing multiplicity
+ * This has potential reuse for other edges showing multiplicity. <p>
+ * 
+ * The owner is an AssociationEnd.
+ * 
  * @author Bob Tarling
  */
 class FigMultiplicity extends FigSingleLineText 
     implements PropertyChangeListener {
 
+    private NotationProvider notationProvider;
     private static final long serialVersionUID = 5385230942216677015L;
 
     FigMultiplicity() {
@@ -550,10 +537,39 @@
     @Override
     protected void setText() {
         assert getOwner() != null;
-        Object multi = Model.getFacade().getMultiplicity(getOwner());
-        setText(NotationUtilityUml.generateMultiplicity(multi));
+        setText(notationProvider.toString(getOwner(), null));
         damage();
     }
+    
+    protected void textEdited() {
+        notationProvider.parse(getOwner(), getText());
+        setText(notationProvider.toString(getOwner(), null));
+    }
+    
+    protected void textEditStarted() {
+        String s = notationProvider.getParsingHelp();
+        ArgoEventPump.fireEvent(new ArgoHelpEvent(
+                ArgoEventTypes.HELP_CHANGED, this,
+                Translator.localize(s)));
+        setText(notationProvider.toString(getOwner(), null));
+    }
+
+    /**
+     * Create the NotationProviders.
+     * 
+     * @param own the current owner
+     */
+    protected void initNotationProviders(Object own) {
+        /* Careful; the owner is not yet set! */
+        if (notationProvider != null) {
+            notationProvider.cleanListener(this, own);
+        }
+        if (Model.getFacade().isAModelElement(own)) {
+            notationProvider =
+                NotationProviderFactory2.getInstance().getNotationProvider(
+                        NotationProviderFactory2.TYPE_MULTIPLICITY, own, this);
+        }
+    }
 }
 
 /**

Modified: trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java?view=diff&rev=13107&p1=trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java&p2=trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java&r1=13106&r2=13107
==============================================================================
--- trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java	(original)
+++ trunk/src_new/org/argouml/uml/diagram/ui/FigAssociationEnd.java	2007-07-22 11:22:09-0700
@@ -29,16 +29,12 @@
 import java.beans.PropertyChangeEvent;
 
 import org.apache.log4j.Logger;
-import org.argouml.application.events.ArgoEventPump;
-import org.argouml.application.events.ArgoEventTypes;
-import org.argouml.application.events.ArgoHelpEvent;
-import org.argouml.i18n.Translator;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.AssociationChangeEvent;
 import org.argouml.model.AttributeChangeEvent;
 import org.argouml.model.Model;
+import org.argouml.notation.NotationProvider;
 import org.argouml.notation.NotationProviderFactory2;
-import org.argouml.notation.providers.uml.NotationUtilityUml;
 import org.tigris.gef.base.Layer;
 import org.tigris.gef.base.PathConvPercentPlusConst;
 import org.tigris.gef.presentation.FigText;
@@ -47,7 +43,11 @@
  * Class to display graphics for N-ary association edges (association ends).<p>
  *
  * This class represents an association End Fig on a diagram, 
- * i.e. the line between the diamond and a node (like a class).
+ * i.e. the line between the diamond and a node (like a class). <p>
+ * 
+ * This class makes use of 2 NotationProviders: 
+ * one for the association end name, 
+ * and one for the multiplicity.
  *
  * @author [email protected]
  */
@@ -65,6 +65,11 @@
     private FigText srcOrdering;
     
     private Logger LOG = Logger.getLogger(FigAssociationEnd.class);
+    
+    /**
+     * The notation provider for the multiplicity.
+     */
+    private NotationProvider multiplicityNotationProvider;
 
     /**
      * The constructor.
@@ -126,6 +131,19 @@
         return NotationProviderFactory2.TYPE_ASSOCIATION_END_NAME;
     }
 
+    @Override
+    protected void initNotationProviders(Object own) {
+        if (multiplicityNotationProvider != null) {
+            multiplicityNotationProvider.cleanListener(this, own);
+        }
+        super.initNotationProviders(own);
+        if (Model.getFacade().isAAssociationEnd(own)) {
+            multiplicityNotationProvider =
+                NotationProviderFactory2.getInstance().getNotationProvider(
+                        NotationProviderFactory2.TYPE_MULTIPLICITY, own, this);
+        }
+    }
+
     /*
      * @see org.argouml.uml.diagram.ui.FigEdgeModelElement#updateListeners(java.lang.Object)
      */
@@ -180,22 +198,8 @@
             /* The text the user has filled in the textfield is first checked
              * to see if it's a valid multiplicity. If so then that is the 
              * multiplicity to be set. If not the input is rejected. */
-            String msg =
-                Translator.localize("statusmsg.bar.error.parsing.multiplicity");
-            Object multi = null;
-            try {
-                multi = Model.getDataTypesFactory().createMultiplicity(
-                        srcMult.getText());
-                Model.getCoreHelper().setMultiplicity(getOwner(), multi);
-            } catch (IllegalArgumentException e) {
-                Object[] args = {e.getLocalizedMessage()};
-                ArgoEventPump.fireEvent(new ArgoHelpEvent(
-                        ArgoEventTypes.HELP_CHANGED, this,
-                    Translator.messageFormat(msg, args)));
-                srcMult.setText(NotationUtilityUml.generateMultiplicity(
-                        Model.getFacade().getMultiplicity(getOwner())));
-            }            
-            
+            multiplicityNotationProvider.parse(getOwner(), ft.getText());
+            ft.setText(multiplicityNotationProvider.toString(getOwner(), null));
         }
     }
 
@@ -205,7 +209,7 @@
     @Override
     protected void textEditStarted(FigText ft) {
         if (ft == srcMult) {
-            showHelp("parsing.help.fig-association-source-multiplicity");
+            showHelp(multiplicityNotationProvider.getParsingHelp());
         } else {
             super.textEditStarted(ft);
         }
@@ -219,8 +223,10 @@
             throw new IllegalArgumentException();
         }
 
-        Object multi = Model.getFacade().getMultiplicity(owner);
-        multiToUpdate.setText(NotationUtilityUml.generateMultiplicity(multi));
+        if (multiplicityNotationProvider != null) {
+            multiToUpdate.setText(
+                    multiplicityNotationProvider.toString(getOwner(), null));
+        }
 
         Object order = Model.getFacade().getOrdering(owner);
         orderingToUpdate.setText(getOrderingName(order));
@@ -235,6 +241,10 @@
         if (e instanceof AttributeChangeEvent
                 || e instanceof AssociationChangeEvent) {
             renderingChanged();
+            if (multiplicityNotationProvider != null) {
+                multiplicityNotationProvider.updateListener(this, 
+                        getOwner(), e);
+            }
         }
     }
 
@@ -257,6 +267,12 @@
         /* There is none... */
     }
 
+    @Override
+    protected void removeFromDiagramImpl() {
+        multiplicityNotationProvider.cleanListener(this, getOwner());
+        super.removeFromDiagramImpl();
+    }
+
     /*
      * @see org.argouml.uml.diagram.ui.FigEdgeModelElement#paintClarifiers(java.awt.Graphics)
      */

Modified: trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java?view=diff&rev=13107&p1=trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java&p2=trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java&r1=13106&r2=13107
==============================================================================
--- trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java	(original)
+++ trunk/src_new/org/argouml/uml/diagram/ui/FigSingleLineText.java	2007-07-22 11:22:09-0700
@@ -140,7 +140,7 @@
                     this, 
                     owner, 
                     properties);
-            setText();
+            setText(); // TODO: MVW: Remove this!
         }
     }
     
@@ -157,7 +157,11 @@
         if (getOwner() != null
                 && properties != null
                 && pce instanceof AttributeChangeEvent) {
-            assert Arrays.asList(properties).contains(pce.getPropertyName());
+            /* TODO: Why does it fail for changing 
+             * the name of an associationend?
+             *  Why should it pass? */
+            //assert Arrays.asList(properties).contains(pce.getPropertyName()) 
+            //  : pce.getPropertyName(); 
             setText();
         }
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.