Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Fullbright2012-10-30 19:01:41 +0000
committerPaul Fullbright2012-10-30 19:10:06 +0000
commit3487a7a97fda8e2192cb1d75c0215a121fbcd565 (patch)
tree5567269ee4dc576d661f91e01a01fa0340ef6b91
parent6f83acd380e675a2d67e4d0d2fa6fd6854a527fe (diff)
downloadwebtools.dali-3487a7a97fda8e2192cb1d75c0215a121fbcd565.tar.gz
webtools.dali-3487a7a97fda8e2192cb1d75c0215a121fbcd565.tar.xz
webtools.dali-3487a7a97fda8e2192cb1d75c0215a121fbcd565.zip
Added backpointer to ELJaxbPackage->OxmFile relationship
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmFile.java9
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/ELJaxbPackageImpl.java8
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmFileImpl.java24
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.ui/src/org/eclipse/jpt/jaxb/eclipselink/ui/internal/navigator/OxmFileContentProvider.java2
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();
}

Back to the top