Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornhauge2009-08-24 16:13:40 +0000
committernhauge2009-08-24 16:13:40 +0000
commit15b23aeba772be257ad9fb7bf5bbfbe07e180f44 (patch)
treeab41cb6c9e91cb756dd5b18480a17bf85a621b93
parent687737f64e33d6080c5cd0ec5db6f97942ca6967 (diff)
downloadwebtools.dali-15b23aeba772be257ad9fb7bf5bbfbe07e180f44.tar.gz
webtools.dali-15b23aeba772be257ad9fb7bf5bbfbe07e180f44.tar.xz
webtools.dali-15b23aeba772be257ad9fb7bf5bbfbe07e180f44.zip
286110 - use appropriate $ delimiter for nested classes in sync job. Patch from Karen.
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
index 6e31cc58ba..840e99879b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
@@ -15,6 +15,10 @@ import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jpt.core.JpaProject;
import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.context.persistence.MappingFileRef;
@@ -28,6 +32,7 @@ import org.eclipse.jpt.core.resource.persistence.XmlPersistence;
import org.eclipse.jpt.core.resource.persistence.XmlPersistenceUnit;
import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
/**
* Synchronizes the lists of persistent classes in a persistence unit and a
@@ -85,7 +90,7 @@ public class SynchronizeClassesJob extends WorkspaceJob
monitor.worked(25);
- for (Iterator<String> stream = jpaProject.annotatedClassNames(); stream.hasNext(); ) {
+ for (Iterator<String> stream = annotatedClassNames(jpaProject, '$'); stream.hasNext(); ) {
String fullyQualifiedTypeName = stream.next();
if ( ! mappingFileContains(jpaProject, fullyQualifiedTypeName)) {
XmlJavaClassRef classRef = PersistenceFactory.eINSTANCE.createXmlJavaClassRef();
@@ -103,6 +108,28 @@ public class SynchronizeClassesJob extends WorkspaceJob
return Status.OK_STATUS;
}
+ protected Iterator<String> annotatedClassNames(final JpaProject jpaProject, final char enclosingTypeSeparator) {
+ return new TransformationIterator<String, String>(jpaProject.annotatedClassNames()) {
+ @Override
+ protected String transform(String fullyQualifiedName) {
+ IType jdtType = SynchronizeClassesJob.this.findType(jpaProject, fullyQualifiedName);
+ return jdtType.getFullyQualifiedName(enclosingTypeSeparator);
+ }
+ };
+ }
+
+ protected IType findType(JpaProject jpaProject, String typeName) {
+ try {
+ return getJavaProject(jpaProject).findType(typeName);
+ } catch (JavaModelException ex) {
+ return null; // ignore exception?
+ }
+ }
+
+ public IJavaProject getJavaProject(JpaProject jpaProject) {
+ return JavaCore.create(jpaProject.getProject());
+ }
+
boolean mappingFileContains(JpaProject jpaProject, String fullyQualifiedTypeName) {
PersistenceXml persistenceXml = jpaProject.getRootContextNode().getPersistenceXml();
if (persistenceXml == null) {

Back to the top