# HG changeset patch
# Parent 3a138ec500cd07d3e46762650ebb419c265935c9
diff --git a/j2ee.api.ejbmodule/nbproject/project.xml b/j2ee.api.ejbmodule/nbproject/project.xml
--- a/j2ee.api.ejbmodule/nbproject/project.xml
+++ b/j2ee.api.ejbmodule/nbproject/project.xml
@@ -240,6 +240,7 @@
org.netbeans.modules.j2ee.ejbrefactoring
org.netbeans.modules.j2ee.ejbverification
org.netbeans.modules.j2ee.performancetests
+ org.netbeans.modules.j2ee.persistence
org.netbeans.modules.maven.j2ee
org.netbeans.modules.maven.jaxws
org.netbeans.modules.profiler.j2ee
diff --git a/j2ee.persistence/nbproject/project.xml b/j2ee.persistence/nbproject/project.xml
--- a/j2ee.persistence/nbproject/project.xml
+++ b/j2ee.persistence/nbproject/project.xml
@@ -179,6 +179,14 @@
+ org.netbeans.modules.j2ee.api.ejbmodule
+
+
+
+ 1.28
+
+
+
org.netbeans.modules.j2ee.core.utilities
diff --git a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/EntityClosure.java b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/EntityClosure.java
--- a/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/EntityClosure.java
+++ b/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/wizard/EntityClosure.java
@@ -45,9 +45,12 @@
package org.netbeans.modules.j2ee.persistence.wizard;
import java.io.IOException;
+import java.net.URL;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.TypeElement;
@@ -59,11 +62,16 @@
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+import org.netbeans.api.java.classpath.ClassPath;
+import org.netbeans.api.java.source.ClasspathInfo;
import org.netbeans.api.java.source.CompilationController;
import org.netbeans.api.java.source.ElementHandle;
import org.netbeans.api.java.source.JavaSource;
+import org.netbeans.api.java.source.SourceUtils;
import org.netbeans.api.java.source.Task;
+import org.netbeans.api.project.FileOwnerQuery;
import org.netbeans.api.project.Project;
+import org.netbeans.modules.j2ee.api.ejbjar.EjbJar;
import org.netbeans.modules.j2ee.metadata.model.api.MetadataModel;
import org.netbeans.modules.j2ee.metadata.model.api.MetadataModelAction;
import org.netbeans.modules.j2ee.metadata.model.api.MetadataModelException;
@@ -74,6 +82,8 @@
import org.netbeans.modules.j2ee.persistence.util.MetadataModelReadHelper;
import org.netbeans.modules.j2ee.persistence.util.MetadataModelReadHelper.State;
import org.netbeans.modules.j2ee.persistence.wizard.jpacontroller.JpaControllerUtil;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.URLMapper;
import org.openide.util.ChangeSupport;
import org.openide.util.Exceptions;
@@ -82,7 +92,8 @@
* @author Pavel Buzek
*/
public class EntityClosure {
-
+ private static final Logger LOG = Logger.getLogger(EntityClosure.class.getName());
+
// XXX this class needs a complete rewrite: the computing of the available
// entity classes and of the referenced classes need to be moved away.
@@ -169,17 +180,32 @@
if( source!=null ) {
try {
+ final Set ejbProjects = new HashSet();
+ ClassPath classPath = source.getClasspathInfo().getClassPath(ClasspathInfo.PathKind.COMPILE);
+ for (FileObject fileObject : classPath.getRoots()) {
+ Project rootOwner = FileOwnerQuery.getOwner(fileObject);
+ if (rootOwner != null) {
+ if (EjbJar.getEjbJar(rootOwner.getProjectDirectory()) != null) {
+ ejbProjects.add(rootOwner);
+ }
+ }
+ }
source.runUserActionTask(new Task() {
@Override
public void run(CompilationController parameter) throws Exception {
for (Entity en : entities) {
- availableEntities.add(en.getClass2());
- fqnEntityMap.put(en.getClass2(), en);
PersistentObject po = (PersistentObject) en;
ElementHandle teh = po.getTypeElementHandle();
- TypeElement te = teh.resolve(parameter);
- fqnIdExistMap.put(en.getClass2(), JpaControllerUtil.haveId(te));
+ FileObject file = SourceUtils.getFile(teh, parameter.getClasspathInfo());
+ if (!isFromEjbProject(ejbProjects, file)) {
+ availableEntities.add(en.getClass2());
+ fqnEntityMap.put(en.getClass2(), en);
+ TypeElement te = teh.resolve(parameter);
+ fqnIdExistMap.put(en.getClass2(), JpaControllerUtil.haveId(te));
+ } else {
+ LOG.log(Level.INFO, "Omitted entity since the visibility wasn''t ensured, entity={0}", en.getClass2());
+ }
}
}
}, true);
@@ -190,6 +216,15 @@
availableEntities.removeAll(selectedEntities);
changeSupport.fireChange();
}
+
+ private boolean isFromEjbProject(Set ejbProjects, FileObject fo) {
+ for (Project relatedProject : ejbProjects) {
+ if (fo.getPath().startsWith(relatedProject.getProjectDirectory().getPath())) {
+ return true;
+ }
+ }
+ return false;
+ }
public void addChangeListener(ChangeListener listener) {
changeSupport.addChangeListener(listener);