]> source.dussan.org Git - archiva.git/commitdiff
add an other hack when using tomcat maven plugin and issue with TCCL not URLClassLoad...
authorOlivier Lamy <olamy@apache.org>
Tue, 16 Aug 2011 13:51:25 +0000 (13:51 +0000)
committerOlivier Lamy <olamy@apache.org>
Tue, 16 Aug 2011 13:51:25 +0000 (13:51 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1158273 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-artifact-converter/src/main/java/org/apache/maven/archiva/converter/artifact/LegacyToDefaultConverter.java
archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java
archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml
archiva-modules/archiva-base/archiva-plexus-bridge/src/main/java/org/apache/archiva/common/plexusbridge/DigesterUtils.java [new file with mode: 0644]
archiva-modules/archiva-base/archiva-transaction/src/main/java/org/apache/maven/archiva/transaction/AbstractTransactionEvent.java
archiva-modules/archiva-base/archiva-transaction/src/main/java/org/apache/maven/archiva/transaction/CopyFileEvent.java
archiva-modules/archiva-base/archiva-transaction/src/main/java/org/apache/maven/archiva/transaction/CreateFileEvent.java
archiva-modules/archiva-base/archiva-transaction/src/main/java/org/apache/maven/archiva/transaction/FileTransaction.java

index b4e3abf3db6174f7612e472c24592f4cfa86ac19..f9a89b5e0cd2c4de890976db46fb26a7d1d8b1a4 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.maven.archiva.converter.artifact;
  * under the License.
  */
 
+import org.apache.archiva.common.plexusbridge.DigesterUtils;
 import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
 import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
 import org.apache.commons.io.FileUtils;
@@ -78,11 +79,14 @@ public class LegacyToDefaultConverter
      * {@link List}&lt;{@link Digester}
      * plexus.requirement role="org.codehaus.plexus.digest.Digester"
      */
-    private List<Digester> digesters;
+    private List<? extends Digester> digesters;
 
     @Inject
     private PlexusSisuBridge plexusSisuBridge;
 
+    @Inject
+    private DigesterUtils digesterUtils;
+
     /**
      * plexus.requirement
      */
@@ -114,7 +118,7 @@ public class LegacyToDefaultConverter
     public void initialize()
         throws PlexusSisuBridgeException
     {
-        this.digesters = plexusSisuBridge.lookupList( Digester.class );
+        this.digesters = digesterUtils.getAllDigesters();
         translator = plexusSisuBridge.lookup( ModelConverter.class );
         artifactFactory = plexusSisuBridge.lookup( ArtifactFactory.class );
         artifactHandlerManager = plexusSisuBridge.lookup( ArtifactHandlerManager.class );
@@ -716,7 +720,7 @@ public class LegacyToDefaultConverter
     }
 
 
-    public List<Digester> getDigesters()
+    public List<? extends Digester> getDigesters()
     {
         return digesters;
     }
index 24e4a9797c414303b3dfb814bfe9a8fdb9327914..13bb7575d1ac1473d98ef712d5f3bb9c2ef6227f 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.maven.archiva.consumers.core;
  * under the License.
  */
 
+import org.apache.archiva.common.plexusbridge.DigesterUtils;
 import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
 import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
@@ -81,11 +82,14 @@ public class ValidateChecksumConsumer
     /**
      * plexus.requirement role="org.codehaus.plexus.digest.Digester"
      */
-    private List<Digester> digesterList;
+    private List<Digester> allDigesters;
 
     @Inject
     private PlexusSisuBridge plexusSisuBridge;
 
+    @Inject
+    private DigesterUtils digesterUtils;
+
     private File repositoryDir;
 
     private List<String> includes = new ArrayList<String>();
@@ -163,7 +167,7 @@ public class ValidateChecksumConsumer
         }
     }
 
