com.springsource.bundlor.support.propertysubstitution
Class VersionExpansionParser

java.lang.Object
  extended by com.springsource.bundlor.support.propertysubstitution.VersionExpansionParser

final class VersionExpansionParser
extends java.lang.Object

Parser for the version expansion format, which looks like "[=.=,+1.+2]". Once parsed the resultant VersionExpander object can be used to produce the expansion of some maj.min.mic.qual version number. See VersionExpansionParserTests for examples of the format and usage.

Author:
Andy Clement

Field Summary
private  int currentTokenPointer
           
private  int currentVersionComponent
           
private  char[] data
           
private  int dataLength
           
private  boolean devouringLowerLimit
           
private  boolean endInclusive
           
private  java.lang.String expansionString
           
private  java.util.List<Transformer> lowerVersionTransformers
           
private  int pos
           
private  boolean startInclusive
           
private  int tokenCount
           
private  java.util.List<Token> tokens
           
private  java.util.List<Transformer> upperVersionTransformers
           
 
Constructor Summary
private VersionExpansionParser(java.lang.String expansion)
           
 
Method Summary
private  void eatComma()
           
private  void eatModifier()
           
private  void eatRangeEnd()
           
private  void eatRangeStart()
           
private  boolean isComma(char ch)
           
private  boolean isDigit(char ch)
           
private  boolean isDot(char ch)
           
private  boolean isEquals(char ch)
           
private  boolean isMinus(char ch)
           
private  boolean isPlus(char ch)
           
private  boolean isRangeDelimiter(char ch)
           
private  boolean isSpace(char ch)
           
private  void lex()
           
private  void lexComma()
           
private  void lexDot()
           
private  void lexEquals()
           
private  void lexNegativeNumber()
           
private  void lexNumber()
           
private  void lexPositiveNumber()
           
private  void lexRangeDelimiter()
           
private  void lexWord()
           
private  boolean maybeEatDot()
           
private  void parse()
           
private  VersionExpander parseExpansion()
           
static VersionExpander parseVersionExpander(java.lang.String expansion)
          Entrypoint to the VersionExpansionParser that attempts to parse the expansion string supplied.
private  void processEquals()
           
private  void processNumeric()
           
private  void processNumericModifier()
           
private  void processPossibleNumber(java.lang.String data, int position)
           
private  void processWord()
           
private  void pushIt(Transformer transformer)
           
private  void raiseParseProblem(java.lang.String message, int position)
           
private  void readDigits()
           
private  java.lang.String string(Token t)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

expansionString

private final java.lang.String expansionString

data

private char[] data

dataLength

private int dataLength

pos

private int pos

tokens

private java.util.List<Token> tokens

currentTokenPointer

private int currentTokenPointer

tokenCount

private int tokenCount

startInclusive

private boolean startInclusive

endInclusive

private boolean endInclusive

currentVersionComponent

private int currentVersionComponent

devouringLowerLimit

private boolean devouringLowerLimit

lowerVersionTransformers

private java.util.List<Transformer> lowerVersionTransformers

upperVersionTransformers

private java.util.List<Transformer> upperVersionTransformers
Constructor Detail

VersionExpansionParser

private VersionExpansionParser(java.lang.String expansion)
Method Detail

parseVersionExpander

public static VersionExpander parseVersionExpander(java.lang.String expansion)
                                            throws VersionExpansionFormatException
Entrypoint to the VersionExpansionParser that attempts to parse the expansion string supplied. It will either return a reusable VersionExpander object that captures the transformation described in the string or throw VersionExpansionFormatException if there is a problem with parsing.

Parameters:
expansion - the expansion formatted string to parse
Returns:
a reusable VersionExpander
Throws:
VersionExpansionFormatException

parseExpansion

private VersionExpander parseExpansion()
                                throws VersionExpansionFormatException
Throws:
VersionExpansionFormatException

parse

private void parse()

eatRangeStart

private void eatRangeStart()

string

private java.lang.String string(Token t)

eatRangeEnd

private void eatRangeEnd()

pushIt

private void pushIt(Transformer transformer)

processEquals

private void processEquals()

processNumericModifier

private void processNumericModifier()

processPossibleNumber

private void processPossibleNumber(java.lang.String data,
                                   int position)

processWord

private void processWord()

processNumeric

private void processNumeric()

eatModifier

private void eatModifier()

eatComma

private void eatComma()

maybeEatDot

private boolean maybeEatDot()

lex

private void lex()

isRangeDelimiter

private boolean isRangeDelimiter(char ch)

lexRangeDelimiter

private void lexRangeDelimiter()

lexWord

private void lexWord()

lexNumber

private void lexNumber()

lexPositiveNumber

private void lexPositiveNumber()

lexNegativeNumber

private void lexNegativeNumber()

readDigits

private void readDigits()

lexDot

private void lexDot()

lexEquals

private void lexEquals()

lexComma

private void lexComma()

isSpace

private boolean isSpace(char ch)

isEquals

private boolean isEquals(char ch)

isPlus

private boolean isPlus(char ch)

isMinus

private boolean isMinus(char ch)

isDigit

private boolean isDigit(char ch)

isDot

private boolean isDot(char ch)

isComma

private boolean isComma(char ch)

raiseParseProblem

private void raiseParseProblem(java.lang.String message,
                               int position)