diff options
author | kmoore | 2007-05-23 14:41:30 +0000 |
---|---|---|
committer | kmoore | 2007-05-23 14:41:30 +0000 |
commit | 85fcb5703de9408510ef6525a21f68216787e80b (patch) | |
tree | 817b96de6e4ea42a6a9de743518750a5a85548a3 /jpa/plugins/org.eclipse.jpt.core | |
parent | 03504d53a15893705058839282b8f2735a4223ba (diff) | |
download | webtools.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')
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) { |