Skip to content

Commit a624c18

Browse files
committed
Adding first tests
1 parent 038259e commit a624c18

36 files changed

Lines changed: 720 additions & 56 deletions

.travis.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,12 @@
11
language: java
2-
script: ./mvnw verify
2+
script: ./mvnw install --fail-at-end
3+
matrix:
4+
include:
5+
- jdk: openjdk8
6+
env: JACOCO=true COVERALLS=true
7+
- jdk: oraclejdk8
8+
- jdk: oraclejdk9
9+
- jdk: openjdk8
10+
env: GDMSESSION=sonar
11+
- jdk: openjdk8
12+
env: SONAR=publish

pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@
100100
<version>[1.2.0.Final,2.0.0)</version>
101101
<scope>provided</scope>
102102
</dependency>
103+
<dependency>
104+
<groupId>org.mapstruct</groupId>
105+
<artifactId>mapstruct-processor</artifactId>
106+
<version>[1.2.0.Final,2.0.0)</version>
107+
<scope>provided</scope>
108+
<optional>true</optional>
109+
</dependency>
103110

104111
<!-- runtime -->
105112
<dependency>
@@ -121,6 +128,24 @@
121128
<version>3.9.1</version>
122129
<scope>test</scope>
123130
</dependency>
131+
<dependency>
132+
<groupId>org.mockito</groupId>
133+
<artifactId>mockito-core</artifactId>
134+
<version>2.18.3</version>
135+
<scope>test</scope>
136+
</dependency>
137+
<dependency>
138+
<groupId>com.google.inject</groupId>
139+
<artifactId>guice</artifactId>
140+
<version>4.2.0</version>
141+
<scope>test</scope>
142+
</dependency>
143+
<dependency>
144+
<groupId>org.hibernate</groupId>
145+
<artifactId>hibernate-core</artifactId>
146+
<version>5.2.17.Final</version>
147+
<scope>test</scope>
148+
</dependency>
124149
</dependencies>
125150

126151
<build>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package pl.wavesoftware.utils.mapstruct.jpa;
2+
3+
import pl.wavesoftware.lang.TriConsumer;
4+
5+
/**
6+
* @author <a href="krzysztof.suszynski@wavesoftware.pl">Krzysztof Suszyński</a>
7+
* @since 2018-05-02
8+
*/
9+
public abstract class AbstractCompositeContextMapping<I, O> extends AbstractMapping<I, O, CompositeContext> {
10+
protected AbstractCompositeContextMapping(Class<I> sourceClass,
11+
Class<O> targetClass) {
12+
super(sourceClass, targetClass, CompositeContext.class);
13+
}
14+
15+
public static <I, O> AbstractCompositeContextMapping<I, O> mapperFor(
16+
Class<I> inputClass,
17+
Class<O> outputClass,
18+
TriConsumer<I, O, CompositeContext> consumer) {
19+
20+
return new AbstractCompositeContextMapping<I, O>(inputClass, outputClass) {
21+
@Override
22+
public void accept(I input, O output, CompositeContext context) {
23+
consumer.accept(input, output, context);
24+
}
25+
};
26+
}
27+
}

src/main/java/pl/wavesoftware/utils/mapstruct/jpa/AbstractCompositeContextProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package pl.wavesoftware.utils.mapstruct.jpa;
22

33
import lombok.RequiredArgsConstructor;
4-
import pl.wavesoftware.utils.mapstruct.jpa.CompositeContext.CompositeContextBuilder;
54

65
import javax.annotation.Nullable;
76
import java.util.function.Supplier;
@@ -36,7 +35,7 @@ public CompositeContext createNewContext() {
3635
}
3736

3837
protected abstract JpaMappingContextFactory getJpaMappingContextFactory();
39-
protected abstract Iterable<MappingProvider<?, ?, ?>> getMappingProviders();
38+
protected abstract Iterable<MappingProvider> getMappingProviders();
4039
protected abstract IdentifierCollector getIdentifierCollector();
4140

