Skip to content

Latest commit

 

History

History
79 lines (72 loc) · 2.84 KB

File metadata and controls

79 lines (72 loc) · 2.84 KB

generate-default-impl-maven-plugin

This plugin is intended to generate an empty implementation of an arbitrary Java interface. Let's look an example. Provided we have an interface like:

public interface TestInterface
{
    char getChar(String param);
    float getFloat();
    int getInt(List<String> param);
    boolean isBoolean();
    String getName(String firstName);
    void doSomething();
}

This tool generates the following code:

public class TestInterfaceDefaultImpl implements com.company.TestInterface {
     @Override public char getChar(java.lang.String p1) {return 0;}
     @Override public float getFloat() {return 0;}
     @Override public int getInt(java.util.List p1) {return 0;}
     @Override public boolean isBoolean() {return false;}
     @Override public java.lang.String getName(java.lang.String p1) {return null;}
     @Override public void doSomething() {}
}

This means that for every primitive type it returns a 0 or false, and for every object ot returns null. After you activate this plugin in your generate-sources maven phase, you can override the generated class.

You can activate the plugin with the following maven snippet:

<build>
    <plugins>
        <plugin>
            <groupId>com.github.himadri77</groupId>
            <artifactId>generate-default-impl-plugin</artifactId>
            <version>1.3</version>
            <configuration>
                <interfaces>
                    <interface>com.company.TestInterface</interface>
                    <interface>com.company.MyInterface2</interface>
                </interfaces>
                <targetPackage>com.company.generatedstuff</targetPackage>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>generate-default-impl</goal>
                    </goals>                        
                </execution>
            </executions> 
            <dependencies>                    
                <dependency>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>${project.artifactId}</artifactId>
                    <version>${project.version}</version>
                </dependency>                    
            </dependencies>
        </plugin>
    </plugins>
</build>    

Other optional configuration parameters:

 <configuration>
     <!-- The generated class name will be the interface name + classNamePostfix parameter -->
     <!-- Default: DefaultImpl -->    
     <classNamePostfix>DefaultImpl</classNamePostfix> 
     
     <!-- Where to put the generated java files -->
     <!-- Default: ${project.build.directory}/generated-sources/java -->    
     <outputDirectory>${project.build.directory}/generated-sources/java</outputDirectory>     
 </configuration>