Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2007-05-23 14:41:30 +0000
committerkmoore2007-05-23 14:41:30 +0000
commit85fcb5703de9408510ef6525a21f68216787e80b (patch)
tree817b96de6e4ea42a6a9de743518750a5a85548a3 /jpa/plugins/org.eclipse.jpt.core
parent03504d53a15893705058839282b8f2735a4223ba (diff)
downloadwebtools.dali-85fcb5703de9408510ef6525a21f68216787e80b.tar.gz
webtools.dali-85fcb5703de9408510ef6525a21f68216787e80b.tar.xz
webtools.dali-85fcb5703de9408510ef6525a21f68216787e80b.zip
188435 - exception populating attribute overrides composite
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaCascade.java3
2 files changed, 50 insertions, 1 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java
index f96d9fab33..47483895e5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java
@@ -448,6 +448,54 @@ public class JavaAssociationOverride extends JavaOverride
return null;
}
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ updateSpecifiedJoinColumnsFromJava(astRoot);
+ }
+
+ /**
+ * here we just worry about getting the join column lists the same size;
+ * then we delegate to the join columns to synch themselves up
+ */
+ private void updateSpecifiedJoinColumnsFromJava(CompilationUnit astRoot) {
+ // synchronize the model join columns with the Java source
+ List<IJoinColumn> joinColumns = getSpecifiedJoinColumns();
+ int persSize = joinColumns.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaJoinColumn joinColumn = (JavaJoinColumn) joinColumns.get(i);
+ if (joinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ joinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model join columns beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ joinColumns.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaJoinColumn joinColumn = this.createJavaJoinColumn(javaSize);
+ if (joinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getSpecifiedJoinColumns().add(joinColumn);
+ joinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
static JavaAssociationOverride createAssociationOverride(Owner owner, Member member, int index) {
return JpaJavaMappingsFactory.eINSTANCE.createJavaAssociationOverride(owner, member, buildAnnotationAdapter(index));
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaCascade.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaCascade.java
index 5be748d61b..d5998f5f61 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaCascade.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaCascade.java
@@ -10,6 +10,7 @@
package org.eclipse.jpt.core.internal.content.java.mappings;
import java.util.Collection;
+import java.util.List;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -186,7 +187,7 @@ public class JavaCascade extends JavaEObject implements ICascade
private void updateJavaAnnotation(boolean isSet, CascadeType cascadeType) {
String[] javaValue = this.cascadeAdapter.getValue();
CascadeType[] cascadeTypes = CascadeType.fromJavaAnnotationValue(javaValue);
- Collection<CascadeType> cascadeCollection = CollectionTools.collection(cascadeTypes);
+ List<CascadeType> cascadeCollection = CollectionTools.list(cascadeTypes);
if (cascadeCollection.contains(cascadeType)) {
if (!isSet) {
if (javaValue.length == 1) {

Back to the top