Search in sources :

Example 6 with CommonGeneratorProperties

use of uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties in project microservice_framework by CJSCommonPlatform.

the class RestAdapterGenerator_CodeStructureTest method shouldGenerateClassContainingThreeQueryParams.

@Test
public void shouldGenerateClassContainingThreeQueryParams() throws Exception {
    generator.run(restRamlWithQueryApiDefaults().with(resource("/users").with(httpActionWithDefaultMapping(GET).with(queryParam("surname"), queryParam("firstname"), queryParam("middlename")).withResponseTypes("application/vnd.people.query.search-users+json").with(mapping().withName("blah").withResponseType("application/vnd.people.query.search-users+json")))).build(), configurationWithBasePackage(BASE_PACKAGE, outputFolder, new CommonGeneratorProperties()));
    final Class<?> implementation = compiler.compiledClassOf(BASE_PACKAGE, "resource", "DefaultQueryApiUsersResource");
    assertThat(implementation.isInterface(), is(false));
    final Method method = firstMethodOf(implementation).get();
    assertThat(method.getParameterCount(), is(3));
    stream(method.getParameters()).forEach(parameter -> {
        assertThat(parameter.getType(), equalTo(String.class));
        assertThat(parameter.getAnnotations(), emptyArray());
    });
    final Class<?> iface = compiler.compiledInterfaceClassOf(BASE_PACKAGE, "resource", "QueryApiUsersResource");
    assertThat(iface.isInterface(), is(true));
    final Method interMethod = firstMethodOf(iface).get();
    assertThat(interMethod.getParameterCount(), is(3));
    stream(interMethod.getParameters()).forEach(parameter -> {
        assertThat(parameter.getType(), equalTo(String.class));
        assertThat(parameter.getAnnotations().length, is(1));
        Annotation annotation = parameter.getAnnotations()[0];
        assertThat(annotation.annotationType(), equalTo(QueryParam.class));
    });
}
Also used : QueryParam(javax.ws.rs.QueryParam) CommonGeneratorProperties(uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties) Method(java.lang.reflect.Method) Annotation(java.lang.annotation.Annotation) Test(org.junit.Test)

Example 7 with CommonGeneratorProperties

use of uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties in project microservice_framework by CJSCommonPlatform.

the class RestAdapterGenerator_CodeStructureTest method shouldGenerateClassContainingMethodWithThreePathParamsAndOneBodyParam.

@Test
public void shouldGenerateClassContainingMethodWithThreePathParamsAndOneBodyParam() throws Exception {
    generator.run(restRamlWithCommandApiDefaults().with(defaultPostResource().withRelativeUri("/some/path/{paramA}/{paramB}/{paramC}").withPathParam("paramA").withPathParam("paramB").withPathParam("paramC")).build(), configurationWithBasePackage(BASE_PACKAGE, outputFolder, new CommonGeneratorProperties()));
    final Class<?> clazz = compiler.compiledClassOf(BASE_PACKAGE, "resource", "DefaultCommandApiSomePathParamAParamBParamCResource");
    assertThat(clazz.isInterface(), is(false));
    final List<Method> methods = methodsOf(clazz);
    assertThat(methods, hasSize(1));
    final Method method = methods.get(0);
    assertThat(method.getParameterCount(), is(4));
    final Parameter pathParam1 = method.getParameters()[0];
    assertThat(pathParam1.getType(), equalTo(String.class));
    assertThat(pathParam1.getAnnotations(), emptyArray());
    final Parameter pathParam2 = method.getParameters()[1];
    assertThat(pathParam2.getType(), equalTo(String.class));
    assertThat(pathParam2.getAnnotations(), emptyArray());
    final Parameter pathParam3 = method.getParameters()[2];
    assertThat(pathParam3.getType(), equalTo(String.class));
    assertThat(pathParam3.getAnnotations(), emptyArray());
    final Parameter bodyParam = method.getParameters()[3];
    assertThat(bodyParam.getType(), equalTo(JsonObject.class));
    assertThat(bodyParam.getAnnotations(), emptyArray());
}
Also used : Parameter(java.lang.reflect.Parameter) JsonObject(javax.json.JsonObject) CommonGeneratorProperties(uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties) Method(java.lang.reflect.Method) Test(org.junit.Test)

Example 8 with CommonGeneratorProperties

use of uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties in project microservice_framework by CJSCommonPlatform.

the class RestAdapterGenerator_CodeStructureTest method shouldGenerateGETMethodWithTwoMediaTypeAnnotations.

@Test
public void shouldGenerateGETMethodWithTwoMediaTypeAnnotations() throws Exception {
    generator.run(restRamlWithDefaults().with(resource("/some/path").with(httpActionWithDefaultMapping(GET).withResponseTypes("application/vnd.ctx.query.query1+json", "application/vnd.ctx.query.query2+json").with(mapping().withName("blah1").withResponseType("application/vnd.ctx.query.query1+json")).with(mapping().withName("blah2").withResponseType("application/vnd.ctx.query.query2+json")))).build(), configurationWithBasePackage(BASE_PACKAGE, outputFolder, new CommonGeneratorProperties()));
    final Class<?> interfaceClass = compiler.compiledInterfaceOf(RESOURCE_PACKAGE);
    final List<Method> methods = methodsOf(interfaceClass);
    assertThat(methods, hasSize(1));
    final Method method = methods.get(0);
    assertThat(method.getReturnType(), equalTo(Response.class));
    assertThat(method.getAnnotation(javax.ws.rs.GET.class), not(nullValue()));
    assertThat(method.getAnnotation(Produces.class), not(nullValue()));
    assertThat(method.getAnnotation(Produces.class).value(), arrayContainingInAnyOrder("application/vnd.ctx.query.query1+json", "application/vnd.ctx.query.query2+json"));
}
Also used : Response(javax.ws.rs.core.Response) Produces(javax.ws.rs.Produces) GET(org.raml.model.ActionType.GET) CommonGeneratorProperties(uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties) Method(java.lang.reflect.Method) Test(org.junit.Test)

