diff options
author | Stefan Oehme | 2014-07-24 13:45:30 +0000 |
---|---|---|
committer | Ed Merks | 2014-08-15 05:41:02 +0000 |
commit | 4d83d4c9c699252deeb11b9986fc0615c07f667f (patch) | |
tree | 2d8fedcd7cb424247cbaa9e974aee0ab6154f28b | |
parent | 9aecb726a56f905c3acf594812ea2fe567601ef6 (diff) | |
download | org.eclipse.emf-4d83d4c9c699252deeb11b9986fc0615c07f667f.tar.gz org.eclipse.emf-4d83d4c9c699252deeb11b9986fc0615c07f667f.tar.xz org.eclipse.emf-4d83d4c9c699252deeb11b9986fc0615c07f667f.zip |
[440718] Improve expensive regular expression
Change-Id: I8c9217036f6d9279604847eb7b8892f126cb952d
Signed-off-by: Stefan Oehme <stefan.oehme@itemis.de>
3 files changed, 11 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenBaseImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenBaseImpl.java index f55e4894b..70ccc9575 100644 --- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenBaseImpl.java +++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenBaseImpl.java @@ -30,6 +30,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Pattern; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; @@ -48,7 +49,6 @@ import org.eclipse.jdt.core.formatter.CodeFormatter; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.text.edits.TextEdit; - import org.eclipse.emf.codegen.ecore.CodeGenEcorePlugin; import org.eclipse.emf.codegen.ecore.Generator; import org.eclipse.emf.codegen.ecore.genmodel.GenAnnotation; @@ -124,6 +124,8 @@ import org.eclipse.emf.ecore.xml.type.XMLTypePackage; */ public abstract class GenBaseImpl extends EObjectImpl implements GenBase { + private static final Pattern SUBSTITUTION_PATTERN = Pattern.compile("\\{\\d+\\}"); + /** * The cached value of the '{@link #getGenAnnotations() <em>Gen Annotations</em>}' containment reference list. * <!-- begin-user-doc --> @@ -3602,7 +3604,7 @@ public abstract class GenBaseImpl extends EObjectImpl implements GenBase */ protected static boolean hasSubstitution(String string) { - return string != null && string.matches(".*\\{\\d+\\}.*"); + return string != null && SUBSTITUTION_PATTERN.matcher(string).find(); } /** diff --git a/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/LazyCreationProxyURIConverter.java b/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/LazyCreationProxyURIConverter.java index 410094814..a7ea392d5 100644 --- a/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/LazyCreationProxyURIConverter.java +++ b/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/LazyCreationProxyURIConverter.java @@ -8,6 +8,7 @@ package org.eclipse.emf.ecore.xcore.scoping; +import java.util.List; import java.util.Map; import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage; @@ -19,6 +20,7 @@ import org.eclipse.xtext.common.types.TypesPackage; import org.eclipse.xtext.naming.IQualifiedNameConverter; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.util.Pair; +import org.eclipse.xtext.util.Strings; import org.eclipse.xtext.util.Tuples; import com.google.inject.Inject; @@ -103,11 +105,11 @@ public class LazyCreationProxyURIConverter public Pair<EClass, QualifiedName> decodeFragment(String fragment) { - String[] segments = fragment.split(DELIM); - if (segments.length == 2) + List<String> segments = Strings.split(fragment, DELIM); + if (segments.size() == 2) { - String eClassName = segments[0]; - QualifiedName name = nameConverter.toQualifiedName(segments[1]); + String eClassName = segments.get(0); + QualifiedName name = nameConverter.toQualifiedName(segments.get(1)); if (types.containsKey(eClassName)) { EClass eClass = types.get(eClassName); diff --git a/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java b/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java index d932bd9ee..9a217a641 100644 --- a/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java +++ b/plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java @@ -82,7 +82,7 @@ import com.google.inject.Provider; public class XcoreEcoreBuilder { - private static final Pattern COMMENT_LINE_BREAK_PATTERN = Pattern.compile("([ \t]*((\n\r?)|(\r\n?))(\\s*\\*\\s?)?)|\\s*$", Pattern.MULTILINE); + private static final Pattern COMMENT_LINE_BREAK_PATTERN = Pattern.compile("([ \t]*(\\r?\\n)(\\s*\\*\\s?)?)|\\s*$", Pattern.MULTILINE); @Inject private XcoreMapper mapper; |