Author: scabanovich
Date: 2007-08-23 08:28:58 -0400 (Thu, 23 Aug 2007)
New Revision: 3293
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamElement.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamPackage.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractContextVariable.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractSeamDeclaration.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/BijectedAttribute.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamAnnotatedFactory.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentMethod.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaContextVariable.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamObject.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPackage.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPropertiesDeclaration.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProperty.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamScope.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueList.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMap.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMapEntry.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueString.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlComponentDeclaration.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlFactory.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/scanner/lib/ClassPath.java
Log:
JBIDE-820
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamElement.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamElement.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamElement.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -12,6 +12,7 @@
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
+import org.jboss.tools.seam.internal.core.SeamObject;
/**
* Common interface for objects of seam model.
@@ -43,5 +44,7 @@
* @return resource
*/
public IResource getResource();
+
+ public ISeamElement copy();
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamPackage.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamPackage.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/ISeamPackage.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.seam.core;
+import java.util.Collection;
import java.util.Set;
/**
@@ -19,6 +20,10 @@
public String getName();
+ public String getQualifiedName();
+
public Set<ISeamComponent> getComponents();
+ public Collection<ISeamPackage> getPackages();
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractContextVariable.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractContextVariable.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractContextVariable.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -75,4 +75,10 @@
setScopeAsString(value == null ? null : value.getValue());
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ AbstractContextVariable f = (AbstractContextVariable)copy;
+ f.scope = scope;
+ f.scopeType = scopeType;
+ }
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractSeamDeclaration.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractSeamDeclaration.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/AbstractSeamDeclaration.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -79,4 +79,10 @@
return s1 == null ? s2 == null : s1.equals(s2);
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ AbstractSeamDeclaration d = (AbstractSeamDeclaration)copy;
+ d.name = name;
+ d.attributes.putAll(attributes);
+ }
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/BijectedAttribute.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/BijectedAttribute.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/BijectedAttribute.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -14,7 +14,6 @@
import org.jboss.tools.seam.core.BijectedAttributeType;
import org.jboss.tools.seam.core.IBijectedAttribute;
-import org.jboss.tools.seam.core.ISeamXmlComponentDeclaration;
import org.jboss.tools.seam.core.event.Change;
/**
@@ -73,4 +72,12 @@
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ if(copy instanceof BijectedAttribute) {
+ BijectedAttribute sf = (BijectedAttribute)copy;
+ sf.types = types;
+ }
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamAnnotatedFactory.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamAnnotatedFactory.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamAnnotatedFactory.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -72,4 +72,13 @@
public void setParentDeclaration(SeamJavaComponentDeclaration parentDeclaration) {
this.parentDeclaration = parentDeclaration;
}
-}
\ No newline at end of file
+
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamAnnotatedFactory f = (SeamAnnotatedFactory)copy;
+ f.autoCreate = autoCreate;
+ //we need not new copy here but reference!
+ f.parentDeclaration = parentDeclaration == null ? null :
(SeamJavaComponentDeclaration)parentDeclaration.copy();
+ }
+
+}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentMethod.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentMethod.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamComponentMethod.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -100,4 +100,11 @@
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamComponentMethod m = (SeamComponentMethod)copy;
+ m.types.addAll(types);
+ m.javaSource = javaSource;
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaComponentDeclaration.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -395,4 +395,26 @@
}
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamJavaComponentDeclaration d = (SeamJavaComponentDeclaration)copy;
+ d.className = className;
+ d.scopeType = scopeType;
+ if(types != null) {
+ d.types = new HashMap<BeanType, IValueInfo>();
+ d.types.putAll(types);
+ }
+ d.precedence = precedence;
+ d.type = type;
+ for (IBijectedAttribute a : bijectedAttributes) {
+ d.addBijectedAttribute((IBijectedAttribute)a.copy());
+ }
+ for (ISeamComponentMethod m : componentMethods) {
+ d.addMethod((ISeamComponentMethod)m.copy());
+ }
+ for (IRole r : roles) {
+ d.addRole((IRole)r.copy());
+ }
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaContextVariable.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaContextVariable.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamJavaContextVariable.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -68,4 +68,12 @@
return changes;
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ if(copy instanceof SeamJavaContextVariable) {
+ SeamJavaContextVariable sf = (SeamJavaContextVariable)copy;
+ sf.javaSource = javaSource;
+ }
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamObject.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamObject.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamObject.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -125,5 +125,25 @@
//value for null, before using it.
return null;
}
+
+ public final SeamObject copy() {
+ SeamObject result = null;
+ try {
+ result = (SeamObject)this.getClass().newInstance();
+ copyTo(result);
+ } catch (InstantiationException e1) {
+
+ } catch (IllegalAccessException e2) {
+
+ }
+ return result;
+ }
+
+ public void copyTo(SeamObject copy) {
+ copy.source = source;
+ copy.id = id;
+ copy.resource = resource;
+ //do not copy parent
+ }
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPackage.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPackage.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPackage.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -11,7 +11,10 @@
package org.jboss.tools.seam.internal.core;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import org.jboss.tools.seam.core.ISeamComponent;
@@ -19,6 +22,8 @@
public class SeamPackage extends SeamObject implements ISeamPackage {
Set<ISeamComponent> components = new HashSet<ISeamComponent>();
+ Map<String, ISeamPackage> packages = new HashMap<String, ISeamPackage>();
+
public String name;
public SeamPackage() {}
@@ -40,4 +45,15 @@
setId(name);
}
+ public Collection<ISeamPackage> getPackages() {
+ return packages.values();
+ }
+
+ public String getQualifiedName() {
+ if(parent instanceof ISeamPackage) {
+ return ((ISeamPackage)parent).getQualifiedName() + "." + getName();
+ }
+ return getName();
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProject.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -66,6 +66,9 @@
SeamScope[] scopes = new SeamScope[ScopeType.values().length];
Map<ScopeType, SeamScope> scopesMap = new HashMap<ScopeType, SeamScope>();
+ Set<SeamProject> dependsOn = new HashSet<SeamProject>();
+ Set<SeamProject> usedBy = new HashSet<SeamProject>();
+
{
ScopeType[] types = ScopeType.values();
for (int i = 0; i < scopes.length; i++) {
@@ -137,6 +140,42 @@
// load();
}
+ public void addSeamProject(SeamProject p) {
+ if(dependsOn.contains(p)) return;
+ dependsOn.add(p);
+ p.addDependentSeamProject(this);
+ if(!p.isStorageResolved) {
+ p.resolve();
+ } else {
+ Map<IPath,LoadedDeclarations> map = p.getAllDeclarations();
+ for (IPath source : map.keySet()) {
+ LoadedDeclarations ds = map.get(source);
+ registerComponents(ds, source);
+ }
+ }
+ }
+
+ public Set<SeamProject> getSeamProjects() {
+ return dependsOn;
+ }
+
+ public void addDependentSeamProject(SeamProject p) {
+ usedBy.add(p);
+ }
+
+ public void removeSeamProject(SeamProject p) {
+ if(!dependsOn.contains(p)) return;
+ p.usedBy.remove(this);
+ dependsOn.remove(p);
+ IPath[] ps = sourcePaths.toArray(new IPath[0]);
+ for (int i = 0; i < ps.length; i++) {
+ IPath pth = ps[i];
+ if(p.getSourcePath().isPrefixOf(pth)) {
+ pathRemoved(pth);
+ }
+ }
+ }
+
public ClassPath getClassPath() {
return classPath;
}
@@ -171,6 +210,7 @@
if(file == null || !file.isFile()) return;
Element root = XMLUtilities.getElement(file, null);
if(root != null) {
+ loadProjectDependencies(root);
loadSourcePaths(root);
getValidationContext().load(root);
}
@@ -190,7 +230,9 @@
file.getParentFile().mkdirs();
Element root = XMLUtilities.createDocumentElement("seam-project");
+ storeProjectDependencies(root);
storeSourcePaths(root);
+
if(validationContext != null) validationContext.store(root);
XMLUtilities.serialize(root, file.getAbsolutePath());
@@ -204,6 +246,21 @@
}
}
+ private void storeProjectDependencies(Element root) {
+ Element dependsOnElement = XMLUtilities.createElement(root,
"depends-on-projects");
+ for (ISeamProject p : dependsOn) {
+ if(!p.getProject().isAccessible()) continue;
+ Element pathElement = XMLUtilities.createElement(dependsOnElement,
"project");
+ pathElement.setAttribute("name", p.getProject().getName());
+ }
+ Element usedElement = XMLUtilities.createElement(root, "used-by-projects");
+ for (ISeamProject p : usedBy) {
+ if(!p.getProject().isAccessible()) continue;
+ Element pathElement = XMLUtilities.createElement(usedElement, "project");
+ pathElement.setAttribute("name", p.getProject().getName());
+ }
+ }
+
private void loadSourcePaths(Element root) {
Element sourcePathsElement = XMLUtilities.getUniqueChild(root,
"source-paths");
if(sourcePathsElement == null) return;
@@ -220,6 +277,38 @@
}
}
+ private void loadProjectDependencies(Element root) {
+ Element dependsOnElement = XMLUtilities.getUniqueChild(root,
"depends-on-projects");
+ if(dependsOnElement != null) {
+ Element[] paths = XMLUtilities.getChildren(dependsOnElement, "project");
+ for (int i = 0; i < paths.length; i++) {
+ String p = paths[i].getAttribute("name");
+ if(p == null || p.trim().length() == 0) continue;
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(p);
+ if(project == null || !project.isAccessible()) continue;
+ SeamProject sp = (SeamProject)SeamCorePlugin.getSeamProject(project, false);
+ if(sp != null) {
+ dependsOn.add(sp);
+ sp.addDependentSeamProject(this);
+ }
+ }
+ }
+
+ Element usedElement = XMLUtilities.getUniqueChild(root, "used-by-projects");
+ if(usedElement != null) {
+ Element[] paths = XMLUtilities.getChildren(usedElement, "project");
+ for (int i = 0; i < paths.length; i++) {
+ String p = paths[i].getAttribute("name");
+ if(p == null || p.trim().length() == 0) continue;
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(p);
+ if(project == null || !project.isAccessible()) continue;
+ SeamProject sp = (SeamProject)SeamCorePlugin.getSeamProject(project, false);
+ if(sp != null) usedBy.add(sp);
+ }
+ }
+
+ }
+
private File getStorageFile() {
IPath path = SeamCorePlugin.getDefault().getStateLocation();
File file = new File(path.toFile(), "projects/" + project.getName());
@@ -361,8 +450,27 @@
fireChanges(addedFactories);
factoryDeclarationsRemoved(currentFactories);
+
+ registerComponentsInDependentProjects(ds, source);
}
+ public void registerComponentsInDependentProjects(LoadedDeclarations ds, IPath source)
{
+ if(usedBy.size() == 0) return;
+ if(source.toString().endsWith(".jar")) return;
+
+ for (SeamProject p : usedBy) {
+ p.resolve();
+ LoadedDeclarations ds1 = new LoadedDeclarations();
+ for (SeamComponentDeclaration d: ds.getComponents()) {
+ ds1.getComponents().add((SeamComponentDeclaration)d.copy());
+ }
+ for (ISeamFactory f : ds.getFactories()) {
+ ds1.getFactories().add((ISeamFactory)f.copy());
+ }
+ p.registerComponents(ds1, source);
+ }
+ }
+
boolean stringsEqual(String s1, String s2) {
return s1 == null ? s2 == null : s1.equals(s2);
}
@@ -872,7 +980,33 @@
return p;
}
-
+ Map<IPath, LoadedDeclarations> getAllDeclarations() {
+ Map<IPath, LoadedDeclarations> map = new HashMap<IPath,
LoadedDeclarations>();
+ for (ISeamComponent c : allComponents.values()) {
+ for (ISeamComponentDeclaration d : c.getAllDeclarations()) {
+ IPath p = d.getSourcePath();
+ if(p == null || p.toString().endsWith(".jar")) continue;
+ LoadedDeclarations ds = map.get(p);
+ if(ds == null) {
+ ds = new LoadedDeclarations();
+ map.put(p, ds);
+ }
+ ds.getComponents().add((SeamComponentDeclaration)d.copy());
+ }
+ }
+ for (ISeamFactory f : allFactories) {
+ IPath p = f.getSourcePath();
+ if(p == null || p.toString().endsWith(".jar")) continue;
+ LoadedDeclarations ds = map.get(p);
+ if(ds == null) {
+ ds = new LoadedDeclarations();
+ map.put(p, ds);
+ }
+ ds.getFactories().add((ISeamFactory)f.copy());
+ }
+ return map;
+ }
+
protected void addToBuildSpec(String builderID) throws CoreException {
IProjectDescription description = getProject().getDescription();
ICommand command = null;
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPropertiesDeclaration.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPropertiesDeclaration.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPropertiesDeclaration.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -122,4 +122,14 @@
}
}
+
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamPropertiesDeclaration d = (SeamPropertiesDeclaration)copy;
+ for (String name : properties.keySet()) {
+ ISeamProperty p = (ISeamProperty)properties.get(name).copy();
+ d.addProperty(p);
+ }
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProperty.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProperty.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamProperty.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -80,4 +80,10 @@
return s1 == null ? s2 == null : s1.equals(s2);
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamProperty p = (SeamProperty)copy;
+ p.value = value == null ? null : (ISeamValue)value.copy();
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamScope.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamScope.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamScope.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -25,9 +25,11 @@
import org.jboss.tools.seam.core.event.Change;
public class SeamScope extends SeamObject implements ISeamScope {
+ //Contains all components for that scope.
private List<ISeamComponent> components = new ArrayList<ISeamComponent>();
private ScopeType scopeType = null;
+ //Contains first level packages for that scope
Map<String, ISeamPackage> packages = new HashMap<String, ISeamPackage>();
SeamScope(SeamProject project, ScopeType scopeType) {
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueList.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueList.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueList.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -50,4 +50,12 @@
return changes;
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamValueList vl = (SeamValueList)copy;
+ for (ISeamValueString v : values) {
+ vl.addValue((SeamValueString)v.copy());
+ }
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMap.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMap.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMap.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -50,4 +50,12 @@
return changes;
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamValueMap vl = (SeamValueMap)copy;
+ for (ISeamValueMapEntry v : entries) {
+ vl.addEntry((SeamValueMapEntry)v.copy());
+ }
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMapEntry.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMapEntry.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueMapEntry.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -65,4 +65,11 @@
return changes;
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamValueMapEntry vl = (SeamValueMapEntry)copy;
+ vl.key = key == null ? null : (SeamValueString)key.copy();
+ vl.value = value == null ? null : (SeamValueString)value.copy();
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueString.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueString.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamValueString.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -46,4 +46,11 @@
return changes;
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamValueString vl = (SeamValueString)copy;
+ vl.value = value;
+ vl.currentValue = currentValue;
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlComponentDeclaration.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlComponentDeclaration.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlComponentDeclaration.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -161,4 +161,14 @@
return changes;
}
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamXmlComponentDeclaration d = (SeamXmlComponentDeclaration)copy;
+ d.className = className;
+ d.autoCreate = autoCreate;
+ d.installed = installed;
+ d.jndiName = jndiName;
+ d.precedence = precedence;
+ d.scope = scope;
+ }
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlFactory.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlFactory.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamXmlFactory.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -64,4 +64,12 @@
return changes;
}
+
+ public void copyTo(SeamObject copy) {
+ super.copyTo(copy);
+ SeamXmlFactory xf = (SeamXmlFactory)copy;
+ xf.value = value;
+ xf.method = method;
+ }
+
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/scanner/lib/ClassPath.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/scanner/lib/ClassPath.java 2007-08-23
12:11:07 UTC (rev 3292)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/scanner/lib/ClassPath.java 2007-08-23
12:28:58 UTC (rev 3293)
@@ -22,6 +22,7 @@
import java.util.Set;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -35,6 +36,7 @@
import org.jboss.tools.common.model.filesystems.impl.JarSystemImpl;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
import org.jboss.tools.common.model.util.XModelObjectUtil;
+import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.internal.core.InnerModelHelper;
import org.jboss.tools.seam.internal.core.SeamProject;
@@ -182,6 +184,27 @@
}
if(c != null) componentsLoaded(c, new Path(p));
}
+
+ List<SeamProject> ps = null;
+
+ try {
+ ps = getSeamProjects(project.getProject());
+ } catch (CoreException e) {
+ SeamCorePlugin.getPluginLog().logError(e);
+ }
+ if(ps != null) {
+ Set<SeamProject> set = project.getSeamProjects();
+ Set<SeamProject> removable = new HashSet<SeamProject>();
+ removable.addAll(set);
+ removable.removeAll(ps);
+ ps.removeAll(set);
+ for (SeamProject p : ps) {
+// project.addSeamProject(p);
+ }
+ for (SeamProject p : removable) {
+ project.removeSeamProject(p);
+ }
+ }
}
void componentsLoaded(LoadedDeclarations c, IPath path) {
@@ -248,5 +271,20 @@
}
return l;
}
+
+ List<SeamProject> getSeamProjects(IProject project) throws CoreException {
+ List<SeamProject> list = new ArrayList<SeamProject>();
+ IJavaProject javaProject = JavaCore.create(project);
+ IClasspathEntry[] es = javaProject.getResolvedClasspath(true);
+ for (int i = 0; i < es.length; i++) {
+ if(es[i].getEntryKind() == IClasspathEntry.CPE_PROJECT) {
+ IProject p =
ResourcesPlugin.getWorkspace().getRoot().getProject(es[i].getPath().lastSegment());
+ if(p == null || !p.isAccessible()) continue;
+ ISeamProject sp = SeamCorePlugin.getSeamProject(p, false);
+ if(sp != null) list.add((SeamProject)sp);
+ }
+ }
+ return list;
+ }
}