mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
Initial import
This commit is contained in:
commit
61f181a589
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
# Eclipse
|
||||
.metadata
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
|
||||
# Build
|
||||
target
|
||||
test-output
|
13
core/etc/license.txt
Normal file
13
core/etc/license.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
46
core/pom.xml
Normal file
46
core/pom.xml
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>de.moapa.maple</groupId>
|
||||
<artifactId>maple-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>maple</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Maple Core</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.easytesting</groupId>
|
||||
<artifactId>fest-assert</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
20
core/src/main/java/de/moapa/maple/Mapper.java
Normal file
20
core/src/main/java/de/moapa/maple/Mapper.java
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple;
|
||||
|
||||
public @interface Mapper {
|
||||
|
||||
}
|
45
core/src/main/java/de/moapa/maple/Mappers.java
Normal file
45
core/src/main/java/de/moapa/maple/Mappers.java
Normal file
@ -0,0 +1,45 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple;
|
||||
|
||||
|
||||
public class Mappers {
|
||||
|
||||
private final static String IMPLEMENTATION_SUFFIX = "Impl";
|
||||
|
||||
/**
|
||||
* TODO: Check that
|
||||
* - clazz is an interface
|
||||
* - the implementation type implements clazz
|
||||
* - clazz is annotated with @Mapper
|
||||
*
|
||||
* TODO: Use privileged action
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getMapper(Class<T> clazz) {
|
||||
try {
|
||||
|
||||
// ClassLoader classLoader = clazz.getClassLoader();
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
|
||||
return (T) classLoader.loadClass( clazz.getName() + IMPLEMENTATION_SUFFIX ).newInstance();
|
||||
}
|
||||
catch ( Exception e ) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException( e );
|
||||
}
|
||||
}
|
||||
}
|
20
core/src/main/java/de/moapa/maple/Mapping.java
Normal file
20
core/src/main/java/de/moapa/maple/Mapping.java
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple;
|
||||
|
||||
public @interface Mapping {
|
||||
|
||||
}
|
31
core/src/test/java/de/moapa/maple/MappersTest.java
Normal file
31
core/src/test/java/de/moapa/maple/MappersTest.java
Normal file
@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple;
|
||||
|
||||
import de.moapa.maple.test.model.Foo;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.fest.assertions.Assertions.assertThat;
|
||||
|
||||
public class MappersTest {
|
||||
|
||||
@Test
|
||||
public void shouldReturnImplementationInstance() {
|
||||
|
||||
Foo mapper = Mappers.getMapper( Foo.class );
|
||||
assertThat( mapper ).isNotNull();
|
||||
}
|
||||
}
|
20
core/src/test/java/de/moapa/maple/test/model/Foo.java
Normal file
20
core/src/test/java/de/moapa/maple/test/model/Foo.java
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.test.model;
|
||||
|
||||
public interface Foo {
|
||||
|
||||
}
|
20
core/src/test/java/de/moapa/maple/test/model/FooImpl.java
Normal file
20
core/src/test/java/de/moapa/maple/test/model/FooImpl.java
Normal file
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.test.model;
|
||||
|
||||
public class FooImpl implements Foo {
|
||||
|
||||
}
|
13
etc/license.txt
Normal file
13
etc/license.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
13
parent/etc/license.txt
Normal file
13
parent/etc/license.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
121
parent/pom.xml
Normal file
121
parent/pom.xml
Normal file
@ -0,0 +1,121 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>de.moapa.maple</groupId>
|
||||
<artifactId>maple-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>Maple Parent</name>
|
||||
<url>https://github.com/gunnarmorling/maple</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.freemarker</groupId>
|
||||
<artifactId>freemarker</artifactId>
|
||||
<version>2.3.14</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sf.dozer</groupId>
|
||||
<artifactId>dozer</artifactId>
|
||||
<version>5.3.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-jdk14</artifactId>
|
||||
<version>1.5.10</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
<version>6.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.easytesting</groupId>
|
||||
<artifactId>fest-assert</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>maple</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.3.2</version>
|
||||
<configuration>
|
||||
<source>1.6</source>
|
||||
<target>1.6</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>2.4</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.12</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.mycila.maven-license-plugin</groupId>
|
||||
<artifactId>maven-license-plugin</artifactId>
|
||||
<version>1.9.0</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.mycila.maven-license-plugin</groupId>
|
||||
<artifactId>maven-license-plugin</artifactId>
|
||||
<configuration>
|
||||
<header>etc/license.txt</header>
|
||||
<strictCheck>true</strictCheck>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
40
pom.xml
Normal file
40
pom.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>de.moapa.maple</groupId>
|
||||
<artifactId>maple-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>maple-aggregator</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Maple-Aggregator</name>
|
||||
|
||||
<modules>
|
||||
<module>parent</module>
|
||||
<module>core</module>
|
||||
<module>processor</module>
|
||||
</modules>
|
||||
</project>
|
13
processor/etc/license.txt
Normal file
13
processor/etc/license.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
97
processor/pom.xml
Normal file
97
processor/pom.xml
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
||||
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>de.moapa.maple</groupId>
|
||||
<artifactId>maple-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>maple-processor</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Maple Processor</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.freemarker</groupId>
|
||||
<artifactId>freemarker</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.dozer</groupId>
|
||||
<artifactId>dozer</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-jdk14</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.easytesting</groupId>
|
||||
<artifactId>fest-assert</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>maple</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy</id>
|
||||
<phase>generate-test-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-dependencies</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/test-dependencies</outputDirectory>
|
||||
<stripVersion>true</stripVersion>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<compilerArgument>-proc:none</compilerArgument>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,140 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.annotation.processing.ProcessingEnvironment;
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.util.ElementKindVisitor6;
|
||||
import javax.tools.JavaFileObject;
|
||||
|
||||
import de.moapa.maple.ap.model.Mapper;
|
||||
import de.moapa.maple.ap.model.MapperMethod;
|
||||
import de.moapa.maple.ap.model.Parameter;
|
||||
import de.moapa.maple.ap.model.Type;
|
||||
import freemarker.template.Configuration;
|
||||
import freemarker.template.Template;
|
||||
|
||||
import static javax.lang.model.util.ElementFilter.methodsIn;
|
||||
|
||||
class MapperGenerationVisitor extends ElementKindVisitor6<Void, Void> {
|
||||
|
||||
private final static String IMPLEMENTATION_SUFFIX = "Impl";
|
||||
|
||||
private final static String TEMPLATE_NAME = "dozer-mapper-implementation.ftl";
|
||||
|
||||
private final ProcessingEnvironment processingEnvironment;
|
||||
|
||||
private final Configuration configuration;
|
||||
|
||||
public MapperGenerationVisitor(ProcessingEnvironment processingEnvironment, Configuration configuration) {
|
||||
this.processingEnvironment = processingEnvironment;
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitTypeAsInterface(TypeElement element, Void p) {
|
||||
|
||||
Mapper model = retrieveModel( element );
|
||||
String sourceFileName = element.getQualifiedName() + IMPLEMENTATION_SUFFIX;
|
||||
|
||||
writeModelToSourceFile( sourceFileName, model );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void writeModelToSourceFile(String fileName, Mapper model) {
|
||||
try {
|
||||
JavaFileObject sourceFile = processingEnvironment.getFiler().createSourceFile( fileName );
|
||||
BufferedWriter writer = new BufferedWriter( sourceFile.openWriter() );
|
||||
|
||||
Template template = configuration.getTemplate( TEMPLATE_NAME );
|
||||
template.process( model, writer );
|
||||
writer.flush();
|
||||
writer.close();
|
||||
}
|
||||
catch ( Exception e ) {
|
||||
throw new RuntimeException( e );
|
||||
}
|
||||
}
|
||||
|
||||
private Mapper retrieveModel(TypeElement element) {
|
||||
|
||||
return new Mapper(
|
||||
processingEnvironment.getElementUtils().getPackageOf( element ).getQualifiedName().toString(),
|
||||
element.getSimpleName() + IMPLEMENTATION_SUFFIX,
|
||||
element.getSimpleName().toString(),
|
||||
retrieveMethods( element )
|
||||
);
|
||||
}
|
||||
|
||||
private List<MapperMethod> retrieveMethods(TypeElement element) {
|
||||
|
||||
List<MapperMethod> methods = new ArrayList<MapperMethod>();
|
||||
|
||||
for ( ExecutableElement oneMethod : methodsIn( element.getEnclosedElements() ) ) {
|
||||
|
||||
methods.add(
|
||||
new MapperMethod(
|
||||
oneMethod.getSimpleName().toString(),
|
||||
retrieveReturnType( oneMethod ),
|
||||
retrieveParameter( oneMethod )
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return methods;
|
||||
}
|
||||
|
||||
private Parameter retrieveParameter(ExecutableElement method) {
|
||||
|
||||
List<? extends VariableElement> parameters = method.getParameters();
|
||||
|
||||
if ( parameters.size() != 1 ) {
|
||||
//TODO: Log error
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Parameter(
|
||||
parameters.get( 0 ).getSimpleName().toString(),
|
||||
new Type(
|
||||
processingEnvironment.getElementUtils()
|
||||
.getPackageOf( parameters.get( 0 ) )
|
||||
.getQualifiedName()
|
||||
.toString(),
|
||||
processingEnvironment.getTypeUtils()
|
||||
.asElement( parameters.get( 0 ).asType() )
|
||||
.getSimpleName()
|
||||
.toString()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private Type retrieveReturnType(ExecutableElement method) {
|
||||
|
||||
Element returnTypeElement = processingEnvironment.getTypeUtils().asElement( method.getReturnType() );
|
||||
|
||||
return new Type(
|
||||
processingEnvironment.getElementUtils().getPackageOf( returnTypeElement ).getQualifiedName().toString(),
|
||||
returnTypeElement.getSimpleName().toString()
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap;
|
||||
|
||||
|
||||
import java.util.Set;
|
||||
import javax.annotation.processing.AbstractProcessor;
|
||||
import javax.annotation.processing.ProcessingEnvironment;
|
||||
import javax.annotation.processing.RoundEnvironment;
|
||||
import javax.annotation.processing.SupportedAnnotationTypes;
|
||||
import javax.lang.model.SourceVersion;
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ElementKind;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
|
||||
import freemarker.template.Configuration;
|
||||
import freemarker.template.DefaultObjectWrapper;
|
||||
|
||||
@SupportedAnnotationTypes("de.moapa.maple.Mapper")
|
||||
public class MappingProcessor extends AbstractProcessor {
|
||||
|
||||
/**
|
||||
* Whether this processor claims all processed annotations exclusively or not.
|
||||
*/
|
||||
private static final boolean ANNOTATIONS_CLAIMED_EXCLUSIVELY = false;
|
||||
|
||||
private Configuration configuration;
|
||||
|
||||
@Override
|
||||
public synchronized void init(ProcessingEnvironment processingEnv) {
|
||||
|
||||
super.init( processingEnv );
|
||||
|
||||
configuration = new Configuration();
|
||||
configuration.setClassForTemplateLoading( MappingProcessor.class, "/" );
|
||||
configuration.setObjectWrapper( new DefaultObjectWrapper() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public SourceVersion getSupportedSourceVersion() {
|
||||
return SourceVersion.latestSupported();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean process(
|
||||
final Set<? extends TypeElement> annotations,
|
||||
final RoundEnvironment roundEnvironment) {
|
||||
|
||||
for ( TypeElement oneAnnotation : annotations ) {
|
||||
|
||||
//Indicates that the annotation's type isn't on the class path of the compiled
|
||||
//project. Let the compiler deal with that and print an appropriate error.
|
||||
if ( oneAnnotation.getKind() != ElementKind.ANNOTATION_TYPE ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for ( Element oneAnnotatedElement : roundEnvironment.getElementsAnnotatedWith( oneAnnotation ) ) {
|
||||
oneAnnotatedElement.accept( new MapperGenerationVisitor( processingEnv, configuration ), null );
|
||||
}
|
||||
}
|
||||
|
||||
return ANNOTATIONS_CLAIMED_EXCLUSIVELY;
|
||||
}
|
||||
}
|
52
processor/src/main/java/de/moapa/maple/ap/model/Mapper.java
Normal file
52
processor/src/main/java/de/moapa/maple/ap/model/Mapper.java
Normal file
@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Mapper {
|
||||
|
||||
private final String packageName;
|
||||
|
||||
private final String implementationType;
|
||||
|
||||
private final String interfaceType;
|
||||
|
||||
private final List<MapperMethod> mapperMethods;
|
||||
|
||||
public Mapper(String packageName, String implementationType, String interfaceType, List<MapperMethod> mapperMethods) {
|
||||
this.packageName = packageName;
|
||||
this.implementationType = implementationType;
|
||||
this.interfaceType = interfaceType;
|
||||
this.mapperMethods = mapperMethods;
|
||||
}
|
||||
|
||||
public String getPackageName() {
|
||||
return packageName;
|
||||
}
|
||||
|
||||
public String getImplementationType() {
|
||||
return implementationType;
|
||||
}
|
||||
|
||||
public String getInterfaceType() {
|
||||
return interfaceType;
|
||||
}
|
||||
|
||||
public List<MapperMethod> getMapperMethods() {
|
||||
return mapperMethods;
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.model;
|
||||
|
||||
public class MapperMethod {
|
||||
|
||||
private final String name;
|
||||
private final Type returnType;
|
||||
private final Parameter parameter;
|
||||
|
||||
public MapperMethod(String name, Type returnType, Parameter parameter) {
|
||||
this.name = name;
|
||||
this.returnType = returnType;
|
||||
this.parameter = parameter;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Type getReturnType() {
|
||||
return returnType;
|
||||
}
|
||||
|
||||
public Parameter getParameter() {
|
||||
return parameter;
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.model;
|
||||
|
||||
public class Parameter {
|
||||
|
||||
private final String name;
|
||||
private final Type type;
|
||||
|
||||
public Parameter(String name, Type type) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
36
processor/src/main/java/de/moapa/maple/ap/model/Type.java
Normal file
36
processor/src/main/java/de/moapa/maple/ap/model/Type.java
Normal file
@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.model;
|
||||
|
||||
public class Type {
|
||||
|
||||
private final String packageName;
|
||||
|
||||
private final String name;
|
||||
|
||||
public Type(String packageName, String name) {
|
||||
this.packageName = packageName;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getPackageName() {
|
||||
return packageName;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
de.moapa.maple.ap.MappingProcessor
|
36
processor/src/main/resources/dozer-mapper-implementation.ftl
Normal file
36
processor/src/main/resources/dozer-mapper-implementation.ftl
Normal file
@ -0,0 +1,36 @@
|
||||
<#--
|
||||
|
||||
Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
|
||||
Licensed 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.
|
||||
|
||||
-->
|
||||
package ${packageName};
|
||||
|
||||
import org.dozer.DozerBeanMapper;
|
||||
import org.dozer.Mapper;
|
||||
|
||||
public class ${implementationType} implements ${interfaceType} {
|
||||
|
||||
private final Mapper mapper;
|
||||
|
||||
public ${implementationType}() {
|
||||
mapper = new DozerBeanMapper();
|
||||
}
|
||||
|
||||
<#list mapperMethods as oneMethod>
|
||||
public ${oneMethod.returnType.name} ${oneMethod.name}(${oneMethod.parameter.type.name} ${oneMethod.parameter.name}) {
|
||||
return mapper.map(${oneMethod.parameter.name}, ${oneMethod.returnType.name}.class);
|
||||
}
|
||||
</#list>
|
||||
}
|
@ -0,0 +1,201 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.test;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.tools.DiagnosticCollector;
|
||||
import javax.tools.JavaCompiler;
|
||||
import javax.tools.JavaCompiler.CompilationTask;
|
||||
import javax.tools.JavaFileObject;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
import javax.tools.StandardLocation;
|
||||
import javax.tools.ToolProvider;
|
||||
|
||||
import de.moapa.maple.ap.MappingProcessor;
|
||||
import de.moapa.maple.ap.test.model.Car;
|
||||
import de.moapa.maple.ap.test.model.CarDto;
|
||||
import de.moapa.maple.ap.test.model.CarMapper;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.fest.assertions.Assertions.assertThat;
|
||||
|
||||
public class CarMapperTest {
|
||||
|
||||
private DiagnosticCollector<JavaFileObject> diagnostics;
|
||||
private JavaCompiler compiler;
|
||||
|
||||
private String sourceDir;
|
||||
private String classOutputDir;
|
||||
private String sourceOutputDir;
|
||||
private List<File> classPath;
|
||||
|
||||
@BeforeClass
|
||||
public void setup() throws Exception {
|
||||
|
||||
compiler = ToolProvider.getSystemJavaCompiler();
|
||||
|
||||
String basePath = getBasePath();
|
||||
|
||||
sourceDir = basePath + "/src/test/java";
|
||||
classOutputDir = basePath + "/target/compilation-tests/classes";
|
||||
sourceOutputDir = basePath + "/target/compilation-tests/generated-sources/mapping";
|
||||
|
||||
String testDependenciesDir = basePath + "/target/test-dependencies/";
|
||||
classPath = Arrays.asList(
|
||||
new File( testDependenciesDir, "maple.jar" ),
|
||||
new File( testDependenciesDir, "dozer.jar" ),
|
||||
new File( testDependenciesDir, "slf4j-api.jar" ),
|
||||
new File( testDependenciesDir, "slf4j-jdk14.jar" )
|
||||
);
|
||||
|
||||
createOutputDirs();
|
||||
|
||||
Thread.currentThread().setContextClassLoader(
|
||||
new URLClassLoader(
|
||||
new URL[] { new File( classOutputDir ).toURI().toURL() },
|
||||
Thread.currentThread().getContextClassLoader()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@BeforeMethod
|
||||
public void setUpDiagnostics() {
|
||||
diagnostics = new DiagnosticCollector<JavaFileObject>();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldProvideMapperInstance() throws Exception {
|
||||
|
||||
//given
|
||||
File[] sourceFiles = getSourceFiles( Car.class, CarDto.class, CarMapper.class );
|
||||
|
||||
//when
|
||||
boolean compilationSuccessful = compile( diagnostics, sourceFiles );
|
||||
|
||||
//then
|
||||
assertThat( compilationSuccessful ).describedAs( "Compilation failed: " + diagnostics.getDiagnostics() )
|
||||
.isTrue();
|
||||
assertThat( CarMapper.INSTANCE ).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldMapCar() {
|
||||
|
||||
//given
|
||||
File[] sourceFiles = getSourceFiles( Car.class, CarDto.class, CarMapper.class );
|
||||
Car car = new Car( "Morris" );
|
||||
|
||||
//when
|
||||
boolean compilationSuccessful = compile( diagnostics, sourceFiles );
|
||||
CarDto carDto = CarMapper.INSTANCE.carToCarDto( car );
|
||||
|
||||
//then
|
||||
assertThat( compilationSuccessful ).describedAs( "Compilation failed: " + diagnostics.getDiagnostics() )
|
||||
.isTrue();
|
||||
assertThat( carDto ).isNotNull();
|
||||
assertThat( carDto.getMake() ).isEqualTo( car.getMake() );
|
||||
}
|
||||
|
||||
private File[] getSourceFiles(Class<?>... clazz) {
|
||||
|
||||
File[] sourceFiles = new File[clazz.length];
|
||||
|
||||
for ( int i = 0; i < clazz.length; i++ ) {
|
||||
|
||||
sourceFiles[i] = new File(
|
||||
sourceDir +
|
||||
File.separator +
|
||||
clazz[i].getName().replace( ".", File.separator ) +
|
||||
".java"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return sourceFiles;
|
||||
}
|
||||
|
||||
public boolean compile(DiagnosticCollector<JavaFileObject> diagnostics, File... sourceFiles) {
|
||||
|
||||
StandardJavaFileManager fileManager = compiler.getStandardFileManager( null, null, null );
|
||||
|
||||
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects( sourceFiles );
|
||||
|
||||
try {
|
||||
fileManager.setLocation( StandardLocation.CLASS_PATH, classPath );
|
||||
fileManager.setLocation( StandardLocation.CLASS_OUTPUT, Arrays.asList( new File( classOutputDir ) ) );
|
||||
fileManager.setLocation( StandardLocation.SOURCE_OUTPUT, Arrays.asList( new File( sourceOutputDir ) ) );
|
||||
}
|
||||
catch ( IOException e ) {
|
||||
throw new RuntimeException( e );
|
||||
}
|
||||
|
||||
CompilationTask task = compiler.getTask(
|
||||
null,
|
||||
fileManager,
|
||||
diagnostics,
|
||||
Collections.<String>emptyList(),
|
||||
null,
|
||||
compilationUnits
|
||||
);
|
||||
task.setProcessors( Arrays.asList( new MappingProcessor() ) );
|
||||
|
||||
return task.call();
|
||||
}
|
||||
|
||||
private String getBasePath() {
|
||||
|
||||
try {
|
||||
return new File( "." ).getCanonicalPath();
|
||||
}
|
||||
catch ( IOException e ) {
|
||||
throw new RuntimeException( e );
|
||||
}
|
||||
}
|
||||
|
||||
private void createOutputDirs() {
|
||||
|
||||
File directory = new File( classOutputDir );
|
||||
deleteDirectory( directory );
|
||||
directory.mkdirs();
|
||||
|
||||
directory = new File( sourceOutputDir );
|
||||
deleteDirectory( directory );
|
||||
directory.mkdirs();
|
||||
}
|
||||
|
||||
private void deleteDirectory(File path) {
|
||||
if ( path.exists() ) {
|
||||
File[] files = path.listFiles();
|
||||
for ( int i = 0; i < files.length; i++ ) {
|
||||
if ( files[i].isDirectory() ) {
|
||||
deleteDirectory( files[i] );
|
||||
}
|
||||
else {
|
||||
files[i].delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
path.delete();
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.test.model;
|
||||
|
||||
public class Car {
|
||||
|
||||
private String make;
|
||||
|
||||
public Car(String make) {
|
||||
this.make = make;
|
||||
}
|
||||
|
||||
public String getMake() {
|
||||
return make;
|
||||
}
|
||||
|
||||
public void setMake(String make) {
|
||||
this.make = make;
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.test.model;
|
||||
|
||||
public class CarDto {
|
||||
|
||||
private String make;
|
||||
|
||||
public CarDto() {
|
||||
}
|
||||
|
||||
public CarDto(String make) {
|
||||
this.make = make;
|
||||
}
|
||||
|
||||
public String getMake() {
|
||||
return make;
|
||||
}
|
||||
|
||||
public void setMake(String make) {
|
||||
this.make = make;
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Copyright 2012 Gunnar Morling (http://www.gunnarmorling.de/)
|
||||
*
|
||||
* Licensed 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.
|
||||
*/
|
||||
package de.moapa.maple.ap.test.model;
|
||||
|
||||
import de.moapa.maple.Mapper;
|
||||
import de.moapa.maple.Mappers;
|
||||
|
||||
@Mapper
|
||||
public interface CarMapper {
|
||||
|
||||
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
|
||||
|
||||
CarDto carToCarDto(Car car);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user