src/jdk/nashorn/internal/runtime/regexp/RegExpFactory.java
Print this page
@@ -25,18 +25,38 @@
package jdk.nashorn.internal.runtime.regexp;
import jdk.nashorn.internal.parser.Lexer;
import jdk.nashorn.internal.runtime.ParserException;
+import jdk.nashorn.internal.runtime.options.Options;
/**
* Factory class for regular expressions. This class creates instances of {@link DefaultRegExp}.
+ * An alternative factory can be installed using the {@code nashorn.regexp.impl} system property.
*/
public class RegExpFactory {
- private final static RegExpFactory instance = new RegExpFactory();
+ private final static RegExpFactory instance;
+
+ private final static String JDK = "jdk";
+ private final static String JONI = "joni";
+
+ static {
+ final String impl = Options.getStringProperty("nashorn.regexp.impl", JDK);
+ switch (impl) {
+ case JONI:
+ instance = new JoniRegExp.Factory();
+ break;
+ case JDK:
+ instance = new RegExpFactory();
+ break;
+ default:
+ instance = null;
+ throw new InternalError("Unsupported RegExp factory: " + impl);
+ }
+ }
/**
* Creates a Regular expression from the given {@code pattern} and {@code flags} strings.
*
* @param pattern RegExp pattern string