-    public void processFile( String path, boolean executeOnEntireRepo )
+    public void processFile( String path, boolean executeOnEntireReDpo )
         throws Exception
     {
         processFile( path );
@@ -174,10 +178,9 @@ public class ValidateChecksumConsumer
         throws PlexusSisuBridgeException
     {
         checksum = plexusSisuBridge.lookup( ChecksumFile.class );
-        digesterList = plexusSisuBridge.lookupList( Digester.class );
-        for ( Iterator<Digester> itDigesters = digesterList.iterator(); itDigesters.hasNext(); )
+        List<Digester> allDigesters = new ArrayList<Digester>( digesterUtils.getAllDigesters() );
+        for ( Digester digester : allDigesters )
         {
-            Digester digester = itDigesters.next();
             includes.add( "**/*" + digester.getFilenameExtension() );
         }
     }
index 0da840e23359d56e1eb7187d14b5023f83cfd631..1a98f420395e0e39d4c1db4116b1298b07fab001 100644 (file)
       <groupId>org.apache.maven.indexer</groupId>
       <artifactId>indexer-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-digest</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
   </dependencies>
 </project>
diff --git a/archiva-modules/archiva-base/archiva-plexus-bridge/src/main/java/org/apache/archiva/common/plexusbridge/DigesterUtils.java b/archiva-modules/archiva-base/archiva-plexus-bridge/src/main/java/org/apache/archiva/common/plexusbridge/DigesterUtils.java
new file mode 100644 (file)
index 0000000..a8a72d4
--- /dev/null
@@ -0,0 +1,74 @@
+package org.apache.archiva.common.plexusbridge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.codehaus.plexus.digest.Digester;
+import org.codehaus.plexus.digest.Md5Digester;
+import org.codehaus.plexus.digest.Sha1Digester;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.inject.Inject;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.4
+ */
+@Service( "digesterUtils" )
+public class DigesterUtils
+{
+
+    private Logger log = LoggerFactory.getLogger( getClass() );
+
+    private List<? extends Digester> allDigesters;
+
+    @Inject
+    public DigesterUtils( PlexusSisuBridge plexusSisuBridge )
+        throws PlexusSisuBridgeException
+    {
+        this.allDigesters = plexusSisuBridge.lookupList( Digester.class );
+
+        if ( allDigesters == null || allDigesters.isEmpty() )
+        {
+            // olamy when the TCL is not a URLClassLoader lookupList fail !
+            // when using tomcat maven plugin so adding a simple hack
+            log.warn( "using lookList from sisu plexus failed so build plexus Digesters manually" );
+
+            allDigesters = Arrays.asList( new Sha1Digester(), new Md5Digester() );
+
+        }
+
+        log.debug( "allIndexCreators {}", allDigesters );
+
+    }
+
+    public List<? extends Digester> getAllDigesters()
+    {
+        return allDigesters;
+    }
+
+    public void setAllDigesters( List<? extends Digester> allDigesters )
+    {
+        this.allDigesters = allDigesters;
+    }
+}
index 602d5b479d24d741f7353fb644497002fbd125ef..a0f35bd6fc44bee7073f79d0399736ef2da4f2ef 100644 (file)
@@ -49,19 +49,19 @@ public abstract class AbstractTransactionEvent
     /**
      * {@link List}&lt;{@link Digester}>
      */
-    private List<Digester> digesters;
+    private List<? extends Digester> digesters;
 
     protected AbstractTransactionEvent()
     {
         this( new ArrayList<Digester>( 0 ) );
     }
 
-    protected AbstractTransactionEvent( List<Digester> digesters )
+    protected AbstractTransactionEvent( List<? extends Digester> digesters )
     {
         this.digesters = digesters;
     }
 
-    protected List<Digester> getDigesters()
+    protected List<? extends Digester> getDigesters()
     {
         return digesters;
     }
index 094743ec508694281bdbc64ac25601aa86c5dab8..0b4763e2ecda805e398dff1717c35d00eee3689d 100644 (file)
@@ -44,7 +44,7 @@ public class CopyFileEvent
      * @param destination
      * @param digesters {@link List}&lt;{@link Digester}> digesters to use for checksumming 
      */
-    public CopyFileEvent( File source, File destination, List<Digester> digesters )
+    public CopyFileEvent( File source, File destination, List<? extends Digester> digesters )
     {
         super( digesters );
         this.source = source;
index ea8f51014a91493f3fa0ae004d08b05edb58b44d..2065184632f6ff7c78e0d1452b1449aa16c91146 100644 (file)
@@ -43,7 +43,7 @@ public class CreateFileEvent
      * @param destination
      * @param digesters {@link List}&lt;{@link Digester}> digesters to use for checksumming 
      */
-    public CreateFileEvent( String content, File destination, List<Digester> digesters )
+    public CreateFileEvent( String content, File destination, List<? extends Digester> digesters )
     {
         super( digesters );
         this.content = content;
index ca2d168cee630d604602f176aa0e15dc986fb052..45972ede46459b1851e04557611657e43d5d6892 100644 (file)
@@ -79,7 +79,7 @@ public class FileTransaction
      * @param destination
      * @param digesters   {@link List}&lt;{@link org.codehaus.plexus.digest.Digester}> digesters to use for checksumming
      */
-    public void copyFile( File source, File destination, List<Digester> digesters )
+    public void copyFile( File source, File destination, List<? extends Digester> digesters )
     {
         events.add( new CopyFileEvent( source, destination, digesters ) );
     }
@@ -89,7 +89,7 @@ public class FileTransaction
      * @param destination
      * @param digesters   {@link List}&lt;{@link org.codehaus.plexus.digest.Digester}> digesters to use for checksumming
      */
-    public void createFile( String content, File destination, List<Digester> digesters )
+    public void createFile( String content, File destination, List<? extends Digester> digesters )
     {
         events.add( new CreateFileEvent( content, destination, digesters ) );
     }