Skip to content

Commit a13fdf8

Browse files
committed
Fix tests
1 parent c7241d9 commit a13fdf8

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

core/esmf-aspect-model-java-generator/src/main/java/org/eclipse/esmf/aspectmodel/java/AspectModelJavaUtil.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -685,26 +685,32 @@ public static String optionalExpression(
685685
codeGenerationConfig.importTracker().importExplicit( Optional.class );
686686
codeGenerationConfig.importTracker().importExplicit( DatatypeConstants.class );
687687

688+
// Enhanced pattern to match both Integer and Long valueOf calls
688689
final Pattern pattern = java.util.regex.Pattern.compile(
689-
"Integer\\s*\\.\\s*valueOf\\s*\\(\\s*matcher\\s*\\.\\s*group\\s*\\(\\s*(\\d+)\\s*\\)\\s*\\)"
690+
"(Integer|Long)\\s*\\.\\s*valueOf\\s*\\(\\s*matcher\\s*\\.\\s*group\\s*\\(\\s*(\\d+)\\s*\\)\\s*\\)"
690691
);
691692
Matcher matcher = pattern.matcher( expression );
692693
matcher.reset();
693694
boolean hasMatch = matcher.find();
694695

695696
if ( hasMatch ) {
696-
final String groupNum = matcher.group( 1 ).trim(); // Trim any captured whitespace
697+
final String numberType = matcher.group( 1 ).trim(); // "Integer" or "Long"
698+
final String groupNum = matcher.group( 2 ).trim(); // Group number
697699
final String target = matcher.group( 0 ); // The entire matched string
698700
final String modifiedExpression = expression.replace( target, "v" );
699701

700702
return "Optional.ofNullable(matcher.group(" + groupNum + "))"
701703
+ ".filter(v -> !v.isEmpty())"
702-
+ ".map(v -> Integer.valueOf(v))"
704+
+ ".map(v -> " + numberType + ".valueOf(v))"
703705
+ ".map(v -> "
704706
+ modifiedExpression
705707
+ ")";
706708
}
707709

708-
return expression;
710+
// If no specific pattern matched, wrap the entire expression in Optional.of()
711+
// This handles cases where the expression doesn't follow the matcher.group pattern
712+
return "Optional.ofNullable("
713+
+ expression
714+
+ ")";
709715
}
710716
}

core/esmf-aspect-model-java-generator/src/test/java/org/eclipse/esmf/aspectmodel/java/AspectModelJavaGeneratorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -624,9 +624,9 @@ void testGenerateAspectModelMultipleEntitiesOnMultipleLevelsWithoutJacksonAnnota
624624
void testGenerateAspectWithStructuredValue() throws IOException {
625625
final ImmutableMap<String, Object> expectedFieldsForAspectClass = ImmutableMap.<String, Object> builder()
626626
.put( "date", XMLGregorianCalendar.class )
627-
.put( "year", Long.class )
628-
.put( "month", Long.class )
629-
.put( "day", Long.class )
627+
.put( "year", new TypeToken<Optional<Long>>(){}.getType() )
628+
.put( "month", new TypeToken<Optional<Long>>(){}.getType() )
629+
.put( "day", new TypeToken<Optional<Long>>(){}.getType() )
630630
.build();
631631

632632
final ImmutableMap<String, Object> expectedConstructorArguments = ImmutableMap.<String, Object> builder()

core/esmf-aspect-model-java-generator/src/test/java/org/eclipse/esmf/aspectmodel/java/StaticMetaModelJavaGeneratorTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
import com.github.javaparser.ast.CompilationUnit;
4242
import com.google.common.collect.ImmutableMap;
43+
import com.google.common.reflect.TypeToken;
4344
import org.junit.jupiter.api.Test;
4445
import org.junit.jupiter.params.ParameterizedTest;
4546
import org.junit.jupiter.params.provider.EnumSource;
@@ -332,9 +333,9 @@ void testGenerateStaticMetaModelWithStructuredValue() throws IOException {
332333
result.assertFields( "MetaAspectWithNumericStructuredValue",
333334
fieldAssertions( "MetaAspectWithNumericStructuredValue" )
334335
.put( "_datatypeFactory", DatatypeFactory.class )
335-
.put( "YEAR", TypeTokens.staticProperty( aspectClass, Long.class ) )
336-
.put( "MONTH", TypeTokens.staticProperty( aspectClass, Long.class ) )
337-
.put( "DAY", TypeTokens.staticProperty( aspectClass, Long.class ) )
336+
.put( "YEAR", TypeTokens.staticContainerProperty( aspectClass, Long.class, new TypeToken<Optional<Long>>() {} ) )
337+
.put( "MONTH", TypeTokens.staticContainerProperty( aspectClass, Long.class, new TypeToken<Optional<Long>>() {} ) )
338+
.put( "DAY", TypeTokens.staticContainerProperty( aspectClass, Long.class, new TypeToken<Optional<Long>>() {} ) )
338339
.put( "DATE", TypeTokens.staticProperty( aspectClass, XMLGregorianCalendar.class ) ).build(), new HashMap<>() );
339340
}
340341

0 commit comments

Comments
 (0)