Author: lcorneliussen
Date: Tue Jun 11 12:16:09 2013
New Revision: 1491763

URL: http://svn.apache.org/r1491763
Log:
[NPANDAY-402]: Add support to automatically attach PDB-symbols and 
Code-Documentation (comment.xml)
Submitted by: Victor Stefoglo and  Valerijus Drozdovas

o resolve PDBs along with DLL dependencies

Added:
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
Modified:
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/ArtifactTypeHelper.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java
    
incubator/npanday/trunk/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/ArtifactTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/ArtifactTypeHelper.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/ArtifactTypeHelper.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/ArtifactTypeHelper.java
 Tue Jun 11 12:16:09 2013
@@ -128,4 +128,15 @@ public class ArtifactTypeHelper
                 || packaging.equals( ArtifactType.GAC_32_4)
                 || packaging.equals( ArtifactType.GAC_64_4);
     }
+    
+    public static boolean isComReference(String packaging)
+    {
+        return 
isComReference(ArtifactType.getArtifactTypeForPackagingName(packaging));
+    }
+    
+    public static boolean isComReference(ArtifactType artifactType)
+    {
+        return artifactType.equals( ArtifactType.COM_REFERENCE );
+    }
+
 }

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/ArtifactResolvingContributor.java
 Tue Jun 11 12:16:09 2013
@@ -20,8 +20,10 @@
 package npanday.resolver;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -32,10 +34,25 @@ public interface ArtifactResolvingContri
     String role = ArtifactResolvingContributor.class.getName();
 
     /**
-     * Tries to contribute to resolving the artifact. If it is successful, the
-     * artifact should be set to resolved, and a file should be passed to it.
+     * Tries to resolve the contributor artifact. If it is successful, the
+     * artifact should be set to resolved, and a file should be passed to 
it.<br>
      *
-     * @param artifact
+     * <b>Note:</b><i>run before maven artifact resolver.</i>
+     * @param artifact the artifact to be resolved.
+     * @param additionalDependenciesCollector additional dependencies of 
resolved artifact.
      */
-    void contribute(Artifact artifact, Set<Artifact> 
additionalDependenciesCollector ) throws ArtifactNotFoundException;
+    void tryResolve(Artifact artifact, Set<Artifact> 
additionalDependenciesCollector ) throws ArtifactNotFoundException;
+    
+    /**
+     * Contribute with additional dependencies for resolved artifact.<br>
+     * 
+     * <b>Note:</b><i>run after maven artifact resolver.</i>
+     * @param artifact resolved artifact.
+     * @param localRepository maven local repository.
+     * @param remoteRepositories maven remote repositories.
+     * @param additionalDependenciesCollector additional dependencies of 
resolved artifact.
+     * @throws ArtifactNotFoundException
+     */
+    void contribute(Artifact artifact, ArtifactRepository localRepository,
+            List remoteRepositories, Set<Artifact> 
additionalDependenciesCollector) throws ArtifactNotFoundException;
 }

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/DefaultNPandayArtifactResolver.java
 Tue Jun 11 12:16:09 2013
@@ -19,6 +19,7 @@
 
 package npanday.resolver;
 
