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]
