Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-10-09 07:33:23 +0000
committerEike Stepper2010-10-09 07:33:23 +0000
commit184c5cb04c88f0f91cb4416ee471e73593837c21 (patch)
tree8a8fb9dee354cbbed2e6ac668a8b2e3a1049138c /plugins/org.eclipse.emf.cdo.server.ocl
parent0b276e5309660e5e16e1e8295fb41a1ea510aadd (diff)
downloadcdo-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.java24
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);

Back to the top