Example 9 with CommonGeneratorProperties

use of uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties in project microservice_framework by CJSCommonPlatform.

the class RestAdapterGenerator_CodeStructureTest method shouldGenerateResourceInterfaceWithOneSynchronousPUTMethod.

@Test
public void shouldGenerateResourceInterfaceWithOneSynchronousPUTMethod() throws Exception {
    generator.run(restRamlWithDefaults().with(resource("/some/path").with(httpActionWithDefaultMapping(PUT, "application/vnd.default+json").withResponseTypes("application/vnd.ctx.query.query1+json").with(mapping().withName("blah").withRequestType("application/vnd.default+json").withResponseType("application/vnd.ctx.query.query1+json")))).build(), configurationWithBasePackage(BASE_PACKAGE, outputFolder, new CommonGeneratorProperties()));
    final Class<?> interfaceClass = compiler.compiledInterfaceOf(RESOURCE_PACKAGE);
    final List<Method> methods = methodsOf(interfaceClass);
    assertThat(methods, hasSize(1));
    final Method method = methods.get(0);
    assertThat(method.getReturnType(), equalTo(Response.class));
    assertThat(method.getAnnotation(PUT.class), not(nullValue()));
    assertThat(method.getAnnotation(Consumes.class), not(nullValue()));
    assertThat(method.getAnnotation(Consumes.class).value(), is(new String[] { "application/vnd.default+json" }));
    assertThat(method.getAnnotation(Produces.class), not(nullValue()));
    assertThat(method.getAnnotation(Produces.class).value(), is(new String[] { "application/vnd.ctx.query.query1+json" }));
}
Also used : Response(javax.ws.rs.core.Response) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces) CommonGeneratorProperties(uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties) Method(java.lang.reflect.Method) PUT(org.raml.model.ActionType.PUT) PUT(javax.ws.rs.PUT) Test(org.junit.Test)

Example 10 with CommonGeneratorProperties

use of uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties in project microservice_framework by CJSCommonPlatform.

the class RestAdapterGenerator_CodeStructureTest method shouldGenerateResourceClassWithOneSynchronousPOSTMethod.

@Test
public void shouldGenerateResourceClassWithOneSynchronousPOSTMethod() throws Exception {
    generator.run(restRamlWithCommandApiDefaults().with(resource("/some/path").with(httpActionWithDefaultMapping(POST, "application/vnd.default+json").withResponseTypes("application/vnd.ctx.query.query1+json").with(mapping().withName("blah").withRequestType("application/vnd.default+json").withResponseType("application/vnd.ctx.query.query1+json")))).build(), configurationWithBasePackage(BASE_PACKAGE, outputFolder, new CommonGeneratorProperties()));
    final Class<?> class1 = compiler.compiledClassOf(BASE_PACKAGE, "resource", "DefaultCommandApiSomePathResource");
    final List<Method> methods = methodsOf(class1);
    assertThat(methods, hasSize(1));
    final Method method = methods.get(0);
    assertThat(method.getReturnType(), equalTo(Response.class));
    assertThat(method.getParameterCount(), is(1));
    assertThat(method.getParameters()[0].getType(), equalTo(JsonObject.class));
}
Also used : Response(javax.ws.rs.core.Response) JsonObject(javax.json.JsonObject) CommonGeneratorProperties(uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties) Method(java.lang.reflect.Method) Test(org.junit.Test)

Aggregations

CommonGeneratorProperties (uk.gov.justice.services.generators.commons.config.CommonGeneratorProperties)96 Test (org.junit.Test)93 Method (java.lang.reflect.Method)72 Collection (java.util.Collection)33 HttpHeaders (javax.ws.rs.core.HttpHeaders)33 Function (java.util.function.Function)32 JsonObject (javax.json.JsonObject)31 Response (javax.ws.rs.core.Response)30 ThreadLocalHttpHeaders (org.apache.cxf.jaxrs.impl.tl.ThreadLocalHttpHeaders)21 Optional (java.util.Optional)18 ActionMapperHelper (uk.gov.justice.services.adapter.rest.mapping.ActionMapperHelper)11 BasicActionMapperHelper (uk.gov.justice.services.adapter.rest.mapping.BasicActionMapperHelper)11 Parameter (uk.gov.justice.services.adapter.rest.parameter.Parameter)10 Consumes (javax.ws.rs.Consumes)9 Field (java.lang.reflect.Field)7 Parameter (java.lang.reflect.Parameter)7 Produces (javax.ws.rs.Produces)6 InterceptorContext (uk.gov.justice.services.core.interceptor.InterceptorContext)6 MediaType (uk.gov.justice.services.core.mapping.MediaType)6 JsonEnvelope (uk.gov.justice.services.messaging.JsonEnvelope)6