You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2008/12/15 15:31:35 UTC

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

Author: hboutemy
Date: Mon Dec 15 06:31:34 2008
New Revision: 726701

URL: http://svn.apache.org/viewvc?rev=726701&view=rev
Log:
reviewed code:
o fixed some comments and typos
o applied teams' code style
o fixed encoding issue when writing metadata (platform encoding used instead of XML auto-detected)
o renamed lang constants to LANG

Modified:
    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/AddVersionOperation.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MergeOperation.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/Messages.properties
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataBuilder.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataException.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperand.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperation.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
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemoveVersionOperation.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetSnapshotOperation.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetVersionOperation.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SnapshotOperand.java
    maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/StringOperand.java

Modified: 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=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddPluginOperation.java Mon Dec 15 06:31:34 2008
@@ -18,7 +18,6 @@
  */
 package org.apache.maven.mercury.repository.metadata;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.codehaus.plexus.lang.DefaultLanguage;
@@ -33,7 +32,7 @@
 public class AddPluginOperation
     implements MetadataOperation
 {
-    private static final Language lang = new DefaultLanguage( AddPluginOperation.class );
+    private static final Language LANG = new DefaultLanguage( AddPluginOperation.class );
 
     private Plugin plugin;
 
@@ -50,14 +49,16 @@
         throws MetadataException
     {
         if ( data == null || !( data instanceof PluginOperand ) )
-            throw new MetadataException( lang.getMessage( "bad.operand", "PluginOperand", data == null ? "null" : data
-                .getClass().getName() ) );
+        {
+            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
+     * add plugin to the in-memory metadata instance
      *
      * @param metadata
      * @param version
@@ -68,14 +69,14 @@
         throws MetadataException
     {
         if ( metadata == null )
+        {
             return false;
+        }
 
         List<Plugin> plugins = metadata.getPlugins();
 
-        for ( Iterator<Plugin> pi = plugins.iterator(); pi.hasNext(); )
+        for ( Plugin p : plugins )
         {
-            Plugin p = pi.next();
-
             if ( p.getArtifactId().equals( plugin.getArtifactId() ) )
             {
                 // plugin already enlisted

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddVersionOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddVersionOperation.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddVersionOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/AddVersionOperation.java Mon Dec 15 06:31:34 2008
@@ -34,62 +34,68 @@
 public class AddVersionOperation
     implements MetadataOperation
 {
-  private static final Language lang = new DefaultLanguage( AddVersionOperation.class );
+    private static final Language LANG = new DefaultLanguage( AddVersionOperation.class );
   
-  private String version;
+    private String version;
   
-  /**
-   * @throws MetadataException 
-   * 
-   */
-  public AddVersionOperation(  StringOperand data  )
-  throws MetadataException
-  {
-    setOperand( data );
-  }
+    /**
+     * @throws MetadataException
+     */
+    public AddVersionOperation( StringOperand data )
+        throws MetadataException
+    {
+        setOperand( data );
+    }
   
   public void setOperand( Object data )
-  throws MetadataException
-  {
-    if( data == null || !(data instanceof StringOperand) )
-      throw new MetadataException( lang.getMessage( "bad.operand", "StringOperand", data == null ? "null" : data.getClass().getName() ) );
-    
-    version = ((StringOperand)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;
-   
-    Versioning vs = metadata.getVersioning(); 
-    
-    if( vs == null )
+        throws MetadataException
     {
-      vs = new Versioning();
-      metadata.setVersioning( vs );
+        if ( data == null || !( data instanceof StringOperand ) )
+        {
+            throw new MetadataException( LANG.getMessage( "bad.operand", "StringOperand", data == null ? "null"
+                            : data.getClass().getName() ) );
+        }
+
+        version = ( (StringOperand) data ).getOperand();
     }
-    
-    if( vs.getVersions() != null && vs.getVersions().size() > 0 )
+
+  /**
+     * add version to the in-memory metadata instance
+     * 
+     * @param metadata
+     * @param version
+     * @return
+     * @throws MetadataException
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException
     {
-      List<String> vl = vs.getVersions();
-      if( vl.contains( version ) )
-        return false;
-    }
-    
-    vs.addVersion( version );
-    vs.setLastUpdated( TimeUtil.getUTCTimestamp() );
-    
-    return true;
-  }
+        if ( metadata == null )
+        {
+            return false;
+        }
+
+        Versioning vs = metadata.getVersioning();
+
+        if ( vs == null )
+        {
+            vs = new Versioning();
+            metadata.setVersioning( vs );
+        }
+
+        if ( vs.getVersions() != null && vs.getVersions().size() > 0 )
+        {
+            List<String> vl = vs.getVersions();
 
+            if ( vl.contains( version ) )
+            {
+                return false;
+            }
+        }
+
+        vs.addVersion( version );
+        vs.setLastUpdated( TimeUtil.getUTCTimestamp() );
+
+        return true;
+    }
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MergeOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MergeOperation.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MergeOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MergeOperation.java Mon Dec 15 06:31:34 2008
@@ -18,11 +18,13 @@
  */
 package org.apache.maven.mercury.repository.metadata;
 
+import java.util.List;
+
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
 
 /**
- *
+ * merge Metadata.
  *
  * @author Oleg Gusakov
  * @version $Id$
@@ -31,157 +33,157 @@
 public class MergeOperation
     implements MetadataOperation
 {
-  private static final Language lang = new DefaultLanguage( MergeOperation.class );
-  
-  Metadata sourceMetadata;
-  
-  /**
-   * @throws MetadataException 
-   * 
-   */
-  public MergeOperation( MetadataOperand data )
-  throws MetadataException
-  {
-    setOperand( data );
-  }
-
-  /**
-   * merge the supplied operand Metadata into this metadata
-   */
-  public boolean perform( Metadata targetMetadata )
-      throws MetadataException
-  {
-    boolean changed = false;
-    
-    if( sourceMetadata == null || targetMetadata == null )
-      return false;
+    private static final Language LANG = new DefaultLanguage( MergeOperation.class );
 
-    for ( java.util.Iterator i = sourceMetadata.getPlugins().iterator(); i.hasNext(); )
+    private Metadata sourceMetadata;
+
+    /**
+     * @throws MetadataException
+     */
+    public MergeOperation( MetadataOperand data )
+        throws MetadataException
     {
-        Plugin plugin = (Plugin) i.next();
-        boolean found = false;
+        setOperand( data );
+    }
 
-        for ( java.util.Iterator it = targetMetadata.getPlugins().iterator(); it.hasNext() && !found; )
-        {
-            Plugin preExisting = (Plugin) it.next();
+    /**
+     * merge the supplied operand Metadata into this metadata
+     */
+    public boolean perform( Metadata targetMetadata )
+        throws MetadataException
+    {
+        boolean changed = false;
 
-            if ( preExisting.getPrefix().equals( plugin.getPrefix() ) )
-            {
-                found = true;
-            }
+        if ( sourceMetadata == null || targetMetadata == null )
+        {
+            return false;
         }
 
-        if ( !found )
+        List<Plugin> plugins = sourceMetadata.getPlugins();
+        for ( Plugin plugin : plugins )
         {
-            Plugin mappedPlugin = new Plugin();
-
-            mappedPlugin.setArtifactId( plugin.getArtifactId() );
+            boolean found = false;
 
-            mappedPlugin.setPrefix( plugin.getPrefix() );
+            List<Plugin> targetPlugins = targetMetadata.getPlugins();
+            for ( Plugin preExisting : targetPlugins )
+            {
+                if ( preExisting.getPrefix().equals( plugin.getPrefix() ) )
+                {
+                    found = true;
+                }
+            }
 
-            mappedPlugin.setName( plugin.getName() );
+            if ( !found )
+            {
+                Plugin mappedPlugin = new Plugin();
 
-            targetMetadata.addPlugin( mappedPlugin );
+                mappedPlugin.setArtifactId( plugin.getArtifactId() );
+                mappedPlugin.setPrefix( plugin.getPrefix() );
+                mappedPlugin.setName( plugin.getName() );
 
-            changed = true;
-        }
-    }
+                targetMetadata.addPlugin( mappedPlugin );
 
-    Versioning sourceVersioning = sourceMetadata.getVersioning();
-    if ( sourceVersioning != null )
-    {
-        Versioning targetVersioning = targetMetadata.getVersioning();
-        if ( targetVersioning == null )
-        {
-            targetVersioning = new Versioning();
-            targetMetadata.setVersioning( targetVersioning );
-            changed = true;
+                changed = true;
+            }
         }
 
-        for ( java.util.Iterator i = sourceVersioning.getVersions().iterator(); i.hasNext(); )
+        Versioning sourceVersioning = sourceMetadata.getVersioning();
+        if ( sourceVersioning != null )
         {
-            String version = (String) i.next();
-            if ( !targetVersioning.getVersions().contains( version ) )
+            Versioning targetVersioning = targetMetadata.getVersioning();
+            if ( targetVersioning == null )
             {
+                targetVersioning = new Versioning();
+                targetMetadata.setVersioning( targetVersioning );
                 changed = true;
-                targetVersioning.getVersions().add( version );
             }
-        }
-      
-        if ( "null".equals( sourceVersioning.getLastUpdated() ) )
-        {
-            sourceVersioning.setLastUpdated( null );
-        }
-
-        if ( "null".equals( targetVersioning.getLastUpdated() ) )
-        {
-            targetVersioning.setLastUpdated( null );
-        }
 
-        if ( sourceVersioning.getLastUpdated() == null || sourceVersioning.getLastUpdated().length() == 0 )
-        {
-            // this should only be for historical reasons - we assume local is newer
-            sourceVersioning.setLastUpdated( targetVersioning.getLastUpdated() );
-        }
+            List<String> versions = sourceVersioning.getVersions();
+            for ( String version : versions )
+            {
+                if ( !targetVersioning.getVersions().contains( version ) )
+                {
+                    changed = true;
+                    targetVersioning.getVersions().add( version );
+                }
+            }
 
-        if ( targetVersioning.getLastUpdated() == null || targetVersioning.getLastUpdated().length() == 0 ||
-             sourceVersioning.getLastUpdated().compareTo( targetVersioning.getLastUpdated() ) >= 0 )
-        {
-            changed = true;
-            targetVersioning.setLastUpdated( sourceVersioning.getLastUpdated() );
+            if ( "null".equals( sourceVersioning.getLastUpdated() ) )
+            {
+                sourceVersioning.setLastUpdated( null );
+            }
 
-            if ( sourceVersioning.getRelease() != null )
+            if ( "null".equals( targetVersioning.getLastUpdated() ) )
             {
-                changed = true;
-                targetVersioning.setRelease( sourceVersioning.getRelease() );
+                targetVersioning.setLastUpdated( null );
             }
-            if ( sourceVersioning.getLatest() != null )
+
+            if ( sourceVersioning.getLastUpdated() == null || sourceVersioning.getLastUpdated().length() == 0 )
             {
-                changed = true;
-                targetVersioning.setLatest( sourceVersioning.getLatest() );
+                // this should only be for historical reasons - we assume local is newer
+                sourceVersioning.setLastUpdated( targetVersioning.getLastUpdated() );
             }
 
-            Snapshot s = targetVersioning.getSnapshot();
-            Snapshot snapshot = sourceVersioning.getSnapshot();
-            if ( snapshot != null )
+            if ( targetVersioning.getLastUpdated() == null || targetVersioning.getLastUpdated().length() == 0
+                || sourceVersioning.getLastUpdated().compareTo( targetVersioning.getLastUpdated() ) >= 0 )
             {
-                if ( s == null )
-                {
-                    s = new Snapshot();
-                    targetVersioning.setSnapshot( s );
-                    changed = true;
-                }
+                changed = true;
+                targetVersioning.setLastUpdated( sourceVersioning.getLastUpdated() );
 
-                // overwrite
-                if ( s.getTimestamp() == null ? snapshot.getTimestamp() != null
-                    : !s.getTimestamp().equals( snapshot.getTimestamp() ) )
+                if ( sourceVersioning.getRelease() != null )
                 {
-                    s.setTimestamp( snapshot.getTimestamp() );
                     changed = true;
+                    targetVersioning.setRelease( sourceVersioning.getRelease() );
                 }
-                if ( s.getBuildNumber() != snapshot.getBuildNumber() )
+                if ( sourceVersioning.getLatest() != null )
                 {
-                    s.setBuildNumber( snapshot.getBuildNumber() );
                     changed = true;
+                    targetVersioning.setLatest( sourceVersioning.getLatest() );
                 }
-                if ( s.isLocalCopy() != snapshot.isLocalCopy() )
+
+                Snapshot s = targetVersioning.getSnapshot();
+                Snapshot snapshot = sourceVersioning.getSnapshot();
+                if ( snapshot != null )
                 {
-                    s.setLocalCopy( snapshot.isLocalCopy() );
-                    changed = true;
+                    if ( s == null )
+                    {
+                        s = new Snapshot();
+                        targetVersioning.setSnapshot( s );
+                        changed = true;
+                    }
+
+                    // overwrite
+                    if ( s.getTimestamp() == null ? snapshot.getTimestamp() != null
+                                    : !s.getTimestamp().equals( snapshot.getTimestamp() ) )
+                    {
+                        s.setTimestamp( snapshot.getTimestamp() );
+                        changed = true;
+                    }
+                    if ( s.getBuildNumber() != snapshot.getBuildNumber() )
+                    {
+                        s.setBuildNumber( snapshot.getBuildNumber() );
+                        changed = true;
+                    }
+                    if ( s.isLocalCopy() != snapshot.isLocalCopy() )
+                    {
+                        s.setLocalCopy( snapshot.isLocalCopy() );
+                        changed = true;
+                    }
                 }
             }
         }
+        return changed;
     }
-    return changed;
-  }
 
-  public void setOperand( Object data )
-      throws MetadataException
-  {
-        if( data == null || !(data instanceof MetadataOperand) )
-          throw new MetadataException( lang.getMessage( "bad.operand", "MetadataOperand", data == null ? "null" : data.getClass().getName() ) );
-        
-        sourceMetadata = ((MetadataOperand)data).getOperand();
-  }
+    public void setOperand( Object data )
+        throws MetadataException
+    {
+        if ( data == null || !( data instanceof MetadataOperand ) )
+        {
+            throw new MetadataException( LANG.getMessage( "bad.operand", "MetadataOperand", data == null ? "null"
+                            : data.getClass().getName() ) );
+        }
 
+        sourceMetadata = ( (MetadataOperand) data ).getOperand();
+    }
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/Messages.properties?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/Messages.properties (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/Messages.properties Mon Dec 15 06:31:34 2008
@@ -16,7 +16,7 @@
 #  specific language governing permissions and limitations
 #  under the License.
 #
-bad.operand=Operand is not correct: expected {0}, bit got {1}
+bad.operand=Operand is not correct: expected {0}, but got {1}
 empty.operand=Operand cannot be null or empty: {0}
 bad.string.data=cannot initialize from an empty string: {0}
 bad.snapshot.data=null snapshot passed as parameter
\ No newline at end of file

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataBuilder.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataBuilder.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataBuilder.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataBuilder.java Mon Dec 15 06:31:34 2008
@@ -30,231 +30,244 @@
 import org.apache.maven.mercury.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.apache.maven.mercury.repository.metadata.io.xpp3.MetadataXpp3Writer;
 import org.apache.maven.mercury.util.TimeUtil;
+import org.codehaus.plexus.util.WriterFactory;
 
 /**
  * utility class to help with de/serializing metadata from/to XML
- *
+ * 
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class MetadataBuilder
 {
-  
-  /**
-   * instantiate Metadata from a stream
-   * 
-   * @param in
-   * @return
-   * @throws MetadataException
-   */
-  public static Metadata read( InputStream in )
-  throws MetadataException
-  {
-    try
-    {
-      return new MetadataXpp3Reader().read( in );
-    }
-    catch( Exception e )
-    {
-      throw new MetadataException(e);
-    }
-  }
-  
-  /**
-   * instantiate Metadata from a byte array
-   * 
-   * @param in
-   * @return
-   * @throws MetadataException
-   */
-  public static Metadata getMetadata( byte [] in )
-  throws MetadataException
-  {
-    if( in == null || in.length < 10 )
-      return null;
-
-    try
-    {
-      return new MetadataXpp3Reader().read( new ByteArrayInputStream(in) );
-    }
-    catch( Exception e )
-    {
-      throw new MetadataException(e);
-    }
-  }
-  
-  /**
-   * serialize metadata into xml
-   * 
-   * @param metadata to serialize
-   * @param out output to this stream
-   * @return same metadata as was passed in
-   * @throws MetadataException if any problems occured
-   */
-  public static Metadata write( Metadata metadata, OutputStream out )
-  throws MetadataException
-  {
-    if( metadata == null )
-      return metadata;
-
-    try
-    {
-      new MetadataXpp3Writer().write( new OutputStreamWriter(out), metadata );
-      
-      return metadata;
-    }
-    catch( Exception e )
-    {
-      throw new MetadataException(e);
-    }
-  }
-
-  /**
-   * apply a list of operators to the specified serialized Metadata object
-   * 
-   * @param metadataBytes - serialized Metadata object
-   * @param mutators - operators
-   * @return changed serialized object
-   * @throws MetadataException
-   */
-  public static byte [] changeMetadata( byte [] metadataBytes, List<MetadataOperation> mutators )
-  throws MetadataException
-  {
-    if( mutators == null || mutators.size() < 1 )
-      return metadataBytes;
-    
-    Metadata metadata;
-    boolean changed = false;
-    
-    if( metadataBytes == null || metadataBytes.length < 10 )
-    {
-      metadata = new Metadata();
-    }
-    else
-    {
-      ByteArrayInputStream in = new ByteArrayInputStream( metadataBytes );
-      metadata = read( in );
-    }
-    
-    for( MetadataOperation op : mutators )
-    {
-      changed = op.perform( metadata ) || changed;
-    }
-
-// TODO og: does not work - check    
-//    if( !changed )
-//      return metadataBytes;
-    
-    return getBytes( metadata ); 
-  }
-
-  /**
-   * marshall metadata into a byte array 
-   * 
-   * @param metadata
-   * @return
-   * @throws MetadataException
-   */
-  public static byte [] getBytes( Metadata metadata )
-  throws MetadataException
-  {
-    ByteArrayOutputStream out = new ByteArrayOutputStream();
-    write( metadata, out );
-    
-    byte [] res = out.toByteArray(); 
-    
-    return res; 
-  }
-  /**
-   * apply a list of operators to the specified serialized Metadata object
-   * 
-   * @param metadataBytes - serialized Metadata object
-   * @param mutators - operators
-   * @return changed serialized object
-   * @throws MetadataException
-   */
-  public static byte [] changeMetadata( Metadata metadata, List<MetadataOperation> mutators )
-  throws MetadataException
-  {
-    
-    boolean changed = false;
-
-    if( metadata == null )
-    {
-      metadata = new Metadata();
-    }
-
-    if( mutators != null && mutators.size() > 0 )
-      for( MetadataOperation op : mutators )
-      {
-        changed = op.perform( metadata ) || changed;
-      }
-    
-    ByteArrayOutputStream out = new ByteArrayOutputStream();
-    write( metadata, out );
-    
-    byte [] res = out.toByteArray(); 
-    
-    return res; 
-  }
-
-  public static byte [] changeMetadata( byte [] metadataBytes, MetadataOperation op )
-  throws MetadataException
-  {
-    ArrayList<MetadataOperation> ops = new ArrayList<MetadataOperation>(1);
-    ops.add( op );
-    
-    return changeMetadata( metadataBytes, ops );
-  }
-
-  public static byte [] changeMetadata( Metadata metadata, MetadataOperation op )
-  throws MetadataException
-  {
-    ArrayList<MetadataOperation> ops = new ArrayList<MetadataOperation>(1);
-    ops.add( op );
-    
-    return changeMetadata( metadata, ops );
-  }
-  
-  /**
-   * update snapshot timestamp to now
-   * 
-   * @param target
-   */
-  public static void updateTimestamp( Snapshot target )
-  {
-      target.setTimestamp( TimeUtil.getUTCTimestamp() );
-  }
-  
-  /**
-   * update versioning's lastUpdated timestamp to now
-   * 
-   * @param target
-   */
-  public static void updateTimestamp( Versioning target )
-  {
-      target.setLastUpdated( TimeUtil.getUTCTimestamp() );
-  }
-  
-  public static Snapshot createSnapshot( String version )
-  {
-    Snapshot sn = new Snapshot();
-    
-    if( version == null || version.length() < 3 )
-      return sn;
-    
-    String utc = TimeUtil.getUTCTimestamp();
-    sn.setTimestamp( utc );
-    
-    if( version.endsWith( Artifact.SNAPSHOT_VERSION ))
-      return sn;
-    
-    String sbn = version.substring( version.lastIndexOf( '-' )+1 );
-    int    bn = Integer.parseInt( sbn ); 
-    sn.setBuildNumber( bn );
-    
-    return sn;
-  }
-  
+
+    /**
+     * instantiate Metadata from a stream
+     * 
+     * @param in
+     * @return
+     * @throws MetadataException
+     */
+    public static Metadata read( InputStream in )
+        throws MetadataException
+    {
+        try
+        {
+            return new MetadataXpp3Reader().read( in );
+        }
+        catch ( Exception e )
+        {
+            throw new MetadataException( e );
+        }
+    }
+
+    /**
+     * instantiate Metadata from a byte array
+     * 
+     * @param in
+     * @return
+     * @throws MetadataException
+     */
+    public static Metadata getMetadata( byte[] in )
+        throws MetadataException
+    {
+        if ( in == null || in.length < 10 )
+        {
+            return null;
+        }
+
+        try
+        {
+            return new MetadataXpp3Reader().read( new ByteArrayInputStream( in ) );
+        }
+        catch ( Exception e )
+        {
+            throw new MetadataException( e );
+        }
+    }
+
+    /**
+     * serialize metadata into xml
+     * 
+     * @param metadata to serialize
+     * @param out output to this stream
+     * @return same metadata as was passed in
+     * @throws MetadataException if any problems occurred
+     */
+    public static Metadata write( Metadata metadata, OutputStream out )
+        throws MetadataException
+    {
+        if ( metadata == null )
+        {
+            return metadata;
+        }
+
+        try
+        {
+            new MetadataXpp3Writer().write( WriterFactory.newXmlWriter( out ), metadata );
+
+            return metadata;
+        }
+        catch ( Exception e )
+        {
+            throw new MetadataException( e );
+        }
+    }
+
+    /**
+     * apply a list of operators to the specified serialized Metadata object
+     * 
+     * @param metadataBytes - serialized Metadata object
+     * @param mutators - operators
+     * @return changed serialized object
+     * @throws MetadataException
+     */
+    public static byte[] changeMetadata( byte[] metadataBytes, List<MetadataOperation> mutators )
+        throws MetadataException
+    {
+        if ( mutators == null || mutators.size() < 1 )
+        {
+            return metadataBytes;
+        }
+
+        Metadata metadata;
+        boolean changed = false;
+
+        if ( metadataBytes == null || metadataBytes.length < 10 )
+        {
+            metadata = new Metadata();
+        }
+        else
+        {
+            ByteArrayInputStream in = new ByteArrayInputStream( metadataBytes );
+            metadata = read( in );
+        }
+
+        for ( MetadataOperation op : mutators )
+        {
+            changed = op.perform( metadata ) || changed;
+        }
+
+        // TODO og: does not work - check
+        // if( !changed )
+        // return metadataBytes;
+
+        return getBytes( metadata );
+    }
+
+    /**
+     * marshall metadata into a byte array
+     * 
+     * @param metadata
+     * @return
+     * @throws MetadataException
+     */
+    public static byte[] getBytes( Metadata metadata )
+        throws MetadataException
+    {
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        write( metadata, out );
+
+        byte[] res = out.toByteArray();
+
+        return res;
+    }
+
+    /**
+     * apply a list of operators to the specified serialized Metadata object
+     * 
+     * @param metadataBytes - serialized Metadata object
+     * @param mutators - operators
+     * @return changed serialized object
+     * @throws MetadataException
+     */
+    public static byte[] changeMetadata( Metadata metadata, List<MetadataOperation> mutators )
+        throws MetadataException
+    {
+
+        boolean changed = false;
+
+        if ( metadata == null )
+        {
+            metadata = new Metadata();
+        }
+
+        if ( mutators != null && mutators.size() > 0 )
+        {
+            for ( MetadataOperation op : mutators )
+            {
+                changed = op.perform( metadata ) || changed;
+            }
+        }
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        write( metadata, out );
+
+        byte[] res = out.toByteArray();
+
+        return res;
+    }
+
+    public static byte[] changeMetadata( byte[] metadataBytes, MetadataOperation op )
+        throws MetadataException
+    {
+        ArrayList<MetadataOperation> ops = new ArrayList<MetadataOperation>( 1 );
+        ops.add( op );
+
+        return changeMetadata( metadataBytes, ops );
+    }
+
+    public static byte[] changeMetadata( Metadata metadata, MetadataOperation op )
+        throws MetadataException
+    {
+        ArrayList<MetadataOperation> ops = new ArrayList<MetadataOperation>( 1 );
+        ops.add( op );
+
+        return changeMetadata( metadata, ops );
+    }
+
+    /**
+     * update snapshot timestamp to now
+     * 
+     * @param target
+     */
+    public static void updateTimestamp( Snapshot target )
+    {
+        target.setTimestamp( TimeUtil.getUTCTimestamp() );
+    }
+
+    /**
+     * update versioning's lastUpdated timestamp to now
+     * 
+     * @param target
+     */
+    public static void updateTimestamp( Versioning target )
+    {
+        target.setLastUpdated( TimeUtil.getUTCTimestamp() );
+    }
+
+    public static Snapshot createSnapshot( String version )
+    {
+        Snapshot sn = new Snapshot();
+
+        if ( version == null || version.length() < 3 )
+        {
+            return sn;
+        }
+
+        String utc = TimeUtil.getUTCTimestamp();
+        sn.setTimestamp( utc );
+
+        if ( version.endsWith( Artifact.SNAPSHOT_VERSION ) )
+        {
+            return sn;
+        }
+
+        String sbn = version.substring( version.lastIndexOf( '-' ) + 1 );
+        int bn = Integer.parseInt( sbn );
+        sn.setBuildNumber( bn );
+
+        return sn;
+    }
+
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataException.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataException.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataException.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataException.java Mon Dec 15 06:31:34 2008
@@ -19,50 +19,43 @@
 package org.apache.maven.mercury.repository.metadata;
 
 /**
- *
- *
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class MetadataException
     extends Exception
 {
 
-  /**
+    /**
    * 
    */
-  public MetadataException()
-  {
-  }
-
-  /**
-   * @param message
-   */
-  public MetadataException(
-      String message )
-  {
-    super( message );
-  }
-
-  /**
-   * @param cause
-   */
-  public MetadataException(
-      Throwable cause )
-  {
-    super( cause );
-  }
-
-  /**
-   * @param message
-   * @param cause
-   */
-  public MetadataException(
-      String message,
-      Throwable cause )
-  {
-    super( message, cause );
-  }
+    public MetadataException()
+    {
+    }
+
+    /**
+     * @param message
+     */
+    public MetadataException( String message )
+    {
+        super( message );
+    }
+
+    /**
+     * @param cause
+     */
+    public MetadataException( Throwable cause )
+    {
+        super( cause );
+    }
+
+    /**
+     * @param message
+     * @param cause
+     */
+    public MetadataException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
 
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperand.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperand.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperand.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperand.java Mon Dec 15 06:31:34 2008
@@ -22,28 +22,30 @@
 import org.codehaus.plexus.lang.Language;
 
 /**
- *
- *
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class MetadataOperand
     extends AbstractOperand
 {
-  private static final Language lang = new DefaultLanguage( MetadataOperand.class );
-  Metadata metadata;
-  
-  public MetadataOperand( Metadata data )
-  {
-    if( data == null  )
-      this.metadata = new Metadata();
-    else
-      this.metadata = data;
-  }
-  
-  public Metadata getOperand()
-  {
-    return metadata;
-  }
+    private static final Language LANG = new DefaultLanguage( MetadataOperand.class );
+
+    Metadata metadata;
+
+    public MetadataOperand( Metadata data )
+    {
+        if ( data == null )
+        {
+            this.metadata = new Metadata();
+        }
+        else
+        {
+            this.metadata = data;
+        }
+    }
+
+    public Metadata getOperand()
+    {
+        return metadata;
+    }
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperation.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/MetadataOperation.java Mon Dec 15 06:31:34 2008
@@ -27,16 +27,18 @@
  */
 public interface MetadataOperation
 {
-  /** sets the operation's data */
-  public void setOperand( Object data )
-  throws MetadataException;
+    /**
+     *  sets the operation's data
+     */
+    public void setOperand( Object data )
+        throws MetadataException;
   
-  /**
-   * performs the operation
-   *
-   * @param metadata to perform on
-   * @return true if operation changed the data
-   */
-  public boolean perform( Metadata metadata )
-  throws MetadataException;
+    /**
+     * performs the operation
+     * 
+     * @param metadata to perform on
+     * @return true if operation changed the data
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException;
 }

Modified: 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=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/PluginOperand.java Mon Dec 15 06:31:34 2008
@@ -23,14 +23,14 @@
 
 /**
  * Plugin storage
- *
+ * 
  * @author Oleg Gusakov
  * @version $Id$
  */
 public class PluginOperand
     extends AbstractOperand
 {
-    private static final Language lang = new DefaultLanguage( PluginOperand.class );
+    private static final Language LANG = new DefaultLanguage( PluginOperand.class );
 
     Plugin plugin;
 

Modified: 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=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemovePluginOperation.java Mon Dec 15 06:31:34 2008
@@ -26,7 +26,7 @@
 
 /**
  * removes a Plugin from Metadata
- *
+ * 
  * @author Oleg Gusakov
  * @version $Id$
  */
@@ -50,15 +50,17 @@
         throws MetadataException
     {
         if ( data == null || !( data instanceof PluginOperand ) )
-            throw new MetadataException( lang.getMessage( "bad.operand", "PluginOperand", data == null ? "null" : data
-                .getClass().getName() ) );
+        {
+            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

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemoveVersionOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemoveVersionOperation.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemoveVersionOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/RemoveVersionOperation.java Mon Dec 15 06:31:34 2008
@@ -26,68 +26,73 @@
 
 /**
  * removes a version from Metadata
- *
+ * 
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class RemoveVersionOperation
-implements MetadataOperation
+    implements MetadataOperation
 {
-  private static final Language lang = new DefaultLanguage( RemoveVersionOperation.class );
-  
-  private String version;
-  
-  /**
-   * @throws MetadataException 
-   * 
-   */
-  public RemoveVersionOperation(  StringOperand data  )
-  throws MetadataException
-  {
-    setOperand( data );
-  }
-  
-  public void setOperand( Object data )
-  throws MetadataException
-  {
-    if( data == null || !(data instanceof StringOperand) )
-      throw new MetadataException( lang.getMessage( "bad.operand", "StringOperand", data == null ? "null" : data.getClass().getName() ) );
-    
-    version = ((StringOperand)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;
-    
-    Versioning vs = metadata.getVersioning(); 
-    
-    if( vs == null )
+    private static final Language LANG = new DefaultLanguage( RemoveVersionOperation.class );
+
+    private String version;
+
+    /**
+     * @throws MetadataException
+     */
+    public RemoveVersionOperation( StringOperand data )
+        throws MetadataException
+    {
+        setOperand( data );
+    }
+
+    public void setOperand( Object data )
+        throws MetadataException
     {
-      return false;
+        if ( data == null || !( data instanceof StringOperand ) )
+        {
+            throw new MetadataException( LANG.getMessage( "bad.operand", "StringOperand", data == null ? "null"
+                            : data.getClass().getName() ) );
+        }
+
+        version = ( (StringOperand) data ).getOperand();
     }
-    
-    if( vs.getVersions() != null && vs.getVersions().size() > 0 )
+
+    /**
+     * remove version to the in-memory metadata instance
+     * 
+     * @param metadata
+     * @param version
+     * @return
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException
     {
-      List<String> vl = vs.getVersions();
-      if( ! vl.contains( version ) )
-        return false;
+        if ( metadata == null )
+        {
+            return false;
+        }
+
+        Versioning vs = metadata.getVersioning();
+
+        if ( vs == null )
+        {
+            return false;
+        }
+
+        if ( vs.getVersions() != null && vs.getVersions().size() > 0 )
+        {
+            List<String> vl = vs.getVersions();
+            if ( !vl.contains( version ) )
+            {
+                return false;
+            }
+        }
+
+        vs.removeVersion( version );
+        vs.setLastUpdated( TimeUtil.getUTCTimestamp() );
+
+        return true;
     }
-    
-    vs.removeVersion( version );
-    vs.setLastUpdated( TimeUtil.getUTCTimestamp() );
-    
-    return true;
-  }
 
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetSnapshotOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetSnapshotOperation.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetSnapshotOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetSnapshotOperation.java Mon Dec 15 06:31:34 2008
@@ -24,62 +24,65 @@
 
 /**
  * adds new snapshot to metadata
- *
+ * 
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class SetSnapshotOperation
     implements MetadataOperation
 {
-  private static final Language lang = new DefaultLanguage( SetSnapshotOperation.class );
-  
-  private Snapshot snapshot;
-  
-  /**
-   * @throws MetadataException 
-   * 
-   */
-  public SetSnapshotOperation(  SnapshotOperand data  )
-  throws MetadataException
-  {
-    setOperand( data );
-  }
-  
-  public void setOperand( Object data )
-  throws MetadataException
-  {
-    if( data == null || !(data instanceof SnapshotOperand) )
-      throw new MetadataException( lang.getMessage( "bad.operand", "SnapshotOperand", data == null ? "null" : data.getClass().getName() ) );
-    
-    snapshot = ((SnapshotOperand)data).getOperand();
-  }
-
-  /**
-   * add/replace snapshot to the in-memory metadata instance
-   * 
-   * @param metadata
-   * @return
-   * @throws MetadataException 
-   */
-  public boolean perform( Metadata metadata )
-  throws MetadataException
-  {
-    if( metadata == null )
-      return false;
-   
-    Versioning vs = metadata.getVersioning(); 
-    
-    if( vs == null )
+    private static final Language LANG = new DefaultLanguage( SetSnapshotOperation.class );
+
+    private Snapshot snapshot;
+
+    /**
+     * @throws MetadataException
+     */
+    public SetSnapshotOperation( SnapshotOperand data )
+        throws MetadataException
     {
-      vs = new Versioning();
-      metadata.setVersioning( vs );
+        setOperand( data );
+    }
+
+    public void setOperand( Object data )
+        throws MetadataException
+    {
+        if ( data == null || !( data instanceof SnapshotOperand ) )
+        {
+            throw new MetadataException( LANG.getMessage( "bad.operand", "SnapshotOperand", data == null ? "null"
+                            : data.getClass().getName() ) );
+        }
+
+        snapshot = ( (SnapshotOperand) data ).getOperand();
+    }
+
+    /**
+     * add/replace snapshot to the in-memory metadata instance
+     * 
+     * @param metadata
+     * @return
+     * @throws MetadataException
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException
+    {
+        if ( metadata == null )
+        {
+            return false;
+        }
+
+        Versioning vs = metadata.getVersioning();
+
+        if ( vs == null )
+        {
+            vs = new Versioning();
+            metadata.setVersioning( vs );
+        }
+
+        vs.setSnapshot( snapshot );
+        vs.setLastUpdated( TimeUtil.getUTCTimestamp() );
+
+        return true;
     }
-    
-    vs.setSnapshot( snapshot );
-    vs.setLastUpdated( TimeUtil.getUTCTimestamp() );
-    
-    return true;
-  }
 
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetVersionOperation.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetVersionOperation.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetVersionOperation.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SetVersionOperation.java Mon Dec 15 06:31:34 2008
@@ -22,65 +22,71 @@
 import org.codehaus.plexus.lang.Language;
 
 /**
- * adds new snapshot to metadata
- *
+ * adds version to metadata
+ * 
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class SetVersionOperation
     implements MetadataOperation
 {
-  private static final Language lang = new DefaultLanguage( SetVersionOperation.class );
-  
-  private String version;
-  
-  /**
-   * @throws MetadataException 
-   * 
-   */
-  public SetVersionOperation(  StringOperand data  )
-  throws MetadataException
-  {
-    setOperand( data );
-  }
-  
-  public void setOperand( Object data )
-  throws MetadataException
-  {
-    if( data == null || !(data instanceof StringOperand) )
-      throw new MetadataException( lang.getMessage( "bad.operand", "SnapshotOperand", data == null ? "null" : data.getClass().getName() ) );
-    
-    version = ((StringOperand)data).getOperand();
-  }
-
-  /**
-   * add/replace snapshot to the in-memory metadata instance
-   * 
-   * @param metadata
-   * @return
-   * @throws MetadataException 
-   */
-  public boolean perform( Metadata metadata )
-  throws MetadataException
-  {
-    if( metadata == null )
-      return false;
-   
-    String vs = metadata.getVersion(); 
-    
-    if( vs == null )
+    private static final Language LANG = new DefaultLanguage( SetVersionOperation.class );
+
+    private String version;
+
+    /**
+     * @throws MetadataException
+     */
+    public SetVersionOperation( StringOperand data )
+        throws MetadataException
     {
-      if( version == null )
-        return false;
+        setOperand( data );
+    }
+
+    public void setOperand( Object data )
+        throws MetadataException
+    {
+        if ( data == null || !( data instanceof StringOperand ) )
+        {
+            throw new MetadataException( LANG.getMessage( "bad.operand", "SnapshotOperand", data == null ? "null"
+                            : data.getClass().getName() ) );
+        }
+
+        version = ( (StringOperand) data ).getOperand();
+    }
+
+    /**
+     * add version to the in-memory metadata instance
+     * 
+     * @param metadata
+     * @return
+     * @throws MetadataException
+     */
+    public boolean perform( Metadata metadata )
+        throws MetadataException
+    {
+        if ( metadata == null )
+        {
+            return false;
+        }
+
+        String vs = metadata.getVersion();
+
+        if ( vs == null )
+        {
+            if ( version == null )
+            {
+                return false;
+            }
+        }
+        else if ( vs.equals( version ) )
+        {
+            return false;
+        }
+
+        metadata.setVersion( version );
+
+        return true;
     }
-    else 
-      if( vs.equals( version ) )
-        return false;
-    
-    metadata.setVersion( version );
-    
-    return true;
-  }
 
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SnapshotOperand.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SnapshotOperand.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SnapshotOperand.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/SnapshotOperand.java Mon Dec 15 06:31:34 2008
@@ -22,25 +22,25 @@
 import org.codehaus.plexus.lang.Language;
 
 /**
- * String storage
- *
+ * Snapshot storage
+ * 
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class SnapshotOperand
     extends AbstractOperand
 {
-  private static final Language lang = new DefaultLanguage( SnapshotOperand.class );
-  Snapshot snapshot;
-  
-  public SnapshotOperand( Snapshot data )
-  {
-    this.snapshot = data;
-  }
-  
-  public Snapshot getOperand()
-  {
-    return snapshot;
-  }
+    private static final Language LANG = new DefaultLanguage( SnapshotOperand.class );
+
+    Snapshot snapshot;
+
+    public SnapshotOperand( Snapshot data )
+    {
+        this.snapshot = data;
+    }
+
+    public Snapshot getOperand()
+    {
+        return snapshot;
+    }
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/StringOperand.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/StringOperand.java?rev=726701&r1=726700&r2=726701&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/StringOperand.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-shared/src/main/java/org/apache/maven/mercury/repository/metadata/StringOperand.java Mon Dec 15 06:31:34 2008
@@ -23,26 +23,28 @@
 
 /**
  * String storage
- *
+ * 
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public class StringOperand
     extends AbstractOperand
 {
-  private static final Language lang = new DefaultLanguage( StringOperand.class );
-  String str;
-  
-  public StringOperand( String data )
-  {
-    if( data == null || data.length() < 1 )
-      throw new IllegalArgumentException( lang.getMessage( "bad.string.data", data ) );
-    this.str = data;
-  }
-  
-  public String getOperand()
-  {
-    return str;
-  }
+    private static final Language LANG = new DefaultLanguage( StringOperand.class );
+
+    private String str;
+
+    public StringOperand( String data )
+    {
+        if ( data == null || data.length() < 1 )
+        {
+            throw new IllegalArgumentException( LANG.getMessage( "bad.string.data", data ) );
+        }
+        this.str = data;
+    }
+
+    public String getOperand()
+    {
+        return str;
+    }
 }