Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 219539 Details for
Bug 373582
XML code completion proposals for class references
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
proposed patch
373582_08_02_2012.patch (text/plain), 94.62 KB, created by
Nan Li
on 2012-08-03 12:15:48 EDT
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Nan Li
Created:
2012-08-03 12:15:48 EDT
Size:
94.62 KB
patch
obsolete
>diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/MappingTools.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/MappingTools.java >index fa76e4b..a82d9ed 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/MappingTools.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/MappingTools.java >@@ -9,16 +9,28 @@ > ******************************************************************************/ > package org.eclipse.jpt.jpa.core.internal.context; > >+import java.util.ArrayList; >+import java.util.Collection; >+import java.util.List; >+import java.util.Map; >+import java.util.Set; > import org.eclipse.core.resources.IResource; >+import org.eclipse.jdt.core.ICompilationUnit; >+import org.eclipse.jdt.core.IJavaElement; > import org.eclipse.jdt.core.IJavaProject; >+import org.eclipse.jdt.core.IPackageFragment; >+import org.eclipse.jdt.core.IPackageFragmentRoot; > import org.eclipse.jdt.core.IType; >+import org.eclipse.jdt.core.JavaModelException; > import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNode; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; > import org.eclipse.jpt.common.utility.internal.ArrayTools; > import org.eclipse.jpt.common.utility.internal.ClassName; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.ReflectionTools; > import org.eclipse.jpt.common.utility.internal.Transformer; >+import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; > import org.eclipse.jpt.jpa.core.context.AttributeMapping; > import org.eclipse.jpt.jpa.core.context.Column; > import org.eclipse.jpt.jpa.core.context.ColumnMapping; >@@ -35,6 +47,7 @@ > import org.eclipse.jpt.jpa.core.context.RelationshipMapping; > import org.eclipse.jpt.jpa.core.context.TypeMapping; > import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; >+import org.eclipse.jpt.jpa.core.internal.plugin.JptJpaCorePlugin; > import org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0; > import org.eclipse.jpt.jpa.core.jpa2.context.CollectionMapping2_0; > import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; >@@ -486,6 +499,77 @@ > (resourceNode instanceof SourceNode); > } > >+ /** >+ * Returns sorted names of types of the given project >+ */ >+ public static Iterable<String> getSortedJavaTypeNames(IJavaProject javaProject) { >+ return CollectionTools.sort(getJavaTypeNames(javaProject)); >+ } >+ >+ /** >+ * Returns the names of types of the given project >+ */ >+ public static Iterable<String> getJavaTypeNames(IJavaProject javaProject) { >+ return new TransformationIterable<IType, String>(getJavaTypes(javaProject)) { >+ @Override >+ protected String transform(IType type) { >+ return type.getFullyQualifiedName(); >+ } >+ }; >+ } >+ >+ /** >+ * Returns all the types cross the given project >+ */ >+ public static Iterable<IType> getJavaTypes(IJavaProject javaProject) { >+ List<IType> typesList = new ArrayList<IType>(); >+ try { >+ IPackageFragmentRoot[] pkgRoots = javaProject.getAllPackageFragmentRoots(); >+ for (IPackageFragmentRoot root : pkgRoots) { >+ IJavaElement[] jElements = root.getChildren(); >+ for (IJavaElement jElement : jElements) { >+ if (jElement.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { >+ ICompilationUnit[] units = ((IPackageFragment) jElement).getCompilationUnits(); >+ for (ICompilationUnit unit : units) { >+ CollectionTools.addAll(typesList, unit.getTypes()); >+ } >+ } >+ } >+ } >+ } catch (JavaModelException e) { >+ JptJpaCorePlugin.instance().logError(e); >+ } >+ return typesList; >+ } >+ >+ /** >+ * Returns the names of primitives >+ */ >+ public static Iterable<String> getPrimitiveClassNames() { >+ List<String> names = new ArrayList<String>(); >+ names.add(boolean.class.getName()); >+ names.add(byte.class.getName()); >+ names.add(char.class.getName()); >+ names.add(double.class.getName()); >+ names.add(float.class.getName()); >+ names.add(int.class.getName()); >+ names.add(long.class.getName()); >+ names.add(short.class.getName()); >+ names.add(String.class.getSimpleName()); >+ return names; >+ } >+ >+ /** >+ * Returns the names of collection types >+ */ >+ public static Iterable<String> getCollectionTypeNames() { >+ List<String> names = new ArrayList<String>(); >+ names.add(Collection.class.getName()); >+ names.add(List.class.getName()); >+ names.add(Map.class.getName()); >+ names.add(Set.class.getName()); >+ return names; >+ } > > // ********** constructor ********** > >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java >index 273ca0e..1ee73cd 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java >@@ -1217,7 +1217,7 @@ > return result; > } > } >- return EmptyIterable.instance(); >+ return null; > } > > @Override >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java >index a94e4ce..35f4b3f 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java >@@ -1994,6 +1994,10 @@ > if (result != null) { > return result; > } >+ result = this.idClassReference.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } > return null; > } > >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappedSuperclass.java >index 94da3f2..64ba554 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappedSuperclass.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappedSuperclass.java >@@ -219,4 +219,19 @@ > protected PrimaryKeyTextRangeResolver buildTextRangeResolver() { > return new OrmMappedSuperclassTextRangeResolver(this); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ result = this.idClassReference.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ return null; >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java >index 8cc63ff..7297ed8 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java >@@ -867,6 +867,13 @@ > return this.getTargetEntityNonTransientAttributeNames(); > } > >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateMapKeyClassNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ MappingTools.getPrimitiveClassNames() >+ ); >+ } > > // ********** metamodel ********** > >@@ -1085,6 +1092,9 @@ > if (this.mapKeyNameTouches(pos)) { > return this.getCandidateMapKeyNames(); > } >+ if (this.mapKeyClassTouches(pos)) { >+ return this.getCandidateMapKeyClassNames(); >+ } > result = this.mapKeyColumn.getXmlCompletionProposals(pos); > if (result != null) { > return result; >@@ -1107,7 +1117,12 @@ > } > > protected boolean mapKeyNameTouches(int pos) { >- return this.xmlAttributeMapping.mapKeyNameTouches(pos); >+ return this.getXmlMapKey() == null? false : this.getXmlMapKey().mapKeyNameTouches(pos); >+ } >+ >+ protected boolean mapKeyClassTouches(int pos) { >+ return this.xmlAttributeMapping.getMapKeyClass() == null ? false : >+ this.xmlAttributeMapping.getMapKeyClass().classNameTouches(pos); > } > > // ********** abstract owner ********** >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java >index 3af6e59..3c17d6e 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java >@@ -32,6 +32,7 @@ > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; > import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipMapping; > import org.eclipse.jpt.jpa.core.internal.context.AttributeMappingTools; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmCascade; > import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; > import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; >@@ -455,6 +456,17 @@ > if (result != null) { > return result; > } >+ if (this.targetEntityTouches(pos)) { >+ return this.getCandidateTargetEntityClassNames(); >+ } > return null; > } >+ >+ protected boolean targetEntityTouches(int pos) { >+ return this.xmlAttributeMapping.targetEntityTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateTargetEntityClassNames() { >+ return MappingTools.getSortedJavaTypeNames(getJavaProject()); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java >index ffb0353..4d6a232 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java >@@ -39,6 +39,7 @@ > import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; > import org.eclipse.jpt.jpa.core.internal.context.AttributeMappingTools; > import org.eclipse.jpt.jpa.core.internal.context.JptValidator; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTextRangeResolver; > import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools; > import org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericTypeMappingValidator; >@@ -619,43 +620,11 @@ > return null; > } > >- private Iterable<String> getCandidateClassNames() { >- final String packageName = this.getEntityMappings().getPackage(); >- if (!StringTools.stringIsEmpty(packageName)) { >- return new TransformationIterable<String, String>(this.getFilteredCandidateClassNames(packageName)) { >- @Override >- protected String transform(String className) { >- return className.substring(packageName.length()+1); >- } >- }; >- } >- return this.getCandidateFullyQualifiedClassNames(); >- } >- >- private Iterable<String> getFilteredCandidateClassNames(final String packageName) { >- return new FilteringIterable<String>(this.getCandidateFullyQualifiedClassNames()) { >- @Override >- protected boolean accept(String className) { >- return className.startsWith(packageName); >- } >- }; >+ protected Iterable<String> getCandidateClassNames() { >+ return MappingTools.getSortedJavaTypeNames(this.getJavaProject()); > } > >- /** >- * @return names of the classes specified by class refs and jar files >- */ >- // should return names of all the classes defined in the project? >- private Iterable<String> getCandidateFullyQualifiedClassNames() { >- return new TransformationIterable<PersistentType, String>( >- this.getPersistenceUnit().getJavaPersistentTypes()) { >- @Override >- protected String transform(PersistentType pType) { >- return pType.getName(); >- } >- }; >- } >- >- private boolean classNameTouches(int pos) { >+ protected boolean classNameTouches(int pos) { > return this.getXmlTypeMapping().classNameTouches(pos); > } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java >index 38c092c..85f456c 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java >@@ -27,6 +27,7 @@ > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType; > import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; > import org.eclipse.jpt.jpa.core.internal.context.AbstractXmlContextNode; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; > import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; > import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; >@@ -444,4 +445,26 @@ > XmlClassReference xmlIdClassRef = this.getXmlIdClassRef(); > return (xmlIdClassRef == null) ? null : xmlIdClassRef.getClassNameTextRange(); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.idCLassNameTouches(pos)) { >+ return this.getCandidateIdClassNames(); >+ } >+ return null; >+ } >+ >+ protected Iterable<String> getCandidateIdClassNames() { >+ return MappingTools.getSortedJavaTypeNames(this.getJavaProject()); >+ } >+ >+ protected boolean idCLassNameTouches(int pos) { >+ return this.getXmlIdClassRef() == null ? false : this.getXmlIdClassRef().classNameTouches(pos); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java >index 1afa139..f6dd61c 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java >@@ -1775,6 +1775,12 @@ > if (result != null) { > return result; > } >+ if (this.targetClassTouches(pos)) { >+ return this.getCandidateClassNames(); >+ } >+ if (this.mapKeyClassTouches(pos)) { >+ return this.getCandidateClassNames(); >+ } > if (this.mapKeyNameTouches(pos)) { > return this.getCandidateMapKeyNames(); > } >@@ -1798,9 +1804,26 @@ > } > return null; > } >- >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateClassNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ MappingTools.getPrimitiveClassNames() >+ ); >+ } >+ >+ protected boolean targetClassTouches(int pos) { >+ return this.xmlAttributeMapping.targetClassTouches(pos); >+ } >+ >+ protected boolean mapKeyClassTouches(int pos) { >+ return this.xmlAttributeMapping.getMapKeyClass() == null ? false : >+ this.xmlAttributeMapping.getMapKeyClass().classNameTouches(pos); >+ } >+ > protected boolean mapKeyNameTouches(int pos) { >- return this.xmlAttributeMapping.mapKeyNameTouches(pos); >+ return this.getXmlMapKey() == null ? false : this.getXmlMapKey().mapKeyNameTouches(pos); > } > > // ********** abstract owner ********** >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlMultiRelationshipMapping.java >index 53a7fb2..8654b43 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlMultiRelationshipMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlMultiRelationshipMapping.java >@@ -1130,17 +1130,8 @@ > return getAttributeCodeAssistTextRange(JPA.MAPPED_BY); > } > >- public TextRange getMapKeyNameCodeAssistTextRange() { >- return getAttributeCodeAssistTextRange(JPA.MAP_KEY); >- } >- > public boolean mappedByTouches(int pos) { > TextRange textRange = this.getMappedByCodeAssistTextRange(); > return (textRange!= null) && textRange.touches(pos); >- } >- >- public boolean mapKeyNameTouches(int pos) { >- TextRange textRange = this.getMapKeyNameCodeAssistTextRange(); >- return (textRange != null) && textRange.touches(pos); > } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlRelationshipMapping.java >index c7e73f0..aaa62df 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlRelationshipMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/AbstractXmlRelationshipMapping.java >@@ -406,4 +406,14 @@ > return new ReplaceEdit(offset, packageLength, newPackageName); > } > >+ // *********** content assist ************ >+ >+ public TextRange getTargetEntityCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(JPA.TARGET_ENTITY); >+ } >+ >+ public boolean targetEntityTouches(int pos) { >+ TextRange textRange = this.getTargetEntityCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } // RelationshipMapping >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/MapKey.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/MapKey.java >index 5eec067..eca2906 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/MapKey.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/MapKey.java >@@ -14,6 +14,7 @@ > import org.eclipse.emf.ecore.EStructuralFeature; > import org.eclipse.emf.ecore.impl.ENotificationImpl; > import org.eclipse.jpt.common.core.internal.utility.translators.SimpleTranslator; >+import org.eclipse.jpt.common.core.utility.TextRange; > import org.eclipse.jpt.jpa.core.resource.xml.AbstractJpaEObject; > import org.eclipse.jpt.jpa.core.resource.xml.JpaEObject; > import org.eclipse.wst.common.internal.emf.resource.Translator; >@@ -218,4 +219,14 @@ > return new Translator(JPA.NAME, OrmPackage.eINSTANCE.getMapKey_Name(), Translator.DOM_ATTRIBUTE); > } > >+ // ********** content assist *************** >+ >+ public TextRange getMapKeyNameCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(JPA.NAME); >+ } >+ >+ public boolean mapKeyNameTouches(int pos) { >+ TextRange textRange = this.getMapKeyNameCodeAssistTextRange(); >+ return (textRange != null) && textRange.touches(pos); >+ } > } // MapKey >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlClassReference.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlClassReference.java >index e27127c..9d53bcd 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlClassReference.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlClassReference.java >@@ -252,4 +252,15 @@ > return new ReplaceEdit(offset, packageLength, newPackageName); > } > >+ // ********** content assist *************** >+ >+ public TextRange getClassNameCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(JPA.CLASS); >+ } >+ >+ public boolean classNameTouches(int pos) { >+ TextRange textRange = this.getClassNameCodeAssistTextRange(); >+ return (textRange != null) && textRange.touches(pos); >+ } >+ > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlElementCollection.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlElementCollection.java >index ab7a997..97b8f76 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlElementCollection.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/orm/XmlElementCollection.java >@@ -1695,13 +1695,12 @@ > > // ********** content assist *************** > >- public TextRange getMapKeyNameCodeAssistTextRange() { >- return getAttributeCodeAssistTextRange(JPA.MAP_KEY); >+ public TextRange getTargetClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(JPA2_0.TARGET_CLASS); > } > >- public boolean mapKeyNameTouches(int pos) { >- TextRange textRange = this.getMapKeyNameCodeAssistTextRange(); >- return (textRange != null) && textRange.touches(pos); >+ public boolean targetClassTouches(int pos) { >+ TextRange textRange = this.getTargetClassCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); > } >- > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java >index fb7ae78..c628eb4 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkEntityMappingsImpl.java >@@ -704,4 +704,19 @@ > super.validate(messages, reporter); > this.converterContainer.validate(messages, reporter); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ result = this.converterContainer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ return null; >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkOrmElementCollectionMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkOrmElementCollectionMapping2_0.java >index 0fbdd72..8625d9c 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkOrmElementCollectionMapping2_0.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/EclipseLinkOrmElementCollectionMapping2_0.java >@@ -14,16 +14,19 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.StringTools; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmConverter; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.AbstractOrmElementCollectionMapping2_0; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkAccessType; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkElementCollectionMapping2_0; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmConvertibleMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLink2_0JpaPlatformFactory; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; >@@ -200,4 +203,35 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return MappingTools.getCollectionTypeNames(); >+ } >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkArrayMapping2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkArrayMapping2_3.java >index fcfe953..e647bca 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkArrayMapping2_3.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkArrayMapping2_3.java >@@ -12,6 +12,7 @@ > import java.util.List; > import org.eclipse.jdt.core.IPackageFragment; > import org.eclipse.jdt.core.IType; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.Converter; >@@ -27,6 +28,7 @@ > import org.eclipse.jpt.jpa.core.context.orm.OrmTemporalConverter; > import org.eclipse.jpt.jpa.core.context.orm.OrmXmlContextNodeFactory; > import org.eclipse.jpt.jpa.core.internal.context.JptValidator; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver; > import org.eclipse.jpt.jpa.core.internal.context.TableColumnTextRangeResolver; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmAttributeMapping; >@@ -41,6 +43,7 @@ > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkArrayMapping2_3; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmConvertibleMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlArray; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.v2_3.XmlAttributes_2_3; > import org.eclipse.text.edits.ReplaceEdit; >@@ -364,6 +367,33 @@ > if (result != null) { > return result; > } >+ if (this.targetClassTouches(pos)) { >+ return this.getCandidateTargetClassNames(); >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getcandidateAttributeTypeNames(); >+ } > return null; > } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected boolean targetClassTouches(int pos) { >+ return this.xmlAttributeMapping.targetClassTouches(pos); >+ } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateTargetClassNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ MappingTools.getPrimitiveClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } >+ >+ protected Iterable<String> getcandidateAttributeTypeNames() { >+ return MappingTools.getCollectionTypeNames(); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkBasicMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkBasicMapping.java >index 7bb026f..9a8f28c 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkBasicMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkBasicMapping.java >@@ -198,4 +198,26 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return MappingTools.getPrimitiveClassNames(); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkConverterContainerImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkConverterContainerImpl.java >index 34f83c6..b8acda4 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkConverterContainerImpl.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkConverterContainerImpl.java >@@ -621,4 +621,27 @@ > public XmlContextNode getParent() { > return (XmlContextNode) super.getParent(); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ for (OrmEclipseLinkCustomConverter converter : this.customConverterContainer.getContextElements()) { >+ result = converter.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ } >+ for (OrmEclipseLinkStructConverter converter : this.structConverterContainer.getContextElements()) { >+ result = converter.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ } >+ return null; >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomConverter.java >index 88f7523..e690dce 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomConverter.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomConverter.java >@@ -12,6 +12,7 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.utility.TextRange; > import org.eclipse.jpt.jpa.core.context.XmlContextNode; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomConverter; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.java.JavaEclipseLinkCustomConverter; >@@ -83,4 +84,26 @@ > super.convertFrom(javaConverter); > this.setConverterClass(javaConverter.getFullyQualifiedConverterClass()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.converterClassNameTouches(pos)) { >+ return this.getCandidateClassNames(); >+ } >+ return null; >+ } >+ >+ protected Iterable<String> getCandidateClassNames() { >+ return MappingTools.getSortedJavaTypeNames(this.getJavaProject()); >+ } >+ >+ protected boolean converterClassNameTouches(int pos) { >+ return this.xmlConverter.converterClassTouches(pos); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomizer.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomizer.java >index 6b0bd7b..819dabf 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomizer.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkCustomizer.java >@@ -19,6 +19,7 @@ > import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; > import org.eclipse.jpt.common.utility.internal.iterables.SingleElementIterable; > import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode; > import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; > import org.eclipse.jpt.jpa.core.resource.orm.XmlClassReference; >@@ -316,4 +317,26 @@ > XmlClassReference xmlClassRef = this.getXmlCustomizerClassRef(); > return (xmlClassRef == null) ? null : xmlClassRef.getClassNameTextRange(); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.customizerClassTouches(pos)) { >+ return this.getCandidateClassNames(); >+ } >+ return null; >+ } >+ >+ protected Iterable<String> getCandidateClassNames() { >+ return MappingTools.getSortedJavaTypeNames(this.getJavaProject()); >+ } >+ >+ protected boolean customizerClassTouches(int pos) { >+ return this.getXmlCustomizerClassRef()== null? false : this.getXmlCustomizerClassRef().classNameTouches(pos); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddableImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddableImpl.java >index ae750c9..e93b2c3 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddableImpl.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddableImpl.java >@@ -14,6 +14,7 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.NotNullFilter; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; >@@ -26,9 +27,10 @@ > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; > import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEmbeddable; >+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmPersistentType; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkEmbeddable; >-import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmPersistentType; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkDynamicTypeMappingValidator; >@@ -285,4 +287,34 @@ > protected TextRange getParentClassTextRange() { > return this.getValidationTextRange(this.xmlTypeMapping.getParentClassTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ result = this.customizer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ result = this.converterContainer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.xmlTypeMapping.parentClassTouches(pos)) { >+ return this.getCandidateParentClassNames(); >+ } >+ return null; >+ } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateParentClassNames() { >+ return new CompositeIterable<String>( >+ this.getCandidateClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedIdMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedIdMapping.java >index 3d9643a..a8605c5 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedIdMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedIdMapping.java >@@ -13,10 +13,14 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.StringTools; >+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.AbstractOrmEmbeddedIdMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkAccessType; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlEmbeddedId; >@@ -90,4 +94,30 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >\ No newline at end of file >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedMapping.java >index bbfb4b7..515b62c 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEmbeddedMapping.java >@@ -13,10 +13,14 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.StringTools; >+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.AbstractOrmEmbeddedMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkAccessType; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlEmbedded; >@@ -89,4 +93,30 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >\ No newline at end of file >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java >index eb03727..d2b09f5 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java >@@ -16,6 +16,7 @@ > import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; > import org.eclipse.jpt.common.core.resource.java.JavaResourceType; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.NotNullFilter; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; >@@ -40,14 +41,14 @@ > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkEntity; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLink2_3JpaPlatformFactory; >-import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaPlatformFactory.EclipseLinkJpaPlatformVersion; >+import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkDynamicTypeMappingValidator; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkEntityPrimaryKeyValidator; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkTypeMappingValidator; >-import org.eclipse.jpt.jpa.eclipselink.core.internal.plugin.JptJpaEclipseLinkCorePlugin; > import org.eclipse.jpt.jpa.eclipselink.core.resource.java.EclipseLinkClassExtractorAnnotation2_1; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlEntity; > import org.eclipse.text.edits.ReplaceEdit; >@@ -467,6 +468,7 @@ > > // ********** completion proposals ********** > >+ > @Override > public Iterable<String> getXmlCompletionProposals(int pos) { > Iterable<String> result = super.getXmlCompletionProposals(pos); >@@ -477,7 +479,32 @@ > if (result != null) { > return result; > } >+ result = this.customizer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ result = this.converterContainer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.xmlTypeMapping.parentClassTouches(pos)) { >+ return this.getCandidateParentClassNames(); >+ } >+ if (this.classExtractorTouches(pos)) { >+ return this.getCandidateClassNames(); >+ } > return null; > } > >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateParentClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } >+ >+ protected boolean classExtractorTouches(int pos) { >+ return this.getXmlClassExtractor() == null? false : this.getXmlClassExtractor().classNameTouches(pos); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkIdMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkIdMapping.java >index c6373d4..02bf566 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkIdMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkIdMapping.java >@@ -195,4 +195,26 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return MappingTools.getPrimitiveClassNames(); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToManyMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToManyMapping.java >index 0910c4d..451d3c2 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToManyMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToManyMapping.java >@@ -14,15 +14,18 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.StringTools; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmManyToManyMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkAccessType; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkManyToManyMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmConvertibleMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlManyToMany; >@@ -179,4 +182,44 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return MappingTools.getCollectionTypeNames(); >+ } >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateTargetEntityClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateTargetEntityClassNames(), >+ ((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames() >+ ); >+ } >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateMapKeyClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateMapKeyClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToOneMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToOneMapping.java >index 381c08a..28874d5 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToOneMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkManyToOneMapping.java >@@ -10,10 +10,13 @@ > package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm; > > import java.util.List; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; >+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmManyToOneMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkRelationshipMapping; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlManyToOne; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; >@@ -60,4 +63,15 @@ > super.validate(messages, reporter); > // TODO - join fetch validation > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateTargetEntityClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateTargetEntityClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMappedSuperclassImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMappedSuperclassImpl.java >index c2e2e80..33ba596 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMappedSuperclassImpl.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkMappedSuperclassImpl.java >@@ -14,6 +14,7 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.NotNullFilter; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; >@@ -31,19 +32,19 @@ > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; > import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMappedSuperclass; >+import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmPersistentType; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3; >-import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmPersistentType; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLink2_3JpaPlatformFactory; >-import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaPlatformFactory.EclipseLinkJpaPlatformVersion; >+import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkDynamicTypeMappingValidator; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkMappedSuperclassPrimaryKeyValidator; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.EclipseLinkMappedSuperclassValidator; >-import org.eclipse.jpt.jpa.eclipselink.core.internal.plugin.JptJpaEclipseLinkCorePlugin; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlMappedSuperclass; > import org.eclipse.text.edits.ReplaceEdit; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; >@@ -425,6 +426,25 @@ > if (result != null) { > return result; > } >+ result = this.customizer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ result = this.converterContainer.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.xmlTypeMapping.parentClassTouches(pos)) { >+ return this.getCandidateParentClassNames(); >+ } > return null; > } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateParentClassNames() { >+ return new CompositeIterable<String>( >+ this.getCandidateClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToManyMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToManyMapping.java >index 4468c91..f7a9882 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToManyMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToManyMapping.java >@@ -14,9 +14,11 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; > import org.eclipse.jpt.common.core.utility.TextRange; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; > import org.eclipse.jpt.common.utility.internal.StringTools; > import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmOneToManyMapping; > import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmOneToManyRelationship2_0; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkAccessType; >@@ -26,6 +28,7 @@ > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmConvertibleMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmOneToManyRelationship2_0; > import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.internal.DefaultEclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlOneToMany; >@@ -210,4 +213,44 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return MappingTools.getCollectionTypeNames(); >+ } >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateTargetEntityClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateTargetEntityClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateMapKeyClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateMapKeyClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToOneMapping.java >index fba1268..bde0711 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToOneMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkOneToOneMapping.java >@@ -10,11 +10,14 @@ > package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm; > > import java.util.List; >+import org.eclipse.jpt.common.utility.internal.CollectionTools; >+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmOneToOneMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkOneToOneMapping; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkPrivateOwned; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlOneToOne; > import org.eclipse.wst.validation.internal.provisional.core.IMessage; > import org.eclipse.wst.validation.internal.provisional.core.IReporter; >@@ -73,4 +76,15 @@ > super.validate(messages, reporter); > // TODO - private owned, join fetch validation > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateTargetEntityClassNames() { >+ return new CompositeIterable<String>( >+ super.getCandidateTargetEntityClassNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java >index 5ea9b0b..6e44d99 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructConverter.java >@@ -12,6 +12,7 @@ > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.utility.TextRange; > import org.eclipse.jpt.jpa.core.context.XmlContextNode; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkStructConverter; > import org.eclipse.jpt.jpa.eclipselink.core.internal.EclipseLinkJpaValidationMessages; > import org.eclipse.jpt.jpa.eclipselink.core.internal.context.java.JavaEclipseLinkStructConverter; >@@ -83,4 +84,26 @@ > super.convertFrom(javaConverter); > this.setConverterClass(javaConverter.getConverterClass()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.converterClassNameTouches(pos)) { >+ return this.getCandidateClassNames(); >+ } >+ return null; >+ } >+ >+ protected Iterable<String> getCandidateClassNames() { >+ return MappingTools.getSortedJavaTypeNames(this.getJavaProject()); >+ } >+ >+ protected boolean converterClassNameTouches(int pos) { >+ return this.xmlConverter.converterClassTouches(pos); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructureMapping2_3.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructureMapping2_3.java >index eb9be0e..2c0452e 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructureMapping2_3.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkStructureMapping2_3.java >@@ -9,11 +9,15 @@ > ******************************************************************************/ > package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm; > >+import org.eclipse.jpt.common.utility.internal.CollectionTools; >+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmAttributeMapping; > import org.eclipse.jpt.jpa.eclipselink.core.EclipseLinkMappingKeys; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkStructureMapping2_3; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.Attributes; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlStructure; > >@@ -60,4 +64,30 @@ > public void removeXmlAttributeMappingFrom(org.eclipse.jpt.jpa.core.resource.orm.Attributes xmlAttributes) { > ((Attributes) xmlAttributes).getStructures().remove(this.xmlAttributeMapping); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkTransformationMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkTransformationMapping.java >index 8bb804a..4d6b667 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkTransformationMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkTransformationMapping.java >@@ -9,11 +9,15 @@ > ******************************************************************************/ > package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm; > >+import org.eclipse.jpt.common.utility.internal.CollectionTools; >+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; > import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmAttributeMapping; > import org.eclipse.jpt.jpa.eclipselink.core.EclipseLinkMappingKeys; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkTransformationMapping; >+import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.Attributes; > import org.eclipse.jpt.jpa.eclipselink.core.resource.orm.XmlTransformation; > >@@ -60,4 +64,32 @@ > public void removeXmlAttributeMappingFrom(org.eclipse.jpt.jpa.core.resource.orm.Attributes xmlAttributes) { > ((Attributes) xmlAttributes).getTransformations().remove(this.xmlAttributeMapping); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ @SuppressWarnings("unchecked") >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ return new CompositeIterable<String>( >+ MappingTools.getSortedJavaTypeNames(getJavaProject()), >+ MappingTools.getPrimitiveClassNames(), >+ MappingTools.getCollectionTypeNames(), >+ CollectionTools.sort(((EclipseLinkPersistenceUnit) this.getPersistenceUnit()).getEclipseLinkDynamicPersistentTypeNames()) >+ ); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVariableOneToOneMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVariableOneToOneMapping.java >index 0e7351c..2698e70 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVariableOneToOneMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVariableOneToOneMapping.java >@@ -11,6 +11,7 @@ > > import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping; > import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; >+import org.eclipse.jpt.jpa.core.internal.context.MappingTools; > import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmAttributeMapping; > import org.eclipse.jpt.jpa.eclipselink.core.EclipseLinkMappingKeys; > import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkVariableOneToOneMapping; >@@ -44,4 +45,26 @@ > public void removeXmlAttributeMappingFrom(org.eclipse.jpt.jpa.core.resource.orm.Attributes xmlAttributes) { > ((Attributes) xmlAttributes).getVariableOneToOnes().remove(this.xmlAttributeMapping); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.targetInterfaceTouches(pos)) { >+ return this.getCandidateTargetInterfaceNames(); >+ } >+ return null; >+ } >+ >+ protected boolean targetInterfaceTouches(int pos) { >+ return this.xmlAttributeMapping.targetInterfaceTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateTargetInterfaceNames() { >+ return MappingTools.getSortedJavaTypeNames(getJavaProject()); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVersionMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVersionMapping.java >index 036b8b0..664b810 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVersionMapping.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkVersionMapping.java >@@ -9,8 +9,9 @@ > ******************************************************************************/ > package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm; > >+import java.sql.Timestamp; >+import java.util.ArrayList; > import java.util.List; >- > import org.eclipse.jdt.core.IPackageFragment; > import org.eclipse.jdt.core.IType; > import org.eclipse.jpt.common.core.internal.utility.JDTTools; >@@ -206,4 +207,34 @@ > protected TextRange getAttributeTypeTextRange() { > return this.getValidationTextRange(this.xmlAttributeMapping.getAttributeTypeTextRange()); > } >+ >+ // ********** completion proposals ********** >+ >+ @Override >+ public Iterable<String> getXmlCompletionProposals(int pos) { >+ Iterable<String> result = super.getXmlCompletionProposals(pos); >+ if (result != null) { >+ return result; >+ } >+ if (this.attributeTypeTouches(pos)) { >+ return this.getCandidateAttributeTypeNames(); >+ } >+ return null; >+ } >+ >+ protected boolean attributeTypeTouches(int pos) { >+ return this.xmlAttributeMapping.attributeTypeTouches(pos); >+ } >+ >+ protected Iterable<String> getCandidateAttributeTypeNames() { >+ List<String> names = new ArrayList<String>(); >+ names.add(int.class.getName()); >+ names.add(Integer.class.getSimpleName()); >+ names.add(short.class.getName()); >+ names.add(Short.class.getSimpleName()); >+ names.add(long.class.getName()); >+ names.add(Long.class.getSimpleName()); >+ names.add(Timestamp.class.getName()); >+ return names; >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlArray.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlArray.java >index 105a4a6..4c6c17b 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlArray.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlArray.java >@@ -1301,6 +1301,24 @@ > return (textRange != null) && (textRange.touches(pos)); > } > >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_3.ARRAY__ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ >+ public TextRange getTargetClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_3.ARRAY__TARGET_CLASS); >+ } >+ >+ public boolean targetClassTouches(int pos) { >+ TextRange textRange = this.getTargetClassCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > // ******** virtual attribute ************ > > public void setVirtualAttributeTypes(String attributeType, String targetClass) { >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasic.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasic.java >index b91bb27..4ea7fea 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasic.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasic.java >@@ -1755,6 +1755,15 @@ > return (textRange != null) && (textRange.touches(pos)); > } > >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > // ******** virtual attribute ************ > > public void setVirtualAttributeTypes(String attributeType, String targetType) { >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicCollection.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicCollection.java >index f73e7f0..48c088e 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicCollection.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicCollection.java >@@ -529,4 +529,15 @@ > public void setVirtualAttributeTypes(String attributeType, String targetType) { > this.setAttributeType(attributeType); > } >+ >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicMap.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicMap.java >index d755c8b..59a542e 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicMap.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlBasicMap.java >@@ -529,4 +529,15 @@ > public void setVirtualAttributeTypes(String attributeType, String targetType) { > this.setAttributeType(attributeType); > } >+ >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlConverter.java >index 4461506..eebfd52 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlConverter.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlConverter.java >@@ -253,4 +253,14 @@ > return new ReplaceEdit(offset, packageLength, newPackageName); > } > >+ // ********** content assist *************** >+ >+ public TextRange getConverterClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink.CONVERTER__CLASS); >+ } >+ >+ public boolean converterClassTouches(int pos) { >+ TextRange textRange = this.getConverterClassCodeAssistTextRange(); >+ return (textRange != null) && textRange.touches(pos); >+ } > } // XmlConverter >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlElementCollection.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlElementCollection.java >index 18ebb3f..255ad31 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlElementCollection.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlElementCollection.java >@@ -2405,6 +2405,15 @@ > return (textRange != null) && (textRange.touches(pos)); > } > >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > // ******** virtual attribute ************ > > public void setVirtualAttributeTypes(String attributeType, String targetClass) { >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddable.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddable.java >index f24a9aa..04d6f2e 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddable.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddable.java >@@ -1715,4 +1715,14 @@ > return XmlNoSql.buildTranslator(EclipseLink2_4.NO_SQL, EclipseLinkOrmV2_4Package.eINSTANCE.getXmlEmbeddable_2_4_NoSql()); > } > >+ // *********** content assist ************ >+ >+ public TextRange getParentClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.PARENT_CLASS); >+ } >+ >+ public boolean parentClassTouches(int pos) { >+ TextRange textRange = this.getParentClassCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbedded.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbedded.java >index 7c1634c..07d4929 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbedded.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbedded.java >@@ -569,4 +569,15 @@ > this.setAttributeType(attributeType); > } > >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddedId.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddedId.java >index 0087894..88825fa 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddedId.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEmbeddedId.java >@@ -462,4 +462,15 @@ > this.setAttributeType(attributeType); > } > >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEntity.java >index a2f8b60..2dba4e5 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEntity.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlEntity.java >@@ -3985,4 +3985,15 @@ > protected static Translator buildNoSqlTranslator() { > return XmlNoSql.buildTranslator(EclipseLink2_4.NO_SQL, EclipseLinkOrmV2_4Package.eINSTANCE.getXmlEntity_2_4_NoSql()); > } >+ >+ // *********** content assist ************ >+ >+ public TextRange getParentClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.PARENT_CLASS); >+ } >+ >+ public boolean parentClassTouches(int pos) { >+ TextRange textRange = this.getParentClassCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlId.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlId.java >index 8aabb7e..a37cb0c 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlId.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlId.java >@@ -1309,4 +1309,15 @@ > public void setVirtualAttributeTypes(String attributeType, String targetType) { > this.setAttributeType(attributeType); > } >+ >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlManyToMany.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlManyToMany.java >index c3e22ad..685591f 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlManyToMany.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlManyToMany.java >@@ -2115,4 +2115,15 @@ > this.setAttributeType(attributeType); > this.setTargetEntity(targetEntity); > } >+ >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlMappedSuperclass.java >index 38145dc..e15cf33 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlMappedSuperclass.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlMappedSuperclass.java >@@ -4122,4 +4122,15 @@ > protected static Translator buildUuidGeneratorTranslator() { > return XmlUuidGenerator.buildTranslator(EclipseLink2_4.UUID_GENERATOR, EclipseLinkOrmV2_4Package.eINSTANCE.getXmlGeneratorContainer2_4_UuidGenerator()); > } >+ >+ // *********** content assist ************ >+ >+ public TextRange getParentClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.PARENT_CLASS); >+ } >+ >+ public boolean parentClassTouches(int pos) { >+ TextRange textRange = this.getParentClassCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlOneToMany.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlOneToMany.java >index 6203eb5..f612ab7 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlOneToMany.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlOneToMany.java >@@ -2278,4 +2278,15 @@ > this.setAttributeType(attributeType); > this.setTargetEntity(targetEntity); > } >+ >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructConverter.java >index 9b2715f..7d86003 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructConverter.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructConverter.java >@@ -257,4 +257,15 @@ > int offset = getAttributeNode(EclipseLink.STRUCT_CONVERTER__CONVERTER).getValueRegionStartOffset() + 1; // +1 = opening double quote > return new ReplaceEdit(offset, packageLength, newPackageName); > } >+ >+ // ********** content assist *************** >+ >+ public TextRange getConverterClassCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink.STRUCT_CONVERTER__CONVERTER); >+ } >+ >+ public boolean converterClassTouches(int pos) { >+ TextRange textRange = this.getConverterClassCodeAssistTextRange(); >+ return (textRange != null) && textRange.touches(pos); >+ } > } // XmlStructConverter >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructure.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructure.java >index bbe016f..d083d02 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructure.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlStructure.java >@@ -471,4 +471,15 @@ > public void setVirtualAttributeTypes(String attributeType, String targetType) { > this.setAttributeType(attributeType); > } >+ >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_3.STRUCTURE__ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } > } // XmlStructure >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlTransformation.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlTransformation.java >index 02279c2..205a216 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlTransformation.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlTransformation.java >@@ -466,4 +466,15 @@ > this.setAttributeType(attributeType); > } > >+ // *********** content assist ************ >+ >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVariableOneToOne.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVariableOneToOne.java >index 5924728..73a57b8 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVariableOneToOne.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVariableOneToOne.java >@@ -1379,4 +1379,15 @@ > this.setTargetInterface(targetInterface); > } > >+ // *********** content assist ************ >+ >+ protected TextRange getTargetInterfaceCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink.VARIABLE_ONE_TO_ONE__TARGET_INTERFACE); >+ } >+ >+ public boolean targetInterfaceTouches(int pos) { >+ TextRange textRange = this.getTargetInterfaceCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > } >diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVersion.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVersion.java >index 0ff1ffc..cb46b87 100644 >--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVersion.java >+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/orm/XmlVersion.java >@@ -987,6 +987,15 @@ > return (textRange != null) && (textRange.touches(pos)); > } > >+ protected TextRange getAttributeTypeCodeAssistTextRange() { >+ return getAttributeCodeAssistTextRange(EclipseLink2_1.ATTRIBUTE_TYPE); >+ } >+ >+ public boolean attributeTypeTouches(int pos) { >+ TextRange textRange = this.getAttributeTypeCodeAssistTextRange(); >+ return (textRange != null) && (textRange.touches(pos)); >+ } >+ > // ******** virtual attribute ************ > > public void setVirtualAttributeTypes(String attributeType, String targetType) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 373582
:
219539
|
220692
|
221807
|
221855