diff --git a/README.md b/README.md
index 49fe8a9d..24003fab 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Java Client Library (beta)
-* Latest released version 0.13.0
-* Latest snapshot version 0.13.1-SNAPSHOT
+* Latest released version 0.14.0
+* Latest snapshot version 0.14.1-SNAPSHOT
## Introduction
Welcome my friends! This is the Poly API Java client GitHub page. If you are here, then it means you're familiar with what we do at Poly. If you aren't, you can always check [here](https://github.com/polyapi/poly-alpha).
@@ -55,7 +55,7 @@ Nice to have some customers looking around here! So, you'll need to run the foll
2. **Update the project.** Add the following to your project's `pom.xml`:
```xml
- 0.12.0
+ 0.13.1
diff --git a/commons/pom.xml b/commons/pom.xml
index ee731e16..d94f93c6 100644
--- a/commons/pom.xml
+++ b/commons/pom.xml
@@ -4,7 +4,7 @@
io.polyapi
parent-pom
- 0.13.2-SNAPSHOT
+ 0.14.0-SNAPSHOT
../parent-pom
diff --git a/library/pom.xml b/library/pom.xml
index b2b8de6c..b70b7173 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -4,7 +4,7 @@
io.polyapi
parent-pom
- 0.13.2-SNAPSHOT
+ 0.14.0-SNAPSHOT
../parent-pom
library
diff --git a/parent-pom/pom.xml b/parent-pom/pom.xml
index c3e562a2..6af5592c 100644
--- a/parent-pom/pom.xml
+++ b/parent-pom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
io.polyapi
parent-pom
- 0.13.2-SNAPSHOT
+ 0.14.0-SNAPSHOT
pom
Poly API Java parent POM
https://polyapi.io
diff --git a/polyapi-maven-plugin/pom.xml b/polyapi-maven-plugin/pom.xml
index 8a2d4977..895da1e2 100644
--- a/polyapi-maven-plugin/pom.xml
+++ b/polyapi-maven-plugin/pom.xml
@@ -4,7 +4,7 @@
io.polyapi
parent-pom
- 0.13.2-SNAPSHOT
+ 0.14.0-SNAPSHOT
../parent-pom
polyapi-maven-plugin
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/ParsedType.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/ParsedType.java
index 2ee5a963..7afd5eb3 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/ParsedType.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/ParsedType.java
@@ -25,7 +25,7 @@ public ParsedType(String baseClass) {
public ParsedType(Type type) {
if (type instanceof ParameterizedType parameterizedType) {
- this.baseClass = parameterizedType.getTypeName();
+ this.baseClass = parameterizedType.getRawType().getTypeName();
this.typeParameters = Arrays.stream(parameterizedType.getActualTypeArguments()).map(ParsedType::new).toList();
} else {
this.baseClass = type.getTypeName();
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/PolyType.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/PolyType.java
index 850b1623..531eb42c 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/PolyType.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/PolyType.java
@@ -6,6 +6,7 @@
import io.polyapi.commons.api.model.PolyObject;
import io.polyapi.plugin.model.type.basic.ArrayPolyType;
import io.polyapi.plugin.model.type.basic.PlainPolyType;
+import io.polyapi.plugin.model.type.basic.AnyPolyType;
import io.polyapi.plugin.model.type.basic.VoidPolyType;
import io.polyapi.plugin.model.type.complex.ObjectPolyType;
import io.polyapi.plugin.model.type.function.FunctionPolyType;
@@ -17,7 +18,8 @@
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "kind",
- visible = true
+ visible = true,
+ defaultImpl = AnyPolyType.class
)
@JsonSubTypes({
@JsonSubTypes.Type(value = VoidPolyType.class, name = "void"),
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/basic/AnyPolyType.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/basic/AnyPolyType.java
new file mode 100644
index 00000000..a9ee537b
--- /dev/null
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/type/basic/AnyPolyType.java
@@ -0,0 +1,18 @@
+package io.polyapi.plugin.model.type.basic;
+
+import io.polyapi.plugin.model.type.PolyType;
+import io.polyapi.plugin.model.type.complex.MapObjectPolyType;
+import io.polyapi.plugin.model.visitor.TypeVisitor;
+
+public class AnyPolyType extends PolyType implements MapObjectPolyType {
+
+ @Override
+ public void accept(TypeVisitor visitor) {
+ visitor.visit(MapObjectPolyType.class.cast(this));
+ }
+
+ @Override
+ public String getTypeName() {
+ return "any";
+ }
+}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/TypeVisitor.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/TypeVisitor.java
index c514f239..35f19a9f 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/TypeVisitor.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/TypeVisitor.java
@@ -5,6 +5,7 @@
import io.polyapi.plugin.model.type.PropertyPolyType;
import io.polyapi.plugin.model.type.basic.ArrayPolyType;
import io.polyapi.plugin.model.type.basic.PlainPolyType;
+import io.polyapi.plugin.model.type.basic.AnyPolyType;
import io.polyapi.plugin.model.type.basic.VoidPolyType;
import io.polyapi.plugin.model.type.complex.*;
import io.polyapi.plugin.model.type.complex.MapObjectPolyType;
@@ -84,4 +85,9 @@ default void visit(PrimitivePolyType type) {
log.trace("Visiting PrimitivePolyType.");
visit((PolyType) type);
}
+
+ default void visit(AnyPolyType type) {
+ log.trace("Visiting AnyPolyType.");
+ visit((MapObjectPolyType) type);
+ }
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/DeploymentServiceImpl.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/DeploymentServiceImpl.java
index b43add77..2bb72398 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/DeploymentServiceImpl.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/DeploymentServiceImpl.java
@@ -122,8 +122,12 @@ public List deployFunctions(List functionFilters, boolean
Arrays.stream(method.getParameters()).map(parameter -> {
log.debug("Processing parameter {}", parameter);
PolyFunctionArgument argument = new PolyFunctionArgument();
- argument.setType(parameter.getParameterizedType().getTypeName());
- argument.setTypeSchema(jsonParser.toJsonSchema(parameter.getParameterizedType()));
+ if (parameter.getType().equals(Map.class)) {
+ argument.setType("any");
+ } else {
+ argument.setType(parameter.getParameterizedType().getTypeName());
+ argument.setTypeSchema(jsonParser.toJsonSchema(parameter.getParameterizedType()));
+ }
argument.setRequired(true);
argument.setKey(parameter.getName());
argument.setName(parameter.getName());
@@ -137,10 +141,13 @@ public List deployFunctions(List functionFilters, boolean
"java.lang.Short", "java.lang.Byte" -> "number";
case "java.lang.Boolean" -> "boolean";
case "java.lang.String", "java.lang.Character" -> "string";
+ case "java.util.Map" -> "any";
case "void" -> "void";
default -> "object";
});
- Optional.of(method.getGenericReturnType()).filter(not(isEqual(Void.TYPE))).map(jsonParser::toJsonSchema).map(schema -> jsonParser.