From d9a6085fcf78aba89d6de7dd73ee94f41daf0c28 Mon Sep 17 00:00:00 2001 From: Bernard Labno Date: Wed, 24 Jul 2019 20:20:07 +0200 Subject: [PATCH] Remove swagger jaxrs --- .../bisq/api/http/service/HttpApiServer.java | 22 +------ .../META-INF/custom-swagger-ui/index.html | 58 ------------------ .../main/resources/openapi-configuration.json | 6 -- .../java/bisq/api/http/SwaggerIT.java | 61 ------------------- build.gradle | 22 ++++--- gradle/witness/gradle-witness.gradle | 45 ++++++-------- 6 files changed, 31 insertions(+), 183 deletions(-) delete mode 100644 api/src/main/resources/META-INF/custom-swagger-ui/index.html delete mode 100644 api/src/main/resources/openapi-configuration.json delete mode 100644 api/src/testIntegration/java/bisq/api/http/SwaggerIT.java diff --git a/api/src/main/java/bisq/api/http/service/HttpApiServer.java b/api/src/main/java/bisq/api/http/service/HttpApiServer.java index 7e69472c826..c51eb185024 100644 --- a/api/src/main/java/bisq/api/http/service/HttpApiServer.java +++ b/api/src/main/java/bisq/api/http/service/HttpApiServer.java @@ -30,7 +30,6 @@ import org.eclipse.jetty.server.Slf4jRequestLog; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; @@ -56,7 +55,7 @@ public HttpApiServer(ApiPasswordManager apiPasswordManager, BisqEnvironment bisq public void startServer() { try { ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection(); - contextHandlerCollection.setHandlers(new Handler[]{buildAPIHandler(), buildSwaggerUIOverrideHandler(), buildSwaggerUIHandler()}); + contextHandlerCollection.setHandlers(new Handler[]{buildAPIHandler()}); // Start server InetSocketAddress socketAddress = new InetSocketAddress(bisqEnvironment.getHttpApiHost(), bisqEnvironment.getHttpApiPort()); Server server = new Server(socketAddress); @@ -74,7 +73,6 @@ private ContextHandler buildAPIHandler() { ResourceConfig resourceConfig = new ResourceConfig(); ExceptionMappers.register(resourceConfig); resourceConfig.register(httpApiInterfaceV1); - resourceConfig.packages("io.swagger.v3.jaxrs2.integration.resources"); ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS | ServletContextHandler.NO_SECURITY); servletContextHandler.setContextPath("/"); servletContextHandler.addServlet(new ServletHolder(new ServletContainer(resourceConfig)), "/*"); @@ -82,24 +80,6 @@ private ContextHandler buildAPIHandler() { return servletContextHandler; } - private ContextHandler buildSwaggerUIOverrideHandler() throws Exception { - ResourceHandler swaggerUIResourceHandler = new ResourceHandler(); - swaggerUIResourceHandler.setResourceBase(getClass().getClassLoader().getResource("META-INF/custom-swagger-ui").toURI().toString()); - ContextHandler swaggerUIContext = new ContextHandler(); - swaggerUIContext.setContextPath("/docs"); - swaggerUIContext.setHandler(swaggerUIResourceHandler); - return swaggerUIContext; - } - - private ContextHandler buildSwaggerUIHandler() throws Exception { - ResourceHandler swaggerUIResourceHandler = new ResourceHandler(); - swaggerUIResourceHandler.setResourceBase(getClass().getClassLoader().getResource("META-INF/resources/webjars/swagger-ui/3.20.1").toURI().toString()); - ContextHandler swaggerUIContext = new ContextHandler(); - swaggerUIContext.setContextPath("/docs"); - swaggerUIContext.setHandler(swaggerUIResourceHandler); - return swaggerUIContext; - } - private void setupAuth(ServletContextHandler appContextHandler) { AuthFilter authFilter = new AuthFilter(apiPasswordManager, tokenRegistry); appContextHandler.addFilter(new FilterHolder(authFilter), "/*", EnumSet.allOf(DispatcherType.class)); diff --git a/api/src/main/resources/META-INF/custom-swagger-ui/index.html b/api/src/main/resources/META-INF/custom-swagger-ui/index.html deleted file mode 100644 index 4847a0bbe4b..00000000000 --- a/api/src/main/resources/META-INF/custom-swagger-ui/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Swagger UI - - - - - - - -
- - - - - diff --git a/api/src/main/resources/openapi-configuration.json b/api/src/main/resources/openapi-configuration.json deleted file mode 100644 index 29387424917..00000000000 --- a/api/src/main/resources/openapi-configuration.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "prettyPrint": true, - "cacheTTL": 0, - "openAPI": { - } -} diff --git a/api/src/testIntegration/java/bisq/api/http/SwaggerIT.java b/api/src/testIntegration/java/bisq/api/http/SwaggerIT.java deleted file mode 100644 index 349898b5024..00000000000 --- a/api/src/testIntegration/java/bisq/api/http/SwaggerIT.java +++ /dev/null @@ -1,61 +0,0 @@ -package bisq.api.http; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static io.restassured.RestAssured.given; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.equalTo; - - - -import org.arquillian.cube.docker.impl.client.containerobject.dsl.Container; -import org.arquillian.cube.docker.impl.client.containerobject.dsl.DockerContainer; -import org.jboss.arquillian.junit.Arquillian; -import org.jboss.arquillian.junit.InSequence; - -@RunWith(Arquillian.class) -public class SwaggerIT { - - @DockerContainer - private Container alice = ContainerFactory.createApiContainer("alice", "8081->8080", 3333, false, false); - - @InSequence(1) - @Test - public void getDocs_always_returns200() { - int alicePort = getAlicePort(); - - given(). - port(alicePort). -// - when(). - get("/docs"). -// - then(). - statusCode(200). - and().body(containsString("Swagger UI")) - ; - } - - @InSequence(1) - @Test - public void getOpenApiJson_always_returns200() { - int alicePort = getAlicePort(); - - given(). - port(alicePort). -// - when(). - get("/openapi.json"). -// - then(). - statusCode(200). - and().body("info.title", equalTo("Bisq HTTP API")) - ; - } - - private int getAlicePort() { - return alice.getBindPort(8080); - } - -} diff --git a/build.gradle b/build.gradle index 922854ca6c9..de04ba6dbda 100644 --- a/build.gradle +++ b/build.gradle @@ -279,21 +279,23 @@ configure(project(':api')) { compile project(':core') compile project(':p2p') - compile 'org.eclipse.jetty:jetty-servlet:9.4.14.v20181114' + compile('org.eclipse.jetty:jetty-servlet:9.4.14.v20181114') { + exclude(module: 'jersey-client') + } compile 'javax.activation:activation:1.1.1' + compile 'javax.ws.rs:javax.ws.rs-api:2.1' compile('org.glassfish.jersey.containers:jersey-container-servlet:2.27') { - exclude(module: 'jersey-client') - exclude(module: 'jersey-media-jaxb') + exclude(module: 'osgi-resource-locator') + } + compile('org.glassfish.jersey.inject:jersey-hk2:2.27') { + exclude(module: 'aopalliance-repackaged') } - compile 'org.glassfish.jersey.inject:jersey-hk2:2.27' - compile 'org.glassfish.jersey.ext:jersey-bean-validation:2.27' compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.27' + compile 'org.glassfish.jersey.media:jersey-media-multipart:2.27' + compile 'org.glassfish.jersey.ext:jersey-bean-validation:2.27' - // TODO Lets try to remove swagger for default config (add createDocs config/profile) - compile('io.swagger.core.v3:swagger-jaxrs2:2.0.6') { - exclude(module: 'javassist') - } - compile 'org.webjars:swagger-ui:3.20.1' + compile 'io.swagger.core.v3:swagger-annotations:2.0.6' + compile 'javax.xml.bind:jaxb-api:2.3.0' compileOnly 'org.projectlombok:lombok:1.18.2' annotationProcessor 'org.projectlombok:lombok:1.18.2' diff --git a/gradle/witness/gradle-witness.gradle b/gradle/witness/gradle-witness.gradle index ef58927d175..58c58092cd7 100644 --- a/gradle/witness/gradle-witness.gradle +++ b/gradle/witness/gradle-witness.gradle @@ -30,26 +30,18 @@ dependencyVerification { 'network.bisq.btcd-cli4j:btcd-cli4j-daemon:c007116da1b0145ddee64bb3a54fef60d58ce5c3dcf27773f39471117be8f132', 'network.bisq.btcd-cli4j:btcd-cli4j-core:b1d0525f3629bad358ad4a40ea3be998220110331d4b9d24e76d7894e563a595', 'org.glassfish.jersey.media:jersey-media-json-jackson:815a783428d87e3f74591c6a9e4fd9c4bf37f5492e4c574b0a3e26a731dabc86', - 'io.swagger.core.v3:swagger-jaxrs2:f4de63695032f11df9664e92ca05284a5c2f484cf02cd53222513fd2ab4c8d32', - 'io.swagger.core.v3:swagger-integration:470dd943148b0ce90747af0583fb1a9c6db5979f845970353995c634bb124172', - 'io.swagger.core.v3:swagger-core:ef8bbaa4bc5643e17dafaaab137c43fb55c47e34287c909546f30f44ed332be0', - 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:26af65ee8a17c6751d51f90e241dd3974df0ba85bc6ba48709e58b509c3219e6', - 'com.fasterxml.jackson.module:jackson-module-jaxb-annotations:eed08585b2a9b6d64f8dba5ab813813dde1a8df5e7f7e744a3a70d83925bcfc2', - 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:d81b4b71778bdca92f4c8b66db08d3e1e3b3fa5b0e4fe349d2f8b59a310cbdd2', - 'com.fasterxml.jackson.core:jackson-databind:0fb4e079c118e752cc94c15ad22e6782b0dfc5dc09145f4813fb39d82e686047', - 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:adc1c495e9c7286bfa1d861ca07e06c8d0980057ad981b48b04f68eb8dcade2c', - 'com.fasterxml.jackson.core:jackson-core:a2bebaa325ad25455b02149c67e6052367a7d7fc1ce77de000eed284a5214eac', - 'io.swagger.core.v3:swagger-models:01453452b0715f6ddd5ff52f82b7a2646d0753360f600fd14bb734853c3765a2', - 'com.fasterxml.jackson.core:jackson-annotations:38a0e450049f643570adac99888aa3480ec2de385790a7096908bf43bfc085d6', + 'com.fasterxml.jackson.module:jackson-module-jaxb-annotations:c333a59c2ef0ec6ed2370e74ae5d9747f21b5d84507f7f36337eceda8d0e3b9b', + 'com.fasterxml.jackson.core:jackson-databind:fcf3c2b0c332f5f54604f7e27fa7ee502378a2cc5df6a944bbfae391872c32ff', + 'com.fasterxml.jackson.core:jackson-core:39a74610521d7fb9eb3f437bb8739bbf47f6435be12d17bf954c731a0c6352bb', + 'com.fasterxml.jackson.core:jackson-annotations:2566b3a6662afa3c6af4f5b25006cb46be2efc68f1b5116291d6998a8cdf7ed3', 'com.google.protobuf:protobuf-java:b5e2d91812d183c9f053ffeebcbcda034d4de6679521940a19064714966c2cd4', 'com.google.code.gson:gson:2d43eb5ea9e133d2ee2405cc14f5ee08951b8361302fdd93494a3a997b508d32', 'com.googlecode.json-simple:json-simple:4e69696892b88b41c55d49ab2fdcc21eead92bf54acc588c0050596c3b75199c', 'org.springframework:spring-core:c451e8417adb2ffb2445636da5e44a2f59307c4100037a1fe387c3fba4f29b52', 'ch.qos.logback:logback-classic:e66efc674e94837344bc5b748ff510c37a44eeff86cbfdbf9e714ef2eb374013', - 'org.slf4j:slf4j-api:18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79', + 'org.slf4j:slf4j-api:3a4cd4969015f3beb4b5b4d81dbafc01765fb60b8a439955ca64d8476fef553e', 'ch.qos.logback:logback-core:4cd46fa17d77057b39160058df2f21ebbc2aded51d0edcc25d2c1cecc042a005', 'com.google.code.findbugs:jsr305:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7', - 'org.reflections:reflections:cca88428f8a8919df885105833d45ff07bd26f985f96ee55690551216b58b4a1', 'com.google.guava:guava:36a666e3b71ae7f0f0dca23654b67e086e6c93d192f60ba5dfd5519db6c288c8', 'com.google.inject:guice:9b9df27a5b8c7864112b4137fd92b36c3f1395bfe57be42fedf2f520ead1a93e', 'com.github.bisq-network.bitcoinj:bitcoinj-core:f979c2187e61ee3b08dd4cbfc49a149734cff64c045d29ed112f2e12f34068a3', @@ -61,14 +53,23 @@ dependencyVerification { 'org.jetbrains:annotations:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478', 'org.bouncycastle:bcpg-jdk15on:de3355b821fc81dd32e1f3f560d5b3eca1c678fd2400011d0bfc69fb91bcde85', 'commons-io:commons-io:cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581', - 'org.apache.commons:commons-lang3:6e8dc31e046508d9953c96534edf0c2e0bfe6f468966b5b842b3f87e43b6a847', + 'org.apache.commons:commons-lang3:734c8356420cc8e30c795d64fd1fcd5d44ea9d90342a2cc3262c5158fbc6d98b', 'org.bouncycastle:bcprov-jdk15on:963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349', 'org.eclipse.jetty:jetty-servlet:fbcd7cc44b91a7f318930b237ad4fdeae79fe84ebeee6007baef01724a39e735', 'javax.activation:activation:ae475120e9fcd99b4b00b38329bd61cdc5eb754eee03fe66c01f50e137724f99', 'org.glassfish.jersey.containers:jersey-container-servlet:40349db8dabf6327a01ad59eaff172bd9a5f8927b2411bcdc59ceb05ce7731c1', - 'org.glassfish.jersey.inject:jersey-hk2:634a2790f08c2f33feb78586b22a23005a2f8aa483c316ae2435729be0943968', 'org.glassfish.jersey.ext:jersey-bean-validation:9dc23bd60a6ff1b8ce3f436b1dec959f82a1a643b7a981f4462700aae432c16d', - 'org.webjars:swagger-ui:d6aa5d51493c016e95559452a911ffef739170edc063ff3a3e15ba76d0a40fa5', + 'org.glassfish.jersey.containers:jersey-container-servlet-core:39e9fee46f5c6b5d4e49dc03f54741671bd4261090c5f7b5c72541a232873946', + 'org.glassfish.jersey.inject:jersey-hk2:634a2790f08c2f33feb78586b22a23005a2f8aa483c316ae2435729be0943968', + 'org.glassfish.jersey.media:jersey-media-multipart:08b303988e99546364283c63da5aa2d79c7c823f7b0d1ca5deabe66fbbb6374e', + 'org.glassfish.jersey.core:jersey-server:45a2e1e87566cb9808953d1f5ce0b4d99ede51be4a0f22ed92a7ceda7ba9417e', + 'org.glassfish.jersey.core:jersey-client:aba407bda94df54f590041b4cde5f2fa31db45bd8b4cf7575af48c1f8f81bb04', + 'org.glassfish.jersey.media:jersey-media-jaxb:b295e0d7ca93dbb084abd22a01ae7f54d5ffa244dd4b3ce1a6792eda148e76b2', + 'org.glassfish.jersey.core:jersey-common:9a9578c6dac52b96195a614150f696d455db6b6d267a645c3120a4d0ee495789', + 'org.glassfish.jersey.ext:jersey-entity-filtering:529b7ee7830441cffe98851b1e6edc0edd30e8b066052999daa5de63c56302b2', + 'javax.ws.rs:javax.ws.rs-api:1a4295889416c6972addcd425dfeeee6e6ede110e8b2dc8b49044e9b400ad5db', + 'io.swagger.core.v3:swagger-annotations:36ee5908faa140104b4c19f9273b4813f70f7d8486074119a7b83360fd4a4efb', + 'javax.xml.bind:jaxb-api:883007989d373d19f352ba9792b25dec21dc7d0e205a710a93a3815101bb3d03', 'com.google.zxing:javase:0ec23e2ec12664ddd6347c8920ad647bb3b9da290f897a88516014b56cc77eb9', 'com.nativelibs4java:bridj:101bcd9b6637e6bc16e56deb3daefba62b1f5e8e9e37e1b3e56e3b5860d659cf', 'com.github.JesusMcCloud.tor-binary:tor-binary-macos:18f7f1a567821dcc22c4b2146db8c4d00a5c6945a556f1a60085b06ad6d61054', @@ -90,19 +91,12 @@ dependencyVerification { 'org.bitcoinj:orchid:f836325cfa0466a011cb755c9b0fee6368487a2352eb45f4306ad9e4c18de080', 'com.squareup.okhttp:okhttp:b4c943138fcef2bcc9d2006b2250c4aabbedeafc5947ed7c0af7fd103ceb2707', 'org.eclipse.jetty:jetty-security:c4102cdbcbf6becec08b9ab4afbd9979c3f120e8cf45fbdf6be6c3940fe55bf1', - 'org.glassfish.jersey.containers:jersey-container-servlet-core:39e9fee46f5c6b5d4e49dc03f54741671bd4261090c5f7b5c72541a232873946', - 'org.glassfish.jersey.core:jersey-server:45a2e1e87566cb9808953d1f5ce0b4d99ede51be4a0f22ed92a7ceda7ba9417e', - 'org.glassfish.jersey.core:jersey-client:aba407bda94df54f590041b4cde5f2fa31db45bd8b4cf7575af48c1f8f81bb04', - 'org.glassfish.jersey.media:jersey-media-jaxb:b295e0d7ca93dbb084abd22a01ae7f54d5ffa244dd4b3ce1a6792eda148e76b2', - 'org.glassfish.jersey.core:jersey-common:9a9578c6dac52b96195a614150f696d455db6b6d267a645c3120a4d0ee495789', - 'org.glassfish.jersey.ext:jersey-entity-filtering:529b7ee7830441cffe98851b1e6edc0edd30e8b066052999daa5de63c56302b2', - 'javax.ws.rs:javax.ws.rs-api:1a4295889416c6972addcd425dfeeee6e6ede110e8b2dc8b49044e9b400ad5db', + 'org.jvnet.mimepull:mimepull:2d1ee56aa89837ba9ea55431542e7939fa9d425552c2e6c8ddfb3b77877721b7', 'org.glassfish.hk2.external:javax.inject:3bcf096beb918c9586be829190903090a21ac40513c1401e1b986e6030addc98', 'org.hibernate:hibernate-validator:7f9300345436349396944fc9347437d862f999abd563ebd212291a44ff66e41b', 'javax.validation:validation-api:f39d7ba7253e35f5ac48081ec1bc28c5df9b32ac4b7db20853e5a8e76bf7b0ed', 'org.glassfish.web:javax.el:787e7e247da8008c699bafd8e086ccae13e6f3cac3c07ca1c698e44f917b42de', 'javax.el:javax.el-api:5fd94735743ed06252c83158a24c290fcbf94b3f599b1bcec3bdc8c80979bed7', - 'io.swagger.core.v3:swagger-annotations:36ee5908faa140104b4c19f9273b4813f70f7d8486074119a7b83360fd4a4efb', 'com.google.zxing:core:11aae8fd974ab25faa8208be50468eb12349cd239e93e7c797377fa13e381729', 'com.github.JesusMcCloud.tor-binary:tor-binary-geoip:766e4400e5651cf0b11788ea440cc72721be9b92e42f20809c22d0ff129df83c', 'com.github.JesusMcCloud:jtorctl:904f7c53332179a3479c64d63fb303afa6a02b6889aabdab5b235f3efc725ca7', @@ -112,7 +106,6 @@ dependencyVerification { 'org.eclipse.jetty:jetty-server:a922f870f891f6ff4e3503b4e32ac80efb999e9d373ba1f397d055e1f34c8c4a', 'javax.annotation:javax.annotation-api:5909b396ca3a2be10d0eea32c74ef78d816e1b4ead21de1d78de1f890d033e04', 'org.glassfish.hk2:osgi-resource-locator:775003be577e8806f51b6e442be1033d83be2cb2207227b349be0bf16e6c0843', - 'org.glassfish.hk2.external:aopalliance-repackaged:669869a9d7e98fcea34580de250db54531550487d03571f26b9592e712897423', 'org.javassist:javassist:230267ffd7bfe404c1b87faf215dd012f607ba3151bd7099562c305c09de6a7a', 'org.jboss.logging:jboss-logging:6813931fe607469989f76a73a22515d2489dcd8b6be9fc147093a9cec995f822', 'com.fasterxml:classmate:1a381660e2f27912e2c421a70bf816a1739e0475190a8efefbcdd00d89216887', @@ -120,8 +113,6 @@ dependencyVerification { 'javax.servlet:javax.servlet-api:af456b2dd41c4e82cf54f3e743bc678973d9fe35bd4d3071fa05c7e5333b8482', 'org.eclipse.jetty:jetty-http:964795275e9ea340e302845630dd441d0c4977d99c990f28537d6e834260d64f', 'org.eclipse.jetty:jetty-io:3710e8c88f99c8047ad38e4163715c1e63026f3fa586fa7727cf81b54dc420d5', - 'javax.xml.bind:jaxb-api:883007989d373d19f352ba9792b25dec21dc7d0e205a710a93a3815101bb3d03', 'org.eclipse.jetty:jetty-util:02469929c448d4a3197dc69c5a6b9296bd37d12bcafd2b576ec8fe47ee42ef8f', - 'org.yaml:snakeyaml:81bf4c29d0275dace75fadb5febf5384553422816256023efa83b2b15a9ced60', ] }