You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2003/06/20 01:26:08 UTC

cvs commit: maven/src/java/org/apache/maven DefaultProjectMarshaller.java

jvanzyl     2003/06/19 16:26:08

  Added:       src/java/org/apache/maven DefaultProjectMarshaller.java
  Log:
  o New POM marshaller.
  
  Revision  Changes    Path
  1.1                  maven/src/java/org/apache/maven/DefaultProjectMarshaller.java
  
  Index: DefaultProjectMarshaller.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.License;
  import org.apache.maven.project.MailingList;
  import org.apache.maven.project.Project;
  import org.apache.maven.project.Resource;
  import org.apache.maven.project.SourceModification;
  import org.apache.maven.project.Version;
  import org.xmlpull.v1.XmlPullParserFactory;
  import org.xmlpull.v1.XmlSerializer;
  
  import java.io.IOException;
  import java.io.Writer;
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
  import java.util.SortedSet;
  
  /**
   * @author <a href="mailto:gdodinet@wanadoo.fr">Gilles Dodinet</a>
   * @version $Id: DefaultProjectMarshaller.java,v 1.4 2003/05/20 21:42:57
   *      gdodinet Exp $
   */
  public class DefaultProjectMarshaller
  {
      private final static String NAMESPACE = null;
      private final static String ENCODING = null;
      private final static Boolean STANDALONE = null;
      private XmlSerializer serializer;
      private static String INDENTATION = "  ";
      private static String LS = System.getProperty( "line.separator" );
  
      /**
       * Constructor for the DefaultProjectMarshaller object
       *
       * @exception Exception
       */
      public DefaultProjectMarshaller()
          throws Exception
      {
          XmlPullParserFactory factory = XmlPullParserFactory.newInstance(
              System.getProperty( XmlPullParserFactory.PROPERTY_NAME ), null );
  
          serializer = factory.newSerializer();
      }
  
      /**
       * Description of the Method
       */
      private void initialize( Writer writer )
          throws IOException
      {
          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", INDENTATION );
          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", LS );
          serializer.setOutput( writer );
          //serializer.startDocument(ENCODING, STANDALONE);
      }
  
      /**
       * Description of the Method
       */
      public void marshall( Writer pom, Project project )
          throws Exception
      {
          initialize( pom );
  
          serializer.startTag( NAMESPACE, "project" );
  
          marshallString( project.getExtend(), "extend" );
          marshallString( project.getPomVersion(), "pomVersion" );
  
          // We need to make sure the legacy id comes out.
          marshallRequiredString( Project.standardToLegacyId( project.getId() ), "id" );
          marshallRequiredString( project.getName(), "name" );
  
          marshallString( project.getGroupId(), "groupId" );
          marshallString( project.getArtifactId(), "artifactId" );
  
          marshallRequiredString( project.getCurrentVersion(), "currentVersion" );
  
          marshallOrganization( project );
  
          marshallString( project.getInceptionYear(), "inceptionYear" );
          marshallString( project.getPackage(), "package" );
          marshallString( project.getLogo(), "logo" );
          marshallString( project.getGumpRepositoryId(), "gumpRepositoryId" );
  
          marshallString( project.getDescription(), "description" );
  
          marshallRequiredString( project.getShortDescription(), "shortDescription" );
  
          marshallString( project.getUrl(), "url" );
          marshallString( project.getIssueTrackingUrl(), "issueTrackingUrl" );
          marshallString( project.getSiteAddress(), "siteAddress" );
          marshallString( project.getSiteDirectory(), "siteDirectory" );
          marshallString( project.getDistributionDirectory(), "distributionDirectory" );
  
          marshallRepository( project );
          marshallVersions( project );
  
          marshallMailingLists( project );
          marshallDevelopers( project );
          marshallContributors( project );
          marshallLicenses( project );
          marshallDependencies( project );
          marshallBuild( project );
          marshallReports( project );
  
          marshallProperties( project.getProperties() );
  
          serializer.endTag( NAMESPACE, "project" );
          serializer.endDocument();
      }
  
      /**
       * Description of the Method
       */
      private void marshallOrganization( Project project )
          throws Exception
      {
          if ( project.getOrganization() != null )
          {
              serializer.startTag( NAMESPACE, "organization" );
  
              marshallRequiredString( project.getOrganization().getName(), "name" );
              marshallString( project.getOrganization().getUrl(), "url" );
              marshallString( project.getOrganization().getLogo(), "logo" );
  
              serializer.endTag( NAMESPACE, "organization" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallRepository( Project project )
          throws Exception
      {
          if ( project.getRepository() != null )
          {
              serializer.startTag( NAMESPACE, "repository" );
  
              marshallRequiredString( project.getRepository().getConnection(), "connection" );
              //!!!
              //marshallString(project.getRepository().getDeveloperConnection(), "developerConnection");
              marshallString( project.getRepository().getUrl(), "url" );
  
              serializer.endTag( NAMESPACE, "repository" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallVersions( Project project )
          throws Exception
      {
          List versions = project.getVersions();
          if ( versions != null )
          {
              serializer.startTag( NAMESPACE, "versions" );
              Version version;
              for ( int i = 0; i < versions.size(); i++ )
              {
                  version = (Version) versions.get( i );
                  if ( version != null )
                  {
                      serializer.startTag( NAMESPACE, "version" );
  
                      marshallString( version.getId(), "id" );
                      marshallString( version.getName(), "name" );
                      marshallString( version.getTag(), "tag" );
  
                      serializer.endTag( NAMESPACE, "version" );
                  }
              }
              serializer.endTag( NAMESPACE, "versions" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallMailingLists( Project project )
          throws Exception
      {
          List mailingLists = project.getMailingLists();
          if ( mailingLists != null )
          {
              serializer.startTag( NAMESPACE, "mailingLists" );
              MailingList mailingList;
              for ( int i = 0; i < mailingLists.size(); i++ )
              {
                  mailingList = (MailingList) mailingLists.get( i );
                  if ( mailingList != null )
                  {
                      serializer.startTag( NAMESPACE, "mailingList" );
  
                      marshallRequiredString( mailingList.getName(), "name" );
                      marshallRequiredString( mailingList.getSubscribe(), "subscribe" );
                      marshallRequiredString( mailingList.getUnsubscribe(), "unsubscribe" );
                      marshallString( mailingList.getArchive(), "archive" );
  
                      serializer.endTag( NAMESPACE, "mailingList" );
                  }
              }
              serializer.endTag( NAMESPACE, "mailingLists" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallDevelopers( Project project )
          throws Exception
      {
          List developers = project.getDevelopers();
          serializer.startTag( NAMESPACE, "developers" );
          Developer developer;
          for ( int i = 0; i < developers.size(); i++ )
          {
              developer = (Developer) developers.get( i );
              if ( developer != null )
              {
                  serializer.startTag( NAMESPACE, "developer" );
  
                  marshallRequiredString( developer.getName(), "name" );
                  marshallRequiredString( developer.getId(), "id" );
  
                  //!!!
                  //marshallContactDetails(developer);
  
                  serializer.endTag( NAMESPACE, "developer" );
              }
          }
          serializer.endTag( NAMESPACE, "developers" );
      }
  
      /**
       * Description of the Method
       */
      private void marshallContactDetails( Contributor contributor )
          throws IOException
      {
          serializer.startTag( NAMESPACE, "contactDetails" );
  
          marshallRequiredString( contributor.getEmail(), "email" );
          marshallString( contributor.getOrganization(), "organization" );
  
          marshallRoles( contributor );
  
          marshallString( contributor.getUrl(), "url" );
  
          //timezone skipped
  
          serializer.endTag( NAMESPACE, "contactDetails" );
      }
  
      /**
       * Description of the Method
       */
      private void marshallRoles( Contributor contributor )
          throws IOException
      {
          SortedSet roles = contributor.getRoles();
          if ( roles != null )
          {
              serializer.startTag( NAMESPACE, "roles" );
  
              Iterator iterator = roles.iterator();
              while ( iterator.hasNext() )
              {
                  marshallString( (String) iterator.next(), "role" );
              }
  
              serializer.endTag( NAMESPACE, "roles" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallContributors( Project project )
          throws Exception
      {
          List contributors = project.getContributors();
          if ( contributors != null && contributors.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "contributors" );
              Contributor contributor;
              for ( int i = 0; i < contributors.size(); i++ )
              {
                  contributor = (Contributor) contributors.get( i );
                  if ( contributor != null )
                  {
                      serializer.startTag( NAMESPACE, "contributor" );
  
                      marshallRequiredString( contributor.getName(), "name" );
                      //marshallRequiredString(contributor.getEmail(), "email");
  
                      //!!!
                      //marshallContactDetails(contributor);
  
                      serializer.endTag( NAMESPACE, "contributor" );
                  }
              }
              serializer.endTag( NAMESPACE, "contributors" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallLicenses( Project project )
          throws Exception
      {
          List licenses = project.getLicenses();
          if ( licenses != null && licenses.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "licenses" );
              License license;
              for ( int i = 0; i < licenses.size(); i++ )
              {
                  license = (License) licenses.get( i );
                  if ( license != null )
                  {
                      serializer.startTag( NAMESPACE, "license" );
  
                      marshallString( license.getName(), "name" );
                      marshallString( license.getUrl(), "url" );
                      marshallString( license.getDistribution(), "distribution" );
  
                      serializer.endTag( NAMESPACE, "license" );
                  }
              }
              serializer.endTag( NAMESPACE, "licenses" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallDependencies( Project project )
          throws Exception
      {
          List dependencies = project.getDependencies();
          if ( dependencies != null && dependencies.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "dependencies" );
              Dependency dependency;
              for ( int i = 0; i < dependencies.size(); i++ )
              {
                  dependency = (Dependency) dependencies.get( i );
                  if ( dependency != null )
                  {
                      serializer.startTag( NAMESPACE, "dependency" );
  
                      marshallString( Project.standardToLegacyId( dependency.getId() ), "id" );
                      marshallString( dependency.getGroupId(), "groupId" );
                      marshallString( dependency.getArtifactId(), "artifactId" );
  
                      marshallRequiredString( dependency.getVersion(), "version" );
  
                      marshallString( dependency.getJar(), "jar" );
                      marshallString( dependency.getType(), "type" );
                      marshallString( dependency.getUrl(), "url" );
  
                      marshallProperties( dependency.getProperties() );
  
                      serializer.endTag( NAMESPACE, "dependency" );
                  }
              }
              serializer.endTag( NAMESPACE, "dependencies" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallBuild( Project project )
          throws Exception
      {
          Build build = project.getBuild();
  
          if ( build != null )
          {
  
              serializer.startTag( NAMESPACE, "build" );
  
              marshallString( build.getNagEmailAddress(), "nagEmailAddress" );
              marshallString( build.getSourceDirectory(), "sourceDirectory" );
              marshallString( build.getUnitTestSourceDirectory(), "unitTestSourceDirectory" );
              marshallString( build.getIntegrationUnitTestSourceDirectory(), "integrationUnitTestSourceDirectory" );
              marshallString( build.getAspectSourceDirectory(), "aspectSourceDirectory" );
  
              if ( build.getUnitTest() != null )
              {
                  serializer.startTag( NAMESPACE, "unitTest" );
                  marshallIncludes( build.getUnitTest().getIncludes() );
                  marshallExcludes( build.getUnitTest().getExcludes() );
                  marshallResources( build.getUnitTest().getResources() );
                  serializer.endTag( NAMESPACE, "unitTest" );
              }
  
              //project.build.integrationUnitTest ?
              marshallResources( build.getResources() );
              marshallSourceModifications( build.getSourceModifications() );
  
              serializer.endTag( NAMESPACE, "build" );
          }
      }
  
      private void marshallSourceModifications( List sourceModifications )
          throws Exception
      {
          if ( sourceModifications != null && sourceModifications.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "sourceModifications" );
  
              SourceModification sourceModification;
  
              for ( int i = 0; i < sourceModifications.size(); i++ )
              {
                  sourceModification = (SourceModification) sourceModifications.get( i );
  
                  if ( sourceModification != null )
                  {
                      serializer.startTag( NAMESPACE, "sourceModification" );
  
                      marshallString( sourceModification.getClassName(), "className" );
                      //marshallString( sourceModification.getProperty(), "property" );
                      marshallExcludes( sourceModification.getExcludes() );
  
                      serializer.endTag( NAMESPACE, "sourceModification" );
                  }
              }
  
              serializer.endTag( NAMESPACE, "sourceModifications" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallResources( List resources )
          throws IOException
      {
          if ( resources != null && resources.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "resources" );
  
              Resource resource;
              for ( int i = 0; i < resources.size(); i++ )
              {
                  resource = (Resource) resources.get( i );
                  if ( resource != null )
                  {
                      serializer.startTag( NAMESPACE, "resource" );
  
                      marshallString( resource.getDirectory(), "directory" );
                      marshallString( resource.getTargetPath(), "targetPath" );
  
                      marshallIncludes( resource.getIncludes() );
                      marshallExcludes( resource.getExcludes() );
  
                      serializer.endTag( NAMESPACE, "resource" );
                  }
              }
  
              serializer.endTag( NAMESPACE, "resources" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallExcludes( List excludes )
          throws IOException
      {
          if ( excludes != null && excludes.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "excludes" );
              for ( int i = 0; i < excludes.size(); i++ )
              {
                  marshallRequiredString( (String) excludes.get( i ), "exclude" );
              }
              serializer.endTag( NAMESPACE, "excludes" );
          }
      }
  
      //see if we can merge marshallIncludes and marshallExcludes in a smart way
      /**
       * Description of the Method
       */
      private void marshallIncludes( List includes )
          throws IOException
      {
          if ( includes != null && includes.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "includes" );
              for ( int i = 0; i < includes.size(); i++ )
              {
                  marshallRequiredString( (String) includes.get( i ), "include" );
              }
              serializer.endTag( NAMESPACE, "includes" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallReports( Project project )
          throws Exception
      {
          List reports = project.getReports();
          if ( reports != null && reports.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "reports" );
              for ( int i = 0; i < reports.size(); i++ )
              {
                  marshallString( (String) reports.get( i ), "report" );
              }
              serializer.endTag( NAMESPACE, "reports" );
          }
      }
  
      private void marshallProperties( Map properties )
          throws Exception
      {
          if ( properties != null && properties.size() > 0 )
          {
              serializer.startTag( NAMESPACE, "properties" );
  
              for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
              {
                  String key = (String) i.next();
                  String value = (String) properties.get( key );
                  marshallString( value, key );
              }
  
              serializer.endTag( NAMESPACE, "properties" );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallString( String line, String tag )
          throws IOException
      {
          if ( !isNull( line ) )
          {
              serializer.startTag( NAMESPACE, tag ).text( line ).endTag( NAMESPACE, tag );
          }
      }
  
      /**
       * Description of the Method
       */
      private void marshallRequiredString( String line, String tag )
          throws IOException
      {
          if ( isNull( line ) )
          {
              System.out.println( "WARNING : " + tag + " should not be null" );
          }
          marshallString( line, tag );
      }
  
  
      /**
       * Gets the null attribute of the DefaultProjectMarshaller object
       */
      private boolean isNull( String property )
      {
          return property == null || property.trim().equals( "" );
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org