Skip to content

Commit a75cf2f

Browse files
authored
Merge pull request #183 from bci-oss/bug/#182-static-code-generation
Bug/#182 static code generation
2 parents f8c0d5f + 91a1bd0 commit a75cf2f

File tree

2 files changed

+46
-9
lines changed

2 files changed

+46
-9
lines changed

core/sds-aspect-model-java-generator/src/main/java/io/openmanufacturing/sds/aspectmodel/java/ImportTracker.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
*/
2828
public class ImportTracker {
2929
private static final String GENERICS_START = "<";
30-
30+
private static final String EMPTY_STRING = "";
31+
private static final String COMMA_STRING = ",";
3132
private static final String TYPE_BRACKETS_AND_WHITESPACE = "[<>\\s]";
3233

3334
private final Set<String> usedImports = new HashSet<>();
@@ -46,14 +47,10 @@ public String getRawContainerType( final String parameterizedContainerType ) {
4647

4748
public void trackPotentiallyParameterizedType( final String potentiallyParameterizedType ) {
4849
if ( potentiallyParameterizedType.contains( GENERICS_START ) ) {
49-
final String rawContainerType = potentiallyParameterizedType.substring( 0,
50-
potentiallyParameterizedType.indexOf( GENERICS_START ) );
51-
final List<String> typeParameters = Arrays.asList( potentiallyParameterizedType
52-
.substring( potentiallyParameterizedType.indexOf( GENERICS_START ) + 1 )
53-
.replaceAll( TYPE_BRACKETS_AND_WHITESPACE, "" )
54-
.split( "," ) );
55-
usedImports.add( rawContainerType );
56-
usedImports.addAll( typeParameters );
50+
final List<String> types = Arrays.stream( potentiallyParameterizedType.split( GENERICS_START ) )
51+
.flatMap( substring -> Arrays.stream( substring.split( COMMA_STRING ) ) )
52+
.map( substring -> substring.replaceAll( TYPE_BRACKETS_AND_WHITESPACE, EMPTY_STRING ) ).collect( Collectors.toList() );
53+
usedImports.addAll( types );
5754
} else {
5855
usedImports.add( potentiallyParameterizedType );
5956
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.openmanufacturing.sds.aspectmodel.java;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
class ImportTrackerTest {
8+
@Test
9+
void testType() {
10+
var importTracker = new ImportTracker();
11+
var type = "java.lang.Long";
12+
importTracker.trackPotentiallyParameterizedType( type );
13+
assertThat( importTracker.getUsedImports() ).containsExactlyInAnyOrder( "java.lang.Long" );
14+
}
15+
16+
@Test
17+
void testGenericType() {
18+
var importTracker = new ImportTracker();
19+
var type = "java.util.LinkedHashSet<java.lang.Long>>";
20+
importTracker.trackPotentiallyParameterizedType( type );
21+
assertThat( importTracker.getUsedImports() ).containsExactlyInAnyOrder( "java.lang.Long", "java.util.LinkedHashSet" );
22+
}
23+
24+
@Test
25+
void testOptionalGenericType() {
26+
var importTracker = new ImportTracker();
27+
var type = "java.util.Optional<java.util.LinkedHashSet<java.lang.Long>>";
28+
importTracker.trackPotentiallyParameterizedType( type );
29+
assertThat( importTracker.getUsedImports() ).containsExactlyInAnyOrder( "java.util.Optional", "java.util.LinkedHashSet", "java.lang.Long" );
30+
}
31+
32+
@Test
33+
void testDoubleGenericType() {
34+
var importTracker = new ImportTracker();
35+
var type = "test.importTracker.StaticContainerProperty<test.importTracker.TestEntity,java.util.Optional<test.importTracker.TestEntity>>";
36+
importTracker.trackPotentiallyParameterizedType( type );
37+
assertThat( importTracker.getUsedImports() ).containsExactlyInAnyOrder( "test.importTracker.StaticContainerProperty", "test.importTracker.TestEntity",
38+
"java.util.Optional" );
39+
}
40+
}

0 commit comments

Comments
 (0)