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 49422 Details for
Bug 150673
[modulecore] Add visitor API to virtual component layer
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
updated ComponentDeployable module delegate
150673-componentdeployable.diff (text/plain), 19.17 KB, created by
Igor Fedorenko
on 2006-09-05 14:49:23 EDT
(
hide
)
Description:
updated ComponentDeployable module delegate
Filename:
MIME Type:
Creator:
Igor Fedorenko
Created:
2006-09-05 14:49:23 EDT
Size:
19.17 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jst.j2ee >Index: refactor/org/eclipse/jst/j2ee/refactor/operations/ProjectRefactorMetadata.java >=================================================================== >RCS file: /cvsroot/webtools/jst/components/j2ee/plugins/org.eclipse.jst.j2ee/refactor/org/eclipse/jst/j2ee/refactor/operations/ProjectRefactorMetadata.java,v >retrieving revision 1.10 >diff -u -r1.10 ProjectRefactorMetadata.java >--- refactor/org/eclipse/jst/j2ee/refactor/operations/ProjectRefactorMetadata.java 25 Jul 2006 18:44:22 -0000 1.10 >+++ refactor/org/eclipse/jst/j2ee/refactor/operations/ProjectRefactorMetadata.java 5 Sep 2006 18:26:12 -0000 >@@ -33,6 +33,7 @@ > import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; > import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; > import org.eclipse.wst.common.componentcore.resources.IVirtualReference; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode; > import org.eclipse.wst.common.project.facet.core.IFacetedProject; > import org.eclipse.wst.common.project.facet.core.IProjectFacet; > import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; >@@ -289,6 +290,9 @@ > public IVirtualFolder getRootFolder() { > return _comp.getRootFolder(); > } >+ public VirtualTreeNode getVirtualTreeRoot() throws CoreException { >+ return _comp.getVirtualTreeRoot(); >+ } > public boolean isBinary() { > return _comp.isBinary(); > } >Index: j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java >=================================================================== >RCS file: /cvsroot/webtools/jst/components/j2ee/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java,v >retrieving revision 1.62 >diff -u -r1.62 J2EEFlexProjDeployable.java >--- j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java 16 Aug 2006 13:25:34 -0000 1.62 >+++ j2eeplugin/org/eclipse/jst/j2ee/internal/deployables/J2EEFlexProjDeployable.java 5 Sep 2006 18:26:12 -0000 >@@ -14,18 +14,24 @@ > import java.net.URL; > import java.util.ArrayList; > import java.util.Arrays; >+import java.util.HashMap; > import java.util.List; >+import java.util.Map; > import java.util.Properties; > > import org.eclipse.core.resources.IContainer; > import org.eclipse.core.resources.IFile; > import org.eclipse.core.resources.IProject; >+import org.eclipse.core.resources.IResource; > import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IPath; > import org.eclipse.core.runtime.Path; >+import org.eclipse.jdt.core.IClasspathEntry; > import org.eclipse.jdt.core.IJavaProject; > import org.eclipse.jdt.core.IPackageFragmentRoot; >+import org.eclipse.jdt.core.JavaCore; >+import org.eclipse.jdt.core.JavaModelException; > import org.eclipse.jem.workbench.utility.JemProjectUtilities; > import org.eclipse.jst.j2ee.application.Application; > import org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualArchiveComponent; >@@ -49,6 +55,8 @@ > import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; > import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; > import org.eclipse.wst.common.componentcore.resources.IVirtualReference; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode.Entry; > import org.eclipse.wst.server.core.IModule; > import org.eclipse.wst.server.core.ServerUtil; > import org.eclipse.wst.server.core.internal.ModuleFile; >@@ -471,8 +479,98 @@ > } > return module; > } >- >- /** >+ >+ @Override >+ protected VirtualTreeNode getVirtualTreeRoot() throws CoreException { >+ VirtualTreeNode root = getComponentVirtualTreeRoot(); >+ if (root == null) return null; >+ IProject project = getProject(); >+ final List<Entry> replaced = new ArrayList<Entry>(); >+ if (project.hasNature(JavaCore.NATURE_ID)) { >+ final Map<IResource, IResource> map = getJavaOutputLocationMap(project); >+ root = root.filter(new VirtualTreeNode.IEntryFilter() { >+ public boolean accept(Entry entry) { >+ IResource resource = entry.getResource(); >+ if (resource != null) { >+ resource = map.get(resource); >+ if (resource != null) { >+ replaced.add(new Entry(entry.getRuntimePath(), resource)); >+ return false; >+ } >+ } >+ return true; >+ } >+ }); >+ } >+ ArrayList<Entry> entries = new ArrayList<Entry>(); >+ entries.add(new VirtualTreeNode.Entry(null, root)); >+ entries.addAll(replaced); >+ addLocalVirtualTreeEntries(entries); >+ return newVirtualTreeNode(entries); >+ } >+ >+ @Override >+ protected void addLocalVirtualTreeEntries(ArrayList<Entry> entries) throws CoreException { >+ super.addLocalVirtualTreeEntries(entries); >+ addConsumableReferencedEntries(entries); >+ } >+ >+ private Map<IResource, IResource> getJavaOutputLocationMap(IProject project) throws JavaModelException { >+ Map<IResource, IResource> map = new HashMap<IResource, IResource>(); >+ IContainer workspace = project.getParent(); >+ IJavaProject jproject = JavaCore.create(project); >+ for (IClasspathEntry cpe : jproject.getRawClasspath()) { >+ if (IClasspathEntry.CPE_SOURCE == cpe.getEntryKind()) { >+ IPath path = cpe.getPath(); >+ IPath output = cpe.getOutputLocation(); >+ if (output == null) output = jproject.getOutputLocation(); >+ map.put(workspace.findMember(path), workspace.findMember(output)); >+ } >+ } >+ return map; >+ } >+ >+ protected void addConsumableReferencedEntries(List<Entry> entries) throws CoreException { >+ IVirtualComponent vc = ComponentCore.createComponent(getProject()); >+ if (vc == null) return; >+ >+ IVirtualReference[] refComponents = vc.getReferences(); >+ for (int i = 0; i < refComponents.length; i++) { >+ final IVirtualReference reference = refComponents[i]; >+ if (reference != null && reference.getDependencyType()==IVirtualReference.DEPENDENCY_TYPE_CONSUMES) { >+ IVirtualComponent consumedComponent = reference.getReferencedComponent(); >+ IProject project = consumedComponent.getProject(); >+ if (consumedComponent!=null && isProjectOfType(project,IModuleConstants.JST_UTILITY_MODULE)) { >+ if (consumedComponent != null && consumedComponent.getRootFolder()!=null) { >+ VirtualTreeNode root = consumedComponent.getVirtualTreeRoot(); >+ if (project.hasNature(JavaCore.NATURE_ID)) { >+ final Map<IResource, IResource> map = getJavaOutputLocationMap(project); >+ final List<Entry> replaced = new ArrayList<Entry>(); >+ root = root.filter(new VirtualTreeNode.IEntryFilter() { >+ public boolean accept(Entry entry) { >+ IResource resource = entry.getResource(); >+ if (resource != null) { >+ resource = map.get(resource); >+ if (resource != null) { >+ replaced.add(new Entry(reference.getRuntimePath().append(entry.getRuntimePath()), resource)); >+ return false; >+ } >+ } >+ return true; >+ } >+ }); >+ entries.add(new Entry(null, root)); >+ entries.addAll(replaced); >+ } else { >+ entries.add(new Entry(null, root)); >+ } >+ } >+ } >+ } >+ } >+ } >+ >+ /** > * Determine if the component is nested J2EE module on the application.xml of this EAR > * @param aComponent > * @return boolean is passed in component a nested J2EE module on this EAR >Index: earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java >=================================================================== >RCS file: /cvsroot/webtools/jst/components/j2ee/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java,v >retrieving revision 1.5 >diff -u -r1.5 EARVirtualComponent.java >--- earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java 2 Aug 2006 16:11:53 -0000 1.5 >+++ earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualComponent.java 5 Sep 2006 18:26:12 -0000 >@@ -36,6 +36,7 @@ > import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; > import org.eclipse.wst.common.componentcore.resources.IVirtualReference; > import org.eclipse.wst.common.componentcore.resources.IVirtualResource; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode; > > public class EARVirtualComponent extends VirtualComponent implements IComponentImplFactory { > >@@ -193,4 +194,8 @@ > public IVirtualFolder getDefaultRootFolder() { > return defaultRootFolder; > } >+ >+ public VirtualTreeNode getVirtualTreeRoot() throws CoreException { >+ return new EARVirtualTreeNode(getVirtualTreeRootEntries()); >+ } > } >Index: earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualTreeNode.java >=================================================================== >RCS file: earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualTreeNode.java >diff -N earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualTreeNode.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ earproject/org/eclipse/jst/j2ee/componentcore/util/EARVirtualTreeNode.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,26 @@ >+package org.eclipse.jst.j2ee.componentcore.util; >+ >+import java.util.List; >+ >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode; >+ >+public class EARVirtualTreeNode extends VirtualTreeNode { >+ protected EARVirtualTreeNode(IPath runtimePath, List<Entry> entries, boolean isDelta) { >+ super(runtimePath, entries, isDelta); >+ } >+ public EARVirtualTreeNode(List<Entry> entries) { >+ super(entries); >+ } >+ @Override >+ public VirtualTreeNode newVirtualTreeNode(IPath runtimePath, List<Entry> entries, boolean isDelta) { >+ String name = runtimePath.lastSegment(); >+ for (String ext : EARVirtualRootFolder.EXTENSIONS_TO_IGNORE) { >+ if (J2EEComponentClasspathUpdater.endsWithIgnoreCase(name, ext)) { >+ return null; >+ } >+ } >+ return new EARVirtualTreeNode(runtimePath, entries, isDelta); >+ } >+} >Index: .settings/org.eclipse.jdt.core.prefs >=================================================================== >RCS file: .settings/org.eclipse.jdt.core.prefs >diff -N .settings/org.eclipse.jdt.core.prefs >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .settings/org.eclipse.jdt.core.prefs 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,12 @@ >+#Sat Sep 02 17:45:29 EDT 2006 >+eclipse.preferences.version=1 >+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled >+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 >+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve >+org.eclipse.jdt.core.compiler.compliance=1.5 >+org.eclipse.jdt.core.compiler.debug.lineNumber=generate >+org.eclipse.jdt.core.compiler.debug.localVariable=generate >+org.eclipse.jdt.core.compiler.debug.sourceFile=generate >+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error >+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error >+org.eclipse.jdt.core.compiler.source=1.5 >#P org.eclipse.wst.web >Index: .settings/org.eclipse.jdt.core.prefs >=================================================================== >RCS file: /cvsroot/webtools/wst/components/web/plugins/org.eclipse.wst.web/.settings/org.eclipse.jdt.core.prefs,v >retrieving revision 1.1 >diff -u -r1.1 org.eclipse.jdt.core.prefs >--- .settings/org.eclipse.jdt.core.prefs 31 Aug 2006 03:16:33 -0000 1.1 >+++ .settings/org.eclipse.jdt.core.prefs 5 Sep 2006 18:26:12 -0000 >@@ -1,4 +1,4 @@ >-#Wed Aug 30 01:47:52 EDT 2006 >+#Tue Sep 05 10:22:20 EDT 2006 > eclipse.preferences.version=1 > org.eclipse.jdt.core.builder.cleanOutputFolder=clean > org.eclipse.jdt.core.builder.duplicateResourceTask=warning >@@ -8,14 +8,23 @@ > org.eclipse.jdt.core.circularClasspath=error > org.eclipse.jdt.core.classpath.exclusionPatterns=enabled > org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled >+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled >+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 >+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve >+org.eclipse.jdt.core.compiler.compliance=1.5 >+org.eclipse.jdt.core.compiler.debug.lineNumber=generate >+org.eclipse.jdt.core.compiler.debug.localVariable=generate >+org.eclipse.jdt.core.compiler.debug.sourceFile=generate > org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 > org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning >+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error > org.eclipse.jdt.core.compiler.problem.autoboxing=ignore > org.eclipse.jdt.core.compiler.problem.deprecation=ignore > org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled > org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled > org.eclipse.jdt.core.compiler.problem.discouragedReference=warning > org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore >+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error > org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore > org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled > org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore >@@ -60,5 +69,6 @@ > org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled > org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning > org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning >+org.eclipse.jdt.core.compiler.source=1.5 > org.eclipse.jdt.core.incompatibleJDKLevel=warning > org.eclipse.jdt.core.incompleteClasspath=error >Index: static_web_project/org/eclipse/wst/web/internal/deployables/ComponentDeployable.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/web/plugins/org.eclipse.wst.web/static_web_project/org/eclipse/wst/web/internal/deployables/ComponentDeployable.java,v >retrieving revision 1.15 >diff -u -r1.15 ComponentDeployable.java >--- static_web_project/org/eclipse/wst/web/internal/deployables/ComponentDeployable.java 16 Aug 2006 13:25:23 -0000 1.15 >+++ static_web_project/org/eclipse/wst/web/internal/deployables/ComponentDeployable.java 5 Sep 2006 18:26:12 -0000 >@@ -20,6 +20,7 @@ > import org.eclipse.core.resources.IFile; > import org.eclipse.core.resources.IProject; > import org.eclipse.core.resources.IResource; >+import org.eclipse.core.resources.IResourceDelta; > import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IPath; >@@ -32,6 +33,8 @@ > import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; > import org.eclipse.wst.common.componentcore.resources.IVirtualReference; > import org.eclipse.wst.common.componentcore.resources.IVirtualResource; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode; >+import org.eclipse.wst.common.componentcore.resources.VirtualTreeNode.Entry; > import org.eclipse.wst.common.project.facet.core.IFacetedProject; > import org.eclipse.wst.common.project.facet.core.IProjectFacet; > import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; >@@ -39,8 +42,11 @@ > import org.eclipse.wst.server.core.ServerUtil; > import org.eclipse.wst.server.core.internal.ModuleFile; > import org.eclipse.wst.server.core.internal.ModuleFolder; >+import org.eclipse.wst.server.core.internal.ModuleFolder2; >+import org.eclipse.wst.server.core.internal.ModuleResourceDelta; > import org.eclipse.wst.server.core.model.IModuleFolder; > import org.eclipse.wst.server.core.model.IModuleResource; >+import org.eclipse.wst.server.core.model.IModuleResourceDelta; > import org.eclipse.wst.server.core.util.ProjectModule; > > public abstract class ComponentDeployable extends ProjectModule { >@@ -399,5 +405,89 @@ > } > return new IContainer[]{}; > } >+ >+ /** >+ * TODO should it be public? >+ * TODO cache virtual tree root >+ */ >+ protected VirtualTreeNode getVirtualTreeRoot() throws CoreException { >+ final ArrayList<VirtualTreeNode.Entry> entries = new ArrayList<VirtualTreeNode.Entry>(); >+ VirtualTreeNode root = getComponentVirtualTreeRoot(); >+ if (root == null) return null; >+ entries.add(new VirtualTreeNode.Entry(null, root)); >+ addLocalVirtualTreeEntries(entries); >+ return newVirtualTreeNode(entries); >+ } >+ >+ protected VirtualTreeNode getComponentVirtualTreeRoot() throws CoreException { >+ // TODO use #component field >+ IVirtualComponent vc = ComponentCore.createComponent(getProject()); >+ if (vc != null) return vc.getVirtualTreeRoot(); >+ return null; >+ } > >+ protected void addLocalVirtualTreeEntries(ArrayList<Entry> entries) throws CoreException { >+ IVirtualComponent vc = ComponentCore.createComponent(getProject()); >+ if (vc != null) { >+ ArtifactEdit edit = null; >+ try { >+ edit = getComponentArtifactEditForRead(); >+ IVirtualReference[] components = vc.getReferences(); >+ for (int i = 0; i < components.length; i++) { >+ IVirtualReference reference = components[i]; >+ IVirtualComponent virtualComp = reference.getReferencedComponent(); >+ if (shouldIncludeUtilityComponent(virtualComp,components,edit)) { >+ IPath archivePath = ((VirtualArchiveComponent)virtualComp).getWorkspaceRelativePath(); >+ VirtualTreeNode.Entry entry = null; >+ if (archivePath != null) { //In Workspace >+ IFile utilFile = ResourcesPlugin.getWorkspace().getRoot().getFile(archivePath); >+ entries.add(new VirtualTreeNode.Entry(reference.getRuntimePath().append(utilFile.getName()), utilFile)); >+ } >+ else { >+ File extFile = ((VirtualArchiveComponent)virtualComp).getUnderlyingDiskFile(); >+ entries.add(new VirtualTreeNode.Entry(reference.getRuntimePath().append(extFile.getName()), extFile)); >+ } >+ } >+ } >+ } finally { >+ if (edit!=null) >+ edit.dispose(); >+ } >+ } >+ } >+ >+ protected VirtualTreeNode newVirtualTreeNode(List<Entry> entries) throws CoreException { >+ return new VirtualTreeNode(entries); >+ } >+ >+ public IModuleResource[] members2() throws CoreException { >+ VirtualTreeNode root = getVirtualTreeRoot(); >+ if (root != null) { >+ return new ModuleFolder2(root).members(); >+ } >+ return null; >+ } >+ >+ public IModuleResourceDelta getModuleResourceDelta(IResourceDelta workspaceDelta) throws CoreException { >+ VirtualTreeNode root = getVirtualTreeRoot(); >+ if (root != null) { >+ VirtualTreeNode proto = root.getVirtualTreeDelta(workspaceDelta); >+ ModuleResourceDelta result = new ModuleResourceDelta(ModuleFolder2.newModuleResource(proto), proto.getKind()); >+ result.setChildren(getModuleResourceDelta(proto)); >+ return result; >+ } >+ return null; >+ } >+ >+ private IModuleResourceDelta[] getModuleResourceDelta(VirtualTreeNode proto) throws CoreException { >+ List<VirtualTreeNode> members = proto.members(); >+ ModuleResourceDelta[] children = new ModuleResourceDelta[members.size()]; >+ int i = 0; >+ for (VirtualTreeNode member : members) { >+ children[i] = new ModuleResourceDelta(ModuleFolder2.newModuleResource(member), member.getKind()); >+ children[i].setChildren(getModuleResourceDelta(member)); >+ i++; >+ } >+ return children; >+ } > }
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 150673
:
49420
|
49421
| 49422