Skip to content

Commit 98bfc15

Browse files
author
Daniel Bustamante Ospina
committed
Add Object mapper for lombok builders (Utils)
1 parent 30b5a5c commit 98bfc15

File tree

4 files changed

+151
-0
lines changed

4 files changed

+151
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
plugins {
2+
id "com.jfrog.bintray" version "1.8.4"
3+
id 'java-library'
4+
id 'maven'
5+
id 'maven-publish'
6+
}
7+
8+
def pomConfig = {
9+
licenses {
10+
license {
11+
name "The Apache Software License, Version 2.0"
12+
url "http://www.apache.org/licenses/LICENSE-2.0.txt"
13+
distribution "repo"
14+
}
15+
}
16+
developers {
17+
developer {
18+
id "danielbustamante"
19+
name "Daniel Bustamante Ospina"
20+
email "daniel.bustamante@sofka.com.co"
21+
}
22+
}
23+
24+
scm {
25+
url "git@github.com:reactive-commons/reactive-commons-java.git"
26+
}
27+
}
28+
29+
30+
publishing {
31+
publications {
32+
MyPublication(MavenPublication) {
33+
from components.java
34+
artifact sourcesJar {
35+
classifier "sources"
36+
}
37+
artifact javadocJar {
38+
classifier "javadoc"
39+
}
40+
groupId 'org.reactivecommons.utils'
41+
artifactId 'object-mapper'
42+
version project.property('version')
43+
pom.withXml {
44+
def root = asNode()
45+
root.appendNode('description', 'Simple Object Mapper for Lombok builders (Enable inmutability)')
46+
root.appendNode('name', 'object-mapper')
47+
root.appendNode('url', 'http://reactivecommons.org')
48+
root.children().last() + pomConfig
49+
}
50+
}
51+
}
52+
}
53+
54+
bintray {
55+
user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
56+
key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
57+
publications = ['MyPublication']
58+
publish = true
59+
pkg {
60+
repo = 'maven-artifacts'
61+
name = 'reactive-commons'
62+
userOrg = 'reactive-commons'
63+
licenses = ['Apache-2.0']
64+
vcsUrl = 'git@github.com:reactive-commons/reactive-commons-java.git'
65+
version {
66+
name = project.property('version')
67+
desc = 'First version'
68+
released = new Date()
69+
vcsTag = project.property('version')
70+
}
71+
}
72+
}
73+
74+
dependencies {
75+
compile group: 'org.modelmapper', name: 'modelmapper', version: '1.1.3'
76+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.reactivecommons.utils;
2+
3+
import org.modelmapper.internal.util.Strings;
4+
import org.modelmapper.spi.NameTransformer;
5+
import org.modelmapper.spi.NameableType;
6+
7+
class LombokBuilderNameTransformer implements NameTransformer {
8+
9+
public static final NameTransformer INSTANCE = new LombokBuilderNameTransformer();
10+
11+
@Override
12+
public String transform(final String name, final NameableType nameableType) {
13+
return Strings.decapitalize(name);
14+
}
15+
16+
@Override
17+
public String toString() {
18+
return "Lombok @Builder Mutator";
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.reactivecommons.utils;
2+
3+
import org.modelmapper.spi.NamingConvention;
4+
import org.modelmapper.spi.PropertyType;
5+
6+
class LombokBuilderNamingConvention implements NamingConvention {
7+
8+
static LombokBuilderNamingConvention INSTANCE = new LombokBuilderNamingConvention();
9+
10+
@Override
11+
public boolean applies(String propertyName, PropertyType propertyType) {
12+
return PropertyType.METHOD.equals(propertyType);
13+
}
14+
15+
@Override
16+
public String toString() {
17+
return "Lombok @Builder Naming Convention";
18+
}
19+
20+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.reactivecommons.utils;
2+
3+
import org.modelmapper.ModelMapper;
4+
import org.modelmapper.convention.MatchingStrategies;
5+
6+
public class ObjectMapperI {
7+
8+
private static final ModelMapper mapper = createObjectModelMapper();
9+
private static final ModelMapper mMapper = createModelMapper();
10+
11+
private static ModelMapper createModelMapper(){
12+
ModelMapper modelMapper = new ModelMapper();
13+
modelMapper.getConfiguration()
14+
.setMatchingStrategy(MatchingStrategies.STRICT)
15+
.setDestinationNamingConvention(LombokBuilderNamingConvention.INSTANCE)
16+
.setDestinationNameTransformer(LombokBuilderNameTransformer.INSTANCE);
17+
return modelMapper;
18+
}
19+
20+
private static ModelMapper createObjectModelMapper(){
21+
ModelMapper modelMapper = new ModelMapper();
22+
modelMapper.getConfiguration()
23+
.setMatchingStrategy(MatchingStrategies.STRICT);
24+
return modelMapper;
25+
}
26+
27+
public <T> T map(Object src, Class<T> target) {
28+
return mapper.map(src, target);
29+
}
30+
31+
public <T> T mapBuilder(Object src, Class<T> target) {
32+
return mMapper.map(src, target);
33+
}
34+
35+
}

0 commit comments

Comments
 (0)