Author: ogusakov
Date: Mon Dec 15 16:04:14 2008
New Revision: 726880

URL: http://svn.apache.org/viewvc?rev=726880&view=rev
Log:
[MERCURY-56] verification configuration for mercury ant tasks done, PGP unit 
test works on osx. Need test keyrings for other platforms.

Added:
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/pubring.gpg
   (with props)
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/secring.gpg
   (with props)
Modified:
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
    
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
    
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
    
maven/mercury/trunk/mercury-event/src/test/java/org/apache/maven/mercury/event/EventFrameworkTest.java
    
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ReadWriteTest.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    
maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
    
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
    
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
    
maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/FileUtil.java

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml Mon Dec 15 
16:04:14 2008
@@ -19,10 +19,34 @@
     <delete dir="${local.repo.dir}"/>
     <mkdir dir="${local.repo.dir}"/>
 
-       <merc:config id="conf">
+    <merc:config id="conf">
       <merc:repo id="localRepo" dir="${local.repo.dir}"/>
       <merc:repo id="central"   url="http://repo1.maven.org/maven2"/>
     </merc:config>
+       
+    <property name="local.verify.dir" 
value="${basedir}/target/test-verify-repo"/>
+    <delete dir="${local.verify.dir}"/>
+    <mkdir dir="${local.verify.dir}"/>
+
+    <merc:config id="verification-conf">
+       
+      <merc:repo id="localVerifyRepo" dir="${local.verify.dir}">
+       
+        <merc:verifywrite type="pgp">
+          <property name="keyring" 
value="${basedir}/target/test-classes/pgp/secring.gpg"/>
+          <property name="pass"    value="testKey82"/>
+          <property name="key"    value="0EDB5D91141BC4F2"/>
+        </merc:verifywrite>
+       
+        <merc:verifyread type="pgp">
+          <property name="keyring" 
value="${basedir}/target/test-classes/pgp/pubring.gpg"/>
+        </merc:verifyread>
+
+      </merc:repo>
+
+       
+    </merc:config>
+
 
     <merc:dep id="my-libs">
       <merc:dependency name="asm:asm:3.0"/>
@@ -59,7 +83,13 @@
                 name="t:t:1.0"
                 file="${jar.target}/t.jar"
       />
+  </target>
 
+  <target name="deploy-verify" depends="compile">
+    <merc:write repoid="localVerifyRepo"
+                name="t:t:1.0"
+                file="${jar.target}/t.jar"
+      />
   </target>
   
 </project>
\ No newline at end of file

Modified: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
 (original)
+++ 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
 Mon Dec 15 16:04:14 2008
@@ -6,9 +6,18 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.apache.maven.mercury.MavenDependencyProcessor;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
+import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes;
+import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
+import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
+import org.apache.maven.mercury.crypto.sha.SHA1VerifierFactory;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
 import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
@@ -17,6 +26,7 @@
 import org.apache.maven.mercury.util.FileUtil;
 import org.apache.maven.mercury.util.Util;
 import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Property;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
 
@@ -30,7 +40,7 @@
 public class Config
 extends AbstractDataType
 {
-  private static final Language LANG = new DefaultLanguage( Config.class );
+  private static final Language _lang = new DefaultLanguage( Config.class );
   
   Collection<Repo> _repos;
   
@@ -50,72 +60,7 @@
     _repositories = new ArrayList<Repository>( _repos.size() );
     
     for( Repo repo : _repos )
-    {
-      if( repo.isLocal() )
-      {
-        DependencyProcessor dp = new MavenDependencyProcessor();
-        
-        LocalRepositoryM2 r = new LocalRepositoryM2( repo.getId(), new File( 
repo._dir ), dp );
-        
-        _repositories.add( r );
-      }
-      else
-      {
-        DependencyProcessor dp = new MavenDependencyProcessor();
-        
-        Server server;
-        try
-        {
-          server = new Server( repo.getId(), new URL( repo._url ) );
-        }
-        catch( MalformedURLException e )
-        {
-          throw new BuildException(e);
-        }
-        
-        if( repo._authid != null )
-        {
-          Auth au = null;
-          
-          if( _auths == null )
-            throw new BuildException( LANG.getMessage( "config.no.auths", 
repo._authid ) );
-          
-          for( Auth a : _auths )
-            if( repo._authid.equals( a.getId() ) )
-              au = a;
-          
-          if( au == null )
-            throw new BuildException( LANG.getMessage( 
"config.no.auth.for.id", repo._authid ) );
-          
-          Credentials serverCred = createCredentials( au );
-          
-          server.setServerCredentials( serverCred );
-        }
-        
-        if( repo._proxyauthid != null )
-        {
-          Auth au = null;
-          
-          if( _auths == null )
-            throw new BuildException( LANG.getMessage( 
"config.no.proxy.auths", repo._proxyauthid ) );
-          
-          for( Auth a : _auths )
-            if( repo._proxyauthid.equals( a.getId() ) )
-              au = a;
-          
-          if( au == null )
-            throw new BuildException( LANG.getMessage( 
"config.no.proxy.auth.for.id", repo._proxyauthid ) );
-          
-          Credentials proxyCred = createCredentials( au );
-          
-          server.setProxyCredentials( proxyCred );
-        }
-        
-        RemoteRepositoryM2 r  = new RemoteRepositoryM2( server, dp );
-        
-        _repositories.add( r );
-      }
-    }
+      _repositories.add( repo.getRepository() );
 
     return _repositories;
   }
