finalized java resource
parent
7ae3b6ea8c
commit
cc5c8a6a75
|
@ -18,7 +18,7 @@ module.exports = (service) => {
|
|||
|
||||
const files = resources.map(resource => {
|
||||
return {
|
||||
name: `${resource.name}Resource.java`,
|
||||
name: `${resource.name}.java`,
|
||||
dir: resource.dir,
|
||||
contents: Mustache.render(templateResource, { service, ...resource })
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ function mapParameter(parameter, namespace, operation) {
|
|||
parameter.label = utils.camelcase(parameter.name)
|
||||
parameter.type = javaType.mapJavaType(parameter.type, namespace)
|
||||
parameter.op = operation
|
||||
parameter.isPath = parameter.location === 'Path'
|
||||
return parameter
|
||||
}
|
||||
|
||||
|
@ -41,6 +42,14 @@ function mapOperation(operation, namespace) {
|
|||
operation.name = formatOperationName(operation)
|
||||
operation.camelcase = utils.camelcase(operation.name)
|
||||
|
||||
operation.pathElements = operation.path.split(/\//g).filter(e => e.length).map(element => {
|
||||
let isVariable = element.startsWith(':')
|
||||
let pathElement = {
|
||||
name: isVariable ? `${element.replace(/:/g, '')}.toString()` : `"${element}"`,
|
||||
}
|
||||
return pathElement
|
||||
})
|
||||
|
||||
operation.responseTypes = operation.responses.filter(resp => resp.type !== 'unit').map(resp => {
|
||||
let type = javaType.mapJavaType(resp.type, namespace)
|
||||
return {
|
||||
|
@ -84,11 +93,12 @@ module.exports = {
|
|||
mapResources: (resources, namespace) => {
|
||||
return resources.map(resource => {
|
||||
resource.type = javaType.mapJavaType(resource.type, namespace)
|
||||
resource.name = `${utils.pascalcase(resource.plural)}Client`
|
||||
resource.name = `${utils.pascalcase(resource.plural)}Resource`
|
||||
resource.operations = resource.operations.map(op => mapOperation(op, namespace))
|
||||
resource.package = `${namespace}.client`
|
||||
resource.dir = resource.package.replace(/\./g, '/')
|
||||
|
||||
|
||||
let imports = []
|
||||
resource.operations.forEach(op => op.parameters.forEach(p => {
|
||||
imports = [
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
package {{namespace}};
|
||||
|
||||
import lombok.*;
|
||||
import org.glassfish.jersey.client.HttpUrlConnectorProvider;
|
||||
|
||||
import javax.ws.rs.client.Client;
|
||||
import javax.ws.rs.client.ClientBuilder;
|
||||
|
@ -24,6 +25,7 @@ public class {{configName}} {
|
|||
@NonNull
|
||||
private final String baseUrl;
|
||||
@Builder.Default
|
||||
private final Client client = ClientBuilder.newClient();
|
||||
private final Client client = ClientBuilder.newClient()
|
||||
.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
|
||||
|
||||
}
|
|
@ -60,12 +60,15 @@ public class {{name}} {
|
|||
}
|
||||
|
||||
public {{name}}Response request({{#parameters}}@NonNull {{{type.name}}} {{label}}{{^last}}, {{/last}}{{/parameters}}) {
|
||||
final URI uri = UriBuilder.fromUri(this.config.getBaseUrl())
|
||||
.path("{{{path}}}")
|
||||
// {{{path}}}
|
||||
final URI uri = UriBuilder.fromUri(this.config.getBaseUrl()){{#pathElements}}
|
||||
.path({{{name}}}){{/pathElements}}{{#query}}
|
||||
.queryParam("{{name}}", this.{{label}}_query){{/query}}
|
||||
.build();
|
||||
|
||||
WebTarget target = config.getClient().target(uri);
|
||||
Response response = target.request(MediaType.APPLICATION_JSON)
|
||||
Response response = target.request(MediaType.APPLICATION_JSON){{#headers}}
|
||||
.header("{{name}}", this.{{label}}_header){{/headers}}
|
||||
.method("{{method}}"{{#body}}, Entity.json({{name}}){{/body}});
|
||||
int status = response.getStatus();
|
||||
switch(status) {
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
**/
|
||||
package {{package}};
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.With;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NotNull;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
|
||||
import org.codehaus.jackson.annotate.JsonProperty;
|
||||
|
||||
{{#imports}}
|
||||
import {{{.}}};
|
||||
|
@ -25,17 +25,15 @@ import {{{.}}};
|
|||
* See <a href="https://app.apibuilder.io/{{service.organization.key}}/{{service.name}}/{{service.version}}#model-{{model.name}}">https://app.apibuilder.io/{{service.organization.key}}/{{service.name}}/{{service.version}}#model-{{model.name}}</a>
|
||||
*
|
||||
**/
|
||||
@With
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode
|
||||
@Builder(toBuilder = true)
|
||||
@Accessors(fluent = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class {{name}} {
|
||||
|
||||
{{#fields}}
|
||||
{{#description}}/** {{.}} **/{{/description}}
|
||||
{{#required}}@NotNull{{/required}}
|
||||
@JsonProperty("{{name}}")
|
||||
{{#required}}@NonNull{{/required}}
|
||||
private {{{type.name}}} {{name}};
|
||||
|
||||
{{/fields}}
|
||||
|
|
Loading…
Reference in New Issue