/******************************************************************************* * Copyright (c) 2007, 2011 Oracle. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0, which accompanies this distribution * and is available at http://www.eclipse.org/legal/epl-v10.html. * * Contributors: * Oracle - initial API and implementation ******************************************************************************/ package org.eclipse.jpt.common.utility.internal; import java.io.Serializable; /** * This interface defines a simple API for allowing "pluggable" * string matchers that can be configured with a pattern string * then used to determine what strings match the pattern. */ public interface StringMatcher { /** * Set the pattern string used to determine future * matches. The format and semantics of the pattern * string are determined by the contract between the * client and the server. */ void setPatternString(String patternString); /** * Return whether the specified string matches the * established pattern string. The semantics of a match * is determined by the contract between the * client and the server. */ boolean matches(String string); final class Null implements StringMatcher, Serializable { public static final StringMatcher INSTANCE = new Null(); public static StringMatcher instance() { return INSTANCE; } // ensure single instance private Null() { super(); } public void setPatternString(String patternString) { // ignore the pattern string } public boolean matches(String string) { // everything is a match return true; } @Override public String toString() { return StringTools.buildSingletonToString(this); } private static final long serialVersionUID = 1L; private Object readResolve() { // replace this object with the singleton return INSTANCE; } } }