You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/11/06 18:05:06 UTC

svn commit: r711912 - in /maven/mercury/trunk/mercury-md/mercury-md-shared/src: main/java/org/apache/maven/mercury/repository/metadata/ test/java/org/apache/maven/mercury/repository/metadata/

Author: ogusakov
Date: Thu Nov  6 09:04:41 2008
New Revision: 711912

URL: http://svn.apache.org/viewvc?rev=711912&view=rev
Log:
added plugin operations provided by Tomash C.

Added:
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java
Modified:
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataBuilderTest.java

Added: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java?rev=711912&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java (added)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java Thu Nov  6 09:04:41 2008
@@ -0,0 +1,74 @@
+package org.apache.maven.mercury.repository.metadata;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
+
+/**
+ * adds new plugin to metadata
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ */
+public class AddPluginOperation
+    implements MetadataOperation
+{
+    private static final Language lang = new DefaultLanguage( AddPluginOperation.class );
+
+    private Plugin plugin;
+
+    /**
+     * @throws MetadataException
+     */
+    public AddPluginOperation( PluginOperand data )
+        throws MetadataException
+    {
+        setOperand( data );
+    }
+
+    public void setOperand( Object data )
+        throws MetadataException
+    {
+        if ( data == null || !( data instanceof PluginOperand ) )
+            throw new MetadataException( lang.getMessage( "bad.operand", "PluginOperand", data == null ? "null" : data
+                .getClass().getName() ) );
+
+        plugin = ( (PluginOperand) data ).getOperand();
+    }
+
+    /**
+     * add version to the in-memory metadata instance
+     *
+     * @param metadata
+     * @param version
+     * @return
+     * @throws MetadataException
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException
+    {
+        if ( metadata == null )
+            return false;
+
+        List<Plugin> plugins = metadata.getPlugins();
+
+        for ( Iterator<Plugin> pi = plugins.iterator(); pi.hasNext(); )
+        {
+            Plugin p = pi.next();
+
+            if ( p.getArtifactId().equals( plugin.getArtifactId() ) )
+            {
+                // plugin already enlisted
+                return false;
+            }
+        }
+
+        // not found, add it
+        plugins.add( plugin );
+
+        return true;
+    }
+
+}

Added: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java?rev=711912&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java (added)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java Thu Nov  6 09:04:41 2008
@@ -0,0 +1,28 @@
+package org.apache.maven.mercury.repository.metadata;
+
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
+
+/**
+ * Plugin storage
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ */
+public class PluginOperand
+    extends AbstractOperand
+{
+    private static final Language lang = new DefaultLanguage( PluginOperand.class );
+
+    Plugin plugin;
+
+    public PluginOperand( Plugin data )
+    {
+        this.plugin = data;
+    }
+
+    public Plugin getOperand()
+    {
+        return plugin;
+    }
+}

Added: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java?rev=711912&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java (added)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java Thu Nov  6 09:04:41 2008
@@ -0,0 +1,73 @@
+package org.apache.maven.mercury.repository.metadata;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
+
+/**
+ * removes a Plugin from Metadata
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ */
+public class RemovePluginOperation
+    implements MetadataOperation
+{
+    private static final Language lang = new DefaultLanguage( RemovePluginOperation.class );
+
+    private Plugin plugin;
+
+    /**
+     * @throws MetadataException
+     */
+    public RemovePluginOperation( PluginOperand data )
+        throws MetadataException
+    {
+        setOperand( data );
+    }
+
+    public void setOperand( Object data )
+        throws MetadataException
+    {
+        if ( data == null || !( data instanceof PluginOperand ) )
+            throw new MetadataException( lang.getMessage( "bad.operand", "PluginOperand", data == null ? "null" : data
+                .getClass().getName() ) );
+
+        plugin = ( (PluginOperand) data ).getOperand();
+    }
+
+    /**
+     * remove version to the in-memory metadata instance
+     *
+     * @param metadata
+     * @param version
+     * @return
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException
+    {
+        if ( metadata == null )
+            return false;
+
+        List<Plugin> plugins = metadata.getPlugins();
+
+        if ( plugins != null && plugins.size() > 0 )
+        {
+            for ( Iterator<Plugin> pi = plugins.iterator(); pi.hasNext(); )
+            {
+                Plugin p = pi.next();
+
+                if ( p.getArtifactId().equals( plugin.getArtifactId() ) )
+                {
+                    pi.remove();
+
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+}

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataBuilderTest.java?rev=711912&r1=711911&r2=711912&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataBuilderTest.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/test/java/org/apache/maven/mercury/repository/metadata/MetadataBuilderTest.java Thu Nov  6 09:04:41 2008
@@ -90,6 +90,41 @@
      assertEquals( 2, versions.size() );
   }
   //-------------------------------------------------------------------------
+  public void testAddPluginOperation()
+  throws FileNotFoundException, IOException, XmlPullParserException, MetadataException
+  {
+    File groupMd = new File( testBase, "group-maven-metadata.xml");
+    byte [] targetBytes = FileUtil.readRawData( groupMd );
+
+    Plugin plugin = new Plugin();
+    plugin.setArtifactId( "some-artifact-id" );
+    plugin.setName( "Some Plugin" );
+    plugin.setPrefix( "some" );
+
+    byte [] resBytes = MetadataBuilder.changeMetadata( targetBytes, new AddPluginOperation( new PluginOperand(plugin) ) );
+
+    File resFile = new File( testBase, "group-maven-metadata-write.xml");
+
+    FileUtil.writeRawData( resFile, resBytes );
+
+     Metadata mmd = MetadataBuilder.read( new FileInputStream(resFile) );
+
+     assertNotNull( mmd );
+     assertEquals(1, mmd.getPlugins().size() );
+     assertEquals("some-artifact-id", ((Plugin)mmd.getPlugins().get( 0 )).getArtifactId() );
+     assertEquals("Some Plugin", ((Plugin)mmd.getPlugins().get( 0 )).getName() );
+     assertEquals("some", ((Plugin)mmd.getPlugins().get( 0 )).getPrefix() );
+
+     // now let's drop plugin
+     targetBytes = FileUtil.readRawData( resFile );
+     resBytes = MetadataBuilder.changeMetadata( targetBytes, new RemovePluginOperation( new PluginOperand(plugin) ) );
+
+     Metadata mmd2 = MetadataBuilder.read( new ByteArrayInputStream(resBytes) );
+
+     assertNotNull( mmd2 );
+     assertEquals(0, mmd2.getPlugins().size() );
+  }
+  //-------------------------------------------------------------------------
   public void testMergeOperation()
   throws FileNotFoundException, IOException, XmlPullParserException, MetadataException
   {