@@ -128,7 +73,7 @@
     {
       File cf = new File( a._certfile );
       if( ! cf.exists() )
-        throw new BuildException( LANG.getMessage( "config.no.cert.file", 
a._certfile ) );
+        throw new BuildException( _lang.getMessage( "config.no.cert.file", 
a._certfile ) );
       
       try
       {
@@ -178,6 +123,22 @@
     String _authid;
     String _proxyauthid;
     
+    boolean _readable = true;
+    boolean _writeable = false;
+    
+    List<Verify> _writeVerifiers;
+    List<Verify> _readVerifiers;
+
+    public void setReadable( boolean readable )
+    {
+      this._readable = readable;
+    }
+
+    public void setWriteable( boolean writeable )
+    {
+      this._writeable = writeable;
+    }
+    
     public void setUrl( String url )
     {
       this._url = url;
@@ -207,6 +168,135 @@
     {
       return _dir != null;
     }
+    
+    public Verify createVerifywrite()
+    {
+      if( _writeVerifiers == null )
+        _writeVerifiers = new ArrayList<Verify>(2);
+      
+      Verify v = new Verify();
+      
+      _writeVerifiers.add( v );
+      
+      return v;
+    }
+    
+    public Verify createVerifyread()
+    {
+      if( _readVerifiers == null )
+        _readVerifiers = new ArrayList<Verify>(2);
+      
+      Verify v = new Verify();
+      
+      _readVerifiers.add( v );
+      
+      return v;
+    }
+
+    private Set<StreamVerifierFactory> getVerifiers( List<Verify> vlist )
+    {
+      if( Util.isEmpty( vlist ) )
+        return null;
+      
+      Set<StreamVerifierFactory> facs = new HashSet<StreamVerifierFactory>( 
vlist.size() );
+      
+      for( Verify v : vlist )
+        facs.add( v.getVerifierFactory() );
+      
+      return facs;
+      
+    }
+    
+    public Repository getRepository()
+    {
+      Repository r = null;
+      
+      if( isLocal() )
+      {
+        DependencyProcessor dp = new MavenDependencyProcessor();
+        
+        Server server;
+        try
+        {
+          server = new Server( getId(), new File( _dir ).toURL() );
+
+          server.setReaderStreamVerifierFactories( getVerifiers( 
_readVerifiers ) );
+          server.setWriterStreamVerifierFactories( getVerifiers( 
_writeVerifiers ) );
+        }
+        catch( MalformedURLException e )
+        {
+          throw new BuildException( e );
+        }
+        
+        r = new LocalRepositoryM2( server, dp  );
+      }
+      else
+      {
+        DependencyProcessor dp = new MavenDependencyProcessor();
+        
+        Server server;
+        try
+        {
+          server = new Server( getId(), new URL( _url ) );
+
+          server.setReaderStreamVerifierFactories( getVerifiers( 
_readVerifiers ) );
+          server.setWriterStreamVerifierFactories( getVerifiers( 
_writeVerifiers ) );
+        }
+        catch( MalformedURLException e )
+        {
+          throw new BuildException(e);
+        }
+        
+        if( _authid != null )
+        {
+          Auth au = null;
+          
+          if( _auths == null )
+            throw new BuildException( _lang.getMessage( "config.no.auths", 
_authid ) );
+          
+          for( Auth a : _auths )
+            if( _authid.equals( a.getId() ) )
+              au = a;
+          
+          if( au == null )
+            throw new BuildException( _lang.getMessage( 
"config.no.auth.for.id", _authid ) );
+          
+          Credentials serverCred = createCredentials( au );
+          
+          server.setServerCredentials( serverCred );
+        }
+        
+        if( _proxyauthid != null )
+        {
+          Auth au = null;
+          
+          if( _auths == null )
+            throw new BuildException( _lang.getMessage( 
"config.no.proxy.auths", _proxyauthid ) );
+          
+          for( Auth a : _auths )
+            if( _proxyauthid.equals( a.getId() ) )
+              au = a;
+          
+          if( au == null )
+            throw new BuildException( _lang.getMessage( 
"config.no.proxy.auth.for.id", _proxyauthid ) );
+          
+          Credentials proxyCred = createCredentials( au );
+          
+          server.setProxyCredentials( proxyCred );
+
+        }
+        
+
+        server.setReaderStreamVerifierFactories( getVerifiers( _readVerifiers 
) );
+        server.setWriterStreamVerifierFactories( getVerifiers( _writeVerifiers 
) );
+
+        r  = new RemoteRepositoryM2( server, dp  );
+        
+      }
+      
+      return r;
+    }
+    
   }
   
   public class Auth
@@ -231,5 +321,107 @@
       this._certfile = certfile;
     }
   }
