75303 - applied fix from Dan Berg
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java index 5a712af..f9737e1 100644 --- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java +++ b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java
@@ -11,7 +11,7 @@ package org.eclipse.jem.internal.adapters.jdom; /* * $RCSfile: JavaClassJDOMAdaptor.java,v $ - * $Revision: 1.10.2.2 $ $Date: 2004/09/29 16:31:02 $ + * $Revision: 1.10.2.3 $ $Date: 2004/09/29 16:31:49 $ */ import java.util.*; @@ -86,19 +86,20 @@ // It is an existing method. So just put over to newExisting. Then flush it. newExisting.put(ifield, field); // Since this is a new method, it is not attached to a resource, so we need to explicitly create the adapter. - adapter = (JavaFieldJDOMAdaptor) getAdapterFactory().adaptNew(field, ReadAdaptor.TYPE_KEY); - if (adapter != null) { + adapter = (JavaFieldJDOMAdaptor) EcoreUtil.getExistingAdapter(field, ReadAdaptor.TYPE_KEY); + if (adapter == null) + adapter = (JavaFieldJDOMAdaptor) getAdapterFactory().adaptNew(field, ReadAdaptor.TYPE_KEY); + else adapter.flushReflectedValuesIfNecessaryNoNotification(true); - adapter.setSourceField(ifield); // Give it this new IField - } + adapter.setSourceField(ifield); // Give it this new IField } else { // It is a new method. Create the new method, add to newExisting, and add to newMethods list. field = createJavaField(ifield, resource); newExisting.put(ifield, field); newFields.add(field); - adapter = (JavaFieldJDOMAdaptor) retrieveAdaptorFrom(field); + adapter = (JavaFieldJDOMAdaptor) getAdapterFactory().adaptNew(field, ReadAdaptor.TYPE_KEY); if (adapter != null) - adapter.setSourceField(fields[i]); + adapter.setSourceField(ifield); } }