Skip to content

Commit

Permalink
Move runtime dependency to swagger in nflow-jetty to build time depen…
Browse files Browse the repository at this point in the history
…dency in nflow-rest-api
  • Loading branch information
gmokki committed Dec 11, 2014
1 parent c5f46a5 commit a2cc9d3
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 84 deletions.
4 changes: 0 additions & 4 deletions nflow-jetty/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,6 @@
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ private ServletContextHandler setupServletContextHandler(String[] extraStaticRes

logger.info("Static resources served from {}", resources);
context.setBaseResource(new ResourceCollection(resources.toArray(new String[resources.size()])));
context.setWelcomeFiles(new String[] { "index.html", "service.json" });

ServletHolder holder = new ServletHolder(new DefaultServlet());
holder.setInitParameter("dirAllowed", "false");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package com.nitorcreations.nflow.jetty.config;

import static com.nitorcreations.nflow.jetty.StartNflow.DEFAULT_HOST;
import static com.nitorcreations.nflow.jetty.StartNflow.DEFAULT_PORT;
import static com.nitorcreations.nflow.rest.config.RestConfiguration.REST_OBJECT_MAPPER;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static java.util.Arrays.asList;

import java.util.Arrays;

Expand Down Expand Up @@ -47,10 +45,6 @@
import com.nitorcreations.nflow.rest.v1.WorkflowDefinitionResource;
import com.nitorcreations.nflow.rest.v1.WorkflowExecutorResource;
import com.nitorcreations.nflow.rest.v1.WorkflowInstanceResource;
import com.wordnik.swagger.jaxrs.config.BeanConfig;
import com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider;
import com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON;
import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider;

@Configuration
@PropertySource("classpath:nflow-jetty.properties")
Expand All @@ -73,20 +67,18 @@ public Server jaxRsServer(WorkflowInstanceResource workflowInstanceResource,
workflowInstanceResource,
workflowDefinitionResource,
workflowExecutorResource,
statisticsResource,
apiListingResourceJson()));
statisticsResource
));
factory.setAddress('/' + factory.getAddress());
factory.setProviders( Arrays.asList(
factory.setProviders(asList(
jsonProvider(nflowRestObjectMapper),
validationExceptionMapper(),
resourceListingProvider(),
apiDeclarationProvider(),
corsHeadersProvider(),
notFoundExceptionMapper(),
new BadRequestExceptionMapper(),
new DateTimeParamConverterProvider()
));
factory.setFeatures(Arrays.asList(new LoggingFeature()));
factory.setFeatures(asList(new LoggingFeature()));
factory.setBus(cxf());
factory.setInInterceptors(Arrays.< Interceptor< ? extends Message > >asList(new JAXRSBeanValidationInInterceptor()));
factory.setOutInterceptors(Arrays.< Interceptor< ? extends Message > >asList(new JAXRSBeanValidationOutInterceptor()));
Expand Down Expand Up @@ -122,40 +114,6 @@ public JaxRsApiApplication jaxRsApiApplication() {
return new JaxRsApiApplication();
}

@Bean
public BeanConfig swaggerConfig() {
final BeanConfig config = new BeanConfig();
config.setVersion(env.getRequiredProperty("nflow.version"));
config.setScan(true);
config.setResourcePackage(WorkflowInstanceResource.class.getPackage().getName());
String basePath = env.getProperty("swagger.basepath");
if (isEmpty(basePath)) {
basePath = String.format("%s://%s:%d%s",
env.getProperty("swagger.basepath.protocol", "http"),
env.getProperty("swagger.basepath.server", env.getProperty("host", DEFAULT_HOST)),
env.getProperty("swagger.basepath.port", Integer.class, env.getProperty("port", Integer.class, DEFAULT_PORT)),
env.getProperty("swagger.basepath.context", "/api"));
}
logger.debug("Swagger basepath: {}", basePath);
config.setBasePath(basePath);
return config;
}

@Bean
public ApiDeclarationProvider apiDeclarationProvider() {
return new ApiDeclarationProvider();
}

@Bean
public ApiListingResourceJSON apiListingResourceJson() {
return new ApiListingResourceJSON();
}

@Bean
public ResourceListingProvider resourceListingProvider() {
return new ResourceListingProvider();
}

@ApplicationPath("/")
public static class JaxRsApiApplication extends Application {
}
Expand Down
2 changes: 1 addition & 1 deletion nflow-jetty/src/main/resources/static/doc/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<script type="text/javascript">
$(function () {
window.swaggerUi = new SwaggerUi({
url: location.protocol + '//' + location.host + location.pathname + "../api/api-docs",
url: "../api-docs",
dom_id: "swagger-ui-container",
supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
onComplete: function(swaggerApi, swaggerUi){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,45 +1,22 @@
package com.nitorcreations.nflow.jetty.config;

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.core.env.Environment;

import com.wordnik.swagger.jaxrs.config.BeanConfig;

@RunWith(MockitoJUnitRunner.class)
public class NflowJettyConfigurationTest {

@Mock
private Environment env;

@Test
public void swaggerBasepathBuildingWorks() {
when(env.getProperty(eq("swagger.basepath.protocol"), anyString())).thenReturn("https");
when(env.getProperty(eq("swagger.basepath.server"), anyString())).thenReturn("foobar");
when(env.getProperty(eq("swagger.basepath.port"), eq(Integer.class), anyInt())).thenReturn(123);
when(env.getProperty(eq("swagger.basepath.context"), anyString())).thenReturn("/nflow");
NflowJettyConfiguration config = new NflowJettyConfiguration();
config.env = env;
BeanConfig swaggerConfig = config.swaggerConfig();
assertThat(swaggerConfig.getBasePath(), is("https://foobar:123/nflow"));
public void createsValidationExceptionMapper() {
assertThat(new NflowJettyConfiguration().validationExceptionMapper(), notNullValue());
}

@Test
public void swaggerBasepathPropertyWorks() {
when(env.getProperty("swagger.basepath")).thenReturn("https://bar:123/foo");
NflowJettyConfiguration config = new NflowJettyConfiguration();
config.env = env;
BeanConfig swaggerConfig = config.swaggerConfig();
assertThat(swaggerConfig.getBasePath(), is("https://bar:123/foo"));
}

}
69 changes: 68 additions & 1 deletion nflow-rest-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
<groupId>com.nitorcreations</groupId>
<version>1.1.1-SNAPSHOT</version>
</parent>
<properties>
<EMPTY></EMPTY>
</properties>
<dependencies>
<dependency>
<groupId>com.nitorcreations</groupId>
Expand All @@ -26,7 +29,7 @@
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
Expand Down Expand Up @@ -65,4 +68,68 @@
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.github.kongchen</groupId>
<artifactId>swagger-maven-plugin</artifactId>
<version>${maven-swagger.version}</version>
<configuration>
<apiSources>
<apiSource>
<locations>com.nitorcreations.nflow.rest</locations>
<apiVersion>${project.version}</apiVersion>
<swaggerDirectory>${project.build.outputDirectory}/swagger-docs</swaggerDirectory>
<basePath>../api</basePath>
<swaggerUIDocBasePath>@EMPTY@</swaggerUIDocBasePath>
<swaggerApiReader>com.wordnik.swagger.jersey.JerseyApiReader</swaggerApiReader>
<!--<swaggerApiReader>com.wordnik.swagger.jaxrs.reader.DefaultJaxrsApiReader</swaggerApiReader> -->
</apiSource>
</apiSources>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jersey-jaxrs_2.10</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
<version>${swagger.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-classes</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}/static/api-docs</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${project.build.outputDirectory}/swagger-docs</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,6 @@
import com.nitorcreations.nflow.jetty.StartNflow;
import com.nitorcreations.nflow.metrics.NflowMetricsContext;

/**
* To enable swagger ui (http://localhost:7500/docs) Execute "mvn compile"
* before starting.
*/
public class DemoServer {
public static void main(String[] args) throws Exception {
new StartNflow().registerSpringContext(NflowMetricsContext.class).startJetty(7500, "local", "jmx");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.nitorcreations.nflow.tests.runner;

import static org.apache.commons.lang.StringUtils.substringAfterLast;
import static org.apache.commons.lang3.StringUtils.defaultString;
import static org.apache.commons.lang3.StringUtils.right;
import static org.apache.commons.lang3.StringUtils.substringAfterLast;
import static org.joda.time.DateTimeUtils.currentTimeMillis;
import static org.junit.Assert.assertTrue;

Expand Down
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
<maven-site.version>3.4</maven-site.version>
<maven-source.version>2.4</maven-source.version>
<maven-surefire.version>2.18</maven-surefire.version>
<maven-swagger.version>2.3.1</maven-swagger.version>
<mockito.version>1.10.8</mockito.version>
<multithreadedtc.version>1.01</multithreadedtc.version>
<mysql.version>5.1.34</mysql.version>
Expand Down

0 comments on commit a2cc9d3

Please sign in to comment.