This is an automated email from the ASF dual-hosted git repository. bdelacretaz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit 98e3f5dd8cd5012b9887dad300e51afd2d14157b Author: Bertrand Delacretaz <[email protected]> AuthorDate: Thu Jul 4 12:00:43 2019 +0200 Remove Mockito + quarkus-resteasy-jsonb which prevented native build --- graalvm/pom.xml | 20 ++++++++----- .../engine/impl/SlingRequestProcessorWrapper.java | 5 ++-- .../java/org/apache/sling/graalvm/MsgProvider.java | 5 ---- .../org/apache/sling/graalvm/MsgProviderImpl.java | 17 ----------- .../org/apache/sling/graalvm/SlingResource.java | 29 ------------------- .../sling/graalvm/http/JsonMessageBodyWriter.java | 33 ++++++++++++++++++++++ .../apache/sling/graalvm/http/SlingResource.java | 15 ++-------- .../apache/sling/graalvm/osgi/SlingContext.java | 2 +- .../sling/graalvm/sling/MockFilterManager.java | 9 ++++-- .../org/apache/sling/serverless/HelloResource.java | 17 ----------- .../sling/graalvm/NativeSlingResourceIT.java | 8 ------ .../apache/sling/graalvm/SlingResourceTest.java | 21 -------------- .../sling/graalvm/http/SlingResourceTest.java | 4 +-- .../apache/sling/serverless/HelloResourceTest.java | 21 -------------- .../sling/serverless/NativeHelloResourceIT.java | 9 ------ 15 files changed, 59 insertions(+), 156 deletions(-) diff --git a/graalvm/pom.xml b/graalvm/pom.xml index 89fee09..1a941c8 100644 --- a/graalvm/pom.xml +++ b/graalvm/pom.xml @@ -32,10 +32,6 @@ </dependency> <dependency> <groupId>io.quarkus</groupId> - <artifactId>quarkus-resteasy-jsonb</artifactId> - </dependency> - <dependency> - <groupId>io.quarkus</groupId> <artifactId>quarkus-junit5</artifactId> <scope>test</scope> </dependency> @@ -56,6 +52,11 @@ </dependency> <dependency> <groupId>org.osgi</groupId> + <artifactId>org.osgi.service.http.whiteboard</artifactId> + <version>1.1.0</version> + </dependency> + <dependency> + <groupId>org.osgi</groupId> <artifactId>org.osgi.service.component.annotations</artifactId> <version>1.3.0</version> </dependency> @@ -75,14 +76,19 @@ <version>2.6.20</version> </dependency> <dependency> + <groupId>org.apache.sling</groupId> + <artifactId>org.apache.sling.commons.testing</artifactId> + <version>2.1.2</version> + </dependency> + <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <version>1.10.19</version> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.5</version> </dependency> </dependencies> <build> diff --git a/graalvm/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorWrapper.java b/graalvm/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorWrapper.java index 0f2d901..0b57f45 100644 --- a/graalvm/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorWrapper.java +++ b/graalvm/src/main/java/org/apache/sling/engine/impl/SlingRequestProcessorWrapper.java @@ -5,14 +5,15 @@ import org.apache.sling.engine.impl.SlingRequestProcessorImpl; import org.apache.sling.graalvm.sling.MockErrorHandler; import org.apache.sling.graalvm.sling.MockFilterManager; import org.apache.sling.graalvm.sling.MockServletResolver; +import org.osgi.framework.BundleContext; import org.osgi.service.component.annotations.Component; /** TODO hack: using the engine.impl package to access package private methods... */ @Component(service=SlingRequestProcessor.class) public class SlingRequestProcessorWrapper extends SlingRequestProcessorImpl { - public SlingRequestProcessorWrapper() { + public SlingRequestProcessorWrapper(BundleContext bc) { this.setServletResolver(new MockServletResolver()); this.setErrorHandler(new MockErrorHandler()); - this.setFilterManager(new MockFilterManager()); + this.setFilterManager(new MockFilterManager(bc)); } } \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/MsgProvider.java b/graalvm/src/main/java/org/apache/sling/graalvm/MsgProvider.java deleted file mode 100644 index bac6c06..0000000 --- a/graalvm/src/main/java/org/apache/sling/graalvm/MsgProvider.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.apache.sling.graalvm; - -public interface MsgProvider { - String getMsg(); -} \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/MsgProviderImpl.java b/graalvm/src/main/java/org/apache/sling/graalvm/MsgProviderImpl.java deleted file mode 100644 index d2c2ec5..0000000 --- a/graalvm/src/main/java/org/apache/sling/graalvm/MsgProviderImpl.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.apache.sling.graalvm; - -import org.osgi.service.component.annotations.Component; -import java.util.Date; - -@Component(service=MsgProvider.class) -public class MsgProviderImpl implements MsgProvider { - private final String msg; - - MsgProviderImpl(String msg) { - this.msg = msg; - } - - public String getMsg() { - return msg + ", at " + new Date(); - } -} \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/SlingResource.java b/graalvm/src/main/java/org/apache/sling/graalvm/SlingResource.java deleted file mode 100644 index c652dbf..0000000 --- a/graalvm/src/main/java/org/apache/sling/graalvm/SlingResource.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.apache.sling.graalvm; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; - -import org.apache.sling.testing.mock.osgi.junit5.OsgiContext; - -@Path("/sling") -public class SlingResource { - - private String getMessage() { - // Yes this is funky, the goal is to verify that - // the Sling OSGi mocks context works in a - // native executable - final OsgiContext ctx = new OsgiContext(); - ctx.registerInjectActivateService(new MsgProviderImpl("Hello")); - final MsgProvider svc = ctx.getService(MsgProvider.class); - return svc.getMsg(); - } - - @GET - @Produces(MediaType.TEXT_PLAIN) - public String hello() { - final String msg = getMessage(); - return msg; - } -} \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/http/JsonMessageBodyWriter.java b/graalvm/src/main/java/org/apache/sling/graalvm/http/JsonMessageBodyWriter.java new file mode 100644 index 0000000..59cfa69 --- /dev/null +++ b/graalvm/src/main/java/org/apache/sling/graalvm/http/JsonMessageBodyWriter.java @@ -0,0 +1,33 @@ +package org.apache.sling.graalvm.http; + +import java.io.IOException; +import java.io.OutputStream; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.ext.MessageBodyWriter; +import javax.ws.rs.ext.Provider; + +import com.google.gson.Gson; + +@Provider +@Produces(MediaType.APPLICATION_JSON) +public class JsonMessageBodyWriter implements MessageBodyWriter<Object> { + + @Override + public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { + return mediaType.isCompatible(MediaType.APPLICATION_JSON_TYPE); + } + + @Override + public void writeTo(Object data, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, + MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) + throws IOException, WebApplicationException { + entityStream.write(new Gson().toJson(data).getBytes("UTF-8")); + } + +} \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/http/SlingResource.java b/graalvm/src/main/java/org/apache/sling/graalvm/http/SlingResource.java index 566d8f8..6d97215 100644 --- a/graalvm/src/main/java/org/apache/sling/graalvm/http/SlingResource.java +++ b/graalvm/src/main/java/org/apache/sling/graalvm/http/SlingResource.java @@ -1,14 +1,8 @@ package org.apache.sling.graalvm.http; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.doReturn; - import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -19,10 +13,9 @@ import javax.ws.rs.core.Response; import org.apache.sling.graalvm.osgi.SlingContext; import org.apache.sling.graalvm.sling.MockServletResolver; -import org.apache.sling.spi.resource.provider.ResourceProvider; -import org.mockito.Mockito; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.commons.testing.sling.MockSlingHttpServletResponse; import org.apache.sling.engine.SlingRequestProcessor; @Path("/sling/{resourcePath: [^/][a-zA-Z/_0-9\\.]*}") @@ -39,12 +32,8 @@ public class SlingResource { final ResourceResolver resolver = SlingContext.get().getService(ResourceResolver.class); assert (resolver != null); - final StringWriter sw = new StringWriter(); - final HttpServletResponse resp = Mockito.mock(HttpServletResponse.class); - when(resp.getWriter()).thenReturn(new PrintWriter(sw)); - try { - p.processRequest(request, resp, resolver); + p.processRequest(request, new MockSlingHttpServletResponse(), resolver); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/osgi/SlingContext.java b/graalvm/src/main/java/org/apache/sling/graalvm/osgi/SlingContext.java index bf9e27b..bbbf028 100644 --- a/graalvm/src/main/java/org/apache/sling/graalvm/osgi/SlingContext.java +++ b/graalvm/src/main/java/org/apache/sling/graalvm/osgi/SlingContext.java @@ -29,7 +29,7 @@ public class SlingContext { final MockResourceProvider mrp = new MockResourceProvider(); result.registerInjectActivateService(new MockResourceResolver(mrp)); result.registerInjectActivateService(mrp); - result.registerInjectActivateService(new SlingRequestProcessorWrapper()); + result.registerInjectActivateService(new SlingRequestProcessorWrapper(result.bundleContext())); return result; } } \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/graalvm/sling/MockFilterManager.java b/graalvm/src/main/java/org/apache/sling/graalvm/sling/MockFilterManager.java index ee07726..dfc3b2a 100644 --- a/graalvm/src/main/java/org/apache/sling/graalvm/sling/MockFilterManager.java +++ b/graalvm/src/main/java/org/apache/sling/graalvm/sling/MockFilterManager.java @@ -1,12 +1,15 @@ package org.apache.sling.graalvm.sling; +import org.apache.sling.engine.impl.SlingMainServlet; import org.apache.sling.engine.impl.filter.ServletFilterManager; import org.apache.sling.engine.impl.helper.SlingServletContext; -import org.mockito.Mockito; import org.osgi.framework.BundleContext; public class MockFilterManager extends ServletFilterManager { - public MockFilterManager() { - super(Mockito.mock(BundleContext.class), Mockito.mock(SlingServletContext.class)); + public MockFilterManager(BundleContext bc) { + super( + bc, + new SlingServletContext(bc, new SlingMainServlet()) + ); } } \ No newline at end of file diff --git a/graalvm/src/main/java/org/apache/sling/serverless/HelloResource.java b/graalvm/src/main/java/org/apache/sling/serverless/HelloResource.java deleted file mode 100644 index 790193b..0000000 --- a/graalvm/src/main/java/org/apache/sling/serverless/HelloResource.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.apache.sling.serverless; - -import java.util.Date; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; - -@Path("/hello") -public class HelloResource { - - @GET - @Produces(MediaType.TEXT_PLAIN) - public String hello() { - return "hello, at " + new Date(); - } -} \ No newline at end of file diff --git a/graalvm/src/test/java/org/apache/sling/graalvm/NativeSlingResourceIT.java b/graalvm/src/test/java/org/apache/sling/graalvm/NativeSlingResourceIT.java deleted file mode 100644 index d88ff6c..0000000 --- a/graalvm/src/test/java/org/apache/sling/graalvm/NativeSlingResourceIT.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.apache.sling.graalvm; - -import io.quarkus.test.junit.SubstrateTest; - -@SubstrateTest -public class NativeSlingResourceIT extends SlingResourceTest { - // Execute the same tests but in native mode. -} \ No newline at end of file diff --git a/graalvm/src/test/java/org/apache/sling/graalvm/SlingResourceTest.java b/graalvm/src/test/java/org/apache/sling/graalvm/SlingResourceTest.java deleted file mode 100644 index 91a0f13..0000000 --- a/graalvm/src/test/java/org/apache/sling/graalvm/SlingResourceTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.apache.sling.graalvm; - -import io.quarkus.test.junit.QuarkusTest; -import org.junit.jupiter.api.Test; - -import static io.restassured.RestAssured.given; -import static org.hamcrest.CoreMatchers.containsString; - -@QuarkusTest -public class SlingResourceTest { - - @Test - public void testHelloEndpoint() { - given() - .when().get("/sling") - .then() - .statusCode(200) - .body(containsString("Hello, at")); - } - -} \ No newline at end of file diff --git a/graalvm/src/test/java/org/apache/sling/graalvm/http/SlingResourceTest.java b/graalvm/src/test/java/org/apache/sling/graalvm/http/SlingResourceTest.java index d401d16..6168210 100644 --- a/graalvm/src/test/java/org/apache/sling/graalvm/http/SlingResourceTest.java +++ b/graalvm/src/test/java/org/apache/sling/graalvm/http/SlingResourceTest.java @@ -16,15 +16,13 @@ public class SlingResourceTest { public void testSlingResourceEndpoint() { final String prefix = "/sling/"; final String path = "chouc/route"; - final String resourceType = "mock/resource"; given() .when().get(prefix + path) .then() .statusCode(200) .contentType(MediaType.APPLICATION_JSON) - .body("path", equalTo(prefix + path)) - .body("resourceType", equalTo(resourceType)); + .body("path", equalTo(prefix + path)); } } \ No newline at end of file diff --git a/graalvm/src/test/java/org/apache/sling/serverless/HelloResourceTest.java b/graalvm/src/test/java/org/apache/sling/serverless/HelloResourceTest.java deleted file mode 100644 index 9f4ac22..0000000 --- a/graalvm/src/test/java/org/apache/sling/serverless/HelloResourceTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.apache.sling.serverless; - -import io.quarkus.test.junit.QuarkusTest; -import org.junit.jupiter.api.Test; - -import static io.restassured.RestAssured.given; -import static org.hamcrest.CoreMatchers.containsString; - -@QuarkusTest -public class HelloResourceTest { - - @Test - public void testHelloEndpoint() { - given() - .when().get("/hello") - .then() - .statusCode(200) - .body(containsString("hello, at")); - } - -} \ No newline at end of file diff --git a/graalvm/src/test/java/org/apache/sling/serverless/NativeHelloResourceIT.java b/graalvm/src/test/java/org/apache/sling/serverless/NativeHelloResourceIT.java deleted file mode 100644 index 7bfae1b..0000000 --- a/graalvm/src/test/java/org/apache/sling/serverless/NativeHelloResourceIT.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.apache.sling.serverless; - -import io.quarkus.test.junit.SubstrateTest; - -@SubstrateTest -public class NativeHelloResourceIT extends HelloResourceTest { - - // Execute the same tests but in native mode. -} \ No newline at end of file
