public void loadState(final Element element) {
   myInjections.clear();
   final THashMap<String, LanguageInjectionSupport> supports =
       new THashMap<String, LanguageInjectionSupport>();
   for (LanguageInjectionSupport support : InjectorUtils.getActiveInjectionSupports()) {
     supports.put(support.getId(), support);
   }
   loadStateOld(
       element,
       supports.get(LanguageInjectionSupport.XML_SUPPORT_ID),
       supports.get(LanguageInjectionSupport.JAVA_SUPPORT_ID));
   for (Element child : (List<Element>) element.getChildren("injection")) {
     final String key = child.getAttributeValue("injector-id");
     final LanguageInjectionSupport support = supports.get(key);
     final BaseInjection injection =
         support == null ? new BaseInjection(key) : support.createInjection(child);
     injection.loadState(child);
     InjectionPlace[] places = dropKnownInvalidPlaces(injection.getInjectionPlaces());
     if (places != null) { // not all places were removed
       injection.setInjectionPlaces(places);
       myInjections.get(key).add(injection);
     }
   }
   importPlaces(getDefaultInjections());
 }
示例#2
0
  public void loadState(final Element element, final boolean mergeWithOriginalAndCompile) {
    final THashMap<String, LanguageInjectionSupport> supports =
        new THashMap<String, LanguageInjectionSupport>();
    for (LanguageInjectionSupport support :
        Extensions.getExtensions(LanguageInjectionSupport.EP_NAME)) {
      supports.put(support.getId(), support);
    }
    loadStateOld(
        element,
        supports.get(LanguageInjectionSupport.XML_SUPPORT_ID),
        supports.get(LanguageInjectionSupport.JAVA_SUPPORT_ID));
    for (Element child : (List<Element>) element.getChildren("injection")) {
      final String key = child.getAttributeValue("injector-id");
      final LanguageInjectionSupport support = supports.get(key);
      final BaseInjection injection =
          support == null ? new BaseInjection(key) : support.createInjection(child);
      injection.loadState(child);
      myInjections.get(key).add(injection);
    }
    setInstrumentationType(JDOMExternalizerUtil.readField(element, INSTRUMENTATION_TYPE_NAME));
    setLanguageAnnotation(JDOMExternalizerUtil.readField(element, LANGUAGE_ANNOTATION_NAME));
    setPatternAnnotation(JDOMExternalizerUtil.readField(element, PATTERN_ANNOTATION_NAME));
    setSubstAnnotation(JDOMExternalizerUtil.readField(element, SUBST_ANNOTATION_NAME));
    setResolveReferences(readBoolean(element, RESOLVE_REFERENCES, true));
    setUseDfaIfAvailable(readBoolean(element, USE_DFA_IF_AVAILABLE, false));
    setIncludeUncomputablesAsLiterals(
        readBoolean(element, INCLUDE_UNCOMPUTABLES_AS_LITERALS, false));

    if (mergeWithOriginalAndCompile) {
      mergeWithDefaultConfiguration();

      for (String supportId : InjectorUtils.getActiveInjectionSupportIds()) {
        for (BaseInjection injection : getInjections(supportId)) {
          injection.initializePlaces(true);
        }
      }
    }
  }