diff --git a/build.gradle b/build.gradle index e9cc09833..1ce1101b8 100644 --- a/build.gradle +++ b/build.gradle @@ -17,8 +17,6 @@ buildscript { -//apply plugin: 'com.github.lkishalmi.bill-of-materials' -//apply from: "$rootDir/versions.gradle" subprojects { apply plugin:'java' diff --git a/gradle.properties b/gradle.properties index 12e90745d..160f0aa17 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=0.61 +version=0.62 springVersion=4.1.5.RELEASE jerseyVersion=2.19 grizzlyVersion=2.3.21 diff --git a/micro-boot/build.gradle b/micro-boot/build.gradle index 1580f008d..cc493c409 100644 --- a/micro-boot/build.gradle +++ b/micro-boot/build.gradle @@ -24,7 +24,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-boot' + artifactId 'micro-boot' version "$version" scm { diff --git a/micro-boot/readme.md b/micro-boot/readme.md new file mode 100644 index 000000000..ee74d07a8 --- /dev/null +++ b/micro-boot/readme.md @@ -0,0 +1,50 @@ +# Spring Boot entry point for Microserver + +[micro-boot example apps](https://github.com/aol/micro-server/tree/master/micro-boot/src/test/java/app) + +## To use + +Add micro-boot to the classpath + +Maven + + + com.aol.microservices + micro-boot + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-boot:0.62' + + And also add Grizzly and Jersey (micro-grizzly-with-jersey will add both) + + Maven + + + com.aol.microservices + micro-grizzly-with-jersey + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-grizzly-with-jersey:0.62' + + + ## Create a simple server + + public class SimpleApp { + + public static void main(String[] args){ + new MicrobootApp(()->"test-app").run(); + } + + } + + # Relationship to Microserver and Spring Boot + + micro-boot allows you to use Microserver plugins & jax-rs support with Spring Boot back ends. + + micro-boot apps are started via the MicrobootApp (equivalent to MicroserverApp) and configured via the Microboot annotation (equivalent to the Microserver annotation) \ No newline at end of file diff --git a/micro-client/build.gradle b/micro-client/build.gradle index c8f789c93..d556873da 100644 --- a/micro-client/build.gradle +++ b/micro-client/build.gradle @@ -24,7 +24,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-client' + artifactId 'micro-client' version "$version" diff --git a/micro-client/readme.md b/micro-client/readme.md index 2c57a7561..ba78183b6 100644 --- a/micro-client/readme.md +++ b/micro-client/readme.md @@ -1,5 +1,7 @@ # REST client plugin for Microserver +[micro-client example apps](https://github.com/aol/micro-server/tree/master/micro-client/src/test/java/app) + This plugin provides two REST Clients 1. NIORestClient - which is a non-blocking REST client using NIO @@ -15,10 +17,10 @@ Maven com.aol.microservices - microserver-client - 0.61 + micro-client + 0.62 Gradle - compile 'com.aol.microservices:microserver-client:0.61' \ No newline at end of file + compile 'com.aol.microservices:micro-client:0.62' \ No newline at end of file diff --git a/micro-core/build.gradle b/micro-core/build.gradle index 1b1702a37..008e85383 100644 --- a/micro-core/build.gradle +++ b/micro-core/build.gradle @@ -41,20 +41,9 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-core' + artifactId 'micro-core' version "$version" - dependencyManagement { - dependencies{ - dependency{ - groupId 'org.springframework' - artifactId 'spring-framework-bom' - version '4.1.5.RELEASE' - type 'pom' - scope 'import' - } - } - } scm { url 'scm:git@github.com:aol/micro-server.git' diff --git a/micro-core/readme.md b/micro-core/readme.md index 6b00ce66f..be366937c 100644 --- a/micro-core/readme.md +++ b/micro-core/readme.md @@ -1,3 +1,19 @@ # The core of Microserver -This module imports your configured plugins, starts and manages your JEE webserver and jax-rs implementation. \ No newline at end of file +This module imports your configured plugins, starts and manages your JEE webserver and jax-rs implementation. + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-core + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-core:0.62' \ No newline at end of file diff --git a/micro-cors/build.gradle b/micro-cors/build.gradle index 122fb2c13..3882f7cf1 100644 --- a/micro-cors/build.gradle +++ b/micro-cors/build.gradle @@ -16,7 +16,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-cors' + artifactId 'micro-cors' version "$version" diff --git a/micro-cors/readme.md b/micro-cors/readme.md index 4257b7a8e..958d8fd4b 100644 --- a/micro-cors/readme.md +++ b/micro-cors/readme.md @@ -10,10 +10,10 @@ Maven com.aol.microservices - microserver-cors + micro-cors 0.61 Gradle - compile 'com.aol.microservices:microserver-cors:0.61' \ No newline at end of file + compile 'com.aol.microservices:micro-cors:0.61' \ No newline at end of file diff --git a/micro-data/build.gradle b/micro-data/build.gradle index 166565fac..85693c524 100644 --- a/micro-data/build.gradle +++ b/micro-data/build.gradle @@ -25,7 +25,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-data' + artifactId 'micro-data' version "$version" diff --git a/micro-events/build.gradle b/micro-events/build.gradle index 1c38862a6..c38953a37 100644 --- a/micro-events/build.gradle +++ b/micro-events/build.gradle @@ -15,7 +15,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-events' + artifactId 'micro-events' version "$version" diff --git a/micro-events/readme.md b/micro-events/readme.md index 7c6f1950b..b6f47fd54 100644 --- a/micro-events/readme.md +++ b/micro-events/readme.md @@ -10,13 +10,13 @@ Maven com.aol.microservices - microserver-events + micro-events 0.61 Gradle - compile 'com.aol.microservices:microserver-events:0.61' + compile 'com.aol.microservices:micro-events:0.61' ### Depends on diff --git a/micro-grizzly-with-jersey/build.gradle b/micro-grizzly-with-jersey/build.gradle index 9b018a9bf..f90e861bf 100644 --- a/micro-grizzly-with-jersey/build.gradle +++ b/micro-grizzly-with-jersey/build.gradle @@ -18,7 +18,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-grizzly-with-jersey' + artifactId 'micro-grizzly-with-jersey' version "$version" diff --git a/micro-grizzly-with-jersey/readme.md b/micro-grizzly-with-jersey/readme.md index c8061d9de..962a14904 100644 --- a/micro-grizzly-with-jersey/readme.md +++ b/micro-grizzly-with-jersey/readme.md @@ -1,3 +1,21 @@ # Grizzly, Jersey and Microserver together -Convenience module that packages Grizzly, Jersey and Microserver together \ No newline at end of file +[Example Grizzly & Jersey Apps](https://github.com/aol/micro-server/tree/master/micro-grizzly/src/test/java/app) + +Convenience module that packages Grizzly, Jersey and Microserver together + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-grizzly-with-jersey + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-grizzly-with-jersey:0.62' \ No newline at end of file diff --git a/micro-grizzly/build.gradle b/micro-grizzly/build.gradle index a0f9b3a55..74b2c4314 100644 --- a/micro-grizzly/build.gradle +++ b/micro-grizzly/build.gradle @@ -20,7 +20,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-grizzly' + artifactId 'micro-grizzly' version "$version" diff --git a/micro-grizzly/readme.md b/micro-grizzly/readme.md index b006a0ebb..36bd2da41 100644 --- a/micro-grizzly/readme.md +++ b/micro-grizzly/readme.md @@ -1,3 +1,22 @@ # Grizzly web server Plugin -Plugin that allows the Grizzly Web server to be used with Microserver \ No newline at end of file +[Example Grizzly apps](https://github.com/aol/micro-server/tree/master/micro-grizzly/src/test/java/app) + +Plugin that allows the Grizzly Web server to be used with Microserver. + + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-grizzly + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-grizzly:0.62' \ No newline at end of file diff --git a/micro-guava/build.gradle b/micro-guava/build.gradle index 851a38fc5..eb72fbd83 100644 --- a/micro-guava/build.gradle +++ b/micro-guava/build.gradle @@ -18,7 +18,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-guava' + artifactId 'micro-guava' version "$version" diff --git a/micro-guava/readme.md b/micro-guava/readme.md index a9decfbb3..e56a3f326 100644 --- a/micro-guava/readme.md +++ b/micro-guava/readme.md @@ -1,6 +1,47 @@ # Guava Plugin for Microserver +[micro-guava example apps](https://github.com/aol/micro-server/tree/master/micro-guava/src/test/java/app) + This plugin 1. Configures Jackson for Guava serialisation / deserialisation, so Guava types can be used as input and output to jax-rs Resources -2. Configures a Guava EventBus as a Spring Bean (named microserverEventBus) \ No newline at end of file +2. Configures a Guava EventBus as a Spring Bean (named microserverEventBus) + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-guava + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-guava:0.62' + + +# Example Guava Resource + + @Rest + @Path("/status") + public class GuavaAppResource { + + @POST + @Produces("application/json") + @Path("/ping") + + public ImmutableList ping( ImmutableGuavaEntity entity) { + return entity.getList(); + } + @POST + @Produces("application/json") + @Path("/optional") + public Optional optional(Jdk8Entity entity) { + return entity.getName(); + } + + } diff --git a/micro-guava/src/test/java/app/guava/com/aol/micro/server/GuavaAppResource.java b/micro-guava/src/test/java/app/guava/com/aol/micro/server/GuavaAppResource.java index 37d357cce..a6cdf2661 100644 --- a/micro-guava/src/test/java/app/guava/com/aol/micro/server/GuavaAppResource.java +++ b/micro-guava/src/test/java/app/guava/com/aol/micro/server/GuavaAppResource.java @@ -1,26 +1,22 @@ package app.guava.com.aol.micro.server; -import java.util.List; import java.util.Optional; -import javax.validation.constraints.NotNull; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; -import org.springframework.stereotype.Component; - -import com.aol.micro.server.auto.discovery.RestResource; +import com.aol.micro.server.auto.discovery.Rest; import com.google.common.collect.ImmutableList; -@Component +@Rest @Path("/status") -public class GuavaAppResource implements RestResource { +public class GuavaAppResource { @POST @Produces("application/json") @Path("/ping") - public List ping( ImmutableGuavaEntity entity) { + public ImmutableList ping( ImmutableGuavaEntity entity) { return entity.getList(); } @POST diff --git a/micro-ip-tracker/build.gradle b/micro-ip-tracker/build.gradle index 5df8500c7..03ec8b269 100644 --- a/micro-ip-tracker/build.gradle +++ b/micro-ip-tracker/build.gradle @@ -14,7 +14,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-ip-tracker' + artifactId 'micro-ip-tracker' version "$version" diff --git a/micro-ip-tracker/readme.md b/micro-ip-tracker/readme.md index def632739..10c9354a6 100644 --- a/micro-ip-tracker/readme.md +++ b/micro-ip-tracker/readme.md @@ -1,3 +1,21 @@ # IP Tracker Plugin -Capture the IP address on incoming REST Requests via a filter \ No newline at end of file +Capture the IP address on incoming REST Requests via a filter. + +The IP Address is stored in a thread local variable & available via QueryIPRetriever.getIPAddress(); + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-ip-tracker + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-ip-tracker:0.62' \ No newline at end of file diff --git a/micro-jersey/build.gradle b/micro-jersey/build.gradle index e229b60f3..b4c2777a2 100644 --- a/micro-jersey/build.gradle +++ b/micro-jersey/build.gradle @@ -30,7 +30,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-jersey' + artifactId 'micro-jersey' version "$version" diff --git a/micro-jersey/readme.md b/micro-jersey/readme.md index 1afe32937..603cf1efb 100644 --- a/micro-jersey/readme.md +++ b/micro-jersey/readme.md @@ -1,3 +1,21 @@ # Jersey jax-rs Plugin -Plugin that allows the Jersey to be used as the jax-rs implementation with Microserver \ No newline at end of file +[Example Jersey Apps](https://github.com/aol/micro-server/tree/master/micro-grizzly/src/test/java/app) + +Plugin that allows the Jersey to be used as the jax-rs implementation with Microserver + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-jersey + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-jersey:0.62' \ No newline at end of file diff --git a/micro-metrics/build.gradle b/micro-metrics/build.gradle index c3f79d6fd..7ae6d081c 100644 --- a/micro-metrics/build.gradle +++ b/micro-metrics/build.gradle @@ -17,7 +17,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-metrics' + artifactId 'micro-metrics' version "$version" diff --git a/micro-metrics/readme.md b/micro-metrics/readme.md new file mode 100644 index 000000000..a1c90fed3 --- /dev/null +++ b/micro-metrics/readme.md @@ -0,0 +1,48 @@ +# Dropwizard metrics plugin for Microserver + +[micro-metrics example apps](https://github.com/aol/micro-server/tree/master/micro-metrics/src/test/java/app/metrics) + +This adds support for Dropwizard metrics annotations on Spring beans. For more detailed info see [Metrics Spring](http://www.ryantenney.com/metrics-spring/) + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-metrics + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-metrics:0.62' + + # Configuring Metrics Reporters + + By default we report to the console hourly and to JMX. To configure other reporters, this can be done via the setInit method on the CodahaleMetricsConfigurer class e.g. + + CodahaleMetricsConfigurer.setInit( metricRegistry -> + TestReporter.forRegistry(metricRegistry) + .build() + .start(10, TimeUnit.MILLISECONDS)); + + +# An example Spring Bean capturing Metrics + + + + @Component + public class TimedResource { + + + @Timed + public String times(){ + + return "ok!"; + } + } + + \ No newline at end of file diff --git a/micro-reactive/build.gradle b/micro-reactive/build.gradle index 18b37092c..495648eb2 100644 --- a/micro-reactive/build.gradle +++ b/micro-reactive/build.gradle @@ -16,7 +16,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-reactive' + artifactId 'micro-reactive' version "$version" diff --git a/micro-reactive/readme.md b/micro-reactive/readme.md index 532c1c7d3..55eb14472 100644 --- a/micro-reactive/readme.md +++ b/micro-reactive/readme.md @@ -1,7 +1,25 @@ # Reactive plugin for Microserver +[micro-reactive example apps](https://github.com/aol/micro-server/tree/master/micro-reactive/src/test/java/app) + Also can run standalone outside of Microserver +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-reactive + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-reactive:0.62' + ## Reactive mixin implement com.aol.micro.server.reactive.Reactive to add Reactive functionality via [simple-react](https://github.com/aol/simple-react). diff --git a/micro-reactive/src/main/java/com/aol/micro/server/reactive/Pipes.java b/micro-reactive/src/main/java/com/aol/micro/server/reactive/Pipes.java index f4902fd99..7b525dd85 100644 --- a/micro-reactive/src/main/java/com/aol/micro/server/reactive/Pipes.java +++ b/micro-reactive/src/main/java/com/aol/micro/server/reactive/Pipes.java @@ -6,6 +6,7 @@ import java.util.concurrent.ConcurrentMap; import com.aol.simple.react.async.Adapter; +import com.aol.simple.react.async.QueueFactories; import com.aol.simple.react.stream.traits.LazyFutureStream; /** @@ -27,17 +28,77 @@ public class Pipes { public static Optional> get(K key){ return Optional.ofNullable((Adapter)registered.get(key)); } + /** + * Register a Queue, and get back a listening LazyFutureStream that runs on a single thread + * (not the calling thread) + * + *
+	 * {@code
+	 * LazyFutureStream stream = Pipes.register("test", QueueFactories.
+											boundedNonBlockingQueue(100)
+												.build());
+		stream.filter(it->it!=null).peek(System.out::println).run();
+	 * 
+	 * }
+ * + * @param key : Adapter identifier + * @param adapter + * @return LazyFutureStream from supplied Queue, optimisied for CPU bound operation + */ + public static LazyFutureStream register(Object key, Adapter adapter){ + registered.put(key, adapter); + return LazyFutureStream.of(adapter.stream()); + } /** - * Register a Queue + * Register a Queue, and get back a listening LazyFutureStream optimized for CPU Bound operations + * + * Convert the LazyFutureStream to async mode to fan out operations across threads, after the first fan out operation definition + * it should be converted to sync mode + * + *
+	 * {@code
+	 * LazyFutureStream stream = Pipes.registerForCPU("test", QueueFactories.
+											boundedNonBlockingQueue(100)
+												.build());
+		stream.filter(it->it!=null)
+		      .async()
+		      .peek(this::process)
+		      .sync()
+		      .forEach(System.out::println);
+	 * 
+	 * }
+ * @param key : Adapter identifier + * @param adapter + * @return LazyFutureStream from supplied Queue, optimisied for CPU bound operation + */ + public static LazyFutureStream registerForCPU(Object key, Adapter adapter){ + registered.put(key, adapter); + return Reactors.cpuReact.of(adapter.stream()); + } + /** + * Register a Queue, and get back a listening LazyFutureStream optimized for IO Bound operations + * + *
+	 * {@code
+	 * LazyFutureStream stream = Pipes.registerForIO("test", QueueFactories.
+											boundedNonBlockingQueue(100)
+												.build());
+		stream.filter(it->it!=null)
+		      .async()
+		      .peek(this::load)
+		      .sync()
+		      .run(System.out::println);
+	 * 
+	 * }
* * @param key : Adapter identifier * @param adapter * @return LazyFutureStream from supplied Queue */ - public static LazyFutureStream register(Object key, Adapter adapter){ + public static LazyFutureStream registerForIO(Object key, Adapter adapter){ registered.put(key, adapter); - return LazyFutureStream.of(adapter.stream()); + return Reactors.ioReact.of(adapter.stream()); } /** * @param key : Queue identifier @@ -47,6 +108,22 @@ public static LazyFutureStream register(Object key, Adapter adapter){ public static LazyFutureStream stream(Object key){ return LazyFutureStream.of(((Adapter)registered.get(key)).stream()); } + /** + * @param key : Queue identifier + * @return LazyFutureStream that reads from specified Queue + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static LazyFutureStream streamIOBound(Object key){ + return Reactors.ioReact.of(((Adapter)registered.get(key)).stream()); + } + /** + * @param key : Queue identifier + * @return LazyFutureStream that reads from specified Queue + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static LazyFutureStream streamCPUBound(Object key){ + return Reactors.cpuReact.of(((Adapter)registered.get(key)).stream()); + } public static void clear() { registered.clear(); diff --git a/micro-reactive/src/test/java/app/reactive/pipes/com/aol/micro/server/ManyProducersToOneConsumerApp.java b/micro-reactive/src/test/java/app/reactive/pipes/com/aol/micro/server/ManyProducersToOneConsumerApp.java index 0da5d3358..23659e8cd 100644 --- a/micro-reactive/src/test/java/app/reactive/pipes/com/aol/micro/server/ManyProducersToOneConsumerApp.java +++ b/micro-reactive/src/test/java/app/reactive/pipes/com/aol/micro/server/ManyProducersToOneConsumerApp.java @@ -15,10 +15,10 @@ public class ManyProducersToOneConsumerApp { public static void main(String[] args){ - LazyFutureStream stream = Pipes.register("test", QueueFactories. + LazyFutureStream stream = Pipes.registerForIO("test", QueueFactories. boundedNonBlockingQueue(100) .build()); - stream.filter(it->it!=null).async().peek(System.out::println).run(); + stream.filter(it->it!=null).async().peek(System.out::println).sync().run(); new MicroserverApp(()-> "simple-app").run(); } diff --git a/micro-reactive/src/test/java/com/aol/micro/server/reactive/PipesTest.java b/micro-reactive/src/test/java/com/aol/micro/server/reactive/PipesTest.java index b3c42e064..cc02cf152 100644 --- a/micro-reactive/src/test/java/com/aol/micro/server/reactive/PipesTest.java +++ b/micro-reactive/src/test/java/com/aol/micro/server/reactive/PipesTest.java @@ -1,16 +1,23 @@ package com.aol.micro.server.reactive; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import java.util.Arrays; +import org.junit.Before; import org.junit.Test; import com.aol.simple.react.async.Queue; +import com.aol.simple.react.stream.traits.LazyFutureStream; public class PipesTest { - + @Before + public void setup() { + Pipes.clear(); + } @Test public void testGetAbsent() { Pipes.clear(); @@ -29,5 +36,34 @@ public void testStream() { Pipes.register("hello",queue); assertThat(Pipes.stream("hello").limit(1).toList(),equalTo(Arrays.asList("world"))); } - + @Test + public void testStreamIO() { + Queue queue = new Queue(); + queue.add("world"); + Pipes.register("hello",queue); + assertThat(Pipes.streamIOBound("hello").limit(1).toList(),equalTo(Arrays.asList("world"))); + } + @Test + public void testStreamCPU() { + Queue queue = new Queue(); + queue.add("world"); + Pipes.register("hello",queue); + assertThat(Pipes.streamCPUBound("hello").limit(1).toList(),equalTo(Arrays.asList("world"))); + } + @Test + public void cpuBound() { + Queue queue = new Queue(); + LazyFutureStream stream = Pipes.registerForCPU("hello", queue); + queue.add("world"); + assertTrue(Pipes.get("hello").isPresent()); + assertThat(stream.limit(1).toList(),equalTo(Arrays.asList("world"))); + } + @Test + public void ioBound() { + Queue queue = new Queue(); + LazyFutureStream stream = Pipes.registerForIO("hello", queue); + queue.add("world"); + assertTrue(Pipes.get("hello").isPresent()); + assertThat(stream.limit(1).toList(),equalTo(Arrays.asList("world"))); + } } diff --git a/micro-swagger/build.gradle b/micro-swagger/build.gradle index 0e3441027..827eb6f3e 100644 --- a/micro-swagger/build.gradle +++ b/micro-swagger/build.gradle @@ -14,7 +14,7 @@ modifyPom { inceptionYear '2015' groupId 'com.aol.microservices' - artifactId 'microserver-swagger' + artifactId 'micro-swagger' version "$version" diff --git a/micro-swagger/readme.md b/micro-swagger/readme.md new file mode 100644 index 000000000..8b1f405bd --- /dev/null +++ b/micro-swagger/readme.md @@ -0,0 +1,21 @@ +# Swagger plugin for Microserver + +[micro-swagger example apps](https://github.com/aol/micro-server/tree/master/micro-swagger/src/test/java/app/swagger/com/aol/micro/server) + +Also can run standalone outside of Microserver + +## To use + +Simply add to the classpath + +Maven + + + com.aol.microservices + micro-swagger + 0.62 + + +Gradle + + compile 'com.aol.microservices:micro-swagger:0.62' \ No newline at end of file