EA-32861 - : StringPattern.matches

This commit is contained in:
Gregory.Shrago
2012-03-03 17:11:15 +04:00
parent 4b24044c5c
commit 0e33e1bf0b
@@ -31,10 +31,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiLanguageInjectionHost;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.FileContentUtil;
import com.intellij.util.Function;
import com.intellij.util.NullableFunction;
import com.intellij.util.PairProcessor;
import com.intellij.util.*;
import com.intellij.util.containers.ConcurrentFactoryMap;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.Convertor;
@@ -209,11 +206,26 @@ public class Configuration implements PersistentStateComponent<Element>, Modific
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);
InjectionPlace[] places = dropKnownInvalidPlaces(injection.getInjectionPlaces());
if (places != null) { // not all places were removed
injection.setInjectionPlaces(places);
myInjections.get(key).add(injection);
}
}
importPlaces(getDefaultInjections());
}
@Nullable
private static InjectionPlace[] dropKnownInvalidPlaces(InjectionPlace[] places) {
InjectionPlace[] result = places;
for (InjectionPlace place : places) {
if (place.getText().contains("matches(\"[^${}/\\\\]+\")")) {
result = ArrayUtil.remove(result, place);
}
}
return places.length != 0 && result.length == 0? null : result;
}
private void loadStateOld(Element element, final LanguageInjectionSupport xmlSupport, final LanguageInjectionSupport javaSupport) {
if (xmlSupport != null) {
final Element xmlTagMarker = new Element("XmlTagInjection");