package org.codehaus.plexus.interpolation.util;
/*
* Copyright 2001-2006 Codehaus Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.codehaus.plexus.interpolation.ValueSource;
import java.util.Collection;
Utility methods shared by multiple ValueSource
implementations. Author: jdcasey
/**
* Utility methods shared by multiple {@link ValueSource} implementations.
*
* @author jdcasey
*/
public final class ValueSourceUtils
{
private ValueSourceUtils()
{
}
If the expression starts with one of the provided prefixes, trim that prefix
and return the remaining expression. If it doesn't start with a provided
prefix, and the allowUnprefixedExpressions flag is true, then return the
expression unchanged; if the flag is false, return null. Finally, if the
original expression is null, return null without attempting to process it.
Params: - expression – The expression to trim
- possiblePrefixes – The list of possible expression prefixes to trim
- allowUnprefixedExpressions – Whether to return the expression if it
doesn't start with one of the prefixes. If true, simply return the
original expression; if false, return null.
Returns: The trimmed expression, or null. See the behavior of
allowUnprefixedExpressions in this method for more detail.
/**
* If the expression starts with one of the provided prefixes, trim that prefix
* and return the remaining expression. If it doesn't start with a provided
* prefix, and the allowUnprefixedExpressions flag is true, then return the
* expression unchanged; if the flag is false, return null. Finally, if the
* original expression is null, return null without attempting to process it.
*
* @param expression The expression to trim
* @param possiblePrefixes The list of possible expression prefixes to trim
* @param allowUnprefixedExpressions Whether to return the expression if it
* doesn't start with one of the prefixes. If true, simply return the
* original expression; if false, return null.
* @return The trimmed expression, or null. See the behavior of
* allowUnprefixedExpressions in this method for more detail.
*/
public static String trimPrefix( String expression, Collection<String> possiblePrefixes,
boolean allowUnprefixedExpressions )
{
if ( expression == null )
{
return null;
}
String realExpr = null;
for ( String prefix : possiblePrefixes )
{
if ( expression.startsWith( prefix ) )
{
realExpr = expression.substring( prefix.length() );
if ( realExpr.startsWith( "." ) )
{
realExpr = realExpr.substring( 1 );
}
break;
}
}
if ( realExpr == null && allowUnprefixedExpressions )
{
realExpr = expression;
}
return realExpr;
}
public static String trimPrefix( String expression, String[] possiblePrefixes, boolean allowUnprefixedExpressions )
{
if ( expression == null )
{
return null;
}
String realExpr = null;
for ( String prefix : possiblePrefixes )
{
if ( expression.startsWith( prefix ) )
{
realExpr = expression.substring( prefix.length() );
if ( realExpr.startsWith( "." ) )
{
realExpr = realExpr.substring( 1 );
}
break;
}
}
if ( realExpr == null && allowUnprefixedExpressions )
{
realExpr = expression;
}
return realExpr;
}
}