Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2008-07-19 18:27:45 +0000
committerEike Stepper2008-07-19 18:27:45 +0000
commitaee8018368b33588062d596152fb7e7088ff17a9 (patch)
treed3d912db525d83ca654394ac1c7631a86fdf2f2c /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util
parent0de3fe1ad1f75fcb990c764d8c3b25ae1f08e300 (diff)
downloadcdo-aee8018368b33588062d596152fb7e7088ff17a9.tar.gz
cdo-aee8018368b33588062d596152fb7e7088ff17a9.tar.xz
cdo-aee8018368b33588062d596152fb7e7088ff17a9.zip
Added null guards and optional ecore exclusion
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java151
1 files changed, 99 insertions, 52 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java
index 865f0be639..d93fec4edc 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/CompletePackageClosure.java
@@ -23,6 +23,7 @@ import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EParameter;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.ETypeParameter;
+import org.eclipse.emf.ecore.EcorePackage;
import java.util.HashSet;
import java.util.List;
@@ -35,45 +36,63 @@ public class CompletePackageClosure extends PackageClosure
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_MODEL, CompletePackageClosure.class);
+ private boolean excludeEcore;
+
public CompletePackageClosure()
{
}
+ public CompletePackageClosure(boolean excludeEcore)
+ {
+ this.excludeEcore = excludeEcore;
+ }
+
@Override
protected void collectContents(EPackage ePackage, Set<EPackage> visited)
{
- Set<EClass> classes = new HashSet<EClass>();
- List<EClassifier> classifiers = ePackage.getEClassifiers();
- for (EClassifier classifier : classifiers)
+ if (ePackage != null)
{
- handleEClassifier(classifier, classes);
- }
+ if (excludeEcore && ePackage == EcorePackage.eINSTANCE)
+ {
+ return;
+ }
- for (EClass eClass : classes)
- {
- final EPackage p = eClass.getEPackage();
- if (p != null)
+ Set<EClass> classes = new HashSet<EClass>();
+ List<EClassifier> classifiers = ePackage.getEClassifiers();
+ for (EClassifier classifier : classifiers)
+ {
+ handleEClassifier(classifier, classes);
+ }
+
+ for (EClass eClass : classes)
{
- if (visited.add(p))
+ final EPackage p = eClass.getEPackage();
+ if (p != null)
{
- if (TRACER.isEnabled())
+ if (visited.add(p))
{
- TRACER.trace("Found package " + p.getNsURI());
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace("Found package " + p.getNsURI());
+ }
}
}
- }
- else
- {
- OM.LOG.warn("Package == null for " + eClass.getName());
+ else
+ {
+ OM.LOG.warn("Package == null for " + eClass.getName());
+ }
}
}
}
protected void handleEClassifiers(List<EClassifier> classifiers, Set<EClass> visited)
{
- for (EClassifier classifier : classifiers)
+ if (classifiers != null)
{
- handleEClassifier(classifier, visited);
+ for (EClassifier classifier : classifiers)
+ {
+ handleEClassifier(classifier, visited);
+ }
}
}
@@ -87,87 +106,115 @@ public class CompletePackageClosure extends PackageClosure
protected void handleEClasses(List<EClass> classes, Set<EClass> visited)
{
- for (EClass eClass : classes)
+ if (classes != null)
{
- handleEClass(eClass, visited);
+ for (EClass eClass : classes)
+ {
+ handleEClass(eClass, visited);
+ }
}
}
protected void handleEClass(EClass eClass, Set<EClass> visited)
{
- if (visited.add(eClass))
+ if (eClass != null)
{
- if (TRACER.isEnabled())
+ if (visited.add(eClass))
{
- TRACER.trace("Found class " + eClass.getName());
+ if (TRACER.isEnabled())
+ {
+ TRACER.trace("Found class " + eClass.getName());
+ }
+
+ handleEStructuralFeatures(eClass.getEStructuralFeatures(), visited);
+ handleEOperations(eClass.getEOperations(), visited);
+ handleEClasses(eClass.getESuperTypes(), visited);
+ handleEGenericTypes(eClass.getEGenericSuperTypes(), visited);
+ handleETypeParameters(eClass.getETypeParameters(), visited);
}
- handleEStructuralFeatures(eClass.getEStructuralFeatures(), visited);
- handleEOperations(eClass.getEOperations(), visited);
- handleEClasses(eClass.getESuperTypes(), visited);
- handleEGenericTypes(eClass.getEGenericSuperTypes(), visited);
- handleETypeParameters(eClass.getETypeParameters(), visited);
}
}
protected void handleEStructuralFeatures(List<EStructuralFeature> structuralFeatures, Set<EClass> visited)
{
- for (EStructuralFeature structuralFeature : structuralFeatures)
+ if (structuralFeatures != null)
{
- handleEClassifier(structuralFeature.getEType(), visited);
- handleEGenericType(structuralFeature.getEGenericType(), visited);
+ for (EStructuralFeature structuralFeature : structuralFeatures)
+ {
+ handleEClassifier(structuralFeature.getEType(), visited);
+ handleEGenericType(structuralFeature.getEGenericType(), visited);
+ }
}
}
protected void handleEOperations(List<EOperation> operations, Set<EClass> visited)
{
- for (EOperation operation : operations)
+ if (operations != null)
{
- handleEClassifier(operation.getEType(), visited);
- handleEGenericType(operation.getEGenericType(), visited);
- handleETypeParameters(operation.getETypeParameters(), visited);
- handleEParameters(operation.getEParameters(), visited);
- handleEClassifiers(operation.getEExceptions(), visited);
- handleEGenericTypes(operation.getEGenericExceptions(), visited);
+ for (EOperation operation : operations)
+ {
+ handleEClassifier(operation.getEType(), visited);
+ handleEGenericType(operation.getEGenericType(), visited);
+ handleETypeParameters(operation.getETypeParameters(), visited);
+ handleEParameters(operation.getEParameters(), visited);
+ handleEClassifiers(operation.getEExceptions(), visited);
+ handleEGenericTypes(operation.getEGenericExceptions(), visited);
+ }
}
}
protected void handleEParameters(List<EParameter> parameters, Set<EClass> visited)
{
- for (EParameter parameter : parameters)
+ if (parameters != null)
{
- handleEClassifier(parameter.getEType(), visited);
- handleEGenericType(parameter.getEGenericType(), visited);
+ for (EParameter parameter : parameters)
+ {
+ handleEClassifier(parameter.getEType(), visited);
+ handleEGenericType(parameter.getEGenericType(), visited);
+ }
}
}
protected void handleEGenericTypes(EList<EGenericType> genericTypes, Set<EClass> visited)
{
- for (EGenericType genericType : genericTypes)
+ if (genericTypes != null)
{
- handleEGenericType(genericType, visited);
+ for (EGenericType genericType : genericTypes)
+ {
+ handleEGenericType(genericType, visited);
+ }
}
}
protected void handleEGenericType(EGenericType genericType, Set<EClass> visited)
{
- handleEClassifier(genericType.getEClassifier(), visited);
- handleEClassifier(genericType.getERawType(), visited);
- handleEGenericType(genericType.getELowerBound(), visited);
- handleEGenericType(genericType.getEUpperBound(), visited);
- handleEGenericTypes(genericType.getETypeArguments(), visited);
- handleETypeParameter(genericType.getETypeParameter(), visited);
+ if (genericType != null)
+ {
+ handleEClassifier(genericType.getEClassifier(), visited);
+ handleEClassifier(genericType.getERawType(), visited);
+ handleEGenericType(genericType.getELowerBound(), visited);
+ handleEGenericType(genericType.getEUpperBound(), visited);
+ handleEGenericTypes(genericType.getETypeArguments(), visited);
+ handleETypeParameter(genericType.getETypeParameter(), visited);
+ }
}
protected void handleETypeParameters(EList<ETypeParameter> typeParameters, Set<EClass> visited)
{
- for (ETypeParameter typeParameter : typeParameters)
+ if (typeParameters != null)
{
- handleETypeParameter(typeParameter, visited);
+ for (ETypeParameter typeParameter : typeParameters)
+ {
+ handleETypeParameter(typeParameter, visited);
+ }
}
}
protected void handleETypeParameter(ETypeParameter typeParameter, Set<EClass> visited)
{
- handleEGenericTypes(typeParameter.getEBounds(), visited);
+ if (typeParameter != null)
+ {
+ handleEGenericTypes(typeParameter.getEBounds(), visited);
+ }
}
}

Back to the top