diff options
author | Eike Stepper | 2010-10-09 07:33:23 +0000 |
---|---|---|
committer | Eike Stepper | 2010-10-09 07:33:23 +0000 |
commit | 184c5cb04c88f0f91cb4416ee471e73593837c21 (patch) | |
tree | 8a8fb9dee354cbbed2e6ac668a8b2e3a1049138c /plugins/org.eclipse.emf.cdo.server.ocl | |
parent | 0b276e5309660e5e16e1e8295fb41a1ea510aadd (diff) | |
download | cdo-184c5cb04c88f0f91cb4416ee471e73593837c21.tar.gz cdo-184c5cb04c88f0f91cb4416ee471e73593837c21.tar.xz cdo-184c5cb04c88f0f91cb4416ee471e73593837c21.zip |
[256931] Provide common query language (OCL)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=256931
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.ocl')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.ocl/src/org/eclipse/emf/cdo/server/ocl/OCLQueryHandler.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.ocl/src/org/eclipse/emf/cdo/server/ocl/OCLQueryHandler.java b/plugins/org.eclipse.emf.cdo.server.ocl/src/org/eclipse/emf/cdo/server/ocl/OCLQueryHandler.java index 8a784ba81a..67842cc724 100644 --- a/plugins/org.eclipse.emf.cdo.server.ocl/src/org/eclipse/emf/cdo/server/ocl/OCLQueryHandler.java +++ b/plugins/org.eclipse.emf.cdo.server.ocl/src/org/eclipse/emf/cdo/server/ocl/OCLQueryHandler.java @@ -69,8 +69,6 @@ public class OCLQueryHandler implements IQueryHandler public static final String LANGUAGE_NAME = "ocl"; //$NON-NLS-1$ - public static final String CONTEXT_PARAMETER = "context"; //$NON-NLS-1$ - public OCLQueryHandler() { } @@ -78,13 +76,11 @@ public class OCLQueryHandler implements IQueryHandler public void executeQuery(CDOQueryInfo info, IQueryContext context) { String queryString = info.getQueryString(); - Map<String, Object> parameters = new HashMap<String, Object>(info.getParameters()); - boolean legacyModeEnabled = true; // TODO Add this to CDOQueryInfo! CDOExtentMap extentMap = null; try { - CDOView view = CDOServerUtil.openView(context.getView(), legacyModeEnabled); + CDOView view = CDOServerUtil.openView(context.getView(), info.isLegacyModeEnabled()); CDOPackageRegistry packageRegistry = view.getSession().getPackageRegistry(); EcoreEnvironmentFactory envFactory = new EcoreEnvironmentFactory(packageRegistry); @@ -98,15 +94,20 @@ public class OCLQueryHandler implements IQueryHandler EClassifier classifier; EObject object = null; - Object contextParameter = parameters.get(CONTEXT_PARAMETER); - parameters.remove(CONTEXT_PARAMETER); - + Object contextParameter = info.getContext(); if (contextParameter instanceof CDOID) { CDOID id = (CDOID)contextParameter; - InternalCDOObject cdoObject = (InternalCDOObject)view.getObject(id); - object = cdoObject.cdoInternalInstance(); - classifier = object.eClass(); + if (id.isNull()) + { + classifier = getArbitraryContextClassifier(packageRegistry); + } + else + { + InternalCDOObject cdoObject = (InternalCDOObject)view.getObject(id); + object = cdoObject.cdoInternalInstance(); + classifier = object.eClass(); + } } else if (contextParameter instanceof EClassifier) { @@ -119,6 +120,7 @@ public class OCLQueryHandler implements IQueryHandler helper.setContext(classifier); + Map<String, Object> parameters = new HashMap<String, Object>(info.getParameters()); initEnvironment(ocl.getEnvironment(), packageRegistry, parameters); OCLExpression<EClassifier> expr = helper.createQuery(queryString); |