Author: sisbell
Date: Thu Dec  6 16:26:10 2007
New Revision: 601925

URL: http://svn.apache.org/viewvc?rev=601925&view=rev
Log:
Fixed problem with locating of marshallers.

Modified:
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblerContext.java
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblyInfoMarshaller.java
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/impl/AssemblerContextImpl.java
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-compiler/src/main/java/org/apache/maven/dotnet/compiler/impl/DotnetCompilerContextImpl.java
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/DefaultAssemblyInfoMarshaller.java
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/JavaAssemblyInfoMarshaller.java
    
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/VBAssemblyInfoMarshaller.java

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblerContext.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblerContext.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblerContext.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblerContext.java
 Thu Dec  6 16:26:10 2007
@@ -38,7 +38,6 @@
      * Returns the assembly info associated with this context.
      *
      * @return the assembly info associated with this context.
-
      */
     AssemblyInfo getAssemblyInfo();
 
@@ -57,6 +56,7 @@
      *
      * @param mavenProject the maven project
      */
-    void init( MavenProject mavenProject );
+    void init( MavenProject mavenProject )
+        throws AssemblyInfoException;
 
 }

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblyInfoMarshaller.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblyInfoMarshaller.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblyInfoMarshaller.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblyInfoMarshaller.java
 Thu Dec  6 16:26:10 2007
@@ -51,4 +51,5 @@
 
     void init( ProgrammingLanguage programmingLanguage, File 
buildSourcesDirectory );
 
+    ProgrammingLanguage getProgrammingLanguageForMarshaller();
 }

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/impl/AssemblerContextImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/impl/AssemblerContextImpl.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/impl/AssemblerContextImpl.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/impl/AssemblerContextImpl.java
 Thu Dec  6 16:26:10 2007
@@ -25,6 +25,7 @@
 import org.apache.maven.dotnet.assembler.AssemblyInfoMarshallerAnnotation;
 import org.apache.maven.dotnet.ProgrammingLanguage;
 import org.apache.maven.dotnet.BuildDirectories;
+import org.apache.maven.dotnet.PlatformUnsupportedException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.model.Organization;
 
@@ -34,6 +35,12 @@
 
 import java.io.*;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.jar.JarFile;
+import java.util.jar.JarEntry;
 
 /**
  * Provides an implementation of the <code>AssemblerContext</code>.
@@ -54,6 +61,8 @@
      */
     private Logger logger;
 
+    private List<AssemblyInfoMarshaller> marshallers;
+
     /**
      * Constructor. This method is intended to by invoked by the 
plexus-container, not by the application developer.
      */
@@ -132,50 +141,88 @@
     public AssemblyInfoMarshaller getAssemblyInfoMarshallerFor( 
ProgrammingLanguage programmingLanguage )
         throws AssemblyInfoException
     {
-        Class assemblyInfoMarshallerClass = null;
-        for ( Class c : AssemblyInfoMarshaller.class.getClasses() )
+
+        for(AssemblyInfoMarshaller m : marshallers)
         {
-            AssemblyInfoMarshallerAnnotation annotation =
-                (AssemblyInfoMarshallerAnnotation) c.getAnnotation( 
AssemblyInfoMarshallerAnnotation.class );
-            if ( annotation != null )
+            if(m.getProgrammingLanguageForMarshaller().equals( 
programmingLanguage))
             {
-                if ( Arrays.asList( annotation.programmingLanguages() 
).contains( programmingLanguage ) )
-                {
-                    assemblyInfoMarshallerClass = c;
-                }
+                return m;
             }
         }
-        if ( assemblyInfoMarshallerClass == null )
-        {
-            throw new AssemblyInfoException( "" );
-        }
-
-        AssemblyInfoMarshaller marshaller;
-        try
-        {
-            marshaller = (AssemblyInfoMarshaller) 
assemblyInfoMarshallerClass.newInstance();
-            marshaller.init( programmingLanguage, new File( 
mavenProject.getBuild().getDirectory(),
-                                                            
BuildDirectories.BUILD_SOURCES.getBuildDirectoryName() ) );
-        }
-        catch ( InstantiationException e )
-        {
-            throw new AssemblyInfoException( "NMAVEN-020-003: Unable to create 
AssemblyInfoMarshaller: Class Name = " +
-                assemblyInfoMarshallerClass.getName(), e );
-        }
-        catch ( IllegalAccessException e )
-        {
-            throw new AssemblyInfoException( "NMAVEN-020-004: Unable to create 
AssemblyInfoMarshaller: Class Name = " +
-                assemblyInfoMarshallerClass.getName(), e );
-        }
-
-        return marshaller;
+        return null;
     }
 
     /**
      * @see AssemblerContext#init(org.apache.maven.project.MavenProject)
      */
     public void init( MavenProject mavenProject )
