diff --git a/processor/pom.xml b/processor/pom.xml index b3f06dfa..5a741268 100644 --- a/processor/pom.xml +++ b/processor/pom.xml @@ -54,7 +54,7 @@ 1.1.1 - 0.8.0 + 0.9.0 3.20.0 4.5.0 6.0.1 diff --git a/processor/src/main/java/org/javahelpers/simple/builders/processor/util/JavapoetMapper.java b/processor/src/main/java/org/javahelpers/simple/builders/processor/util/JavapoetMapper.java index 7a407497..bdc986bd 100644 --- a/processor/src/main/java/org/javahelpers/simple/builders/processor/util/JavapoetMapper.java +++ b/processor/src/main/java/org/javahelpers/simple/builders/processor/util/JavapoetMapper.java @@ -77,11 +77,9 @@ public static TypeName map2ParameterType( instanceof org.javahelpers.simple.builders.processor.dtos.TypeNameVariable typeVariable) { return TypeVariableName.get(typeVariable.getClassName()); } - ClassName classNameParameter = - ClassName.get(parameterType.getPackageName(), parameterType.getClassName()); - if (parameterType instanceof TypeNameArray parameterTypeArray) { - return ArrayTypeName.of(map2ParameterType(parameterTypeArray.getTypeOfArray())); - } else if (parameterType instanceof TypeNamePrimitive parameterTypePrim) { + // Handle primitives BEFORE calling ClassName.get() to avoid IllegalArgumentException in + // JavaPoet 0.9.0+ + if (parameterType instanceof TypeNamePrimitive parameterTypePrim) { return switch (parameterTypePrim.getType()) { case BOOLEAN -> TypeName.BOOLEAN; case BYTE -> TypeName.BYTE; @@ -93,7 +91,14 @@ public static TypeName map2ParameterType( case SHORT -> TypeName.SHORT; default -> null; }; - } else if (parameterType instanceof TypeNameGeneric param) { + } + if (parameterType instanceof TypeNameArray parameterTypeArray) { + return ArrayTypeName.of(map2ParameterType(parameterTypeArray.getTypeOfArray())); + } + // Now safe to call ClassName.get() for non-primitive types + ClassName classNameParameter = + ClassName.get(parameterType.getPackageName(), parameterType.getClassName()); + if (parameterType instanceof TypeNameGeneric param) { // Handle raw types (e.g., List without ) - return just the class name if (param.getInnerTypeArguments().isEmpty()) { return classNameParameter;