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
{