+import com.google.common.base.Predicate;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import npanday.resolver.resolvers.GacResolver;
@@ -50,6 +51,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.annotation.Nullable;
+
 /**
  * Wraps the default Maven artifact resolver and executes all implementations
  * of {@link npanday.resolver.ArtifactResolvingContributor} for each artiact.
@@ -67,6 +70,8 @@ public class DefaultNPandayArtifactResol
     private PlexusContainer container;
 
     private Set<Artifact> customResolveCache = Sets.newHashSet();
+    
+    private Set<Artifact> customDependenciesCache = Sets.newHashSet();
 
     public void resolve( Artifact artifact, List remoteRepositories, 
ArtifactRepository localRepository ) throws
         ArtifactResolutionException,
@@ -77,6 +82,8 @@ public class DefaultNPandayArtifactResol
         original.resolve(
             artifact, remoteRepositories, localRepository
         );
+        
+        runCustomDependencyContributors(artifact, localRepository, 
remoteRepositories);
     }
 
     public void resolveAlways( Artifact artifact, List remoteRepositories, 
ArtifactRepository localRepository ) throws
@@ -88,6 +95,8 @@ public class DefaultNPandayArtifactResol
         original.resolveAlways(
             artifact, remoteRepositories, localRepository
         );
+        
+        runCustomDependencyContributors(artifact, localRepository, 
remoteRepositories);
     }
 
     public ArtifactResolutionResult resolveTransitively(
@@ -96,22 +105,25 @@ public class DefaultNPandayArtifactResol
         ArtifactResolutionException,
         ArtifactNotFoundException
     {
-        listeners = intercept( listeners, filter );
+        listeners = intercept( listeners, filter, localRepository, 
remoteRepositories );
 
         return original.resolveTransitively(
             artifacts, originatingArtifact, managedVersions, localRepository, 
remoteRepositories, source, filter,
             listeners
         );
+        
     }
 
 
 
-    private List intercept( List listeners, ArtifactFilter filter )
+    private List intercept( List listeners, ArtifactFilter filter, 
ArtifactRepository localRepository,
+            List remoteRepositories )
     {
         if (listeners == null)
             listeners = Lists.newArrayList();
 
-        NPandayResolutionListener listener = new 
NPandayResolutionListener(this, filter);
+        NPandayResolutionListener listener = new 
NPandayResolutionListener(this, filter, localRepository, 
+                remoteRepositories);
         listener.enableLogging( getLogger() );
 
         listeners.add( listener );
@@ -123,6 +135,16 @@ public class DefaultNPandayArtifactResol
     {
         container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY 
);
     }
+    
+    public void runArtifactContributors(Artifact artifact, ArtifactRepository 
localRepository, 
+            List remoteRepositories) throws ArtifactNotFoundException 
+    {
+        if(artifact.isResolved()) {
+            runCustomDependencyContributors(artifact, localRepository, 
remoteRepositories);
+        } else {
+            runCustomResolvers(artifact);
+        }
+    }
 
     protected void runCustomResolvers( Artifact artifact ) throws 
ArtifactNotFoundException
     {
@@ -138,15 +160,7 @@ public class DefaultNPandayArtifactResol
         for ( ArtifactResolvingContributor contributor : contributors )
         {
             Set<Artifact> additionalDependenciesCollector = Sets.newHashSet();
-            contributor.contribute( artifact, additionalDependenciesCollector 
);
-
-            if ( additionalDependenciesCollector.size() > 0 )
-            {
-                getLogger().error(
-                    "NPANDAY-147-006: " + artifact.getId()
-                        + " required additional dependencies to be added, but 
we do not support that yet."
-                );
-            }
+            contributor.tryResolve( artifact, additionalDependenciesCollector 
);
 
             if ( artifact.isResolved() )
             {
@@ -156,12 +170,55 @@ public class DefaultNPandayArtifactResol
                     "NPANDAY-147-001: " + contributor.getClass().getName() + " 
resolved " + artifact.getId() + " to "
                         + artifact.getFile()
                 );
-
+                
+                if ( additionalDependenciesCollector.size() > 0 )
+                {
+                   
addContributeArtifactsToDependenciesCache(additionalDependenciesCollector);
+                }
                 return;
             }
         }
 
     }
+    
+    protected void runCustomDependencyContributors(Artifact artifact, 
ArtifactRepository localRepository, List remoteRepositories) throws 
ArtifactNotFoundException
+    {
+        if ( !artifact.isResolved() )
+        {
+            throw new IllegalArgumentException(
+                    String.format("NPANDAY-147-008: Artifact[groupId:'%s', 
artifactId:'%s', type:'%s', version:'%s']" +
+                               " could not be unresoved", 
+                            artifact.getGroupId(), artifact.getArtifactId(), 
artifact.getType(), artifact.getVersion()));
+        }
+
+        for ( ArtifactResolvingContributor contributor : contributors )
+        {
+            Set<Artifact> additionalDependenciesCollector = Sets.newHashSet();
+            contributor.contribute(artifact, localRepository, 
remoteRepositories, additionalDependenciesCollector);
+
+            if ( additionalDependenciesCollector.size() > 0 )
+            {
+               
addContributeArtifactsToDependenciesCache(additionalDependenciesCollector);
+            }
+        }
+
+    }
+    
+    private void addContributeArtifactsToDependenciesCache(Set<Artifact> 
artifacts)
+    {
+       if (artifacts == null || artifacts.isEmpty()) 
+       {
+               return;
+       }
+       
+               Set<Artifact> resolvedArtifacts = Sets.filter(artifacts, new 
Predicate<Artifact>(){
+                       public boolean apply(@Nullable Artifact artifact) {
+                               return artifact !=null && artifact.isResolved() 
&& artifact.getFile() != null 
+                                               && artifact.getFile().exists();
+                       }});
+               
+               customDependenciesCache.addAll(resolvedArtifacts);
+    }
 
     public void initialize() throws InitializationException
     {
@@ -248,4 +305,9 @@ public class DefaultNPandayArtifactResol
     {
         return customResolveCache;
     }
+    
+    public Set<Artifact> getCustomDependenciesCache() 
+    {
+        return customDependenciesCache;
+    }
 }

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayArtifactResolver.java
 Tue Jun 11 12:16:09 2013
@@ -64,5 +64,10 @@ public interface NPandayArtifactResolver
      * something with the ones relevant to your context.
      */
     public Set<Artifact> getCustomResolveCache();