+  
+  public class Verify
+  extends AbstractDataType
+  {
+    public static final String PGP  = "pgp";
+    public static final String SHA1 = "sha1";
+    
+    String _type;
+    boolean _lenient = true;
+    boolean _sufficient = false;
+    Map<String, String> _properties;
+
+    public void setType( String type )
+    {
+      this._type = type;
+    }
+
+    public void setLenient( boolean lenient )
+    {
+      this._lenient = lenient;
+    }
+
+    public void setSufficient( boolean sufficient )
+    {
+      this._sufficient = sufficient;
+    }
+    
+    public void addConfiguredProperty( Property property )
+    {
+      if( _properties == null )
+        _properties = new HashMap<String,String>(4);
+      
+      _properties.put( property.getName(), property.getValue() );
+    }
+    
+    public StreamVerifierFactory getVerifierFactory()
+    throws BuildException
+    {
+      if( _type == null )
+        throw new BuildException( _lang.getMessage( 
"config.repo.verifier.no.type" ) );
+      
+      if( _properties == null || _properties.isEmpty() )
+        throw new BuildException( _lang.getMessage( 
"config.repo.verifier.no.properties", _type ) );
+      
+      if( PGP.equals( _type ) )
+      {
+        String keyRing = _properties.get( "keyring" );
+        
+        if( keyRing == null )
+          throw new BuildException( _lang.getMessage( 
"config.repo.verifier.pgp.no.keyring" ) );
+
+        String pass = _properties.get( "pass" );
+        
+        if( pass == null ) // reader configuration
+        {
+          try
+          {
+            PgpStreamVerifierFactory fac =
+                new PgpStreamVerifierFactory(
+                    new StreamVerifierAttributes( 
PgpStreamVerifierFactory.DEFAULT_EXTENSION, _lenient, _sufficient )
+                    , FileUtil.toStream( keyRing )
+                                            );
+            return fac;
+          }
+          catch( Exception e )
+          {
+            throw new BuildException( e );
+          }
+        }
+        else // writer configuration
+        {
+          String keyId = _properties.get( "key" );
+          
+          if( keyId == null || keyId.length() != 16 )
+            throw new BuildException( _lang.getMessage( 
"config.repo.verifier.pgp.bad.keyid", keyId, keyRing ) );
+          
+          try
+          {
+            PgpStreamVerifierFactory fac =
+                new PgpStreamVerifierFactory(
+                    new StreamVerifierAttributes( 
PgpStreamVerifierFactory.DEFAULT_EXTENSION, _lenient, _sufficient )
+                    , FileUtil.toStream( keyRing ), keyId, pass
+                                            );
+            return fac;
+          }
+          catch( Exception e )
+          {
+            throw new BuildException( e );
+          }
+          
+        }
+      }
+      else if( SHA1.equals( _type ) )
+      {
+        SHA1VerifierFactory fac = new SHA1VerifierFactory( new 
StreamVerifierAttributes( SHA1VerifierFactory.DEFAULT_EXTENSION, _lenient, 
_sufficient ) );
+
+        return fac;
+      }
+
+      throw new BuildException( _lang.getMessage( 
"config.repo.verifier.bad.type", _type ) );
+    }
+  }
 
 }

Modified: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
 (original)
+++ 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
 Mon Dec 15 16:04:14 2008
@@ -30,3 +30,9 @@
 config.no.auths=No authentications are declared. Looking for auth id {0}
 config.no.auth.for.id=No authentications are declared. Looking for auth id {0}
 config.no.cert.file=cert file {0} does not exist
+
+config.repo.verifier.no.type=Verifier configuration does not have type 
attribute - don't know what to do
+config.repo.verifier.no.properties=Verifier configuration {0} does not have 
properties - don't know what to do
+config.repo.verifier.pgp.no.keyring=PGP verifier configuration does not have a 
keyring property
+config.repo.verifier.bad.type=Verfier does not understand type {0}
+config.repo.verifier.pgp.bad.keyid=Bad key "{0}" for secret keyring {1}; 
expected to see 16 hex number, but did not find them 

Modified: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
 (original)
+++ 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
 Mon Dec 15 16:04:14 2008
@@ -1,35 +1,18 @@
 package org.apache.maven.mercury.ant.tasks;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
 
 import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
-import org.apache.maven.mercury.artifact.ArtifactMetadata;
-import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.artifact.DefaultArtifact;
-import org.apache.maven.mercury.metadata.DependencyBuilder;
-import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
-import org.apache.maven.mercury.repository.api.ArtifactResults;
-import org.apache.maven.mercury.repository.api.LocalRepository;
 import org.apache.maven.mercury.repository.api.Repository;
-import org.apache.maven.mercury.repository.api.RepositoryException;
-import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
 import org.apache.maven.mercury.util.Util;
 import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.types.FileList;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
