Skip to content

Commit

Permalink
Adds support for Fugue Option to CriteriaModel
Browse files Browse the repository at this point in the history
  • Loading branch information
clamothe authored and asereda-gs committed Mar 19, 2020
1 parent 78c7c29 commit 207d631
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
6 changes: 6 additions & 0 deletions criteria/common/pom.xml
Expand Up @@ -91,6 +91,12 @@
<version>${jackson-databind.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.atlassian.fugue</groupId>
<artifactId>fugue</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
Expand Down
Expand Up @@ -184,6 +184,8 @@ public void string() {
checkCreator("string").not().contains("ModelCriteria.creator()");
assertAttribute("nullableString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R, java.lang.String>");
assertAttribute("optionalString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R,java.util.Optional<java.lang.String>>");
assertAttribute("guavaOptionalString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R,com.google.common.base.Optional<java.lang.String>>");
assertAttribute("fugue3OptionalString", "org.immutables.criteria.matcher.OptionalStringMatcher.Template<R,io.atlassian.fugue.Option<java.lang.String>>");
assertAttribute("stringList", "org.immutables.criteria.matcher.IterableMatcher.Template<R,org.immutables.criteria.matcher.StringMatcher.Template<R>,java.lang.String,java.util.List<java.lang.String>>");
checkCreator("stringList").contains("IterableMatcher.creator()");
checkCreator("arrayList").contains("IterableMatcher.creator()");
Expand Down Expand Up @@ -265,6 +267,8 @@ private ValueAttribute findAttribute(String name) {
interface Model {
String string();
Optional<String> optionalString();
com.google.common.base.Optional<String> guavaOptionalString();
io.atlassian.fugue.Option<String> fugue3OptionalString();
@Nullable String nullableString();
List<String> stringList();
String[] arrayList();
Expand Down
Expand Up @@ -200,7 +200,9 @@ private IntrospectedType optionalParameter() {
newType = elements.getTypeElement(Long.class.getName()).asType();
} else if ("java.util.OptionalDouble".equals(typeName)) {
newType = elements.getTypeElement(Double.class.getName()).asType();
} else if ("java.util.Optional".equals(erasure.toString()) || "com.google.common.base.Optional".equals(erasure.toString())) {
} else if ("java.util.Optional".equals(typeName)
|| "com.google.common.base.Optional".equals(typeName)
|| "io.atlassian.fugue.Option".equals(typeName)) {
newType = MoreTypes.asDeclared(type).getTypeArguments().get(0);
} else {
throw new IllegalArgumentException(String.format("%s is not an optional type", type));
Expand All @@ -218,8 +220,14 @@ public boolean useOptional() {
}

public boolean isOptional() {
final List<String> names = Arrays.asList("java.util.Optional", "java.util.OptionalInt",
"java.util.OptionalDouble", "java.util.OptionalLong", Optional.class.getName());
final List<String> names =
Arrays.asList(
"java.util.Optional",
"java.util.OptionalInt",
"java.util.OptionalDouble",
"java.util.OptionalLong",
Optional.class.getName(),
"io.atlassian.fugue.Option");

for (String name : names) {
final Element element = elements.getTypeElement(name);
Expand Down

0 comments on commit 207d631

Please sign in to comment.