Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Oehme2014-07-24 13:45:30 +0000
committerEd Merks2014-08-15 05:41:02 +0000
commit4d83d4c9c699252deeb11b9986fc0615c07f667f (patch)
tree2d8fedcd7cb424247cbaa9e974aee0ab6154f28b
parent9aecb726a56f905c3acf594812ea2fe567601ef6 (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenBaseImpl.java6
-rw-r--r--plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/scoping/LazyCreationProxyURIConverter.java10
-rw-r--r--plugins/org.eclipse.emf.ecore.xcore/src/org/eclipse/emf/ecore/xcore/util/XcoreEcoreBuilder.java2
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;

Back to the top