Skip to content

Commit

Permalink
fix: @ConfigProperty for java.util.Duration with defaultValue flagged as
Browse files Browse the repository at this point in the history
error

Fixes #1207

Signed-off-by: azerr <[email protected]>
  • Loading branch information
angelozerr committed Aug 12, 2024
1 parent 869ead4 commit c4c80e8
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import javax.ws.rs.Path;
import org.eclipse.microprofile.config.inject.ConfigProperty;

import java.time.Duration;

@Path("/greeting")
public class DefaultValueResource {

Expand Down Expand Up @@ -35,4 +37,30 @@ public class DefaultValueResource {

@ConfigProperty(name = "greeting10", defaultValue="AB")
char greeting10;

@ConfigProperty(name = "greeting11", defaultValue="AB")
char greeting11;

@ConfigProperty(name = "greeting1_1", defaultValue="1")
int greeting1_1;

@ConfigProperty(name = "greeting2_1", defaultValue="1")
Integer greeting2_1;

public static enum Profile {
admin,
user
}

@ConfigProperty(name = "app.duration", defaultValue = "PT15M")
Duration duration;

@ConfigProperty(name = "app.duration", defaultValue = "PT15")
Duration durationWithError;

@ConfigProperty(name = "profile", defaultValue = "user")
Profile profile;

@ConfigProperty(name = "profile", defaultValue = "userXXX")
Profile profileWithError;
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@
import org.eclipse.lsp4mp.commons.utils.AntPathMatcher;

import java.text.MessageFormat;
import java.time.Duration;
import java.util.List;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import java.util.stream.Stream;

import static com.redhat.devtools.intellij.lsp4mp4ij.psi.core.MicroProfileConfigConstants.*;
import static com.redhat.devtools.intellij.lsp4mp4ij.psi.core.utils.AnnotationUtils.getAnnotationMemberValueExpression;
Expand Down Expand Up @@ -274,7 +276,24 @@ private static boolean isAssignable(String typeFqn, String value, Module javaPro
return PsiTypeUtils.findType(javaProject, value) != null;
case "java.lang.String":
return true;
case "java.time.Duration":
try {
Duration.parse(value);
return true;
}
catch(Exception e) {
return false;
}
default:
PsiClass type = PsiTypeUtils.findType(javaProject, typeFqn);
if (type != null) {
if (type.isEnum()) {
return Stream.of(type.getFields())
.anyMatch(e -> e.getName().equals(value));


}
}
return false;
}
} catch (NumberFormatException e) {
Expand Down

0 comments on commit c4c80e8

Please sign in to comment.