コード例 #1
0
  private AdvancedIncQueryEngine createEngine() {
    boolean wildcardMode =
        IncQueryGUIPlugin.getDefault()
            .getPreferenceStore()
            .getBoolean(PreferenceConstants.WILDCARD_MODE);
    boolean dynamicEMFMode =
        IncQueryGUIPlugin.getDefault()
            .getPreferenceStore()
            .getBoolean(PreferenceConstants.DYNAMIC_EMF_MODE);

    try {
      AdvancedIncQueryEngine engine =
          AdvancedIncQueryEngine.createUnmanagedEngine(
              key.getNotifier(), wildcardMode, dynamicEMFMode);
      return engine;
    } catch (IncQueryException e) {
      logger.log(
          new Status(
              IStatus.ERROR,
              IncQueryGUIPlugin.PLUGIN_ID,
              "Could not retrieve IncQueryEngine for " + key.getNotifier(),
              e));
      return null;
    }
  }
コード例 #2
0
  public PatternMatcherRootContent(RootContent parent, PatternMatcherRootContentKey key) {
    super(parent);
    this.children = new ContentChildren<PatternMatcherContent>();
    this.taintListener = new ContentEngineTaintListener();
    this.mapping = Maps.newHashMap();
    this.key = key;

    AdvancedIncQueryEngine engine = key.getEngine();
    if (engine == null) {
      key.setEngine(createEngine());
    }
    if (engine != null) {
      engine.addLifecycleListener(taintListener);
    }
  }
コード例 #3
0
  public void registerPattern(final IQuerySpecification<?>... patterns) {
    IncQueryEngine engine = null;
    try {
      engine = key.getEngine();

      if (engine.getBaseIndex().isInWildcardMode()) {
        addMatchersForPatterns(patterns);
      } else {
        engine
            .getBaseIndex()
            .coalesceTraversals(
                new Callable<Void>() {
                  @Override
                  public Void call() {
                    addMatchersForPatterns(patterns);
                    return null;
                  }
                });
      }
      contentStatus = Status.OK_STATUS;
    } catch (IncQueryException ex) {
      reportMatcherError("Cannot initialize pattern matcher engine.", ex);
    } catch (InvocationTargetException e) {
      reportMatcherError(
          "Error during pattern matcher construction: " + e.getCause().getMessage(), e.getCause());
    }
  }
コード例 #4
0
 @Override
 public void dispose() {
   super.dispose();
   AdvancedIncQueryEngine engine = key.getEngine();
   if (engine != null) {
     engine.removeLifecycleListener(taintListener);
   }
 }
コード例 #5
0
 private void addMatchersForPatterns(IQuerySpecification<?>... queries) {
   for (IQuerySpecification<?> query : queries) {
     boolean isGenerated = QueryExplorerPatternRegistry.getInstance().isGenerated(query);
     addMatcher(key.getEngine(), query, isGenerated);
   }
 }
コード例 #6
0
 public boolean isTainted() {
   AdvancedIncQueryEngine engine = key.getEngine();
   return (engine == null) ? true : engine.isTainted();
 }