+        throws AssemblyInfoException
     {
         this.mavenProject = mavenProject;
+
+        String[] classPathJars = System.getProperty( "java.class.path" 
).split( "[" + File.pathSeparator + "]" );
+        for ( String classPathJar : classPathJars )
+        {
+            if ( classPathJar.contains( "dotnet-extensions-" ) )
+            {
+                JarFile jarFile = null;
+                try
+                {
+                    jarFile = new JarFile( classPathJar );
+                }
+                catch ( IOException e )
+                {
+                    e.printStackTrace();
+                }
+                Enumeration jarEntries = jarFile.entries();
+
+                while ( jarEntries.hasMoreElements() )
+                {
+                    JarEntry jarEntry = (JarEntry) jarEntries.nextElement();
+                    if ( jarEntry.isDirectory() || 
!jarEntry.getName().endsWith( "class" ) )
+                    {
+                        continue;
+                    }
+
+                    String className = null;
+                    try
+                    {
+                        String[] tokens = jarEntry.getName().split( "[//]" );
+
+                        Class c = Class.forName( tokens[tokens.length - 
1].split( "[.]" )[0] );
+                        className = c.getName();
+                        AssemblyInfoMarshallerAnnotation annotation =
+                            (AssemblyInfoMarshallerAnnotation) c.getAnnotation(
+                                AssemblyInfoMarshallerAnnotation.class );
+                        if ( annotation != null )
+                        {
+                            for ( ProgrammingLanguage programmingLanguage : 
annotation.programmingLanguages() )
+                            {
+                                AssemblyInfoMarshaller marshaller = 
(AssemblyInfoMarshaller) c.newInstance();
+                                marshaller.init( programmingLanguage, new 
File( mavenProject.getBuild().getDirectory(),
+                                                                               
 BuildDirectories.BUILD_SOURCES.getBuildDirectoryName() ) );
+                                marshallers.add( marshaller );
+                            }
+
+                        }
+                    }
+                    catch ( ClassNotFoundException e )
+                    {
+                        throw new AssemblyInfoException(
+                            "NMAVEN-061-007: Unable to create 
AssemblyInfoMarshaller: Class Name = " + className, e );
+                    }
+                    catch ( InstantiationException e )
+                    {
+                        throw new AssemblyInfoException(
+                            "NMAVEN-020-003: Unable to create 
AssemblyInfoMarshaller: Class Name = " + className, e );
+                    }
+                    catch ( IllegalAccessException e )
+                    {
+                        throw new AssemblyInfoException(
+                            "NMAVEN-020-004: Unable to create 
AssemblyInfoMarshaller: Class Name = " + className, e );
+                    }
+                }
+            }
+        }
     }
 }

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-compiler/src/main/java/org/apache/maven/dotnet/compiler/impl/DotnetCompilerContextImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-compiler/src/main/java/org/apache/maven/dotnet/compiler/impl/DotnetCompilerContextImpl.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-compiler/src/main/java/org/apache/maven/dotnet/compiler/impl/DotnetCompilerContextImpl.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-compiler/src/main/java/org/apache/maven/dotnet/compiler/impl/DotnetCompilerContextImpl.java
 Thu Dec  6 16:26:10 2007
@@ -202,7 +202,7 @@
         String[] classPathJars = System.getProperty( "java.class.path" 
).split( "[" + File.pathSeparator + "]" );
         for ( String classPathJar : classPathJars )
         {
-            if ( classPathJar.contains( "dotnet-compiler-" ) )
+            if ( classPathJar.contains( "dotnet-extensions-" ) )
             {
                 JarFile jarFile = null;
                 try

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/DefaultAssemblyInfoMarshaller.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/DefaultAssemblyInfoMarshaller.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/DefaultAssemblyInfoMarshaller.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/DefaultAssemblyInfoMarshaller.java
 Thu Dec  6 16:26:10 2007
@@ -119,6 +119,11 @@
         this.buildSourcesDirectory = buildSourcesDirectory;
     }
 
+    public ProgrammingLanguage getProgrammingLanguageForMarshaller()
+    {
+        return programmingLanguage;
+    }
+
     /**
      * Sets the specified value within the specified assembly info
      *
@@ -198,5 +203,31 @@
         sb.append( "[assembly: Assembly" ).append( name ).append( "(\"" 
).append( value ).append( "\")]" ).append(
             "\r\n" );
         return sb.toString();
+    }
+
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        final DefaultAssemblyInfoMarshaller that = 
(DefaultAssemblyInfoMarshaller) o;
+
+        if ( programmingLanguage != that.programmingLanguage )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    public int hashCode()
+    {
+        return programmingLanguage.hashCode();
     }
 }

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/JavaAssemblyInfoMarshaller.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/JavaAssemblyInfoMarshaller.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/JavaAssemblyInfoMarshaller.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/JavaAssemblyInfoMarshaller.java
 Thu Dec  6 16:26:10 2007
@@ -94,6 +94,11 @@
         this.buildSourcesDirectory = buildSourcesDirectory;
     }
 
+    public ProgrammingLanguage getProgrammingLanguageForMarshaller()
+    {
+        return programmingLanguage;
+    }
+
     /**
      * Returns an assembly entry with a name-value pair beginning with '/**@'  
and ending with '*\/'
      *
@@ -107,5 +112,31 @@
         sb.append( "/[EMAIL PROTECTED]: Assembly" ).append( name ).append( 
"(\"" ).append( value ).append( "\")*/" ).append(
             "\r\n" );
         return sb.toString();
+    }
+
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        final JavaAssemblyInfoMarshaller that = (JavaAssemblyInfoMarshaller) o;
+
+        if ( programmingLanguage != that.programmingLanguage )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    public int hashCode()
+    {
+        return programmingLanguage.hashCode();
     }
 }

