diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml
new file mode 100644
index 00000000..2da55cde
--- /dev/null
+++ b/.github/workflows/maven-publish.yml
@@ -0,0 +1,42 @@
+name: Release
+
+on:
+ push:
+ branches:
+ - 'main'
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ server-id: github
+ settings-path: ${{ github.workspace }}
+
+ - uses: s4u/maven-settings-action@v3.0.0
+ with:
+ servers: '[{"id": "ossrh", "username": "${{ secrets.DISTRIBUTION_REPOSITORY_RELEASE_USERNAME }}", "password": "${{ secrets.DISTRIBUTION_REPOSITORY_RELEASE_PASSWORD }}"}]'
+ - name: Release to production
+ run: mvn clean release:clean release:prepare release:perform -B -DaltDeploymentRepository=ossrh::https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
+
+ - name: Delete sample post-production verification function
+ run: mvn clean polyapi:delete-function -Dcontext=io.polyapi.deploy.verification -Dname=verification-function
+
+ - name: Deploy sample post-production verification function
+ run: mvn polyapi:deploy-functions // Complete this
+
+ - name: Generate sources for sample post-production verification function
+ run: mvn clean compile // Fix this
+
+ - name: Execute post-production verification function
+ run: mvn clean verify
\ No newline at end of file
diff --git a/README.md b/README.md
index 036e522a..18b94486 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Java Client Library (beta)
-* Latest released version 0.9.3
-* Latest snapshot version 0.10.0-SNAPSHOT
+* Latest released version 0.10.1
+* Latest snapshot version 0.11.0-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.9.3
+ 0.10.1
@@ -227,6 +227,22 @@ Here's the list of parameters:
- **functions:** Comma separated value containing the names of the functions to deploy. The functions must be annotated with the `@PolyFunction` annotation as it is described. This parameter triggers a filter by function name and/or context + function name in the `[context].[functionName]` format. Each comma separated value will be taken independently and deployed.
- **dry-run:** Flag that when added makes the MOJO prepare everything for a deployment but not do it. This is for debugging purposes.
+#### delete-function
+This MOJO doesn't require a project to run.
+
+It deletes a server/client/api/auth function, webhook or variable from the Poly server. It can take 2 types of inputs:
+ - **id**: Deletes the entity with the matching ID.
+ - **contxt/function name**: Deletes the entity that matches the context and function name. It's case insensitive, but will fall back to be case sensitive in case that there are 2 or more matches with different cases. If none of those cases match exactly, it will throw an error.
+
+##### Parameters
+Here's the list of parameters:
+- **host (required):** The host where the Poly API instance is hosted.
+- **port:** The port that the Poly API instance is listening to. Default value is 443.
+- **apiKey (required):** The API key required to authenticate to Poly.
+- **id:** ID of the entity to delete. Cannot coexist with either `functionName` nor `context` arguments.
+- **functionName:** Name of the function to delete. Cannot coexist with `id` argument. Mandatory unless `id` is set.
+- **context:** Context of the function to delete. Cannot coexist with `id` argument. Mandatory unless `id` is set.
+
## Usage
diff --git a/commons/pom.xml b/commons/pom.xml
index 5d4c84cc..14e9be40 100644
--- a/commons/pom.xml
+++ b/commons/pom.xml
@@ -4,7 +4,7 @@
io.polyapi
parent-pom
- 0.10.2-SNAPSHOT
+ 0.11.0-SNAPSHOT
../parent-pom
diff --git a/commons/src/main/java/io/polyapi/commons/api/service/PolyApiService.java b/commons/src/main/java/io/polyapi/commons/api/service/PolyApiService.java
index 770f7f78..c87f6599 100644
--- a/commons/src/main/java/io/polyapi/commons/api/service/PolyApiService.java
+++ b/commons/src/main/java/io/polyapi/commons/api/service/PolyApiService.java
@@ -60,6 +60,15 @@ public void patch(String relativePath, Map> headers, Ma
parsedCall(PATCH, relativePath, headers, queryParams, body, Void.TYPE);
}
+ public void delete(String relativePath) {
+ delete(relativePath, new HashMap<>(), new HashMap<>(), null);
+ }
+
+
+ public void delete(String relativePath, Map> headers, Map> queryParams, I body) {
+ parsedCall(DELETE, relativePath, headers, queryParams, body, Void.TYPE);
+ }
+
private O parsedCall(HttpMethod method, String relativePath, Map> headers, Map> queryParams, I body, Type expectedResponseType) {
Map> allHeaders = new HashMap<>();
allHeaders.put("Accept", List.of("application/json"));
diff --git a/library/pom.xml b/library/pom.xml
index 0f3dd8d6..d3823325 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -4,7 +4,7 @@
io.polyapi
parent-pom
- 0.10.2-SNAPSHOT
+ 0.11.0-SNAPSHOT
../parent-pom
library
diff --git a/parent-pom/pom.xml b/parent-pom/pom.xml
index f4c2f8be..fc9118b7 100644
--- a/parent-pom/pom.xml
+++ b/parent-pom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
io.polyapi
parent-pom
- 0.10.2-SNAPSHOT
+ 0.11.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 194479fb..312887c8 100644
--- a/polyapi-maven-plugin/pom.xml
+++ b/polyapi-maven-plugin/pom.xml
@@ -4,7 +4,7 @@
io.polyapi
parent-pom
- 0.10.2-SNAPSHOT
+ 0.11.0-SNAPSHOT
../parent-pom
polyapi-maven-plugin
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/function/UnclearFunctionReferenceException.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/function/UnclearFunctionReferenceException.java
new file mode 100644
index 00000000..622fca46
--- /dev/null
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/function/UnclearFunctionReferenceException.java
@@ -0,0 +1,15 @@
+package io.polyapi.plugin.error.function;
+
+import io.polyapi.plugin.error.PolyApiMavenPluginException;
+
+import java.util.List;
+
+import static java.lang.String.format;
+import static java.lang.String.join;
+
+public class UnclearFunctionReferenceException extends PolyApiMavenPluginException {
+
+ public UnclearFunctionReferenceException(String expectedReference, List retrievedReferences) {
+ super(format("Unclear function reference. Expected '%s', but found '%s'. Please retry with a specific case sensitive one.", expectedReference, join(", ", retrievedReferences)));
+ }
+}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/validation/BadExclusionException.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/validation/BadExclusionException.java
new file mode 100644
index 00000000..468ada57
--- /dev/null
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/validation/BadExclusionException.java
@@ -0,0 +1,9 @@
+package io.polyapi.plugin.error.validation;
+
+import static java.lang.String.format;
+
+public class BadExclusionException extends ValidationException {
+ public BadExclusionException(String propertyName, String excludedPropertyName) {
+ super(propertyName, format("Property '%s' cannot be set at the same time as property '%s'.", "%s", excludedPropertyName));
+ }
+}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/validation/InvalidUUIDException.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/validation/InvalidUUIDException.java
new file mode 100644
index 00000000..a3f6283f
--- /dev/null
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/error/validation/InvalidUUIDException.java
@@ -0,0 +1,9 @@
+package io.polyapi.plugin.error.validation;
+
+import static java.lang.String.format;
+
+public class InvalidUUIDException extends ValidationException {
+ public InvalidUUIDException(String propertyName, String propertyValue, Throwable cause) {
+ super(propertyName, format("Property '%s' with value '%s' doesn't match UUID format.", propertyName, propertyValue), cause);
+ }
+}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/Specification.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/Specification.java
index 609b26c1..d557e5b2 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/Specification.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/Specification.java
@@ -14,7 +14,7 @@
import io.polyapi.plugin.model.specification.function.ApiFunctionSpecification;
import io.polyapi.plugin.model.specification.function.AuthFunctionSpecification;
-import io.polyapi.plugin.model.specification.function.CustomFunctionSpecification;
+import io.polyapi.plugin.model.specification.function.ClientFunctionSpecification;
import io.polyapi.plugin.model.specification.function.ServerFunctionSpecification;
import io.polyapi.plugin.model.specification.variable.ServerVariableSpecification;
import io.polyapi.plugin.model.specification.webhook.WebhookHandleSpecification;
@@ -32,7 +32,7 @@
)
@JsonSubTypes({
@JsonSubTypes.Type(value = ApiFunctionSpecification.class, name = "apiFunction"),
- @JsonSubTypes.Type(value = CustomFunctionSpecification.class, name = "customFunction"),
+ @JsonSubTypes.Type(value = ClientFunctionSpecification.class, name = "customFunction"),
@JsonSubTypes.Type(value = ServerFunctionSpecification.class, name = "serverFunction"),
@JsonSubTypes.Type(value = AuthFunctionSpecification.class, name = "authFunction"),
@JsonSubTypes.Type(value = WebhookHandleSpecification.class, name = "webhookHandle"),
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/function/CustomFunctionSpecification.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/function/ClientFunctionSpecification.java
similarity index 85%
rename from polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/function/CustomFunctionSpecification.java
rename to polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/function/ClientFunctionSpecification.java
index 0fc0a5a0..e670ddac 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/function/CustomFunctionSpecification.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/specification/function/ClientFunctionSpecification.java
@@ -6,14 +6,14 @@
@Getter
@Setter
-public class CustomFunctionSpecification extends FunctionSpecification {
+public class ClientFunctionSpecification extends FunctionSpecification {
private String[] requirements;
private String code;
private String language;
@Override
protected String getSpecificationSubtype() {
- return "custom";
+ return "client";
}
@Override
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/PolySpecificationVisitor.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/PolySpecificationVisitor.java
index bca0cb48..de755429 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/PolySpecificationVisitor.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/model/visitor/PolySpecificationVisitor.java
@@ -29,7 +29,7 @@ default void visit(ServerFunctionSpecification specification) {
visit((FunctionSpecification) specification);
}
- default void visit(CustomFunctionSpecification specification) {
+ default void visit(ClientFunctionSpecification specification) {
log.trace("Visiting CustomFunctionSpecification.");
visit((FunctionSpecification) specification);
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/DeleteFunctionMojo.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/DeleteFunctionMojo.java
new file mode 100644
index 00000000..518d6698
--- /dev/null
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/DeleteFunctionMojo.java
@@ -0,0 +1,53 @@
+package io.polyapi.plugin.mojo;
+
+import io.polyapi.plugin.error.validation.BadExclusionException;
+import io.polyapi.plugin.service.PolyFunctionService;
+import io.polyapi.plugin.service.PolyFunctionServiceImpl;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.util.Optional;
+
+import static io.polyapi.plugin.mojo.validation.Validator.validateNotEmpty;
+import static io.polyapi.plugin.mojo.validation.Validator.validateUUIDFormat;
+import static org.apache.commons.lang.StringUtils.isNotBlank;
+
+@Slf4j
+@Setter
+@Mojo(name = "delete-function", requiresProject = false)
+public class DeleteFunctionMojo extends PolyApiMojo {
+ @Parameter(property = "functionName")
+ private String functionName;
+
+ @Parameter(property = "context")
+ private String context;
+
+ @Parameter(property = "id")
+ private String id;
+
+
+ @Override
+ protected void execute(String host, Integer port) {
+ log.info("Initiating deletion of Poly function.");
+ PolyFunctionService service = new PolyFunctionServiceImpl(getHttpClient(), getJsonParser(), host, port);
+ Optional.ofNullable(id)
+ .ifPresentOrElse(functionId -> {
+ if (isNotBlank(functionName)) {
+ throw new BadExclusionException("id", "functionName");
+ }
+ if (isNotBlank(context)) {
+ throw new BadExclusionException("id", "context");
+ }
+ validateUUIDFormat("id", functionId);
+ service.delete(functionId);
+ },
+ () -> {
+ validateNotEmpty("functionName", functionName);
+ validateNotEmpty("context", context);
+ service.delete(context, functionName);
+ });
+ log.info("Poly function deletion complete.");
+ }
+}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/validation/Validator.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/validation/Validator.java
index 0902f70e..93b12053 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/validation/Validator.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/mojo/validation/Validator.java
@@ -2,11 +2,14 @@
import io.polyapi.plugin.error.validation.InexistentFileException;
import io.polyapi.plugin.error.validation.InvalidPortNumberException;
+import io.polyapi.plugin.error.validation.InvalidPropertyException;
+import io.polyapi.plugin.error.validation.InvalidUUIDException;
import io.polyapi.plugin.error.validation.NullOrEmptyValueException;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.util.Optional;
+import java.util.UUID;
import static java.util.function.Predicate.not;
@@ -54,4 +57,14 @@ public static void validatePortFormat(String propertyName, String property) {
throw new InvalidPortNumberException(propertyName, property, e);
}
}
+
+ public static void validateUUIDFormat(String propertyName, String property) {
+ try {
+ log.debug("Validating that property '{}' has a valid key format.", propertyName);
+ validateNotEmpty(propertyName, property);
+ UUID.fromString(property);
+ } catch (IllegalArgumentException e) {
+ throw new InvalidUUIDException(propertyName, property, e);
+ }
+ }
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/MavenService.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/MavenService.java
index b7674b24..d9ed5f7e 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/MavenService.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/MavenService.java
@@ -28,6 +28,7 @@
import javax.lang.model.SourceVersion;
import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.model.Build;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
import org.apache.maven.project.MavenProject;
@@ -66,7 +67,7 @@ public void getPropertyFromPlugin(String propertyName, String currentValue, Cons
public String getPropertyFromPlugin(String pluginGroupId, String pluginArtifactId, String propertyName) {
log.debug("Scanning plugins.");
- List plugins = project.getBuild().getPlugins();
+ List plugins = Optional.ofNullable(project).map(MavenProject::getBuild).map(Build::getPlugins).orElseGet(ArrayList::new);
log.debug("Found {} plugins. Filtering by group ID matching '{}' and artifact ID matching '{}'.", plugins.size(), pluginGroupId, pluginArtifactId);
return plugins.stream()
.filter(plugin -> pluginGroupId.equals(plugin.getGroupId()))
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionService.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionService.java
index 2721766c..da23cf01 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionService.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionService.java
@@ -5,4 +5,8 @@
public interface PolyFunctionService {
PolyFunction deploy(String type, PolyFunction polyFunction);
+
+ void delete(String context, String name);
+
+ void delete(String id);
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionServiceImpl.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionServiceImpl.java
index facdbef3..4dd6d37e 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionServiceImpl.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/PolyFunctionServiceImpl.java
@@ -3,16 +3,22 @@
import io.polyapi.commons.api.http.HttpClient;
import io.polyapi.commons.api.json.JsonParser;
import io.polyapi.commons.api.service.PolyApiService;
+import io.polyapi.plugin.error.function.UnclearFunctionReferenceException;
import io.polyapi.plugin.model.function.PolyFunction;
+import io.polyapi.plugin.model.specification.Specification;
import lombok.extern.slf4j.Slf4j;
+import java.util.List;
+
import static java.lang.String.format;
@Slf4j
public class PolyFunctionServiceImpl extends PolyApiService implements PolyFunctionService {
+ private final SpecificationService specificationService;
public PolyFunctionServiceImpl(HttpClient client, JsonParser jsonParser, String host, Integer port) {
super(client, jsonParser, host, port);
+ this.specificationService = new SpecificationServiceImpl(client, jsonParser, host, port);
}
@Override
@@ -22,4 +28,62 @@ public PolyFunction deploy(String type, PolyFunction polyFunction) {
log.info("Deployment of {} function '{}' on context'{}' successful.", type, polyFunction.getName(), polyFunction.getContext());
return function;
}
+
+ @Override
+ public void delete(String context, String name) {
+ log.info("Deleting function '{}' on context '{}'.", name, context);
+ List specifications = specificationService.list(List.of())
+ .stream()
+ .filter(spec -> spec.getName().equalsIgnoreCase(name) && spec.getContext().equalsIgnoreCase(context))
+ .toList();
+ if (specifications.size() > 1) {
+ List filteredSpecifications = specifications.stream()
+ .filter(function -> function.getName().equals(name) && function.getContext().equals(context))
+ .toList();
+ if (filteredSpecifications.isEmpty()) {
+ throw new UnclearFunctionReferenceException(toReference(context, name), specifications.stream()
+ .map(function -> toReference(function.getContext(), function.getName()))
+ .toList());
+ } else {
+ specifications = filteredSpecifications;
+ }
+ }
+ specifications.stream().findAny()
+ .ifPresentOrElse(this::delete, () -> log.warn("No function named '{}' on context '{}' has been deleted.", name, context));
+ }
+
+ @Override
+ public void delete(String id) {
+ specificationService.list(List.of()).stream()
+ .filter(specification -> specification.getId().equals(id))
+ .forEach(this::delete);
+ }
+
+ private void delete(Specification specification) {
+ log.info("Deleting function with ID '{}'.", specification.getId());
+ String relativePath = "";
+ switch (specification.getType()) {
+ case "apiFunction":
+ case "customFunction":
+ case "serverFunction":
+ relativePath = specification.getType().toLowerCase().replace("function", "");
+ break;
+ case "authFunction":
+ relativePath = "auth-providers";
+ break;
+ case "webhookHandle":
+ relativePath = "webhooks";
+ break;
+ case "serverVariable":
+ relativePath = "variables";
+ break;
+ }
+ log.info(format("functions/%s/%s", relativePath, specification.getId()));
+ super.delete(format("functions/%s/%s", relativePath, specification.getId()));
+ log.info("Function with ID '{}'.", specification.getId());
+ }
+
+ private String toReference(String context, String name) {
+ return format("%s.%s", context, name);
+ }
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/SpecificationServiceImpl.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/SpecificationServiceImpl.java
index 63490c50..9577d93f 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/SpecificationServiceImpl.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/SpecificationServiceImpl.java
@@ -38,7 +38,7 @@ public List list(List contextFilters) {
.filter(not(IgnoredSpecification.class::isInstance))
.filter(specification -> {
String context = specification.getContext().trim().toLowerCase();
- return contextFilters.stream()
+ return contextFilters.isEmpty() || contextFilters.stream()
.map(String::trim)
.map(String::toLowerCase)
.anyMatch(contextFilter -> contextFilter.equalsIgnoreCase(context) || contextFilter.isEmpty() || context.startsWith(format("%s.", contextFilter)));
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyGenerationServiceImpl.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyGenerationServiceImpl.java
index 303afcb2..09d02d14 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyGenerationServiceImpl.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyGenerationServiceImpl.java
@@ -5,7 +5,7 @@
import io.polyapi.plugin.model.generation.Context;
import io.polyapi.plugin.model.generation.ResolvedContext;
import io.polyapi.plugin.model.specification.Specification;
-import io.polyapi.plugin.model.specification.function.CustomFunctionSpecification;
+import io.polyapi.plugin.model.specification.function.ClientFunctionSpecification;
import io.polyapi.plugin.model.specification.function.FunctionSpecification;
import io.polyapi.plugin.model.specification.variable.ServerVariableSpecification;
import io.polyapi.plugin.model.specification.webhook.WebhookHandleSpecification;
@@ -72,7 +72,7 @@ private void writeContext(String rootName, List specifications, b
var rootContext = new Context(null, rootName);
specifications.stream()
.filter(specification -> Arrays.stream(filter).anyMatch(clazz -> clazz.isInstance(specification)))
- .filter(specification -> !(specification instanceof CustomFunctionSpecification customFunctionSpecification && !customFunctionSpecification.isJava()))
+ .filter(specification -> !(specification instanceof ClientFunctionSpecification clientFunctionSpecification && !clientFunctionSpecification.isJava()))
.forEach(specification -> createContext(rootContext, Stream.of(specification.getContext().split("\\.")).filter(not(String::isEmpty)).toList(), specification));
generate(rootContext, overwrite);
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyObjectResolverService.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyObjectResolverService.java
index 82ea9319..fc5190ad 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyObjectResolverService.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/generation/PolyObjectResolverService.java
@@ -17,7 +17,7 @@
import io.polyapi.plugin.model.generation.ResolvedContext;
import io.polyapi.plugin.model.specification.function.ApiFunctionSpecification;
import io.polyapi.plugin.model.specification.function.AuthFunctionSpecification;
-import io.polyapi.plugin.model.specification.function.CustomFunctionSpecification;
+import io.polyapi.plugin.model.specification.function.ClientFunctionSpecification;
import io.polyapi.plugin.model.specification.function.FunctionSpecification;
import io.polyapi.plugin.model.specification.function.ServerFunctionSpecification;
import io.polyapi.plugin.model.specification.resolved.ResolvedApiFunctionSpecification;
@@ -52,7 +52,7 @@ public ResolvedServerFunctionSpecification resolve(ServerFunctionSpecification s
return resolve(specification, ResolvedServerFunctionSpecification::new);
}
- public ResolvedCustomFunctionSpecification resolve(CustomFunctionSpecification specification) {
+ public ResolvedCustomFunctionSpecification resolve(ClientFunctionSpecification specification) {
Matcher matcher = Pattern.compile("public class [a-zA-Z0-9]*").matcher(specification.getCode());
return resolve(specification, base -> new ResolvedCustomFunctionSpecification(base, matcher.find() ? matcher.group().substring(13) : base.getClassName()));
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/PolyObjectResolverVisitor.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/PolyObjectResolverVisitor.java
index c13bcf3c..4a3ea6b9 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/PolyObjectResolverVisitor.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/PolyObjectResolverVisitor.java
@@ -3,7 +3,7 @@
import io.polyapi.plugin.model.specification.Specification;
import io.polyapi.plugin.model.specification.function.ApiFunctionSpecification;
import io.polyapi.plugin.model.specification.function.AuthFunctionSpecification;
-import io.polyapi.plugin.model.specification.function.CustomFunctionSpecification;
+import io.polyapi.plugin.model.specification.function.ClientFunctionSpecification;
import io.polyapi.plugin.model.specification.function.ServerFunctionSpecification;
import io.polyapi.plugin.model.specification.resolved.ResolvedSpecification;
import io.polyapi.plugin.model.specification.variable.ServerVariableSpecification;
@@ -39,7 +39,7 @@ public void visit(ServerFunctionSpecification specification) {
}
@Override
- public void visit(CustomFunctionSpecification specification) {
+ public void visit(ClientFunctionSpecification specification) {
log.trace("Resolving CustomFunctionSpecification.");
result = resolver.resolve(specification);
}
diff --git a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/SpecificationCodeGeneratorVisitor.java b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/SpecificationCodeGeneratorVisitor.java
index 54b369c4..39c7207a 100644
--- a/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/SpecificationCodeGeneratorVisitor.java
+++ b/polyapi-maven-plugin/src/main/java/io/polyapi/plugin/service/visitor/SpecificationCodeGeneratorVisitor.java
@@ -5,7 +5,7 @@
import io.polyapi.plugin.model.function.CodeObject;
import io.polyapi.plugin.model.generation.CustomType;
import io.polyapi.plugin.model.specification.Specification;
-import io.polyapi.plugin.model.specification.function.CustomFunctionSpecification;
+import io.polyapi.plugin.model.specification.function.ClientFunctionSpecification;
import io.polyapi.plugin.model.specification.function.FunctionSpecification;
import io.polyapi.plugin.model.specification.function.ServerFunctionSpecification;
import io.polyapi.plugin.model.specification.resolved.ResolvedCustomFunctionSpecification;
@@ -65,7 +65,7 @@ public void visit(ServerFunctionSpecification specification) {
}
@Override
- public void visit(CustomFunctionSpecification specification) {
+ public void visit(ClientFunctionSpecification specification) {
log.trace("Generating code for CustomFunctionSpecification.");
ResolvedCustomFunctionSpecification resolvedSpecification = resolver.resolve(specification);
fileService.generateFile(resolvedSpecification, overwriteFiles);
diff --git a/pom.xml b/pom.xml
index cc44e5ae..8c14a00b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
io.polyapi
polyapi-java
- 0.10.2-SNAPSHOT
+ 0.11.0-SNAPSHOT
pom
parent-pom