You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2007/10/07 07:36:06 UTC

svn commit: r582580 - /maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java

Author: jvanzyl
Date: Sat Oct  6 22:36:05 2007
New Revision: 582580

URL: http://svn.apache.org/viewvc?rev=582580&view=rev
Log:
o add back the update catalog mojo, IDEA lost it there

Added:
    maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java   (with props)

Added: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java?rev=582580&view=auto
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java (added)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java Sat Oct  6 22:36:05 2007
@@ -0,0 +1,129 @@
+package org.apache.maven.archetype.mojos;
+
+import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.source.ArchetypeDataSource;
+import org.apache.maven.archetype.source.ArchetypeDataSourceException;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.ContextEnabled;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Settings;
+import org.codehaus.plexus.util.PropertyUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+
+/**
+ * Updates the local catalog
+ *
+ * @phase install
+ * @goal update-local-catalog
+ *
+ * @author rafale
+ */
+public class UpdateLocalCatalogMojo
+    extends AbstractMojo
+    implements ContextEnabled
+{
+    /** @component role="org.apache.maven.archetype.source.ArchetypeDataSource" */
+    private Map archetypeSources;
+
+    /**
+     * The project artifact, which should have the LATEST metadata added to it.
+     *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
+    /**
+     * The project artifact, which should have the LATEST metadata added to it.
+     *
+     * @parameter expression="${settings.localRepository}"
+     * @required
+     * @readonly
+     */
+    private File localRepository;
+
+    /**
+     * The Maven settings.
+     *
+     * @parameter expression="${settings}"
+     * @required
+     * @readonly
+     */
+    private Settings settings;
+
+    public void execute( )
+        throws MojoExecutionException
+    {
+        Archetype archetype = new Archetype(  );
+        archetype.setGroupId( project.getGroupId(  ) );
+        archetype.setArtifactId( project.getArtifactId(  ) );
+        archetype.setVersion( project.getVersion(  ) );
+        archetype.setDescription( project.getName(  ) );
+        archetype.setRepository( localRepository.toString(  ) );
+//            archetype.setGoals(project.get);
+//            archetype.setProperties(project.get);
+        File archetypeCatalogPropertiesFile = new File( System.getProperty( "user.home" ), ".m2/archetype-catalog.properties" );
+
+        if ( archetypeCatalogPropertiesFile.exists(  ) )
+        {
+            Properties archetypeCatalogProperties = PropertyUtils.loadProperties( archetypeCatalogPropertiesFile );
+
+            getLog(  ).debug( "Updating catalogs " + archetypeCatalogProperties );
+
+            String[] sources = StringUtils.split( archetypeCatalogProperties.getProperty( "sources" ), "," );
+
+            for ( int i = 0; i < sources.length; i++ )
+            {
+                String sourceRoleHint = sources[i].trim();
+
+                try
+                {
+                    getLog(  ).debug( "Updating catalog " + sourceRoleHint );
+
+                    ArchetypeDataSource source = (ArchetypeDataSource) archetypeSources.get( sourceRoleHint );
+
+                    source.updateCatalog( getArchetypeSourceProperties( sourceRoleHint, archetypeCatalogProperties ), archetype, settings );
+
+                    getLog(  ).
+                        info( "Updated " + sourceRoleHint + " using repository " + localRepository.toString(  ) );
+                }
+                catch ( ArchetypeDataSourceException ex )
+                {
+                    getLog(  ).
+                        warn( "Can't update " + sourceRoleHint + " using repository " + localRepository.toString(  ) );
+                }
+            }
+        }
+        else
+        {
+            getLog(  ).debug( "Not updating wiki catalog" );
+        }
+    }
+
+    private Properties getArchetypeSourceProperties( String sourceRoleHint, Properties archetypeCatalogProperties )
+    {
+        Properties p = new Properties(  );
+
+        for ( Iterator i = archetypeCatalogProperties.keySet(  ).iterator(  ); i.hasNext(  ); )
+        {
+            String key = (String) i.next();
+
+            if ( key.startsWith( sourceRoleHint ) )
+            {
+                String k = key.substring( sourceRoleHint.length(  ) + 1 );
+
+                p.setProperty( k, archetypeCatalogProperties.getProperty( key ) );
+            }
+        }
+
+        return p;
+    }
+}
\ No newline at end of file

Propchange: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/UpdateLocalCatalogMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision