diff options
author | Paul Fullbright | 2012-10-30 19:01:41 +0000 |
---|---|---|
committer | Paul Fullbright | 2012-10-30 19:10:06 +0000 |
commit | 3487a7a97fda8e2192cb1d75c0215a121fbcd565 (patch) | |
tree | 5567269ee4dc576d661f91e01a01fa0340ef6b91 | |
parent | 6f83acd380e675a2d67e4d0d2fa6fd6854a527fe (diff) | |
download | webtools.dali-3487a7a97fda8e2192cb1d75c0215a121fbcd565.tar.gz webtools.dali-3487a7a97fda8e2192cb1d75c0215a121fbcd565.tar.xz webtools.dali-3487a7a97fda8e2192cb1d75c0215a121fbcd565.zip |
Added backpointer to ELJaxbPackage->OxmFile relationship
4 files changed, 35 insertions, 8 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmFile.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmFile.java index 7703e819b4..aa5b967f3f 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmFile.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmFile.java @@ -30,9 +30,16 @@ public interface OxmFile String getPackageName();
- /** Convenience: will return the package associated with the package name */
+
+ // ***** package *****
+
+ static final String PACKAGE_PROPERTY = "package"; //$NON-NLS-1$
+
ELJaxbPackage getPackage();
+ /** NB: not API. Used internally only. */
+ void setPackage(ELJaxbPackage newPackage);
+
// ***** xml bindings *****
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/ELJaxbPackageImpl.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/ELJaxbPackageImpl.java index 23477391e4..0b5ca4cf34 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/ELJaxbPackageImpl.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/ELJaxbPackageImpl.java @@ -49,6 +49,14 @@ public class ELJaxbPackageImpl }
protected void setOxmFile(OxmFile oxmFile) {
+ if (valuesAreDifferent(this.oxmFile, oxmFile)) {
+ this.oxmFile.setPackage(null);
+ setOxmFile_(oxmFile);
+ oxmFile.setPackage(this);
+ }
+ }
+
+ protected void setOxmFile_(OxmFile oxmFile) {
OxmFile old = this.oxmFile;
this.oxmFile = oxmFile;
firePropertyChanged(OXM_FILE_PROPERTY, old, oxmFile);
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmFileImpl.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmFileImpl.java index 400c44d073..606858d239 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmFileImpl.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmFileImpl.java @@ -14,7 +14,6 @@ import org.eclipse.core.resources.IResource; import org.eclipse.jpt.common.core.JptResourceType;
import org.eclipse.jpt.common.core.resource.xml.JptXmlResource;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.jaxb.core.internal.context.AbstractJaxbContextNode;
import org.eclipse.jpt.jaxb.eclipselink.core.context.ELJaxbContextRoot;
import org.eclipse.jpt.jaxb.eclipselink.core.context.ELJaxbPackage;
@@ -38,7 +37,10 @@ public class OxmFileImpl * The resource type will only change if the XML file's version changes * (since, if the content type changes, we get garbage-collected). */ - protected JptResourceType resourceType; + protected JptResourceType resourceType;
+
+ /** backpointer */
+ protected ELJaxbPackage elJaxbPackage; /** * The root element of the oxm file. @@ -71,11 +73,6 @@ public class OxmFileImpl public String getPackageName() { return (this.xmlBindings == null) ? null : this.xmlBindings.getPackageName(); - }
-
- public ELJaxbPackage getPackage() {
- String packageName = getPackageName();
- return (StringTools.isBlank(packageName)) ? null : (ELJaxbPackage) getContextRoot().getPackage(packageName);
} @@ -95,6 +92,19 @@ public class OxmFileImpl if (this.xmlBindings != null) {
this.xmlBindings.update();
}
+ }
+
+
+ // ***** package *****
+
+ public ELJaxbPackage getPackage() {
+ return this.elJaxbPackage;
+ }
+
+ public void setPackage(ELJaxbPackage newPackage) {
+ ELJaxbPackage oldPackage = this.elJaxbPackage;
+ this.elJaxbPackage = newPackage;
+ firePropertyChanged(PACKAGE_PROPERTY, oldPackage, newPackage);
} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.ui/src/org/eclipse/jpt/jaxb/eclipselink/ui/internal/navigator/OxmFileContentProvider.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.ui/src/org/eclipse/jpt/jaxb/eclipselink/ui/internal/navigator/OxmFileContentProvider.java index 666de515e2..05fc6a2717 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.ui/src/org/eclipse/jpt/jaxb/eclipselink/ui/internal/navigator/OxmFileContentProvider.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.ui/src/org/eclipse/jpt/jaxb/eclipselink/ui/internal/navigator/OxmFileContentProvider.java @@ -31,6 +31,8 @@ public class OxmFileContentProvider public ELJaxbPackage getParent() {
+ // don't need to worry about change notification, as if the parent package changes,
+ // this node will be represented in a different place in the tree
return this.item.getPackage();
}
|