Modified: 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/VBAssemblyInfoMarshaller.java
URL: 
http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/VBAssemblyInfoMarshaller.java?rev=601925&r1=601924&r2=601925&view=diff
==============================================================================
--- 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/VBAssemblyInfoMarshaller.java
 (original)
+++ 
incubator/nmaven/branches/SI_MAVEN_INTEGRATION/sandbox/components/dotnet-extensions-maven/src/main/java/org/apache/maven/dotnet/extensions/assembler/VBAssemblyInfoMarshaller.java
 Thu Dec  6 16:26:10 2007
@@ -93,6 +93,11 @@
         this.buildSourcesDirectory = buildSourcesDirectory;
     }
 
+    public ProgrammingLanguage getProgrammingLanguageForMarshaller()
+    {
+        return programmingLanguage;
+    }
+
     /**
      * Returns an assembly entry with a name-value pair surrounded by angle 
brackets.
      *
@@ -106,5 +111,31 @@
         sb.append( "<Assembly: Assembly" ).append( name ).append( "(\"" 
).append( value ).append( "\")>" ).append(
             "\r\n" );
         return sb.toString();
+    }
+
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        final VBAssemblyInfoMarshaller that = (VBAssemblyInfoMarshaller) o;
+
+        if ( programmingLanguage != that.programmingLanguage )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    public int hashCode()
+    {
+        return programmingLanguage.hashCode();
     }
 }


Reply via email to