+    
+    /**
+     * Custom artifacts dependencies resolved by contributors. 
+     */
+    public Set<Artifact> getCustomDependenciesCache();
 }
 

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayDependencyResolution.java
 Tue Jun 11 12:16:09 2013
@@ -94,8 +94,13 @@ public class NPandayDependencyResolution
             * */
 
             addResolvedSpecialsToProjectDependencies( project, result );
-
-            return result.getArtifacts();
+            // Add custom contribute dependencies to maven project 
dependencies 
+            
project.getDependencyArtifacts().addAll(artifactResolver.getCustomDependenciesCache());
+            
+            Set<Artifact> resultRequire = 
Sets.newLinkedHashSet(result.getArtifacts());
+            
resultRequire.addAll(artifactResolver.getCustomDependenciesCache());
+            
+            return resultRequire;
         }
         catch ( ArtifactResolutionException e )
         {
@@ -128,6 +133,7 @@ public class NPandayDependencyResolution
                 project.getDependencyArtifacts().add( a );
             }
         }
+        
     }
 
     private void createArtifactsForMaven2BackCompat( MavenProject project ) 
throws InvalidVersionSpecificationException

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/NPandayResolutionListener.java
 Tue Jun 11 12:16:09 2013
@@ -19,7 +19,10 @@
 
 package npanday.resolver;
 
+import java.util.List;
+
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ResolutionListener;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -36,11 +39,18 @@ public class NPandayResolutionListener
     private DefaultNPandayArtifactResolver resolver;
 
     private ArtifactFilter filter;
+    
+    private ArtifactRepository localRepository;
+    
+    private List remoteRepositories;
 
-    public NPandayResolutionListener( DefaultNPandayArtifactResolver resolver, 
ArtifactFilter filter )
+    public NPandayResolutionListener( DefaultNPandayArtifactResolver resolver, 
ArtifactFilter filter,
+            ArtifactRepository localRepository, List remoteRepositories )
     {
         this.resolver = resolver;
         this.filter = filter;
+        this.localRepository = localRepository;
+        this.remoteRepositories = remoteRepositories;
     }
 
     public void testArtifact( Artifact node )
