jdcasey 2005/04/01 18:17:19
Modified: sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean
RepositoryCleaner.java
sandbox/repoclean/src/main/bash repoclean.sh
sandbox/repoclean/src/main/resources/META-INF/plexus
components.xml
sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/discover
LegacyArtifactDiscoverer.java
sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest
ArtifactDigestVerifier.java ArtifactDigestor.java
Added: sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler
EarHandler.java RarHandler.java
JarDistroHandler.java TldHandler.java
ZipDistroHandler.java LegacyPluginHandler.java
DtdHandler.java SarHandler.java
TgzDistroHandler.java
sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/metadata
ProjectMetadata.java
Removed: sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact
TgzDistroHandler.java SarHandler.java
LegacyPluginHandler.java ZipDistroHandler.java
DtdHandler.java TldHandler.java
JarDistroHandler.java EarHandler.java
RarHandler.java
Log:
o Fixed bash scripts (cygwin option was being tested incorrectly, and resulting in no such
file: cygpath)
o Changed POM handling to use ArtifactMetadata API rather than direct Artifact construction
for POMs
o Streamlined ArtifactDigestor to avoid use of byte arrays for transfer between methods
(resulted in a bit of cut-and-paste code, but should run better)
o Pegged OutOfMemoryError to the ArtifactDigestVerifier/ArtifactDigestor combo (motivated
the previous change)
o Cleaned up artifact source-file checking before creating any of the target directory structures
o Maybe works, maybe not...will resume testing tomorrow or the next day
Revision Changes Path
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/EarHandler.java
Index: EarHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
import org.apache.maven.artifact.handler.JarHandler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id: EarHandler.java,v 1.1 2005/04/02 02:17:19 jdcasey Exp $
*/
public class EarHandler
extends JarHandler
{
public String directory()
{
return "ears";
}
public String packageGoal()
{
return "ear:ear";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/RarHandler.java
Index: RarHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
import org.apache.maven.artifact.handler.JarHandler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id: RarHandler.java,v 1.1 2005/04/02 02:17:19 jdcasey Exp $
*/
public class RarHandler
extends JarHandler
{
public String directory()
{
return "rars";
}
public String packageGoal()
{
return "rar:rar";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/JarDistroHandler.java
Index: JarDistroHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express
* or implied. See the License for the specific language governing permissions and limitations
under
* the License.
*/
import org.apache.maven.artifact.handler.AbstractArtifactHandler;
/**
* @author jdcasey
*/
public class JarDistroHandler
extends AbstractArtifactHandler
{
public String directory()
{
return "distributions";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/TldHandler.java
Index: TldHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
import org.apache.maven.artifact.handler.AbstractArtifactHandler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id: TldHandler.java,v 1.1 2005/04/02 02:17:19 jdcasey Exp $
*/
public class TldHandler
extends AbstractArtifactHandler
{
public String directory()
{
return "tlds";
}
// public String packageGoal()
// {
// return "ejb:ejb";
// }
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/ZipDistroHandler.java
Index: ZipDistroHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express
* or implied. See the License for the specific language governing permissions and limitations
under
* the License.
*/
import org.apache.maven.artifact.handler.AbstractArtifactHandler;
/**
* @author jdcasey
*/
public class ZipDistroHandler
extends AbstractArtifactHandler
{
public String directory()
{
return "distributions";
}
public String extension()
{
return "zip";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/LegacyPluginHandler.java
Index: LegacyPluginHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
import org.apache.maven.artifact.handler.AbstractArtifactHandler;
/* ====================================================================
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*/
/**
* @author jdcasey
*/
public class LegacyPluginHandler
extends AbstractArtifactHandler
{
public String directory()
{
return "plugins";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/DtdHandler.java
Index: DtdHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
import org.apache.maven.artifact.handler.AbstractArtifactHandler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id: DtdHandler.java,v 1.1 2005/04/02 02:17:19 jdcasey Exp $
*/
public class DtdHandler
extends AbstractArtifactHandler
{
public String directory()
{
return "dtds";
}
// public String packageGoal()
// {
// return "ejb:ejb";
// }
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/SarHandler.java
Index: SarHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
import org.apache.maven.artifact.handler.JarHandler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id: SarHandler.java,v 1.1 2005/04/02 02:17:19 jdcasey Exp $
*/
public class SarHandler
extends JarHandler
{
public String directory()
{
return "sars";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/handler/TgzDistroHandler.java
Index: TgzDistroHandler.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.handler;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express
* or implied. See the License for the specific language governing permissions and limitations
under
* the License.
*/
import org.apache.maven.artifact.handler.AbstractArtifactHandler;
/**
* @author jdcasey
*/
public class TgzDistroHandler
extends AbstractArtifactHandler
{
public String directory()
{
return "distributions";
}
public String extension()
{
return "tar.gz";
}
}
1.1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/artifact/metadata/ProjectMetadata.java
Index: ProjectMetadata.java
===================================================================
package org.apache.maven.tools.repoclean.artifact.metadata;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
import org.apache.maven.artifact.repository.ArtifactRepository;
/**
* Attach a POM to an artifact.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id: ProjectMetadata.java,v 1.1 2005/04/02 02:17:19 jdcasey Exp $
*/
public class ProjectMetadata
implements ArtifactMetadata
{
private final Artifact artifact;
public ProjectMetadata( Artifact artifact)
{
this.artifact = artifact;
}
public Artifact getArtifact()
{
return artifact;
}
public String getFilename()
{
return getArtifact().getArtifactId() + "-" + getArtifact().getVersion() + ".pom";
}
public void storeInLocalRepository( ArtifactRepository localRepository )
throws ArtifactMetadataRetrievalException
{
// not used in repoclean.
}
public void retrieveFromRemoteRepository( ArtifactRepository remoteRepository, WagonManager
wagonManager )
{
// not used - TODO: again indicates bad design?
}
public void setArtifact( Artifact artifact )
{
// this should be immutable...
}
}
1.6 +82 -76 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java
Index: RepositoryCleaner.java
===================================================================
RCS file: /home/cvs/maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/RepositoryCleaner.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- RepositoryCleaner.java 1 Apr 2005 02:45:05 -0000 1.5
+++ RepositoryCleaner.java 2 Apr 2005 02:17:19 -0000 1.6
@@ -17,8 +17,10 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.construction.ArtifactConstructionSupport;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.tools.repoclean.artifact.metadata.ProjectMetadata;
import org.apache.maven.tools.repoclean.digest.ArtifactDigestVerifier;
import org.apache.maven.tools.repoclean.discover.ArtifactDiscoverer;
import org.apache.maven.tools.repoclean.report.Reporter;
@@ -182,6 +184,7 @@
try
{
+ logger.info("Rewriting " + artifacts.size() + " artifacts (Should be " + (artifacts.size()
* 2) + " rewrites including POMs).");
for ( Iterator it = artifacts.iterator(); it.hasNext(); )
{
Artifact artifact = (Artifact) it.next();
@@ -194,102 +197,109 @@
boolean errorOccurred = false;
File artifactSource = new File( sourceRepo.getBasedir(), sourceRepo.pathOf(
artifact ) );
- File artifactTarget = new File( targetRepo.getBasedir(), targetRepo.pathOf(
artifact ) );
-
- artifact.setFile( artifactSource );
- try
+ if(artifactSource.exists())
{
- if ( !configuration.reportOnly() )
+ File artifactTarget = new File( targetRepo.getBasedir(), targetRepo.pathOf(
artifact ) );
+
+ artifact.setFile( artifactSource );
+
+ try
{
- if(logger.isDebugEnabled())
+ if ( !configuration.reportOnly() )
{
- logger.debug( "sourceRepo basedir is: \'" + sourceRepo.getBasedir()
+ "\'" );
- logger.debug( "targetRepo basedir is: \'" + targetRepo.getBasedir()
+ "\'" );
- }
+ if(logger.isDebugEnabled())
+ {
+ logger.debug( "sourceRepo basedir is: \'" + sourceRepo.getBasedir()
+ "\'" );
+ logger.debug( "targetRepo basedir is: \'" + targetRepo.getBasedir()
+ "\'" );
+ }
+
+ File targetParent = artifactTarget.getParentFile();
+ if ( !targetParent.exists() )
+ {
+ targetParent.mkdirs();
+ }
+
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "Copying artifact[" + artifact.getId()
+ "] from \'" + artifactSource
+ + "\' to \'" + artifactTarget + "\'." );
+ }
- File targetParent = artifactTarget.getParentFile();
- if ( !targetParent.exists() )
- {
- targetParent.mkdirs();
+ copyArtifact( artifact, artifactTarget, artifactReporter
);
}
-
- if ( logger.isDebugEnabled() )
+ else
{
- logger.debug( "Copying artifact[" + artifact.getId() +
"] from \'" + artifactSource
- + "\' to \'" + artifactTarget + "\'." );
+ artifactReporter.info( "Skipping artifact copy (we're in
report-only mode)." );
}
-
- copyArtifact( artifactSource, artifactTarget, artifactReporter
);
}
- else
+ catch ( Exception e )
{
- artifactReporter.info( "Skipping artifact copy (we're in report-only
mode)." );
- }
- }
- catch ( Exception e )
- {
- repoReporter.error( "Error transferring artifact[" + artifact.getId()
- + "] to the target repository.", e );
+ repoReporter.error( "Error transferring artifact[" + artifact.getId()
+ + "] to the target repository.", e );
- // if we can't copy the jar over, then skip the rest.
- errorOccurred = true;
- }
-
- if ( !errorOccurred )
- {
- if ( logger.isDebugEnabled() )
- {
- logger.debug( "working on digest for artifact[" + artifact.getId()
+ "] with groupId: \'"
- + artifact.getGroupId() + "\'" );
+ // if we can't copy the jar over, then skip the rest.
+ errorOccurred = true;
}
- try
- {
- artifactDigestVerifier.verifyDigest( artifact, artifactTarget,
artifactReporter,
- configuration.reportOnly()
);
- }
- catch ( Exception e )
+ if ( !errorOccurred )
{
- repoReporter.error( "Error verifying digest for artifact["
+ artifact.getId() + "]", e );
- }
- }
+ if ( logger.isDebugEnabled() )
+ {
+ logger.debug( "working on digest for artifact[" + artifact.getId()
+ "] with groupId: \'"
+ + artifact.getGroupId() + "\'" );
+ }
- if ( !errorOccurred )
- {
- Artifact pomArtifact = buildPomArtifact( artifact );
+ try
+ {
+ artifactDigestVerifier.verifyDigest( artifact, artifactTarget,
artifactReporter,
+ configuration.reportOnly()
);
+ }
+ catch ( Exception e )
+ {
+ repoReporter.error( "Error verifying digest for artifact["
+ artifact.getId() + "]", e );
+ }
+ }
- artifactPomRewriter = (ArtifactPomRewriter) container.lookup( ArtifactPomRewriter.ROLE,
- configuration.getSourcePomVersion()
);
+ if ( !errorOccurred )
+ {
+ ArtifactMetadata pom = new ProjectMetadata( artifact );
+
+ artifactPomRewriter = (ArtifactPomRewriter) container.lookup(
ArtifactPomRewriter.ROLE,
+
configuration.getSourcePomVersion() );
- File sourcePom = new File( sourceRepositoryBase, sourceRepo.pathOf(
pomArtifact ) );
+ File sourcePom = new File( sourceRepositoryBase, sourceRepo.pathOfMetadata(
pom ) );
- File targetPom = new File( targetRepositoryBase, targetRepo.pathOf(
pomArtifact ) );
+ File targetPom = new File( targetRepositoryBase, targetRepo.pathOfMetadata(
pom ) );
- try
- {
- artifactPomRewriter.rewrite( artifact, sourcePom, targetPom,
artifactReporter,
- configuration.reportOnly() );
- }
- catch ( Exception e )
- {
- repoReporter.error( "Error rewriting POM for artifact[" + artifact.getId()
- + "] into the target repository.", e );
+ try
+ {
+ artifactPomRewriter.rewrite( artifact, sourcePom, targetPom,
artifactReporter,
+ configuration.reportOnly()
);
+ }
+ catch ( Exception e )
+ {
+ repoReporter.error( "Error rewriting POM for artifact["
+ artifact.getId()
+ + "] into the target repository.", e );
+ }
}
- }
- if ( artifactReporter.hasError() )
+ }
+ else
{
- repoReporter.warn( "Error(s) occurred while rewriting artifact:
\'" + artifact.getId()
- + "\' or its POM." );
+ artifactReporter.error("Cannot find source file for artifact: \'"
+ artifact.getId() + "\' under path: \'" + artifactSource + "\'");
}
-
- if ( artifactReporter.hasWarning() )
+
+ if ( artifactReporter.hasError() )
{
- repoReporter.info( "Warning(s) occurred while rewriting artifact:
\'" + artifact.getId()
+ repoReporter.warn( "Error(s) occurred while rewriting artifact:
\'" + artifact.getId()
+ "\' or its POM." );
}
}
+ catch(Exception e)
+ {
+ artifactReporter.error("Error while rewriting file or POM for artifact:
\'" + artifact.getId() + "\'", e);
+ }
finally
{
if ( artifactReporter != null )
@@ -308,9 +318,11 @@
}
}
- private void copyArtifact( File artifactSource, File artifactTarget, Reporter reporter
)
+ private void copyArtifact( Artifact artifact, File artifactTarget, Reporter reporter
)
throws IOException
{
+ File artifactSource = artifact.getFile();
+
InputStream inStream = null;
OutputStream outStream = null;
try
@@ -342,12 +354,6 @@
}
}
- private Artifact buildPomArtifact( Artifact artifact )
- {
- return artifactConstructionSupport.createArtifact( artifact.getGroupId(), artifact.getArtifactId(),
- artifact.getVersion(), artifact.getScope(),
"pom" );
- }
-
private File normalizeTargetRepositoryBase( String targetRepositoryPath )
{
Logger logger = getLogger();
1.5 +2 -2 maven-components/sandbox/repoclean/src/main/bash/repoclean.sh
Index: repoclean.sh
===================================================================
RCS file: /home/cvs/maven-components/sandbox/repoclean/src/main/bash/repoclean.sh,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- repoclean.sh 1 Apr 2005 01:01:20 -0000 1.4
+++ repoclean.sh 2 Apr 2005 02:17:19 -0000 1.5
@@ -15,7 +15,7 @@
CYGWIN*) cygwin=true ;;
esac
-if [ $cygwin ]; then
+if [ $cygwin == true ]; then
CP=`cygpath -pw $CP`
fi
@@ -28,4 +28,4 @@
shift
fi
-java $JAVA_OPTS -classpath ${CP} org.apache.maven.tools.repoclean.Main $* | tee repoclean-log.txt
+nice -n 19 java -Xmx128M -Xms64M -Xincgc $JAVA_OPTS -classpath ${CP} org.apache.maven.tools.repoclean.Main
$* | tee repoclean-log.txt
1.5 +9 -9 maven-components/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml
Index: components.xml
===================================================================
RCS file: /home/cvs/maven-components/sandbox/repoclean/src/main/resources/META-INF/plexus/components.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- components.xml 1 Apr 2005 00:24:44 -0000 1.4
+++ components.xml 2 Apr 2005 02:17:19 -0000 1.5
@@ -8,7 +8,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>plugin</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.LegacyPluginHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.LegacyPluginHandler</implementation>
</component>
<!--
|
@@ -18,7 +18,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>distribution</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.JarDistroHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.JarDistroHandler</implementation>
</component>
<!--
|
@@ -28,7 +28,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>distribution-tgz</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.TgzDistroHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.TgzDistroHandler</implementation>
</component>
<!--
|
@@ -38,7 +38,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>distribution-zip</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.ZipDistroHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.ZipDistroHandler</implementation>
</component>
<!--
|
@@ -48,7 +48,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>tld</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.TldHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.TldHandler</implementation>
</component>
<!--
|
@@ -58,7 +58,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>dtd</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.DtdHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.DtdHandler</implementation>
</component>
<!--
|
@@ -68,7 +68,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>ear</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.EarHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.EarHandler</implementation>
</component>
<!--
|
@@ -78,7 +78,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>rar</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.RarHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.RarHandler</implementation>
</component>
<!--
|
@@ -88,7 +88,7 @@
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>sar</role-hint>
- <implementation>org.apache.maven.tools.repoclean.artifact.SarHandler</implementation>
+ <implementation>org.apache.maven.tools.repoclean.artifact.handler.SarHandler</implementation>
</component>
<!--
|
1.5 +2 -1 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/discover/LegacyArtifactDiscoverer.java
Index: LegacyArtifactDiscoverer.java
===================================================================
RCS file: /home/cvs/maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/discover/LegacyArtifactDiscoverer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- LegacyArtifactDiscoverer.java 1 Apr 2005 01:01:20 -0000 1.4
+++ LegacyArtifactDiscoverer.java 2 Apr 2005 02:17:19 -0000 1.5
@@ -130,10 +130,11 @@
avceTokenList.addLast( lastAvceToken );
}
- String validVersionParts = "([Dd][Ee][Vv][_.0-9]*)|" + "([Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt])|"
+ "([_.0-9ab]+)|"
+ String validVersionParts = "([Dd][Ee][Vv][_.0-9]*)|" + "([Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt])|"
+ "([0-9][_.0-9a-zA-Z]*)|"
+ "([Gg]?[_.0-9ab]*([Pp][Rr][Ee]|[Rr][Cc]|[Gg]|[Mm])[_.0-9]*)|" + "([Aa][Ll][Pp][Hh][Aa][_.0-9]*)|"
+ "([Bb][Ee][Tt][Aa][_.0-9]*)|" + "([Rr][Cc][_.0-9]*)|" + "([Tt][Ee][Ss][Tt][_.0-9]*)|"
+ "([Dd][Ee][Bb][Uu][Gg][_.0-9]*)|" + "([Uu][Nn][Oo][Ff][Ff][Ii][Cc][Ii][Aa][Ll][_.0-9]*)|"
+ + "([Cc][Uu][Rr][Rr][Ee][Nn][Tt])|" + "([Ll][Aa][Tt][Ee][Ss][Tt])|" + "([Ff][Cc][Ss])|"
+ "([Rr][Ee][Ll][Ee][Aa][Ss][Ee][_.0-9]*)|" + "([Nn][Ii][Gg][Hh][Tt][Ll][Yy])";
// let's discover the version, and whatever's leftover will be either
1.3 +0 -11 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/ArtifactDigestVerifier.java
Index: ArtifactDigestVerifier.java
===================================================================
RCS file: /home/cvs/maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/ArtifactDigestVerifier.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ArtifactDigestVerifier.java 1 Apr 2005 02:45:05 -0000 1.2
+++ ArtifactDigestVerifier.java 2 Apr 2005 02:17:19 -0000 1.3
@@ -42,17 +42,6 @@
// create the digest target file from which to copy/create.
File digestTargetFile = new File( artifactTarget + ".md5" );
- if(!reportOnly)
- {
- File targetParent = digestTargetFile.getParentFile();
-
- if ( !targetParent.exists() )
- {
- reporter.info( "MD5 parent directory \'" + targetParent + "\' does not
exist. Creating..." );
- targetParent.mkdirs();
- }
- }
-
boolean verified = false;
// if the digest source file exists, then verify it.
1.3 +51 -46 maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/ArtifactDigestor.java
Index: ArtifactDigestor.java
===================================================================
RCS file: /home/cvs/maven-components/sandbox/repoclean/src/main/java/org/apache/maven/tools/repoclean/digest/ArtifactDigestor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ArtifactDigestor.java 23 Mar 2005 04:53:29 -0000 1.2
+++ ArtifactDigestor.java 2 Apr 2005 02:17:19 -0000 1.3
@@ -4,14 +4,14 @@
import org.codehaus.plexus.util.IOUtil;
import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
/**
* @author jdcasey
@@ -43,58 +43,86 @@
public boolean verifyArtifactDigest( File artifactFile, File digestFile, String algorithm
)
throws ArtifactDigestException
{
- boolean result = false;
-
if(artifactFile.exists() && digestFile.exists())
{
byte[] generatedDigest = generateArtifactDigest( artifactFile, algorithm );
- byte[] digestFromFile = null;
-
+
+ InputStream in = null;
try
{
- digestFromFile = readFile( digestFile );
+ in = new FileInputStream( artifactFile );
+
+ int digestLen = generatedDigest.length;
+ int currentIdx = 0;
+
+ boolean matched = true;
+
+ int read = -1;
+ while ( ( read = in.read() ) > -1 )
+ {
+ if(currentIdx >= digestLen || read != generatedDigest[currentIdx])
+ {
+ return false;
+ }
+ }
}
- catch ( Exception e )
+ catch ( IOException e )
{
- throw new ArtifactDigestException( "Cannot read digest from file: \'" +
digestFile + "\'", e );
+ throw new ArtifactDigestException("Cannot verify digest for artifact file:
\'" + artifactFile + "\' against digest file: \'" + digestFile + "\' using algorithm: \'"
+ algorithm + "\'", e);
}
-
- result = Arrays.equals( generatedDigest, digestFromFile );
+ finally
+ {
+ IOUtil.close( in );
+ }
+
+ }
+ else
+ {
+ return false;
}
- return result;
+ return true;
}
private byte[] generateArtifactDigest( File artifactFile, String algorithm ) throws
ArtifactDigestException
{
- byte[] data = null;
+ MessageDigest digest = null;
try
{
- data = readFile( artifactFile );
+ digest = MessageDigest.getInstance( algorithm );
}
- catch ( IOException e )
+ catch ( NoSuchAlgorithmException e )
{
- throw new ArtifactDigestException( "Error reading artifact data from: \'" +
artifactFile + "\'", e );
+ throw new ArtifactDigestException( "Cannot load digest algoritm provider.",
e );
}
- MessageDigest digest = null;
+ InputStream in = null;
try
{
- digest = MessageDigest.getInstance( algorithm );
+ in = new BufferedInputStream( new FileInputStream( artifactFile ) );
+
+ byte[] buffer = new byte[16];
+ int read = -1;
+ while ( ( read = in.read( buffer ) ) > -1 )
+ {
+ digest.update(buffer, 0, read);
+ }
}
- catch ( NoSuchAlgorithmException e )
+ catch ( IOException e )
{
- throw new ArtifactDigestException( "Cannot load digest algoritm provider.",
e );
+ throw new ArtifactDigestException( "Error reading artifact data from: \'" +
artifactFile + "\'", e );
+ }
+ finally
+ {
+ IOUtil.close( in );
}
- digest.update( data );
-
return digest.digest();
}
private void writeDigestFile( File digestFile, byte[] digestData ) throws IOException
{
- FileOutputStream out = null;
+ OutputStream out = null;
try
{
out = new FileOutputStream( digestFile );
@@ -107,27 +135,4 @@
}
}
- private byte[] readFile( File artifactFile ) throws IOException
- {
- BufferedInputStream in = null;
- try
- {
- in = new BufferedInputStream( new FileInputStream( artifactFile ) );
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
- byte[] buffer = new byte[16];
- int read = -1;
- while ( ( read = in.read( buffer ) ) > -1 )
- {
- baos.write( buffer, 0, read );
- }
-
- return baos.toByteArray();
- }
- finally
- {
- IOUtil.close( in );
- }
- }
-
}
\ No newline at end of file
|