-import org.omg.stub.java.rmi._Remote_Stub;
 
 /**
  *
@@ -41,10 +24,10 @@
 public class WriteTask
 extends AbstractAntTask
 {
-  private static final Language LANG = new DefaultLanguage( WriteTask.class );
+  private static final Language _lang = new DefaultLanguage( WriteTask.class );
   
-  public static final String TASK_NAME = LANG.getMessage( "write.task.name" );
-  public static final String TASK_DESC = LANG.getMessage( "write.task.desc" );
+  public static final String TASK_NAME = _lang.getMessage( "write.task.name" );
+  public static final String TASK_DESC = _lang.getMessage( "write.task.desc" );
   
   private String _repoid;
   private String _file;
@@ -99,7 +82,7 @@
   {
     if( _repoid == null )
     {
-      throwIfEnabled( LANG.getMessage( "write.repo.id.mandatory" ) );
+      throwIfEnabled( _lang.getMessage( "write.repo.id.mandatory" ) );
       return;
     }
     
@@ -107,13 +90,13 @@
     
     if( repo == null )
     {
-      throwIfEnabled( LANG.getMessage( "write.repo.not.found", _repoid ) );
+      throwIfEnabled( _lang.getMessage( "write.repo.not.found", _repoid ) );
       return;
     }
     
     if( _file == null )
     {
-      throwIfEnabled( LANG.getMessage( "write.file.mandatory" ) );
+      throwIfEnabled( _lang.getMessage( "write.file.mandatory" ) );
       return;
     }
     
@@ -121,25 +104,25 @@
     
     if( !file.exists() )
     {
-      throwIfEnabled( LANG.getMessage( "write.file.not.found", _file, _repoid 
) );
+      throwIfEnabled( _lang.getMessage( "write.file.not.found", _file, _repoid 
) );
       return;
     }
     
     if( Util.isEmpty( _name ) && Util.isEmpty( _pom ) )
     {
-      throwIfEnabled( LANG.getMessage( "write.no.name.no.pom", _file, _repoid 
) );
+      throwIfEnabled( _lang.getMessage( "write.no.name.no.pom", _file, _repoid 
) );
       return;
     }
 
     if( !Util.isEmpty( _name ) && !Util.isEmpty( _pom ) )
     {
-      throwIfEnabled( LANG.getMessage( "write.no.name.no.pom", _file, _repoid 
) );
+      throwIfEnabled( _lang.getMessage( "write.no.name.no.pom", _file, _repoid 
) );
       return;
     }
 
     if( !Util.isEmpty( _pom ) )
     {
-      throwIfEnabled( LANG.getMessage( "write.pom.not.supported", _file, 
_repoid ) );
+      throwIfEnabled( _lang.getMessage( "write.pom.not.supported", _file, 
_repoid ) );
       return;
     }
 
@@ -147,8 +130,6 @@
     {
       DefaultArtifact a = null;
       
-      File pom = null;
-      
       if( !Util.isEmpty( _name ) )
       {
         a = new DefaultArtifact( new ArtifactBasicMetadata(_name) );
@@ -176,7 +157,7 @@
       }
       else
       {
-        throwIfEnabled( LANG.getMessage( "write.pom.not.supported", _file, 
_repoid ) );
+        throwIfEnabled( _lang.getMessage( "write.pom.not.supported", _file, 
_repoid ) );
         return;
       }
         

Modified: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
 (original)
+++ 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
 Mon Dec 15 16:04:14 2008
@@ -5,7 +5,8 @@
   <taskdef name="resolve" 
classname="org.apache.maven.mercury.ant.tasks.ResolveTask"/>
   <taskdef name="write"   
classname="org.apache.maven.mercury.ant.tasks.WriteTask"/>
 
-  <typedef name="dep"    classname="org.apache.maven.mercury.ant.tasks.Dep"/>
-  <typedef name="config" 
classname="org.apache.maven.mercury.ant.tasks.Config"/>
+  <typedef name="dep"             
classname="org.apache.maven.mercury.ant.tasks.Dep"/>
+  <typedef name="depdependencies" 
classname="org.apache.maven.mercury.ant.tasks.Dep"/>
+  <typedef name="config"          
classname="org.apache.maven.mercury.ant.tasks.Config"/>
   
 </antlib>

Modified: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
 Mon Dec 15 16:04:14 2008
@@ -24,6 +24,9 @@
   static final String _writeRepoDir = "./target/test-repo";
   static       File   _writeRepoDirFile;
   
+  static final String _verifyRepoDir = "./target/test-verify-repo";
+  static       File   _verifyRepoDirFile;
+  
   static final String _compileDir = "./target/compile-classes";
   static       File   _compileDirFile;
   
@@ -127,6 +130,10 @@
     _writeRepoDirFile = new File( _writeRepoDir );
     FileUtil.delete( _writeRepoDirFile );
     _writeRepoDirFile.mkdirs();
+
+    _verifyRepoDirFile = new File( _verifyRepoDir );
+    FileUtil.delete( _verifyRepoDirFile );
+    _verifyRepoDirFile.mkdirs();
     
     _compileDirFile   = new File( _compileDir );
     FileUtil.delete( _compileDirFile );
@@ -216,12 +223,33 @@
     System.out.flush();
     
     File af = new File( _writeRepoDirFile, "/t/t/1.0/t-1.0.jar" );
- 
     assertFalse( af.exists() );
+
+    File ap = new File( _writeRepoDirFile, "/t/t/1.0/t-1.0.pom" );
+    assertFalse( ap.exists() );
     
     executeTarget("deploy");
     
     assertTrue( af.exists() );
+    assertTrue( ap.exists() );
+  }
+  //-----------------------------------
+  public void testVerifyPgp()
+  {
+    String title = "write-verify-pgp";
+    System.out.println("========> start "+title);
+    System.out.flush();
+    
+    File af = new File( _verifyRepoDirFile, "/t/t/1.0/t-1.0.jar" );
+    assertFalse( af.exists() );
+    
+    File sig = new File( _verifyRepoDirFile, "/t/t/1.0/t-1.0.jar.asc" );
+    assertFalse( sig.exists() );
+    
+    executeTarget("deploy-verify");
+    
+    assertTrue( af.exists() );
+    assertTrue( sig.exists() );
   }
   //-----------------------------------
 }

Added: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/pubring.gpg
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/pubring.gpg?rev=726880&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/pubring.gpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/secring.gpg
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/secring.gpg?rev=726880&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/resources/pgp/secring.gpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
 (original)
+++ 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
 Mon Dec 15 16:04:14 2008
@@ -23,7 +23,6 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.StringTokenizer;
 
 import org.apache.maven.mercury.artifact.version.VersionException;
 import org.apache.maven.mercury.artifact.version.VersionRange;

Modified: 
maven/mercury/trunk/mercury-event/src/test/java/org/apache/maven/mercury/event/EventFrameworkTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-event/src/test/java/org/apache/maven/mercury/event/EventFrameworkTest.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-event/src/test/java/org/apache/maven/mercury/event/EventFrameworkTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-event/src/test/java/org/apache/maven/mercury/event/EventFrameworkTest.java
 Mon Dec 15 16:04:14 2008
@@ -24,12 +24,6 @@
 
 import junit.framework.TestCase;
 
-import org.apache.maven.mercury.event.EventGenerator;
-import org.apache.maven.mercury.event.EventManager;
-import org.apache.maven.mercury.event.EventTypeEnum;
-import org.apache.maven.mercury.event.GenericEvent;
-import org.apache.maven.mercury.event.MercuryEvent;
-import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.event.MercuryEvent.EventMask;
 
 /**

Modified: 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ReadWriteTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ReadWriteTest.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ReadWriteTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/ReadWriteTest.java
 Mon Dec 15 16:04:14 2008
@@ -41,7 +41,6 @@
 import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;
 import org.apache.maven.mercury.repository.local.m2.MetadataProcessorMock;
 import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
-import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryWriterM2;
 import org.apache.maven.mercury.spi.http.server.HttpTestServer;
 import org.apache.maven.mercury.transport.api.Server;
 

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 Mon Dec 15 16:04:14 2008
@@ -31,13 +31,10 @@
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.artifact.api.ArtifactListProcessor;
 import org.apache.maven.mercury.artifact.version.VersionException;
-import org.apache.maven.mercury.artifact.version.VersionRange;
-import org.apache.maven.mercury.artifact.version.VersionRangeFactory;
 import org.apache.maven.mercury.event.EventGenerator;
 import org.apache.maven.mercury.event.EventManager;
 import org.apache.maven.mercury.event.EventTypeEnum;
 import org.apache.maven.mercury.event.GenericEvent;
-import org.apache.maven.mercury.event.MercuryEvent;
 import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
@@ -62,8 +59,8 @@
 {
   public static final ArtifactMetadata DUMMY_ROOT = new 
ArtifactMetadata("__fake:__fake:1.0");
   
-  private static final Language LANG = new 
DefaultLanguage(DependencyTreeBuilder.class);
-  private static final IMercuryLogger LOG = MercuryLoggerManager.getLogger( 
DependencyTreeBuilder.class ); 
+  private static final Language _lang = new 
DefaultLanguage(DependencyTreeBuilder.class);
+  private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( 
DependencyTreeBuilder.class ); 
   
   private Collection<MetadataTreeArtifactFilter> _filters;
   private List<Comparator<MetadataTreeNode>> _comparators;
@@ -161,7 +158,7 @@
   throws MetadataTreeException
   {
     if( Util.isEmpty( startMDs ) )
-      throw new MetadataTreeException( LANG.getMessage( "empty.md.collection") 
);
+      throw new MetadataTreeException( _lang.getMessage( 
"empty.md.collection") );
 
     List<MetadataTreeNode> deps = new ArrayList<MetadataTreeNode>( 
startMDs.size() );
 
@@ -206,7 +203,7 @@
         mr = _reader.readDependencies( nodeMD );
   
         if( mr == null )
-          throw new MetadataTreeException( LANG.getMessage( 
"artifact.md.not.found", nodeMD.toString() ) );
+          throw new MetadataTreeException( _lang.getMessage( 
"artifact.md.not.found", nodeMD.toString() ) );
         
         MetadataTreeNode node = new MetadataTreeNode( mr, parent, nodeQuery );
     
@@ -236,8 +233,8 @@
         for( ArtifactBasicMetadata md : dependencies )
         {
 
-if( LOG.isDebugEnabled() )
-  LOG.debug("node "+nodeQuery+", dep "+md );
+if( _log.isDebugEnabled() )
+  _log.debug("node "+nodeQuery+", dep "+md );
 
           List<ArtifactBasicMetadata> versions = expandedDeps.get( md );
           if( versions == null || versions.size() < 1 )
@@ -373,7 +370,7 @@
   throws MetadataTreeException
   {
     if( root == null )
-      throw new MetadataTreeException(LANG.getMessage( "empty.tree" ));
+      throw new MetadataTreeException(_lang.getMessage( "empty.tree" ));
     
     try
     {
@@ -396,7 +393,7 @@
   throws MetadataTreeException
   {
     if( root == null )
-      throw new MetadataTreeException(LANG.getMessage( "empty.tree" ));
+      throw new MetadataTreeException(_lang.getMessage( "empty.tree" ));
     
     try
     {

Modified: 
maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
 (original)
+++ 
maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
 Mon Dec 15 16:04:14 2008
@@ -32,7 +32,6 @@
 import org.apache.maven.mercury.event.EventManager;
 import org.apache.maven.mercury.event.EventTypeEnum;
 import org.apache.maven.mercury.event.GenericEvent;
-import org.apache.maven.mercury.event.MercuryEvent;
 import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.repository.api.MetadataCacheException;
 import org.apache.maven.mercury.repository.api.MetadataCorruptionException;
@@ -63,7 +62,7 @@
   public static final String EVENT_UPDATE_GAV = "update.gav";
   public static final String EVENT_SAVE_RAW = "save.raw";
 
-  private static final Language LANG = new DefaultLanguage( 
RepositoryGAVMetadata.class );
+  private static final Language _lang = new DefaultLanguage( 
RepositoryGAVMetadata.class );
   
   static volatile Map<String, MetadataCacheFs> fsCaches = 
Collections.synchronizedMap( new HashMap<String, MetadataCacheFs>(2) ); 
   
@@ -94,7 +93,7 @@
     if( root == null 
         || ( root.exists() && root.isFile() )
     )
-      throw new IllegalArgumentException( LANG.getMessage( "bad.root.file", 
root == null ? "null" : root.getAbsolutePath() ) );
+      throw new IllegalArgumentException( _lang.getMessage( "bad.root.file", 
root == null ? "null" : root.getAbsolutePath() ) );
     
     String key = root.getCanonicalPath();
     

Modified: 
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
 (original)
+++ 
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
 Mon Dec 15 16:04:14 2008
@@ -43,7 +43,6 @@
 import org.apache.maven.mercury.event.EventManager;
 import org.apache.maven.mercury.event.EventTypeEnum;
 import org.apache.maven.mercury.event.GenericEvent;
-import org.apache.maven.mercury.event.MercuryEvent;
 import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
@@ -92,8 +91,8 @@
   /** minimum # of queue elements to consider parallelization */
   private static int MIN_PARALLEL = 5;
   
