use of org.eclipse.wst.common.componentcore.resources.IVirtualReference in project webtools.sourceediting by eclipse.
the class FacetModuleCoreSupportDelegate method getAcceptableRootPaths.
static IPath[] getAcceptableRootPaths(IProject project) {
if (!ModuleCoreNature.isFlexibleProject(project)) {
return new IPath[] { project.getFullPath() };
}
List paths = new ArrayList();
IVirtualFolder componentFolder = ComponentCore.createFolder(project, Path.ROOT);
if (componentFolder != null && componentFolder.exists()) {
IContainer[] workspaceFolders = componentFolder.getUnderlyingFolders();
for (int i = 0; i < workspaceFolders.length; i++) {
if (workspaceFolders[i].getFolder(FacetModuleCoreSupport.META_INF_RESOURCES_PATH).isAccessible())
paths.add(workspaceFolders[i].getFullPath().append(FacetModuleCoreSupport.META_INF_RESOURCES_PATH));
else
paths.add(workspaceFolders[i].getFullPath());
}
IVirtualReference[] references = ComponentCore.createComponent(project).getReferences();
if (references != null) {
for (int i = 0; i < references.length; i++) {
IVirtualComponent referencedComponent = references[i].getReferencedComponent();
if (referencedComponent == null)
continue;
IVirtualComponent component = referencedComponent.getComponent();
if (component == null)
continue;
IVirtualFolder rootFolder = component.getRootFolder();
if (rootFolder == null)
continue;
IPath referencedPathRoot = rootFolder.getWorkspaceRelativePath();
/* http://bugs.eclipse.org/410161 */
if (referencedPathRoot != null) {
/*
* See Servlet 3.0, section 4.6 ; this is the only
* referenced module/component type we support
*/
IPath resourcesPath = referencedPathRoot.append(FacetModuleCoreSupport.META_INF_RESOURCES);
if (resourcesPath != null && component.getProject().findMember(resourcesPath.removeFirstSegments(1)) != null) {
paths.add(resourcesPath);
}
}
}
}
} else {
paths.add(project.getFullPath());
}
return (IPath[]) paths.toArray(new IPath[paths.size()]);
}
use of org.eclipse.wst.common.componentcore.resources.IVirtualReference in project webtools.sourceediting by eclipse.
the class FacetModuleCoreSupportDelegate method resolveInReferenced.
private static IPath resolveInReferenced(IProject project, IPath runtimeReference) {
IVirtualReference[] references = ComponentCore.createComponent(project).getReferences();
if (references != null) {
for (int i = 0; i < references.length; i++) {
IVirtualComponent referencedComponent = references[i].getReferencedComponent();
if (referencedComponent == null)
continue;
IVirtualComponent component = referencedComponent.getComponent();
if (component == null)
continue;
IVirtualFolder rootFolder = component.getRootFolder();
if (rootFolder == null)
continue;
IPath referencedPathRoot = rootFolder.getWorkspaceRelativePath();
/* http://bugs.eclipse.org/410161 */
if (referencedPathRoot != null) {
/*
* See Servlet 3.0, section 4.6, web fragments as required
* projects
*/
IPath resolved = referencedPathRoot.append(FacetModuleCoreSupport.META_INF_RESOURCES).append(runtimeReference);
if (resolved != null && component.getProject().findMember(resolved.removeFirstSegments(1)) != null) {
return resolved;
}
}
// overlay?
IVirtualResource member = rootFolder.findMember(runtimeReference);
if (member != null) {
return member.getWorkspaceRelativePath();
}
}
}
return null;
}
use of org.eclipse.wst.common.componentcore.resources.IVirtualReference in project webtools.sourceediting by eclipse.
the class FacetModuleCoreSupportDelegate method getReferenced.
static IProject[] getReferenced(IProject current) {
if (!ModuleCoreNature.isFlexibleProject(current))
return new IProject[0];
Set projects = new HashSet();
IVirtualReference[] references = ComponentCore.createComponent(current).getReferences();
if (references != null) {
for (int i = 0; i < references.length; i++) {
IVirtualComponent referencedComponent = references[i].getReferencedComponent();
if (referencedComponent == null)
continue;
IProject project = referencedComponent.getProject();
if (project == null || project.equals(current))
continue;
projects.add(project);
}
}
return (IProject[]) projects.toArray(new IProject[projects.size()]);
}
use of org.eclipse.wst.common.componentcore.resources.IVirtualReference in project webtools.sourceediting by eclipse.
the class ComponentDeployable method addUtilMembers.
protected void addUtilMembers(IVirtualComponent vc) {
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)) {
addUtilMember(vc, reference, reference.getRuntimePath());
}
}
} finally {
if (edit != null)
edit.dispose();
}
}
use of org.eclipse.wst.common.componentcore.resources.IVirtualReference in project webtools.sourceediting by eclipse.
the class ComponentDeployable method getModules.
public IModule[] getModules() {
List<IModule> modules = new ArrayList<IModule>();
if (component != null) {
IVirtualReference[] components = getReferences(component);
for (int i = 0; i < components.length; i++) {
IVirtualReference reference = components[i];
if (reference != null && reference.getDependencyType() == IVirtualReference.DEPENDENCY_TYPE_USES) {
IVirtualComponent virtualComp = reference.getReferencedComponent();
IModule module = gatherModuleReference(component, virtualComp);
if (module != null && !modules.contains(module))
modules.add(module);
}
}
}
return modules.toArray(new IModule[modules.size()]);
}
Aggregations