diff --git a/maven-plugin-plugin/pom.xml b/maven-plugin-plugin/pom.xml index 9ba7252..c52dcfe 100644 --- a/maven-plugin-plugin/pom.xml +++ b/maven-plugin-plugin/pom.xml @@ -61,7 +61,7 @@ 1.0-alpha-10 1.0-alpha-10 - [2.5-SNAPSHOT,) + 2.5-SNAPSHOT diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java index 88bef11..f3d0a3e 100644 --- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java +++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java @@ -61,6 +61,14 @@ public abstract class AbstractGeneratorMojo */ protected MojoScanner mojoScanner; + /** + * The file encoding of the source files. + * + * @parameter expression="${encoding}" default-value="ISO-8859-1" + * @since 2.5 + */ + protected String encoding; + /** * The goal prefix that will appear before the ":". * @@ -147,7 +155,7 @@ public abstract class AbstractGeneratorMojo { pluginDescriptor.setDependencies( PluginUtils.toComponentDependencies( project.getRuntimeDependencies() ) ); - PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ); + PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ).setEncoding( encoding ); mojoScanner.populatePluginDescriptor( request ); diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java index dc58598..ba7ef43 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java @@ -5,9 +5,8 @@ import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.project.MavenProject; /** - * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components - * used to extract {@link MojoDescriptor} instances from different types of metadata for a given - * plugin. + * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract + * {@link MojoDescriptor} instances from different types of metadata for a given plugin. * * @author jdcasey */ @@ -16,8 +15,11 @@ public class DefaultPluginToolsRequest { private PluginDescriptor pluginDescriptor; + private MavenProject project; - + + private String encoding = "ISO-8859-1"; + public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor ) { this.project = project; @@ -31,7 +33,7 @@ public class DefaultPluginToolsRequest { return pluginDescriptor; } - + /** * {@inheritDoc} */ @@ -40,4 +42,26 @@ public class DefaultPluginToolsRequest return project; } + /** + * {@inheritDoc} + */ + public String getEncoding() + { + return this.encoding; + } + + /** + * {@inheritDoc} + */ + public PluginToolsRequest setEncoding( String encoding ) + { + if ( encoding == null ) + { + throw new IllegalArgumentException( "unspecified source file encoding" ); + } + this.encoding = encoding; + + return this; + } + } diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java index d385e5a..f35fb40 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java @@ -24,4 +24,16 @@ public interface PluginToolsRequest */ PluginDescriptor getPluginDescriptor(); + /** + * Gets the file encoding of the source files. + * + * @return The file encoding of the source files, never null. + */ + public String getEncoding(); + + /** + * @see PluginToolsRequest#getEncoding() + */ + public PluginToolsRequest setEncoding( String encoding ); + } diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java index f914fff..0229152 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/AbstractScriptedMojoDescriptorExtractor.java @@ -238,4 +238,4 @@ public abstract class AbstractScriptedMojoDescriptorExtractor */ protected abstract String getScriptFileExtension( PluginToolsRequest request ); -} \ No newline at end of file +} diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java index fddbf81..1eba4f4 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/extractor/MojoDescriptorExtractor.java @@ -56,6 +56,7 @@ public interface MojoDescriptorExtractor * @return a list of mojo descriptors. * @throws ExtractionException if any * @throws InvalidPluginDescriptorException if any + * @since 2.5 */ List execute( PluginToolsRequest request ) throws ExtractionException, InvalidPluginDescriptorException; diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java index dc77c64..e28911c 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/DefaultMojoScanner.java @@ -184,4 +184,5 @@ public class DefaultMojoScanner } } } -} \ No newline at end of file + +} diff --git a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java index a4f7146..d50ea98 100644 --- a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java +++ b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/scanner/MojoScanner.java @@ -53,6 +53,7 @@ public interface MojoScanner * @param pluginDescriptor not null * @throws ExtractionException if any * @throws InvalidPluginDescriptorException if any + * @since 2.5 */ void populatePluginDescriptor( PluginToolsRequest request ) throws ExtractionException, InvalidPluginDescriptorException; @@ -68,4 +69,4 @@ public interface MojoScanner */ void setActiveExtractors( Set/* */extractors ); -} \ No newline at end of file +} diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java index b5b56fe..85b72c1 100644 --- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java +++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/ScannerTestExtractor.java @@ -60,4 +60,4 @@ public class ScannerTestExtractor return Collections.singletonList( desc ); } -} \ No newline at end of file +} diff --git a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java index 58faa83..daeca11 100644 --- a/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java +++ b/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/scanner/TestExtractor.java @@ -50,4 +50,4 @@ public class TestExtractor return Collections.singletonList( desc ); } -} \ No newline at end of file +} diff --git a/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java b/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java index bc22c13..9131002 100644 --- a/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java +++ b/maven-plugin-tools-beanshell/src/main/java/org/apache/maven/tools/plugin/extractor/beanshell/BeanshellMojoDescriptorExtractor.java @@ -19,11 +19,8 @@ package org.apache.maven.tools.plugin.extractor.beanshell; * under the License. */ -import bsh.EvalError; -import bsh.Interpreter; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; import org.apache.maven.plugin.descriptor.MojoDescriptor; -import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.tools.plugin.PluginToolsRequest; import org.apache.maven.tools.plugin.extractor.AbstractScriptedMojoDescriptorExtractor; import org.apache.maven.tools.plugin.extractor.ExtractionException; @@ -37,6 +34,9 @@ import java.util.List; import java.util.Map; import java.util.Set; +import bsh.EvalError; +import bsh.Interpreter; + /** * Extracts Mojo descriptors from BeanShell sources. * @@ -83,7 +83,7 @@ public class BeanshellMojoDescriptorExtractor relativePath = relativePath.replace( '\\', '/' ); - MojoDescriptor mojoDescriptor = createMojoDescriptor( basedir, relativePath, request.getPluginDescriptor() ); + MojoDescriptor mojoDescriptor = createMojoDescriptor( basedir, relativePath, request ); descriptors.add( mojoDescriptor ); } } @@ -98,11 +98,11 @@ public class BeanshellMojoDescriptorExtractor * @return a new Mojo descriptor instance * @throws InvalidPluginDescriptorException if any */ - private MojoDescriptor createMojoDescriptor( String basedir, String resource, PluginDescriptor pluginDescriptor ) + private MojoDescriptor createMojoDescriptor( String basedir, String resource, PluginToolsRequest request ) throws InvalidPluginDescriptorException { MojoDescriptor mojoDescriptor = new MojoDescriptor(); - mojoDescriptor.setPluginDescriptor( pluginDescriptor ); + mojoDescriptor.setPluginDescriptor( request.getPluginDescriptor() ); mojoDescriptor.setLanguage( "bsh" ); mojoDescriptor.setComponentConfigurator( "bsh" ); @@ -117,7 +117,7 @@ public class BeanshellMojoDescriptorExtractor interpreter.set( "mojoDescriptor", mojoDescriptor ); - interpreter.eval( new InputStreamReader( getClass().getResourceAsStream( "/extractor.bsh" ), "UTF-8" ) ); + interpreter.eval( new InputStreamReader( getClass().getResourceAsStream( "/extractor.bsh" ), request.getEncoding() ) ); } catch ( EvalError evalError ) { diff --git a/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh b/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh index 380c6b2..b90c29f 100644 --- a/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh +++ b/maven-plugin-tools-beanshell/src/main/resources/extractor.bsh @@ -1,6 +1,7 @@ import bsh.*; import java.util.regex.Pattern; -import java.io.FileReader; +import java.io.FileInputStream; +import java.io.InputStreamReader; import org.codehaus.plexus.util.StringUtils; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException; @@ -120,9 +121,9 @@ getDescription( text ) } } -extract( file, mojoDescriptor ) +extract( file, encoding, mojoDescriptor ) { - this.parser = new Parser( new FileReader( file ) ); + this.parser = new Parser( new InputStreamReader( new FileInputStream( file ), encoding ) ); parser.setRetainComments( true ); this.lastNode = null; @@ -219,4 +220,4 @@ extract( file, mojoDescriptor ) } } -extract( file, mojoDescriptor ); +extract( file, encoding, mojoDescriptor ); diff --git a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java index d82770e..0ee6d0e 100644 --- a/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java +++ b/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java @@ -589,7 +589,7 @@ public class JavaMojoDescriptorExtractor public List execute( PluginToolsRequest request ) throws ExtractionException, InvalidPluginDescriptorException { - JavaClass[] javaClasses = discoverClasses( request.getProject() ); + JavaClass[] javaClasses = discoverClasses( request ); List descriptors = new ArrayList(); @@ -614,11 +614,15 @@ public class JavaMojoDescriptorExtractor /** * @param project not null + * @param encoding The file encoding of the source files, must not be null. * @return an array of java class */ - protected JavaClass[] discoverClasses( final MavenProject project ) + protected JavaClass[] discoverClasses( final PluginToolsRequest request ) { JavaDocBuilder builder = new JavaDocBuilder(); + builder.setEncoding( request.getEncoding() ); + + MavenProject project = request.getProject(); for ( Iterator i = project.getCompileSourceRoots().iterator(); i.hasNext(); ) { diff --git a/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java b/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java index 32ae8b8..9b9774a 100644 --- a/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java +++ b/maven-plugin-tools-java/src/test/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractorTest.java @@ -25,6 +25,8 @@ import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.project.MavenProject; +import org.apache.maven.tools.plugin.DefaultPluginToolsRequest; +import org.apache.maven.tools.plugin.PluginToolsRequest; import java.io.File; import java.io.UnsupportedEncodingException; @@ -59,7 +61,11 @@ public class JavaMojoDescriptorExtractorTest PluginDescriptor pluginDescriptor = new PluginDescriptor(); pluginDescriptor.setGoalPrefix( "test" ); - List results = extractor.execute( project, pluginDescriptor ); + + PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ); + + List results = extractor.execute( request ); + assertEquals( "Extracted mojos", 2, results.size() ); for ( int i = 0; i < 2; i++ ) @@ -92,7 +98,10 @@ public class JavaMojoDescriptorExtractorTest PluginDescriptor pluginDescriptor = new PluginDescriptor(); pluginDescriptor.setGoalPrefix( "test" ); - List results = extractor.execute( project, pluginDescriptor ); + + PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ); + + List results = extractor.execute( request ); assertEquals( 1, results.size() ); MojoDescriptor mojoDescriptor = (MojoDescriptor) results.get( 0 ); @@ -156,7 +165,10 @@ public class JavaMojoDescriptorExtractorTest PluginDescriptor pluginDescriptor = new PluginDescriptor(); pluginDescriptor.setGoalPrefix( "test" ); - List results = extractor.execute( project, pluginDescriptor ); + + PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor ); + + List results = extractor.execute( request ); assertEquals( 0, results.size() ); } diff --git a/pom.xml b/pom.xml index caa829e..950839d 100644 --- a/pom.xml +++ b/pom.xml @@ -144,7 +144,7 @@ - [2.5-SNAPSHOT,) + 2.5-SNAPSHOT 1.2