[349039] Deployment Assembly doesn't handle deleted entries
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
index 11d72c7..7281d5c 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
@@ -45,6 +45,7 @@
public static String ProjectConversionError;
public static String ExistingFolderError;
public static String Revert;
+ public static String ErrorEntryNotFound;
static {
// initialize resource bundle
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java
index 7d88506..d262603 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java
@@ -123,8 +123,8 @@
// default impl
if( component.isBinary() ) {
- IPath p = (IPath)component.getAdapter(IPath.class);
- return p == null ? null : p.toString();
+ IPath p = (IPath)component.getAdapter(IPath.class);
+ return p == null ? component.getName() : p.toString();
}
return component.getProject().getName();
}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DefaultDeploymentAssemblyVerifier.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DefaultDeploymentAssemblyVerifier.java
new file mode 100644
index 0000000..1a158ee
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DefaultDeploymentAssemblyVerifier.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.componentcore.ui.Messages;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.ResourceMappingFilterExtensionRegistry;
+import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
+
+/**
+ * This class does basic validation of the deployment assembly. It validates that
+ * references to other components like projects and archives exists. It also validates that
+ * folder mappings exists in the project.
+ *
+ */
+
+public class DefaultDeploymentAssemblyVerifier extends AbstractDeploymentAssemblyVerifier {
+
+ @Override
+ public IStatus verify(DeploymentAssemblyVerifierData data) {
+ IStatus status = validateResourceMappings(data, null);
+ return validateMissingReferences(data, status);
+ }
+
+
+ protected IStatus validateResourceMappings(DeploymentAssemblyVerifierData data, IStatus existingStatus){
+ IStatus status = existingStatus!=null?existingStatus:Status.OK_STATUS;
+ ArrayList<ComponentResourceProxy> mappings = data.getResourceMappings();
+ if (mappings == null)
+ return status;
+ int severity = Status.ERROR;
+ String msg = null;
+ IProject project = data.getComponent().getProject();
+ for (ComponentResourceProxy mapping:mappings){
+ if (ResourceMappingFilterExtensionRegistry.shouldFilter(mapping.source))
+ continue; // Do not validate filtered entries
+ if (!project.exists(mapping.source)){
+ msg = NLS.bind(Messages.ErrorEntryNotFound, mapping.source);
+ status = appendStatusMessage(status, msg, severity);
+ }
+ }
+ return status;
+
+ }
+
+ protected IStatus validateMissingReferences(DeploymentAssemblyVerifierData data, IStatus existingStatus) {
+ IStatus status = existingStatus!=null?existingStatus:Status.OK_STATUS;
+ ArrayList<IVirtualReference> references = data.getCurrentReferences();
+ if (references == null){
+ return status;
+ }
+ int severity = Status.ERROR;
+ String msg = null;
+ for (IVirtualReference reference:references){
+ if (!reference.getReferencedComponent().exists()){
+ String name;
+ if( reference.getReferencedComponent().isBinary() ) {
+ IVirtualComponent vc = reference.getReferencedComponent();
+ IPath p = (IPath)vc.getAdapter(IPath.class);
+ name= p == null ? vc.getName() : p.toString();
+ }
+ else {
+ name = reference.getReferencedComponent().getProject().getName();
+ }
+ msg = NLS.bind(Messages.ErrorEntryNotFound, name);
+ status = appendStatusMessage(status, msg, severity);
+ }
+ }
+ return status;
+ }
+
+ private IStatus appendStatusMessage(IStatus existingStatus, String message, int severity) {
+ MultiStatus multiStatus;
+ IStatus newStatus = new Status(severity, ModuleCoreUIPlugin.PLUGIN_ID, message);
+ int newSeverity = severity;
+ if(existingStatus.getSeverity() > severity)
+ newSeverity = existingStatus.getSeverity();
+ if(existingStatus instanceof MultiStatus){
+ multiStatus = (MultiStatus)existingStatus;
+ multiStatus.merge(newStatus);
+ } else {
+ if(!existingStatus.isMultiStatus() && existingStatus.isOK()) {
+ return newStatus;
+ }
+ IStatus [] children = new IStatus [] {existingStatus, newStatus};
+ multiStatus = new MultiStatus(ModuleCoreUIPlugin.PLUGIN_ID, newSeverity, children, null, null);
+ }
+ return multiStatus;
+ }
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java
index 0af3524..ba74ba0 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -102,16 +102,25 @@
* @return List of IConfigurationElements representing instances of IDeploymentAssemblyVerifier
*/
public List getVerifierExtensions(String facetTypeID, IRuntime runtime) {
-
+ // Identifier used by verifiers that will run for any runtime
+ String allRuntimes = "org.eclipse.wst.common.modulecore.ui.deploymentAssemblyVerifier.anyruntime"; //$NON-NLS-1$
String runtimeID = null;
if (runtime == null)
runtimeID = "None"; //$NON-NLS-1$
else
runtimeID = runtime.getRuntimeType().getId();
- List verifiers = getVerifiers(facetTypeID, runtimeID);
+ // Get the verifiers specific for the target runtime
+ List verifiers = getVerifiers(facetTypeID, runtimeID);
if (verifiers == null)
- return Collections.EMPTY_LIST;
- return verifiers;
+ verifiers = Collections.EMPTY_LIST;
+ // Get the verifiers for any runtime
+ List genericVerifiers = getVerifiers(facetTypeID, allRuntimes);
+ if (genericVerifiers == null)
+ genericVerifiers = Collections.EMPTY_LIST;
+ // Merge both verifiers into one list and return
+ List result = new ArrayList(verifiers);
+ result.addAll(genericVerifiers);
+ return result;
}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
index 3e5bfc2..5083668 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
@@ -26,4 +26,5 @@
WizardError=Wizard Error
ProjectConversionError=Error converting project {0} into a flexible project
ExistingFolderError= Folder "{0}" already exists.
-Revert=Re&vert
\ No newline at end of file
+Revert=Re&vert
+ErrorEntryNotFound=Cannot find entry: "{0}".
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
index bff1e3b..7730f01 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
@@ -902,7 +902,7 @@
protected void initialize() {
Map<String, Object> options = new HashMap<String, Object>();
- options.put(IVirtualComponent.REQUESTED_REFERENCE_TYPE, IVirtualComponent.DISPLAYABLE_REFERENCES);
+ options.put(IVirtualComponent.REQUESTED_REFERENCE_TYPE, IVirtualComponent.DISPLAYABLE_REFERENCES_ALL);
IVirtualReference[] refs = rootComponent.getReferences(options);
IVirtualComponent comp;
originalReferences.addAll(Arrays.asList(refs));
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
index 4bcf5a8..2719613 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -193,6 +193,44 @@
return null;
}
+
+ /**
+ * <p>
+ * For {@see WorkbenchComponent}s that are contained within a project, the containing project
+ * can be determined with the {@see WorkbenchComponent}'s fully-qualified module URI.
+ * </p>
+ * <p>
+ * The following method will return the corresponding project for the supplied module URI,
+ * if it can be determined.
+ * </p>
+ * <p>
+ * The method may return an inaccessible project.
+ * </p>
+ * <p>
+ * <b>This method may return null. </b>
+ * </p>
+ *
+ * @param aModuleURI
+ * A valid, fully-qualified module URI
+ * @param onlyAccessibleProjects
+ * True if the method should return only accessible projects.
+ * @return The project that contains the module referenced by the module URI
+ * @throws UnresolveableURIException
+ * If the supplied module URI is invalid or unresolveable.
+ */
+ public static IProject getContainingProject(URI aModuleURI, boolean onlyAccessibleProjects) throws UnresolveableURIException {
+ ModuleURIUtil.ensureValidFullyQualifiedModuleURI(aModuleURI);
+ String projectName = aModuleURI.segment(ModuleURIUtil.ModuleURI.PROJECT_NAME_INDX);
+ if (projectName == null || projectName.length() == 0)
+ throw new UnresolveableURIException(aModuleURI);
+ IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ if (!onlyAccessibleProjects)
+ return project;
+ if (project.isAccessible())
+ return project;
+ return null;
+ }
+
/**
* <p>
* For {@see WorkbenchComponent}s that are contained within a project, the containing project
@@ -216,14 +254,7 @@
* If the supplied module URI is invalid or unresolveable.
*/
public static IProject getContainingProject(URI aModuleURI) throws UnresolveableURIException {
- ModuleURIUtil.ensureValidFullyQualifiedModuleURI(aModuleURI);
- String projectName = aModuleURI.segment(ModuleURIUtil.ModuleURI.PROJECT_NAME_INDX);
- if (projectName == null || projectName.length() == 0)
- throw new UnresolveableURIException(aModuleURI);
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
- if (project.isAccessible())
- return project;
- return null;
+ return getContainingProject(aModuleURI, true);
}
/**
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceOperation.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceOperation.java
index fcc3b1a..cd085b3 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceOperation.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceOperation.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,7 +12,9 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
@@ -61,7 +63,9 @@
IVirtualComponent sourceComp = (IVirtualComponent) model.getProperty(IAddReferenceDataModelProperties.SOURCE_COMPONENT);
if (sourceComp == null || !sourceComp.getProject().isAccessible() || sourceComp.isBinary()) return;
- IVirtualReference [] existingReferencesArray = sourceComp.getReferences();
+ Map<String, Object> options = new HashMap<String, Object>();
+ options.put(IVirtualComponent.REQUESTED_REFERENCE_TYPE, IVirtualComponent.DISPLAYABLE_REFERENCES_ALL);
+ IVirtualReference [] existingReferencesArray = sourceComp.getReferences(options);
if(existingReferencesArray == null || existingReferencesArray.length == 0){
return;
}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/NonResolvableVirtualComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/NonResolvableVirtualComponent.java
new file mode 100644
index 0000000..e8ae753
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/NonResolvableVirtualComponent.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.common.componentcore.internal.resources;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.wst.common.componentcore.ModuleCoreNature;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+
+/**
+ * This class is a stub for virtual components whose underlying project is not accessible (e.g the project
+ * is closed, or was deleted). This class can be returned by virtual component methods to get references
+ * if the underlying project of the referenced component is not accessible.
+ */
+
+public class NonResolvableVirtualComponent extends AbstractResourceListVirtualComponent {
+
+ public NonResolvableVirtualComponent(IProject p, IVirtualComponent referencingComponent) {
+ super(p, referencingComponent);
+ }
+
+ @Override
+ protected IContainer[] getUnderlyingContainers() {
+ return new IContainer[]{};
+ }
+
+ @Override
+ protected IResource[] getLooseResources() {
+ return new IResource[]{};
+ }
+
+ @Override
+ public boolean exists() {
+ IProject project = getProject();
+ return (project.isAccessible() && ModuleCoreNature.isFlexibleProject(project));
+ }
+
+ @Override
+ protected String getFirstIdSegment() {
+ return null;
+ }
+
+ @Override
+ public String getName(){
+ return getProject().getName();
+ }
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
index 9ca7ac4..6a3ea0f 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualComponent.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -33,6 +33,7 @@
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.ModuleCoreNature;
+import org.eclipse.wst.common.componentcore.UnresolveableURIException;
import org.eclipse.wst.common.componentcore.internal.ComponentcoreFactory;
import org.eclipse.wst.common.componentcore.internal.ComponentcorePackage;
import org.eclipse.wst.common.componentcore.internal.ModulecorePlugin;
@@ -41,6 +42,7 @@
import org.eclipse.wst.common.componentcore.internal.StructureEdit;
import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
import org.eclipse.wst.common.componentcore.internal.builder.IDependencyGraph;
+import org.eclipse.wst.common.componentcore.internal.impl.ModuleURIUtil;
import org.eclipse.wst.common.componentcore.resolvers.IReferenceResolver;
import org.eclipse.wst.common.componentcore.resolvers.ReferenceResolverUtil;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
@@ -656,11 +658,20 @@
if (referencedComponent==null)
continue;
IVirtualReference vReference = StructureEdit.createVirtualReference(this, referencedComponent);
- if( vReference != null ){
+ if (vReference != null && vReference.getReferencedComponent() != null){
vReference.setArchiveName( referencedComponent.getArchiveName() );
+ references.add(vReference);
}
- if (vReference != null && vReference.getReferencedComponent() != null)
- references.add(vReference);
+ else {
+ if (vReference != null && vReference.getReferencedComponent() == null){
+ // If none of the resolvers used by StructureEdit.createVirtualReference could find a reference with
+ // a non-null referenced component, try to find it ourselves.
+ vReference = getReferenceForNonResolvableComponent(this, referencedComponent);
+ }
+ if (vReference != null && vReference.getReferencedComponent() != null){
+ references.add(vReference);
+ }
+ }
}
}
}
@@ -671,7 +682,33 @@
core.dispose();
}
}
+
+ /*
+ * Similar to org.eclipse.wst.common.componentcore.resolvers.DefaultReferenceResolver#resolve(IVirtualComponent context, ReferencedComponent referencedComponent)
+ */
+ private IVirtualReference getReferenceForNonResolvableComponent(VirtualComponent context, ReferencedComponent referencedComponent) {
+ IVirtualComponent targetComponent = null;
+ IProject targetProject = null;
+ URI uri = referencedComponent.getHandle();
+ if (uri == null)
+ return null;
+ boolean isClassPathURI = ModuleURIUtil.isClassPathURI(uri);
+ if( !isClassPathURI ){
+ try {
+ targetProject = StructureEdit.getContainingProject(uri, false);
+ } catch(UnresolveableURIException uurie) {
+ return null;
+ }
+
+ targetComponent = new NonResolvableVirtualComponent(targetProject, null);
+ VirtualReference vRef = new VirtualReference(context, targetComponent, referencedComponent.getRuntimePath(), referencedComponent.getDependencyType().getValue());
+ vRef.setArchiveName(referencedComponent.getArchiveName());
+ return vRef;
+ }
+ return null;
+ }
+
/**
* This is an internal method and should not be called except by the
* {@link org.eclipse.wst.common.component.internal.builder.DependencyGraphImpl}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualComponent.java
index 69a1b5a..0df6a67 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/resources/IVirtualComponent.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -43,7 +43,19 @@
public static final String REQUESTED_REFERENCE_TYPE = "REQUESTED_REFERENCE_TYPE";
public static final String HARD_REFERENCES = "HARD_REFERENCES";
public static final String NON_DERIVED_REFERENCES = "NON_DERIVED_REFERENCES";
+
+ /**
+ * Retrieve all component references displayable to the user, excluding references to components that might not
+ * exist (i.e. calls to these component's {@link IVirtualComponent#exists()} return false)
+ */
public static final String DISPLAYABLE_REFERENCES = "DISPLAYABLE_REFERENCES";
+
+ /**
+ * Retrieve all component references displayable to the user, including references to components that might not
+ * exist (i.e. calls to these component's {@link IVirtualComponent#exists()} return false)
+ */
+ public static final String DISPLAYABLE_REFERENCES_ALL = "DISPLAYABLE_REFERENCES_ALL";
+
public static final String FLATTENABLE_REFERENCES = "FLATTENABLE_REFERENCES";
/**