4241
@RequiredArgsConstructor
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package pl.wavesoftware.utils.mapstruct.jpa;
2+
3+
import lombok.Getter;
4+
import lombok.RequiredArgsConstructor;
5+
6+
/**
7+
* @author <a href="mailto:krzysztof.suszynski@wavesoftware.pl">Krzysztof Suszynski</a>
8+
* @since 25.04.18
9+
*/
10+
@Getter
11+
@RequiredArgsConstructor
12+
public abstract class AbstractMapping<I, O, C> implements Mapping<I, O, C> {
13+
private final Class<I> sourceClass;
14+
private final Class<O> targetClass;
15+
private final Class<C> contextClass;
16+
}

src/main/java/pl/wavesoftware/utils/mapstruct/jpa/CompositeContext.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public CompositeContext(MappingContext... mappingContexts) {
3535
* @return a builder interface
3636
*/
3737
public static CompositeContextBuilder builder() {
38-
return new CompositeContextBuilder();
38+
return new CompositeContextBuilderImpl();
3939
}
4040

4141
@Override
@@ -71,16 +71,18 @@ public <T> Optional<T> getMappedInstanceOptional(Object source,
7171
return Optional.empty();
7272
}
7373

74-
public static final class CompositeContextBuilder {
74+
private static final class CompositeContextBuilderImpl implements CompositeContextBuilder {
7575
private final List<MappingContext> mappingContexts = new ArrayList<>();
7676

77-
public CompositeContextBuilder addContext(MappingContext... mappingContexts) {
77+
@Override
78+
public CompositeContextBuilderImpl addContext(MappingContext... mappingContexts) {
7879
this.mappingContexts.addAll(
7980
Arrays.asList(mappingContexts)
8081
);
8182
return this;
8283
}
8384

85+
@Override
8486
public CompositeContext build() {
8587
return new CompositeContext(
8688
mappingContexts.toArray(new MappingContext[0])
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package pl.wavesoftware.utils.mapstruct.jpa;
2+
3+
/**
4+
* @author <a href="mailto:krzysztof.suszynski@wavesoftware.pl">Krzysztof Suszynski</a>
5+
* @since 04.05.18
6+
*/
7+
public interface CompositeContextBuilder {
8+
CompositeContextBuilder addContext(MappingContext... mappingContexts);
9+
CompositeContext build();
10+
}

src/main/java/pl/wavesoftware/utils/mapstruct/jpa/CompositeContextMapping.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/main/java/pl/wavesoftware/utils/mapstruct/jpa/JpaMappingContextImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private <I, O, C> void updateFromSourceTyped(I source, O managed) {
7373
Class<I> sourceClass = (Class<I>) source.getClass();
7474
Class<O> targetClass = (Class<O>) managed.getClass();
7575
C context = (C) storingMappingContext.get();
76-
Mapping<I, O, C> mapping = mappings.getMapping(sourceClass, targetClass);
76+
Mapping<I,O,C> mapping = mappings.getMapping(sourceClass, targetClass);
7777
mapping.accept(source, managed, context);
7878
}
7979
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
package pl.wavesoftware.utils.mapstruct.jpa;
22

3-
import lombok.Getter;
4-
import lombok.RequiredArgsConstructor;
53
import pl.wavesoftware.lang.TriConsumer;
64

75
/**
86
* @author <a href="mailto:krzysztof.suszynski@wavesoftware.pl">Krzysztof Suszynski</a>
9-
* @since 25.04.18
7+
* @since 04.05.18
108
*/
11-
@Getter
12-
@RequiredArgsConstructor
13-
public abstract class Mapping<I, O, C> implements TriConsumer<I, O, C> {
14-
private final Class<I> sourceClass;
15-
private final Class<O> targetClass;
16-
private final Class<C> contextClass;
9+
public interface Mapping<I, O, C> extends TriConsumer<I, O, C> {
10+
Class<I> getSourceClass();
11+
12+
Class<O> getTargetClass();
13+
14+
Class<C> getContextClass();
1715
}

0 commit comments

Comments
 (0)