public void start(XmlPullParser parser) throws XmlPullParserException, IOException {
  JDiffClassDescription currentClass=null;
  String currentPackage="";
  JDiffMethod currentMethod=null;
  SignatureTest.beginDocument(parser,TAG_ROOT);
  int type;
  while (true) {
    while ((type=parser.next()) != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT && type != XmlPullParser.END_TAG) {
    }
    if (type == XmlPullParser.END_TAG) {
      if (TAG_CLASS.equals(parser.getName()) || TAG_INTERFACE.equals(parser.getName())) {
        currentClass.checkSignatureCompliance();
      }
 else       if (TAG_PACKAGE.equals(parser.getName())) {
        currentPackage="";
      }
      continue;
    }
    if (type == XmlPullParser.END_DOCUMENT) {
      break;
    }
    String tagname=parser.getName();
    if (!mKeyTagSet.contains(tagname)) {
      continue;
    }
switch (tagname) {
case TAG_PACKAGE:
      currentPackage=parser.getAttributeValue(null,ATTRIBUTE_NAME);
    break;
case TAG_CLASS:
  currentClass=loadClassInfo(parser,false,currentPackage);
break;
case TAG_INTERFACE:
currentClass=loadClassInfo(parser,true,currentPackage);
break;
case TAG_IMPLEMENTS:
currentClass.addImplInterface(parser.getAttributeValue(null,ATTRIBUTE_NAME));
break;
case TAG_CONSTRUCTOR:
JDiffConstructor constructor=loadConstructorInfo(parser,currentClass);
currentClass.addConstructor(constructor);
currentMethod=constructor;
break;
case TAG_METHOD:
currentMethod=loadMethodInfo(currentClass.getClassName(),parser);
currentClass.addMethod(currentMethod);
break;
case TAG_PARAM:
currentMethod.addParam(parser.getAttributeValue(null,ATTRIBUTE_TYPE));
break;
case TAG_EXCEPTION:
currentMethod.addException(parser.getAttributeValue(null,ATTRIBUTE_TYPE));
break;
case TAG_FIELD:
JDiffField field=loadFieldInfo(currentClass.getClassName(),parser);
currentClass.addField(field);
break;
default :
throw new RuntimeException("unknow tag exception:" + tagname);
}
}
}

public void start ( XmlPullParser parser ) throws XmlPullParserException , IOException { JDiffClassDescription currentClass = null ; String currentPackage = "" ; JDiffMethod currentMethod = null ; SignatureTest . beginDocument ( parser , TAG_ROOT ) ; int type ; while ( true ) { while ( ( type = parser . next ( ) ) != XmlPullParser . START_TAG && type != XmlPullParser . END_DOCUMENT && type != XmlPullParser . END_TAG ) { } if ( type == XmlPullParser . END_TAG ) { if ( TAG_CLASS . equals ( parser . getName ( ) ) || TAG_INTERFACE . equals ( parser . getName ( ) ) ) { currentClass . checkSignatureCompliance ( ) ; } else if ( TAG_PACKAGE . equals ( parser . getName ( ) ) ) { currentPackage = "" ; } continue ; } if ( type == XmlPullParser . END_DOCUMENT ) { break ; } String tagname = parser . getName ( ) ; if ( ! mKeyTagSet . contains ( tagname ) ) { continue ; } switch ( tagname ) { case TAG_PACKAGE : currentPackage = parser . getAttributeValue ( null , ATTRIBUTE_NAME ) ; break ; case TAG_CLASS : currentClass = loadClassInfo ( parser , false , currentPackage ) ; break ; case TAG_INTERFACE : currentClass = loadClassInfo ( parser , true , currentPackage ) ; break ; case TAG_IMPLEMENTS : currentClass . addImplInterface ( parser . getAttributeValue ( null , ATTRIBUTE_NAME ) ) ; break ; case TAG_CONSTRUCTOR : JDiffConstructor constructor = loadConstructorInfo ( parser , currentClass ) ; currentClass . addConstructor ( constructor ) ; currentMethod = constructor ; break ; case TAG_METHOD : currentMethod = loadMethodInfo ( currentClass . getClassName ( ) , parser ) ; currentClass . addMethod ( currentMethod ) ; break ; case TAG_PARAM : currentMethod . addParam ( parser . getAttributeValue ( null , ATTRIBUTE_TYPE ) ) ; break ; case TAG_EXCEPTION : currentMethod . addException ( parser . getAttributeValue ( null , ATTRIBUTE_TYPE ) ) ; break ; case TAG_FIELD : JDiffField field = loadFieldInfo ( currentClass . getClassName ( ) , parser ) ; currentClass . addField ( field ) ; break ; default : throw new RuntimeException ( "unknow tag exception:" + tagname ) ; } } }
signature test entry point .
