--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.browsing.ui.graph.impl;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.eclipse.jface.resource.ResourceManager;\r
+import org.simantics.browsing.ui.BuiltinKeys.CheckedStateKey;\r
+import org.simantics.browsing.ui.BuiltinKeys.ImageDecoratorKey;\r
+import org.simantics.browsing.ui.BuiltinKeys.ImagerKey;\r
+import org.simantics.browsing.ui.BuiltinKeys.LabelDecoratorKey;\r
+import org.simantics.browsing.ui.BuiltinKeys.LabelerKey;\r
+import org.simantics.browsing.ui.BuiltinKeys.ViewpointKey;\r
+import org.simantics.browsing.ui.CheckedState;\r
+import org.simantics.browsing.ui.NodeContext;\r
+import org.simantics.browsing.ui.PrimitiveQueryUpdater;\r
+import org.simantics.browsing.ui.Tester;\r
+import org.simantics.browsing.ui.common.EvaluatorData;\r
+import org.simantics.browsing.ui.common.EvaluatorData.Evaluator;\r
+import org.simantics.browsing.ui.common.EvaluatorData.EvaluatorTree;\r
+import org.simantics.browsing.ui.common.EvaluatorDataImpl;\r
+import org.simantics.browsing.ui.common.EvaluatorImpl;\r
+import org.simantics.browsing.ui.common.exception.InvalidBrowserIdException;\r
+import org.simantics.browsing.ui.common.extension.CheckedStateContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.ComparableContextContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.EvaluatorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.EvaluatorFactory;\r
+import org.simantics.browsing.ui.common.extension.ImageDecoratorContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.ImagerContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.LabelDecoratorContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.LabelerContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.common.extension.ViewpointContributionContributorBindingExtensionManager;\r
+import org.simantics.browsing.ui.content.CheckedStateFactory;\r
+import org.simantics.browsing.ui.content.ComparableContextFactory;\r
+import org.simantics.browsing.ui.content.ContributorBinding;\r
+import org.simantics.browsing.ui.content.ImageDecorator;\r
+import org.simantics.browsing.ui.content.ImageDecoratorFactory;\r
+import org.simantics.browsing.ui.content.Imager;\r
+import org.simantics.browsing.ui.content.ImagerFactory;\r
+import org.simantics.browsing.ui.content.LabelDecorator;\r
+import org.simantics.browsing.ui.content.LabelDecoratorFactory;\r
+import org.simantics.browsing.ui.content.Labeler;\r
+import org.simantics.browsing.ui.content.LabelerFactory;\r
+import org.simantics.browsing.ui.content.Viewpoint;\r
+import org.simantics.browsing.ui.content.ViewpointContributionFactory;\r
+import org.simantics.browsing.ui.content.ViewpointFactory;\r
+import org.simantics.browsing.ui.model.InvalidContribution;\r
+import org.simantics.browsing.ui.model.browsecontexts.BrowseContext;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.RequestProcessor;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.exception.ResourceNotFoundException;\r
+\r
+/**\r
+ * An entry point for loading an EvaluatorData in a data-oriented fashion. Also\r
+ * adds contributions made by extensions of the related extension points.\r
+ * \r
+ * @author Antti Villberg\r
+ */\r
+public class Evaluators {\r
+\r
+ public static final boolean DEBUG = false;\r
+\r
+ public static void create(EvaluatorData data, final ResourceManager resourceManager,\r
+ final Map<String, Collection<ContributorBinding<ViewpointContributionFactory>>> viewpointContributions,\r
+ final Set<ContributorBinding<ComparableContextFactory>> comparableContextContributions,\r
+ final Set<ContributorBinding<LabelerFactory>> labelerContributions,\r
+ final Set<ContributorBinding<CheckedStateFactory>> checkStateContributions,\r
+ final Set<ContributorBinding<LabelDecoratorFactory>> labelDecoratorContributions,\r
+ final Set<ContributorBinding<ImagerFactory>> imagerContributions,\r
+ final Set<ContributorBinding<ImageDecoratorFactory>> imageDecoratorContributions) {\r
+\r
+ Map<Class<?>, Evaluator> evaluators = new HashMap<Class<?>, Evaluator>();\r
+\r
+ HashMap<String, ContributionViewpointFactory> viewpointFactories = new HashMap<String, ContributionViewpointFactory>();\r
+\r
+ for(final Map.Entry<String, Collection<ContributorBinding<ViewpointContributionFactory>>> entry : viewpointContributions.entrySet()) {\r
+ Collection<ViewpointContributionFactory> factories = new ArrayList<ViewpointContributionFactory>();\r
+ for(ContributorBinding<ViewpointContributionFactory> binding : entry.getValue()) factories.add(binding.getContributor().getFactory());\r
+ viewpointFactories.put(entry.getKey(), new ContributionViewpointFactory(entry.getKey(), factories));\r
+ }\r
+\r
+ for(final Map.Entry<String, Collection<ContributorBinding<ViewpointContributionFactory>>> entry : viewpointContributions.entrySet()) {\r
+ ContributionViewpointFactory factory = viewpointFactories.get(entry.getKey());\r
+ for(ContributorBinding<ViewpointContributionFactory> binding : entry.getValue()) {\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root viewpoint " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addViewpoint(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add viewpoint " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<ViewpointFactory> branch = ((EvaluatorImpl)evaluator).getViewpointTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+ }\r
+\r
+ for(final ContributorBinding<ComparableContextFactory> binding : comparableContextContributions) {\r
+\r
+ ComparableContextFactory factory = binding.getContributor().getFactory();\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root comparable context " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addComparableContext(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add comparable context " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<ComparableContextFactory> branch = ((EvaluatorImpl)evaluator).getComparableContextTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+\r
+ for(final ContributorBinding<LabelerFactory> binding : labelerContributions) {\r
+\r
+ LabelerFactory factory = binding.getContributor().getFactory();\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root labeler " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addLabeler(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add labeler " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<LabelerFactory> branch = ((EvaluatorImpl)evaluator).getLabelerTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+\r
+ for(final ContributorBinding<CheckedStateFactory> binding : checkStateContributions) {\r
+\r
+ CheckedStateFactory factory = binding.getContributor().getFactory();\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root check state " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addCheckState(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add check state " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<CheckedStateFactory> branch = ((EvaluatorImpl)evaluator).getCheckStateTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+\r
+ for(final ContributorBinding<LabelDecoratorFactory> binding : labelDecoratorContributions) {\r
+\r
+ LabelDecoratorFactory factory = binding.getContributor().getFactory();\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root label decorator " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addLabelDecorator(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add label decorator " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<LabelDecoratorFactory> branch = ((EvaluatorImpl)evaluator).getLabelDecoratorTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+\r
+ for(final ContributorBinding<ImagerFactory> binding : imagerContributions) {\r
+\r
+ ImagerFactory factory = binding.getContributor().getFactory();\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root imager " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addImager(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add imager " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<ImagerFactory> branch = ((EvaluatorImpl)evaluator).getImagerTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+\r
+ for(final ContributorBinding<ImageDecoratorFactory> binding : imageDecoratorContributions) {\r
+\r
+ ImageDecoratorFactory factory = binding.getContributor().getFactory();\r
+ Tester test = binding.getContributor().getNodeContextTester();\r
+ Class<?> clazz = binding.getContributor().getInputClass();\r
+ Evaluator evaluator = evaluators.get(clazz);\r
+ if(evaluator == null) {\r
+ evaluator = data.newEvaluator();\r
+ evaluators.put(clazz, evaluator);\r
+ }\r
+ if(test == null) {\r
+ if (DEBUG)\r
+ System.out.println("add root image decorator " + factory + " to class " + clazz.getSimpleName());\r
+ evaluator.addImageDecorator(factory, binding.getPreference());\r
+ } else {\r
+ if (DEBUG)\r
+ System.out.println("add image decorator " + factory + " to class " + clazz.getSimpleName() + " with tester " + test);\r
+ EvaluatorTree<ImageDecoratorFactory> branch = ((EvaluatorImpl)evaluator).getImageDecoratorTree().addBranch(test);\r
+ branch.addFactory(factory, binding.getPreference());\r
+ }\r
+ }\r
+\r
+ for(Map.Entry<Class<?>, Evaluator> entry : evaluators.entrySet()) {\r
+ data.addEvaluator(entry.getKey(), entry.getValue());\r
+ }\r
+\r
+ }\r
+\r
+ /**\r
+ * @param processor\r
+ * @param browseContexts\r
+ * @param resourceManager\r
+ * @param data\r
+ * @return the URIs of the actual set of browse contexts loaded by this\r
+ * method. If an included browse context resource has no URI, it\r
+ * will not be included in this set.\r
+ */\r
+ public static Set<String> loadModelled(\r
+ RequestProcessor processor, \r
+ final Set<String> browseContexts, \r
+ final ResourceManager resourceManager,\r
+ final EvaluatorDataImpl data,\r
+ final boolean useNodeBrowseContexts,\r
+ final boolean useNodeActionContexts) {\r
+\r
+ final Set<String> allBrowseContexts = new HashSet<String>(browseContexts);\r
+\r
+ // Create evaluator\r
+ final EvaluatorImpl eval = new EvaluatorImpl();\r
+ data.addEvaluator(Object.class, eval); \r
+ \r
+ try {\r
+\r
+ // Load data for evaluator\r
+ processor.syncRequest(new ReadRequest() {\r
+ \r
+ @Override\r
+ public void run(ReadGraph graph) throws DatabaseException {\r
+\r
+ // Map browse context names to resources\r
+ Collection<Resource> browseContextResources = new ArrayList<Resource>(browseContexts.size());\r
+ for(String browseContext : browseContexts) {\r
+ try {\r
+ browseContextResources.add(graph.getResource(browseContext));\r
+ } catch(ResourceNotFoundException e) {\r
+ // Expected result, if no modelled contributions exist.\r
+ //System.err.println("Didn't find " + browseContext + " while loading model browser.");\r
+ } catch(DatabaseException e) {\r
+ System.err.println("Didn't find " + browseContext + " while loading model browser.");\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ // Load browse context\r
+ try {\r
+ final BrowseContext browseContext = \r
+ BrowseContext.create(graph, browseContextResources);\r
+ \r
+ data.setBrowseContext(browseContext);\r
+\r
+ // Get URI's for all found browse contexts to fill return value\r
+ for (Resource context : BrowseContext.findSubcontexts(graph, browseContextResources)) {\r
+ String uri = graph.getPossibleURI(context);\r
+ if (uri != null)\r
+ allBrowseContexts.add(uri);\r
+ }\r
+\r
+ // Fill evaluator\r
+ eval.addLabeler(new LabelerFactory() {\r
+ @Override\r
+ public Labeler create(PrimitiveQueryUpdater updater, final NodeContext context,\r
+ LabelerKey key) {\r
+ return new EvaluatorLabeler(updater, context, key, browseContext, useNodeBrowseContexts);\r
+ }\r
+ }, 0.0);\r
+\r
+ eval.addImager(new ImagerFactory() {\r
+ @Override\r
+ public Imager create(PrimitiveQueryUpdater updater, NodeContext context,\r
+ ImagerKey key) {\r
+ return new EvaluatorImager(updater, context, key, browseContext, useNodeBrowseContexts);\r
+ }\r
+ }, 0.0);\r
+\r
+ eval.addCheckState(new CheckedStateFactory() {\r
+\r
+ @Override\r
+ public CheckedState create(PrimitiveQueryUpdater updater,\r
+ NodeContext context, CheckedStateKey key) {\r
+ return new EvaluatorCheckedState(updater, context, key, browseContext, useNodeBrowseContexts).getState();\r
+ }\r
+ }, 0.0);\r
+\r
+ eval.addLabelDecorator(new LabelDecoratorFactory() {\r
+ @Override\r
+ public LabelDecorator create(PrimitiveQueryUpdater updater,\r
+ NodeContext context, LabelDecoratorKey key) {\r
+ return new EvaluatorLabelDecorator(updater, context, key, browseContext, useNodeBrowseContexts);\r
+ }\r
+ }, 0.0);\r
+\r
+ eval.addImageDecorator(new ImageDecoratorFactory() {\r
+ @Override\r
+ public ImageDecorator create(PrimitiveQueryUpdater updater,\r
+ NodeContext context, ImageDecoratorKey key) {\r
+ return new EvaluatorImageDecorator(updater, context, key, browseContext, useNodeBrowseContexts);\r
+ }\r
+ }, 0.0);\r
+\r
+ eval.addViewpoint(new ViewpointFactory() {\r
+ @Override\r
+ public Viewpoint create(PrimitiveQueryUpdater updater, \r
+ final NodeContext context,\r
+ ViewpointKey key) {\r
+ return new EvaluatorViewpoint(updater, context, key, browseContext, useNodeBrowseContexts, useNodeActionContexts);\r
+ }\r
+ }, 0.0);\r
+ } catch (InvalidContribution e) {\r
+ e.printStackTrace();\r
+ return;\r
+ }\r
+\r
+ }\r
+\r
+ });\r
+\r
+ } catch (DatabaseException e) {\r
+\r
+ e.printStackTrace();\r
+\r
+ }\r
+\r
+ return allBrowseContexts;\r
+ }\r
+\r
+ public static void loadExtensions(RequestProcessor processor, final Set<String> browseContexts, final ResourceManager resourceManager,\r
+ final Map<String, Collection<ContributorBinding<ViewpointContributionFactory>>> viewpointContributions,\r
+ final Set<ContributorBinding<ComparableContextFactory>> comparableContextContributions,\r
+ final Set<ContributorBinding<LabelerFactory>> labelerContributions,\r
+ final Set<ContributorBinding<CheckedStateFactory>> checkStateContributions,\r
+ final Set<ContributorBinding<LabelDecoratorFactory>> labelDecoratorContributions,\r
+ final Set<ContributorBinding<ImagerFactory>> imagerContributions,\r
+ final Set<ContributorBinding<ImageDecoratorFactory>> imageDecoratorContributions) {\r
+\r
+ for(ContributorBinding<ViewpointContributionFactory> binding : ViewpointContributionContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ String viewpointId = binding.getContributor().getFactory().getViewpointId();\r
+ Collection<ContributorBinding<ViewpointContributionFactory>> viewpoints = viewpointContributions.get(viewpointId);\r
+ if(viewpoints == null) {\r
+ viewpoints = new ArrayList<ContributorBinding<ViewpointContributionFactory>>();\r
+ viewpointContributions.put(viewpointId, viewpoints);\r
+ }\r
+ viewpoints.add(binding);\r
+ }\r
+\r
+ for(final ContributorBinding<ComparableContextFactory> binding : ComparableContextContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ comparableContextContributions.add(binding);\r
+ }\r
+\r
+ for(final ContributorBinding<LabelerFactory> binding : LabelerContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ labelerContributions.add(binding);\r
+ }\r
+\r
+ for(final ContributorBinding<CheckedStateFactory> binding : CheckedStateContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ checkStateContributions.add(binding);\r
+ }\r
+\r
+ for(final ContributorBinding<LabelDecoratorFactory> binding : LabelDecoratorContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ labelDecoratorContributions.add(binding);\r
+ }\r
+\r
+ for(final ContributorBinding<ImagerFactory> binding : ImagerContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ imagerContributions.add(binding);\r
+ }\r
+\r
+ for(final ContributorBinding<ImageDecoratorFactory> binding : ImageDecoratorContributorBindingExtensionManager.getInstance().getBoundContributions(browseContexts)) {\r
+ imageDecoratorContributions.add(binding);\r
+ }\r
+\r
+ }\r
+\r
+ public static EvaluatorData load(RequestProcessor processor, Set<String> browseContexts, ResourceManager resourceManager) throws InvalidBrowserIdException {\r
+ return load(processor, browseContexts, resourceManager, false, false);\r
+ }\r
+\r
+ public static EvaluatorData load(RequestProcessor processor, Set<String> browseContexts, ResourceManager resourceManager, boolean useNodeBrowseContexts, boolean useNodeActionContexts) throws InvalidBrowserIdException {\r
+\r
+ Map<String, Collection<ContributorBinding<ViewpointContributionFactory>>> viewpointContributions = new HashMap<String, Collection<ContributorBinding<ViewpointContributionFactory>>>();\r
+ Set<ContributorBinding<ComparableContextFactory>> comparableContextContributions = new HashSet<ContributorBinding<ComparableContextFactory>>();\r
+ Set<ContributorBinding<LabelerFactory>> labelerContributions = new HashSet<ContributorBinding<LabelerFactory>>();\r
+ Set<ContributorBinding<CheckedStateFactory>> checkStateContributions = new HashSet<ContributorBinding<CheckedStateFactory>>();\r
+ Set<ContributorBinding<LabelDecoratorFactory>> labelDecoratorContributions = new HashSet<ContributorBinding<LabelDecoratorFactory>>();\r
+ Set<ContributorBinding<ImagerFactory>> imagerContributions = new HashSet<ContributorBinding<ImagerFactory>>();\r
+ Set<ContributorBinding<ImageDecoratorFactory>> imageDecoratorContributions = new HashSet<ContributorBinding<ImageDecoratorFactory>>();\r
+\r
+ EvaluatorDataImpl data = new EvaluatorDataImpl();\r
+\r
+ // Load modelled contributions\r
+ Set<String> allBrowseContexts = loadModelled(processor, browseContexts, resourceManager, data, useNodeBrowseContexts, useNodeActionContexts);\r
+\r
+ // Load extension point contributions\r
+ loadExtensions(processor, allBrowseContexts, resourceManager, viewpointContributions, comparableContextContributions, labelerContributions, checkStateContributions, labelDecoratorContributions, imagerContributions, imageDecoratorContributions);\r
+\r
+ // Create contributed evaluators\r
+ create(data, resourceManager, viewpointContributions, comparableContextContributions, labelerContributions, checkStateContributions, labelDecoratorContributions, imagerContributions, imageDecoratorContributions);\r
+\r
+ // Create plugin evaluators for the contexts\r
+ for(EvaluatorFactory factory : EvaluatorBindingExtensionManager.getInstance().getBoundFactories(allBrowseContexts)) {\r
+ data.addEvaluator(factory.getClazz(), factory.create(allBrowseContexts));\r
+ }\r
+\r
+ return data;\r
+\r
+ }\r
+ \r
+}\r