-  private static final Language LANG = new DefaultLanguage( 
VirtualRepositoryReader.class );
-  private static final IMercuryLogger LOG = MercuryLoggerManager.getLogger( 
VirtualRepositoryReader.class ); 
+  private static final Language _lang = new DefaultLanguage( 
VirtualRepositoryReader.class );
+  private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( 
VirtualRepositoryReader.class ); 
 
   
//----------------------------------------------------------------------------------------------------------------------------
   private List<Repository>       _repositories = new ArrayList<Repository>(8);
@@ -311,7 +310,7 @@
             }
             catch( VersionException e )
             {
-              throw new RepositoryException( LANG.getMessage( 
"query.element.bad.version", key.toString(), e.getMessage() ) );
+              throw new RepositoryException( _lang.getMessage( 
"query.element.bad.version", key.toString(), e.getMessage() ) );
             }
             
             if( keyVersionRange.isSingleton() )
@@ -499,7 +498,7 @@
       List<ArtifactBasicMetadata> rejects = buckets == null ? null : 
buckets.get( RepositoryReader.NULL_READER );
   
       if( buckets == null )
-        throw new RepositoryException( LANG.getMessage( 
"internal.error.sorting.query", query.toString() ) ); 
+        throw new RepositoryException( _lang.getMessage( 
"internal.error.sorting.query", query.toString() ) ); 
         
       init();
       
