jvanzyl     2003/06/19 16:26:22

  Added:       src/java/org/apache/maven DefaultProjectUnmarshaller.java
  Log:
  o New POM unmarshaller.
  
  Revision  Changes    Path
  1.1                  maven/src/java/org/apache/maven/DefaultProjectUnmarshaller.java
  
  Index: DefaultProjectUnmarshaller.java
  ===================================================================
  package org.apache.maven;
  
  import org.apache.maven.project.Build;
  import org.apache.maven.project.Contributor;
  import org.apache.maven.project.Dependency;
  import org.apache.maven.project.Developer;
  import org.apache.maven.project.MailingList;
  import org.apache.maven.project.Organization;
  import org.apache.maven.project.Project;
  import org.apache.maven.project.Repository;
  import org.apache.maven.project.Resource;
  import org.apache.maven.project.UnitTest;
  import org.apache.maven.project.Version;
  import org.apache.maven.project.SourceModification;
  import org.xmlpull.v1.XmlPullParser;
  import org.xmlpull.v1.XmlPullParserException;
  import org.xmlpull.v1.XmlPullParserFactory;
  
  import java.io.IOException;
  import java.io.Reader;
  import java.util.Map;
  import java.util.HashMap;
  
  /**
   * @author Jason van Zyl
   * @version $Id: DefaultProjectUnmarshaller.java,v 1.1 2003/06/19 23:26:22 jvanzyl 
Exp $
   */
  public class DefaultProjectUnmarshaller
  {
      public Project parse( Reader reader )
          throws Exception
      {
          Project project = new Project();
  
          XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
          XmlPullParser parser = factory.newPullParser();
          parser.setInput( reader );
  
          int eventType = parser.getEventType();
  
          while ( eventType != XmlPullParser.END_DOCUMENT )
          {
              if ( eventType == XmlPullParser.START_TAG )
              {
                  if ( parser.getName().equals( "extend" ) )
                  {
                      project.setExtend( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "pomVersion" ) )
                  {
                      project.setPomVersion( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "groupId" ) )
                  {
                      project.setGroupId( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "artifactId" ) )
                  {
                      project.setArtifactId( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "id" ) )
                  {
                      project.setId( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "name" ) )
                  {
                      project.setName( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "currentVersion" ) )
                  {
                      project.setCurrentVersion( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "inceptionYear" ) )
                  {
                      project.setInceptionYear( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "package" ) )
                  {
                      project.setPackage( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "gumpRepositoryId" ) )
                  {
                      project.setGumpRepositoryId( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "description" ) )
                  {
                      project.setDescription( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "shortDescription" ) )
                  {
                      project.setShortDescription( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "url" ) )
                  {
                      project.setUrl( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "issueTrackingUrl" ) )
                  {
                      project.setIssueTrackingUrl( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "siteAddress" ) )
                  {
                      project.setSiteAddress( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "siteDirectory" ) )
                  {
                      project.setSiteDirectory( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "distributionDirectory" ) )
                  {
                      project.setDistributionDirectory( parser.nextText() );
                  }
                  else if ( parser.getName().equals( "organization" ) )
                  {
                      project.setOrganization( new Organization() );
  
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "name" ) )
                          {
                              project.getOrganization().setName( parser.nextText() );
                          }
                          else if ( parser.getName().equals( "url" ) )
                          {
                              project.getOrganization().setUrl( parser.nextText() );
  
                          }
                          else if ( parser.getName().equals( "logo" ) )
                          {
                              project.getOrganization().setLogo( parser.nextText() );
  
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "repository" ) )
                  {
                      project.setRepository( new Repository() );
  
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "connection" ) )
                          {
                              project.getRepository().setConnection( parser.nextText() 
);
                          }
                          /*
                          else if ( parser.getName().equals( "developerConnection" ) )
                          {
                              project.getRepository().setDeveloperConnection( 
parser.nextText() );
                          }
                          */
                          else if ( parser.getName().equals( "url" ) )
                          {
                              project.getRepository().setUrl( parser.nextText() );
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "versions" ) )
                  {
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "version" ) )
                          {
                              Version v = new Version();
                              project.addVersion( v );
  
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "id" ) )
                                  {
                                      String id = parser.nextText();
                                      v.setId( id );
                                  }
                                  else if ( parser.getName().equals( "name" ) )
                                  {
                                      v.setName( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "tag" ) )
                                  {
                                      v.setTag( parser.nextText() );
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "mailingLists" ) )
                  {
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "mailingList" ) )
                          {
                              MailingList ml = new MailingList();
                              project.addMailingList( ml );
  
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "name" ) )
                                  {
                                      ml.setName( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "subscribe" ) )
                                  {
                                      ml.setSubscribe( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "unsubscribe" ) )
                                  {
                                      ml.setUnsubscribe( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "archive" ) )
                                  {
                                      ml.setArchive( parser.nextText() );
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
  
                  }
                  else if ( parser.getName().equals( "developers" ) )
                  {
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "developer" ) )
                          {
                              Developer d = new Developer();
                              project.addDeveloper( d );
  
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "id" ) )
                                  {
                                      d.setId( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "name" ) )
                                  {
                                      d.setName( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "email" ) )
                                  {
                                      d.setEmail( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "organization" ) )
                                  {
                                      d.setOrganization( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "roles" ) )
                                  {
                                      while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                      {
                                          if ( parser.getName().equals( "role" ) )
                                          {
                                              d.addRole( parser.nextText() );
                                          }
                                          else
                                          {
                                              parser.nextText();
                                          }
                                      }
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "contributors" ) )
                  {
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "contributor" ) )
                          {
                              Contributor c = new Contributor();
                              project.addContributor( c );
  
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "name" ) )
                                  {
                                      c.setName( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "email" ) )
                                  {
                                      c.setEmail( parser.nextText() );
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "dependencies" ) )
                  {
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "dependency" ) )
                          {
                              Dependency d = new Dependency();
                              project.addDependency( d );
  
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "groupId" ) )
                                  {
                                      d.setGroupId( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "artifactId" ) )
                                  {
                                      d.setArtifactId( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "id" ) )
                                  {
                                      String id = parser.nextText();
                                      d.setId( id );
                                  }
                                  else if ( parser.getName().equals( "version" ) )
                                  {
                                      d.setVersion( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "type" ) )
                                  {
                                      d.setType( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "url" ) )
                                  {
                                      d.setUrl( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "jar" ) )
                                  {
                                     d.setJar( parser.nextText() );
                                  }
                                  else if ( parser.getName().equals( "properties") )
                                  {
                                      d.setProperties( unmarshallProperties( parser ) 
);
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "build" ) )
                  {
                      Build b = new Build();
                      project.setBuild( b );
  
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "nagEmailAddress" ) )
                          {
                              b.setNagEmailAddress( parser.nextText() );
                          }
                          else if ( parser.getName().equals( "sourceDirectory" ) )
                          {
                              b.setSourceDirectory( parser.nextText() );
                          }
                          else if ( parser.getName().equals( "unitTestSourceDirectory" 
) )
                          {
                              b.setUnitTestSourceDirectory( parser.nextText() );
                          }
                          else if ( parser.getName().equals( "aspectSourceDirectory" ) 
)
                          {
                              b.setAspectSourceDirectory( parser.nextText() );
                          }
                          else if ( parser.getName().equals( "unitTest" ) )
                          {
                              UnitTest ut = new UnitTest();
                              b.setUnitTest( ut );
  
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "includes" ) )
                                  {
                                      while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                      {
                                          if ( parser.getName().equals( "include" ) )
                                          {
                                              ut.addInclude( parser.nextText() );
                                          }
                                          else
                                          {
                                              parser.nextText();
                                          }
                                      }
  
                                  }
                                  else if ( parser.getName().equals( "excludes" ) )
                                  {
                                      while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                      {
                                          if ( parser.getName().equals( "exclude" ) )
                                          {
                                              ut.addExclude( parser.nextText() );
                                          }
                                          else
                                          {
                                              parser.nextText();
                                          }
                                      }
                                  }
                                  else if ( parser.getName().equals( "resources" ) )
                                  {
                                      while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                      {
                                          if ( parser.getName().equals( "resource" ) )
                                          {
                                              ut.addResource( unmarshalResource( 
parser ) );
                                          }
                                          else
                                          {
                                              parser.nextText();
                                          }
                                      }
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else if ( parser.getName().equals( "resources" ) )
                          {
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "resource" ) )
                                  {
                                      b.addResource( unmarshalResource( parser ) );
                                  }
                                  else
                                  {
                                      parser.nextText();
                                  }
                              }
                          }
                          else if ( parser.getName().equals( "sourceModifications" ) )
                          {
                              while ( parser.nextTag() == XmlPullParser.START_TAG )
                              {
                                  if ( parser.getName().equals( "sourceModification" ) 
)
                                  {
                                      SourceModification sm = new SourceModification();
                                      b.addSourceModification( sm );
  
                                      while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                      {
                                          if ( parser.getName().equals( "className" ) )
                                          {
                                              sm.setClassName( parser.nextText() );
                                          }
                                          else if ( parser.getName().equals( 
"includes" ) )
                                          {
                                              while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                              {
                                                  if ( parser.getName().equals( 
"include" ) )
                                                  {
                                                      sm.addInclude( parser.nextText() 
);
                                                  }
                                                  else
                                                  {
                                                      parser.nextText();
                                                  }
                                              }
                                          }
                                          else if ( parser.getName().equals( 
"excludes" ) )
                                          {
                                              while ( parser.nextTag() == 
XmlPullParser.START_TAG )
                                              {
                                                  if ( parser.getName().equals( 
"exclude" ) )
                                                  {
                                                      sm.addExclude( parser.nextText() 
);
                                                  }
                                                  else
                                                  {
                                                      parser.nextText();
                                                  }
                                              }
                                          }
                                          else
                                          {
                                              parser.nextText();
                                          }
                                      }
  
                                  }
                              }
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
  
                  }
                  else if ( parser.getName().equals( "reports" ) )
                  {
                      while ( parser.nextTag() == XmlPullParser.START_TAG )
                      {
                          if ( parser.getName().equals( "report" ) )
                          {
                              project.addReport( parser.nextText() );
                          }
                          else
                          {
                              parser.nextText();
                          }
                      }
                  }
                  else if ( parser.getName().equals( "properties") )
                  {
                      project.setProperties( unmarshallProperties( parser ) );
                  }
              }
  
              eventType = parser.next();
          }
  
          return project;
      }
  
      protected Map unmarshallProperties( XmlPullParser parser )
          throws XmlPullParserException, IOException
      {
          Map properties = new HashMap();
  
          while ( parser.nextTag() == XmlPullParser.START_TAG )
          {
              String key = parser.getName();
              String value = parser.nextText();
              properties.put( key, value );
          }
  
          return properties;
      }
  
  
      protected Resource unmarshalResource( XmlPullParser parser )
          throws XmlPullParserException, IOException
      {
          Resource r = new Resource();
  
          while ( parser.nextTag() == XmlPullParser.START_TAG )
          {
              if ( parser.getName().equals( "directory" ) )
              {
                  r.setDirectory( parser.nextText() );
              }
              else if ( parser.getName().equals( "targetPath" ) )
              {
                  r.setTargetPath( parser.nextText() );
              }
              else if ( parser.getName().equals( "includes" ) )
              {
                  while ( parser.nextTag() == XmlPullParser.START_TAG )
                  {
                      if ( parser.getName().equals( "include" ) )
                      {
                          r.addInclude( parser.nextText() );
                      }
                      else
                      {
                          parser.nextText();
                      }
                  }
  
              }
              else if ( parser.getName().equals( "excludes" ) )
              {
                  while ( parser.nextTag() == XmlPullParser.START_TAG )
                  {
                      if ( parser.getName().equals( "exclude" ) )
                      {
                          r.addExclude( parser.nextText() );
                      }
                      else
                      {
                          parser.nextText();
                      }
                  }
              }
              else
              {
                  parser.nextText();
              }
          }
          return r;
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to