import static java.util.Objects.requireNonNull;
import com.google.common.annotations.Beta;
+import com.google.common.collect.Interner;
+import com.google.common.collect.Interners;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.concepts.Immutable;
@Beta
@NonNullByDefault
public final class PatternExpression implements Immutable {
+ private static final Interner<PatternExpression> INTERNER = Interners.newWeakInterner();
+
private final String pattern;
private final String regex;
return regex;
}
+ /**
+ * Returns an interned instance of this expression.
+ *
+ * @return A shared interned instance.
+ */
+ public PatternExpression intern() {
+ return INTERNER.intern(this);
+ }
+
@Override
public int hashCode() {
return regex.hashCode();
} catch (final PatternSyntaxException e) {
throw new SourceException(ctx, e, "Pattern \"%s\" failed to compile", pattern);
}
- return PatternExpression.of(value, pattern);
+ return PatternExpression.of(value, pattern).intern();
}
@Override