@@ -523,7 +522,7 @@
           ArtifactResults rrRes = rr.readArtifacts( rrQuery );
           
           if( rrRes.hasExceptions() )
-            throw new RepositoryException( LANG.getMessage( 
"error.reading.existing.artifact", rrRes.getExceptions().toString(), 
rr.getRepository().getId() ) );
+            throw new RepositoryException( _lang.getMessage( 
"error.reading.existing.artifact", rrRes.getExceptions().toString(), 
rr.getRepository().getId() ) );
           
           if( rrRes.hasResults() )
             for( ArtifactBasicMetadata bm : rrRes.getResults().keySet() )
@@ -621,8 +620,8 @@
   public byte[] readMetadata( ArtifactBasicMetadata bmd )
   throws MetadataReaderException
   {
-    if( LOG.isDebugEnabled() )
-      LOG.debug( "Asking for pom: "+bmd);
+    if( _log.isDebugEnabled() )
+      _log.debug( "Asking for pom: "+bmd);
 
     return readRawData( bmd, "", "pom" );
   }
@@ -636,8 +635,8 @@
     GenericEvent event = null;
     String eventTag = null; 
     
-    if( LOG.isDebugEnabled() )
-      LOG.debug( "request for "+bmd+", classifier="+classifier+", type="+type 
);
+    if( _log.isDebugEnabled() )
+      _log.debug( "request for "+bmd+", classifier="+classifier+", type="+type 
);
     
     if( bmd == null )
       throw new IllegalArgumentException("null bmd supplied");
@@ -667,8 +666,8 @@
       byte [] res = null;
       Quality vq = new Quality( bmd.getVersion() );
       
-      if( LOG.isDebugEnabled() )
-        LOG.debug( "quality calculated as "+vq.getQuality() == null ? "null" 
:vq.getQuality().name() );
+      if( _log.isDebugEnabled() )
+        _log.debug( "quality calculated as "+vq.getQuality() == null ? "null" 
:vq.getQuality().name() );
       
       if( Quality.SNAPSHOT_QUALITY.equals( vq ) )
       {
@@ -680,10 +679,10 @@
           ArtifactBasicResults vRes = readVersions( query );
           if( Util.isEmpty( vRes ) )
           {
-            if( LOG.isDebugEnabled() )
-              LOG.debug( "no snapshots found - throw exception" );
+            if( _log.isDebugEnabled() )
+              _log.debug( "no snapshots found - throw exception" );
             
-            throw new MetadataReaderException( LANG.getMessage( 
"no.snapshots", bmd.toString(), classifier, type ) );
+            throw new MetadataReaderException( _lang.getMessage( 
"no.snapshots", bmd.toString(), classifier, type ) );
           }
             
             
@@ -698,10 +697,10 @@
           }
           else
           {
-            if( LOG.isDebugEnabled() )
-              LOG.debug( "no snapshots found - throw exception" );
+            if( _log.isDebugEnabled() )
+              _log.debug( "no snapshots found - throw exception" );
             
-            throw new MetadataReaderException( LANG.getMessage( 
"no.snapshots", bmd.toString(), classifier, type ) );
+            throw new MetadataReaderException( _lang.getMessage( 
"no.snapshots", bmd.toString(), classifier, type ) );
           }
         }
         catch( Exception e )