@@ -52,7 +62,7 @@ public class NPandayResolutionListener
 
         try
         {
-            resolver.runCustomResolvers( node );
+            resolver.runArtifactContributors( node, localRepository, 
remoteRepositories );
         }
         catch ( ArtifactNotFoundException e )
         {

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/ComReferenceResolver.java
 Tue Jun 11 12:16:09 2013
@@ -19,8 +19,10 @@
 
 package npanday.resolver.resolvers;
 
+import npanday.ArtifactTypeHelper;
 import npanday.resolver.ArtifactResolvingContributor;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.cli.CommandLineException;
@@ -47,14 +49,20 @@ public class ComReferenceResolver
     extends AbstractLogEnabled
     implements ArtifactResolvingContributor
 {
-    public void contribute( Artifact artifact, Set<Artifact> 
additionalDependenciesCollector )
+       public void contribute(Artifact artifact, ArtifactRepository 
localRepository, List remoteRepositories,
+                       Set<Artifact> additionalDependenciesCollector) 
+       {
+               // NO-OP
+       }
+       
+    public void tryResolve( Artifact artifact, Set<Artifact> 
additionalDependenciesCollector )
     {
         // resolve com reference
         // flow:
         // 1. generate the interop dll in temp folder and resolve to that path 
during dependency resolution
         // 2. cut and paste the dll to buildDirectory and update the paths 
once we grab the reference of
         // MavenProject (CompilerContext.java)
-        if ( artifact.getType().equals( "com_reference" ) )
+        if ( ArtifactTypeHelper.isComReference(artifact.getType()) )
         {
             String tokenId = artifact.getClassifier();
             String interopPath = null;

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/GacResolver.java
 Tue Jun 11 12:16:09 2013
@@ -23,9 +23,11 @@ import npanday.ArtifactTypeHelper;
 import npanday.PathUtil;
 import npanday.resolver.ArtifactResolvingContributor;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 
 import java.io.File;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -34,7 +36,7 @@ import java.util.Set;
 public class GacResolver
     implements ArtifactResolvingContributor
 {
-    public void contribute( Artifact artifact, Set<Artifact> 
additionalDependenciesCollector ) throws
+    public void tryResolve( Artifact artifact, Set<Artifact> 
additionalDependenciesCollector ) throws
         ArtifactNotFoundException
     {
 
@@ -69,4 +71,10 @@ public class GacResolver
         }
 
     }
+
+       public void contribute(Artifact artifact, ArtifactRepository 
localRepository, List remoteRepositories,
+                       Set<Artifact> additionalDependenciesCollector) throws 
ArtifactNotFoundException 
+       {
+               // NO-OP
+       }
 }

Added: 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java?rev=1491763&view=auto
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
 (added)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/java/npanday/resolver/resolvers/PdbAssemblyResolver.java
 Tue Jun 11 12:16:09 2013
@@ -0,0 +1,87 @@
+package npanday.resolver.resolvers;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import npanday.ArtifactType;
+import npanday.ArtifactTypeHelper;
+import npanday.resolver.ArtifactResolvingContributor;
+
+/**
+ * PDB assemblies contributor class.
+ */
+public class PdbAssemblyResolver extends AbstractLogEnabled implements 
ArtifactResolvingContributor 
+{
+    
+    ArtifactResolver mavenResolver;
+    ArtifactFactory artifactFactory;
+    
+
+    /**
+     * {@inheritDoc}
+     */
+    public void tryResolve(Artifact artifact, Set<Artifact> 
additionalDependenciesCollector)
+            throws ArtifactNotFoundException
+    {
+        // NO-OP
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void contribute(Artifact artifact, ArtifactRepository 
localRepository, 
+            @SuppressWarnings("rawtypes") List remoteRepositories,
+            Set<Artifact> additionalDependenciesCollector) throws 
ArtifactNotFoundException
+    {
+        final ArtifactType artifactType = 
ArtifactType.getArtifactTypeForPackagingName(artifact.getType());
+        if ( !ArtifactTypeHelper.isDotnetAnyGac(artifactType) && 
+             !ArtifactTypeHelper.isComReference(artifactType) &&
+             artifactType != ArtifactType.NULL &&
+             artifactType != ArtifactType.DOTNET_SYMBOLS) 
+        {
+            tryResolveArtifactPdbAssembly(artifact, localRepository, 
remoteRepositories, 
+                    additionalDependenciesCollector);
+        }
+    }
+
+
+    /**
+     * Try to resolve PDB artifact for given artifact.
+     * @param artifact
+     * @param localRepository
+     * @param remoteRepositories
+     * @param additionalDependenciesCollector
+     * @throws ArtifactNotFoundException
+     */
+    private void tryResolveArtifactPdbAssembly(Artifact artifact, 
ArtifactRepository localRepository, 
+            List remoteRepositories, Set<Artifact> 
additionalDependenciesCollector) throws ArtifactNotFoundException 
+    {
+        Artifact pdbArtifact = 
artifactFactory.createArtifactWithClassifier(artifact.getGroupId(), 
artifact.getArtifactId(), 
+                artifact.getVersion(), 
ArtifactType.DOTNET_SYMBOLS.getPackagingType(), artifact.getClassifier());
+        boolean pdbArtifactFound = true;
+        try {
+            mavenResolver.resolve(pdbArtifact, remoteRepositories, 
localRepository);
+        } catch (ArtifactNotFoundException e) {
+            // Ignore PDF assembly not found exception
+            pdbArtifactFound = false;
+        } catch (ArtifactResolutionException e) {
+            throw new ArtifactNotFoundException(e.getMessage(), artifact);
+        }
+        
+        if (pdbArtifactFound) 
+        {
+            additionalDependenciesCollector.add(pdbArtifact);
+        }
+        
+    }
+
+}

Modified: 
incubator/npanday/trunk/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml?rev=1491763&r1=1491762&r2=1491763&view=diff
==============================================================================
--- 
incubator/npanday/trunk/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml
 (original)
+++ 
incubator/npanday/trunk/components/dotnet-core/src/main/resources/META-INF/plexus/components.xml
 Tue Jun 11 12:16:09 2013
@@ -56,5 +56,19 @@
       <role-hint>com</role-hint>
       
<implementation>npanday.resolver.resolvers.ComReferenceResolver</implementation>
     </component>
+    
+     <component>
+      <role>npanday.resolver.ArtifactResolvingContributor</role>
+      <role-hint>pdb</role-hint>
+      
<implementation>npanday.resolver.resolvers.PdbAssemblyResolver</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+        </requirement>
+      </requirements>
+    </component>
   </components>
 </component-set>


Reply via email to