Index: org/exolab/castor/builder/SGTypes.java =================================================================== RCS file: /home/projects/castor/scm/castor/src/main/org/exolab/castor/builder/SGTypes.java,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 SGTypes.java --- org/exolab/castor/builder/SGTypes.java 3 Mar 2003 07:07:44 -0000 1.1.1.1 +++ org/exolab/castor/builder/SGTypes.java 22 Aug 2005 17:16:14 -0000 @@ -45,6 +45,7 @@ package org.exolab.castor.builder; + import org.exolab.javasource.*; @@ -111,5 +112,6 @@ public static final JClass Stack = new JClass("java.util.Stack"); public static final JClass Vector = new JClass("java.util.Vector"); - + //-- java.beans + public static final JClass PropertyChangeSupport = new JClass("java.beans.PropertyChangeSupport"); } //-- SGTypes Index: org/exolab/castor/builder/SourceFactory.java =================================================================== RCS file: /home/projects/castor/scm/castor/src/main/org/exolab/castor/builder/SourceFactory.java,v retrieving revision 1.21 diff -u -r1.21 SourceFactory.java --- org/exolab/castor/builder/SourceFactory.java 23 Jun 2005 04:14:49 -0000 1.21 +++ org/exolab/castor/builder/SourceFactory.java 22 Aug 2005 17:16:15 -0000 @@ -794,15 +794,11 @@ parent.addImport("java.beans.PropertyChangeListener"); //-- add vector to hold listeners - String vName = "propertyChangeListeners"; - JField field = new JField(SGTypes.Vector, vName); - field.getModifiers().makePrivate(); + String vName = "propertyChangeSupport"; + JField field = new JField(SGTypes.PropertyChangeSupport, vName); + field.getModifiers().makePrivate(); parent.addField(field); - - JSourceCode jsc = parent.getConstructor(0).getSourceCode(); - jsc.add("propertyChangeListeners = new Vector();"); - //---------------------------------/ //- notifyPropertyChangeListeners -/ //---------------------------------/ @@ -832,27 +828,15 @@ jdDesc.setDescription("the new value of the property."); parent.addMethod(jMethod); - jsc = jMethod.getSourceCode(); + JSourceCode jsc = jMethod.getSourceCode(); //--fix for bug 1026 jsc.add("if ("); jsc.append(vName); jsc.append(" == null) return;"); - jsc.add("java.beans.PropertyChangeEvent event = new "); - jsc.append("java.beans.PropertyChangeEvent"); - jsc.append("(this, fieldName, oldValue, newValue);"); - jsc.add(""); - jsc.add("for (int i = 0; i < "); - jsc.append(vName); - jsc.append(".size(); i++) {"); - jsc.indent(); - jsc.add("((java.beans.PropertyChangeListener) "); - jsc.append(vName); - jsc.append(".elementAt(i))."); - jsc.append("propertyChange(event);"); - jsc.unindent(); - jsc.add("}"); - + jsc.add(vName); + jsc.append(".firePropertyChange(fieldName,oldValue,newValue);"); + //-----------------------------/ //- addPropertyChangeListener -/ //-----------------------------/ @@ -873,14 +857,21 @@ parent.addMethod(jMethod); jsc = jMethod.getSourceCode(); + + + jsc.add("if ("); + jsc.append(vName); + jsc.append(" == null) {"); + jsc.addIndented(vName+" = new java.beans.PropertyChangeSupport(this);"); + jsc.add("}"); jsc.add(vName); - jsc.append(".addElement(pcl);"); + jsc.append(".addPropertyChangeListener(pcl);"); //--------------------------------/ //- removePropertyChangeListener -/ //--------------------------------/ - jMethod = new JMethod(JType.Boolean,"removePropertyChangeListener"); + jMethod = new JMethod("removePropertyChangeListener"); desc = "Removes the given PropertyChangeListener "+ "from this classes list of ProperyChangeListeners."; @@ -893,15 +884,15 @@ jdDesc = jdc.getParamDescriptor("pcl"); jdDesc.setDescription(desc); - desc = "true if the given PropertyChangeListener was removed."; - jdc.addDescriptor(JDocDescriptor.createReturnDesc(desc)); - parent.addMethod(jMethod); jsc = jMethod.getSourceCode(); - jsc.add("return "); + jsc.add("if ("); jsc.append(vName); - jsc.append(".removeElement(pcl);"); + jsc.append(" == null) return;"); + + jsc.add(vName); + jsc.append(".removePropertyChangeListener(pcl);"); } //-- createPropertyChangeMethods