@@ -722,8 +721,8 @@
           res = rr.readRawData( bmdQuery, classifier, type );
           if( res != null )
           {
-            if( LOG.isDebugEnabled() )
-              LOG.debug( bmdQuery+" found in "+rr.getRepository().getServer() 
);
+            if( _log.isDebugEnabled() )
+              _log.debug( bmdQuery+" found in "+rr.getRepository().getServer() 
);
 
             if( _eventManager != null )
               eventRead.setInfo( eventRead.getInfo() );
@@ -744,8 +743,8 @@
         }
       }
       
-      if( LOG.isDebugEnabled() )
-        LOG.debug( "no data found, returning null" );
+      if( _log.isDebugEnabled() )
+        _log.debug( "no data found, returning null" );
       
       return null;
     }

Modified: 
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
 (original)
+++ 
maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
 Mon Dec 15 16:04:14 2008
@@ -29,7 +29,6 @@
 import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.DefaultArtifact;
-import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.event.MercuryEvent;
 import org.apache.maven.mercury.event.MercuryEventListener;
 import org.apache.maven.mercury.event.MercuryEvent.EventMask;

Modified: 
maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/FileUtil.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/FileUtil.java?rev=726880&r1=726879&r2=726880&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/FileUtil.java
 (original)
+++ 
maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/FileUtil.java
 Mon Dec 15 16:04:14 2008
@@ -29,6 +29,8 @@
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.RandomAccessFile;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
 import java.nio.channels.OverlappingFileLockException;
@@ -81,8 +83,8 @@
   public static final int    K = 1024;
   public static final int    DEFAULT_BUFFER_SIZE = 10 * K;
   
//---------------------------------------------------------------------------------------------------------------
-  private static final IMercuryLogger LOG = MercuryLoggerManager.getLogger( 
FileUtil.class );
-  private static final Language LANG = new DefaultLanguage( FileUtil.class );
+  private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( 
FileUtil.class );
+  private static final Language _lang = new DefaultLanguage( FileUtil.class );
 
   private static final OverlappingFileLockException FILE_LOCKED = new 
OverlappingFileLockException();
   
//---------------------------------------------------------------------------------------------------------------
@@ -167,7 +169,7 @@
       int len = (int)file.length();
       if( len == 0 )
       {
-        LOG.info( LANG.getMessage( "reading.empty.file", 
file.getAbsolutePath() ) );
+        _log.info( _lang.getMessage( "reading.empty.file", 
file.getAbsolutePath() ) );
         return null;
       }
 
@@ -215,13 +217,13 @@
         }
         catch( IOException e )
         {
-          throw new FileUtilException( LANG.getMessage( 
"cannot.read.signature.file", sigFileName, e.getMessage() ) );
+          throw new FileUtilException( _lang.getMessage( 
"cannot.read.signature.file", sigFileName, e.getMessage() ) );
         }
         vs.add( sv );
       }
       else if( ! sv.getAttributes().isLenient() )
       {
-        throw new FileUtilException( LANG.getMessage( "no.signature.file", 
ext, sigFileName ) );
+        throw new FileUtilException( _lang.getMessage( "no.signature.file", 
ext, sigFileName ) );
       }
       // otherwise ignore absence of signature file, if verifier is lenient
     }
@@ -265,7 +267,7 @@
           else
           {
             if( !sv.getAttributes().isLenient() )
-              throw new StreamVerifierException( LANG.getMessage( 
"signature.failed", sv.getAttributes().getExtension(), fileName ) );
+              throw new StreamVerifierException( _lang.getMessage( 
"signature.failed", sv.getAttributes().getExtension(), fileName ) );
           }
         }
       }
@@ -535,7 +537,7 @@
       if( !sf.exists() )
       {
         if( force )
-          throw new StreamVerifierException( LANG.getMessage( 
"no.mandatory.signature", f.getAbsolutePath(), sf.getAbsolutePath() ) );
+          throw new StreamVerifierException( _lang.getMessage( 
"no.mandatory.signature", f.getAbsolutePath(), sf.getAbsolutePath() ) );
         else
           continue;
       }
@@ -579,7 +581,7 @@
 
       if( fl != null )
       {
-        throw new StreamVerifierException( LANG.getMessage( 
"file.failed.verification", f.getAbsolutePath(), fl.toString() ) );
+        throw new StreamVerifierException( _lang.getMessage( 
"file.failed.verification", f.getAbsolutePath(), fl.toString() ) );
       }
     }
     finally
@@ -593,35 +595,35 @@
   public static void main( String[] args )
   throws IOException, StreamObserverException
   {
-    Option sign      = new Option( "sign", LANG.getMessage( "option.sign" ) );
-    Option verify    = new Option( "verify", LANG.getMessage( "option.verify" 
) );
+    Option sign      = new Option( "sign", _lang.getMessage( "option.sign" ) );
+    Option verify    = new Option( "verify", _lang.getMessage( "option.verify" 
) );
     OptionGroup  cmd = new OptionGroup();
     cmd.addOption( sign );
     cmd.addOption( verify );
 
-    Option recurce   = new Option( "r", LANG.getMessage( "option.r" ) );
-    Option force     = new Option( "force", LANG.getMessage( "option.force" ) 
);
+    Option recurce   = new Option( "r", _lang.getMessage( "option.r" ) );
+    Option force     = new Option( "force", _lang.getMessage( "option.force" ) 
);
 
     OptionGroup  sig = new OptionGroup();
-    Option sha1      = new Option( "sha1", LANG.getMessage( "option.sha1" ) );
-    Option pgp       = new Option( "pgp", LANG.getMessage( "option.pgp" ) );
+    Option sha1      = new Option( "sha1", _lang.getMessage( "option.sha1" ) );
+    Option pgp       = new Option( "pgp", _lang.getMessage( "option.pgp" ) );
     sig.addOption( sha1 );
     sig.addOption( pgp );
 
     Option keyring   = OptionBuilder.withArgName( "file" )
                                     .hasArg()
                                     .withType( java.io.File.class )
-                                    .withDescription( LANG.getMessage( 
"option.keyring" ) )
+                                    .withDescription( _lang.getMessage( 
"option.keyring" ) )
                                     .create( "keyring" )
                                     ;
     Option keyid     = OptionBuilder.withArgName( "hexstring" )
                                     .hasArg()
-                                    .withDescription( LANG.getMessage( 
"option.keyid" ) )
+                                    .withDescription( _lang.getMessage( 
"option.keyid" ) )
                                     .create( "keyid" )
                                     ;
     Option keypass   = OptionBuilder.withArgName( "string" )
                                     .hasArg()
-                                    .withDescription( LANG.getMessage( 
"option.keypass" ) )
+                                    .withDescription( _lang.getMessage( 
"option.keypass" ) )
                                     .create( "keypass" )
                                     ;
 
@@ -686,7 +688,7 @@
       }
       else
       {
-        System.err.println( LANG.getMessage( "bad.pgp.args" ) );
+        System.err.println( _lang.getMessage( "bad.pgp.args" ) );
         return;
       }
     }
@@ -725,12 +727,12 @@
       f = new File( fName );
       if( ! f.exists() )
       {
-        System.out.println( LANG.getMessage( "file.not.exists", fName ) );
+        System.out.println( _lang.getMessage( "file.not.exists", fName ) );
         continue;
       }
       if( f.isDirectory() && ! recurse )
       {
-        System.out.println( LANG.getMessage( "file.is.directory", fName ) );
+        System.out.println( _lang.getMessage( "file.is.directory", fName ) );
         continue;
       }
       if( sign )
@@ -763,14 +765,14 @@
       try{ Thread.sleep( 1l ); } catch( InterruptedException e ){}
       df.mkdirs();
       exists = df.exists();
-      LOG.info( LANG.getMessage( "had.to.create.directory", dir, exists + "" ) 
);
+      _log.info( _lang.getMessage( "had.to.create.directory", dir, exists + "" 
) );
     }
 
     if( !exists )
-      throw new IOException( LANG.getMessage( "cannot.create.directory", dir ) 
);
+      throw new IOException( _lang.getMessage( "cannot.create.directory", dir 
) );
 
     if( !df.isDirectory() )
-      throw new IOException( LANG.getMessage( "file.is.not.directory", dir, 
df.exists() + "", df.isDirectory() + "", df.isFile() + "" ) );
+      throw new IOException( _lang.getMessage( "file.is.not.directory", dir, 
df.exists() + "", df.isDirectory() + "", df.isFile() + "" ) );
 
     File lockFile = new File( dir,LOCK_FILE );
 
@@ -821,14 +823,14 @@
       try{ Thread.sleep( 1l ); } catch( InterruptedException e ){}
       df.mkdirs();
       exists = df.exists();
-      LOG.info( LANG.getMessage( "had.to.create.directory", dir, exists + "" ) 
);
+      _log.info( _lang.getMessage( "had.to.create.directory", dir, exists + "" 
) );
     }
 
     if( !exists )
-      throw new IOException( LANG.getMessage( "cannot.create.directory", dir ) 
);
+      throw new IOException( _lang.getMessage( "cannot.create.directory", dir 
) );
 
     if( !df.isDirectory() )
-      throw new IOException( LANG.getMessage( "file.is.not.directory", dir, 
df.exists() + "", df.isDirectory() + "", df.isFile() + "" ) );
+      throw new IOException( _lang.getMessage( "file.is.not.directory", dir, 
df.exists() + "", df.isDirectory() + "", df.isFile() + "" ) );
 
     File lockFile = new File( dir,LOCK_FILE );
     if( !lockFile.exists() )
@@ -865,7 +867,7 @@
     {
       File df = new File( dir );
       if( !df.isDirectory() )
-        throw new IOException( LANG.getMessage( "file.is.not.directory", dir ) 
);
+        throw new IOException( _lang.getMessage( "file.is.not.directory", dir 
) );
 
       File lock = new File( dir,LOCK_FILE );
       if( lock.exists() )
@@ -873,7 +875,7 @@
     }
     catch( IOException e )
     {
-      LOG.error( e.getMessage() );
+      _log.error( e.getMessage() );
     }
   }
   
//---------------------------------------------------------------------------------------------------------------
@@ -929,7 +931,7 @@
   public static int depth( File file )
   {
     if( file == null || !file.exists() )
-      throw new IllegalArgumentException( LANG.getMessage( 
"file.not.exists.error", file == null ? "null" : file.getAbsolutePath() ) );
+      throw new IllegalArgumentException( _lang.getMessage( 
"file.not.exists.error", file == null ? "null" : file.getAbsolutePath() ) );
 
     if( file.isFile() )
       return 0;
@@ -951,5 +953,19 @@
     return max + 1;
   }
   
//---------------------------------------------------------------------------------------------------------------
+  public static InputStream toStream( String resource )
+  throws MalformedURLException, IOException
+  {
+    if( Util.isEmpty( resource ) )
+      return null;
+    
+    if( resource.startsWith( "file://" )
+        || resource.startsWith( "http://"; )
+    )
+      return new URL(resource).openStream();
+
+    return new FileInputStream( new File(resource) );
+  }
+  
//---------------------------------------------------------------------------------------------------------------
   
//---------------------------------------------------------------------------------------------------------------
 }


Reply via email to