You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2016/10/26 19:49:58 UTC
svn commit: r1766728 - in /openwebbeans/microwave/trunk:
microwave-core/src/main/java/org/apache/microwave/
microwave-core/src/main/java/org/apache/microwave/cxf/ microwave-doc/
microwave-doc/src/main/java/org/slf4j/ microwave-doc/src/main/jbake/conten...
Author: rmannibucau
Date: Wed Oct 26 19:49:57 2016
New Revision: 1766728
URL: http://svn.apache.org/viewvc?rev=1766728&view=rev
Log:
basic doc structure
Added:
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/cli.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/configuration.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/index.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/index.adoc (with props)
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-maven/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-maven/index.adoc
- copied, changed from r1766603, openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/testing/
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/testing/index.adoc
Removed:
openwebbeans/microwave/trunk/microwave-doc/src/main/java/org/slf4j/
openwebbeans/microwave/trunk/microwave-jpa/README.adoc
Modified:
openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/cxf/CxfCdiAutoSetup.java
openwebbeans/microwave/trunk/microwave-doc/pom.xml
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc
openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/start.adoc
Modified: openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java?rev=1766728&r1=1766727&r2=1766728&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java (original)
+++ openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/Microwave.java Wed Oct 26 19:49:57 2016
@@ -99,6 +99,10 @@ public class Microwave implements AutoCl
private Runnable postTask;
private boolean clearCatalinaSystemProperties;
+ public Microwave() {
+ this(new Builder());
+ }
+
public Microwave(final Builder builder) {
this.configuration = builder;
this.ownedTempDir = new File(configuration.tempDir, "microwave_" + System.nanoTime());
Modified: openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/cxf/CxfCdiAutoSetup.java
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/cxf/CxfCdiAutoSetup.java?rev=1766728&r1=1766727&r2=1766728&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/cxf/CxfCdiAutoSetup.java (original)
+++ openwebbeans/microwave/trunk/microwave-core/src/main/java/org/apache/microwave/cxf/CxfCdiAutoSetup.java Wed Oct 26 19:49:57 2016
@@ -337,7 +337,7 @@ public class CxfCdiAutoSetup implements
final String address = Logs.singleSlash(base, info.getURITemplate().getValue());
- final String clazz = info.getResourceClass().getName();
+ final String clazz = uproxyName(info.getResourceClass().getName());
classSize = Math.max(classSize, clazz.length());
addressSize = Math.max(addressSize, address.length());
@@ -367,7 +367,7 @@ public class CxfCdiAutoSetup implements
// effective logging
log.info("REST Application: " + endpoint.getEndpointInfo().getAddress() + " -> "
- + ofNullable(app).map(ApplicationInfo::getResourceClass).map(Class::getName).orElse(""));
+ + ofNullable(app).map(ApplicationInfo::getResourceClass).map(Class::getName).map(CxfCdiAutoSetup::uproxyName).orElse(""));
Collections.sort(resourcesToLog);
final int fClassSize = classSize;
@@ -416,4 +416,11 @@ public class CxfCdiAutoSetup implements
}
}
}
+
+ private static String uproxyName(final String clazz) {
+ if (clazz.contains("$$")) {
+ return clazz.substring(0, clazz.indexOf("$$"));
+ }
+ return clazz;
+ }
}
Modified: openwebbeans/microwave/trunk/microwave-doc/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/pom.xml?rev=1766728&r1=1766727&r2=1766728&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/pom.xml (original)
+++ openwebbeans/microwave/trunk/microwave-doc/pom.xml Wed Oct 26 19:49:57 2016
@@ -59,12 +59,6 @@
<groupId>org.jbake</groupId>
<artifactId>jbake-core</artifactId>
<version>2.4.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>jul-to-slf4j</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
Modified: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc?rev=1766728&r1=1766727&r2=1766728&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc (original)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc Wed Oct 26 19:49:57 2016
@@ -7,20 +7,37 @@
:jbake-microwavecolor: body-pink
:icons: font
-TBD
-
== Microwave Core
-TBD
+Core component is the backbone of Microwave. It is based on Tomcat embedded for
+Servlet container, CXF for JAX-RS, OpenWebBeans for CDI and Log4j2 for the logging.
+
+link:microwave-core/configuration.html[Read about Microwave configuration]
+
+link:microwave-core/cli.html[Read about Microwave command line]
== Microwave JPA
-TBD
+Microwave JPA provides a thin layer on top of JPA to make it easier to use JPA
+without requiring to use a full container like JavaEE or Spring. It is just a
+CDI extension.
+
+link:microwave-jpa/index.html[Read More]
== Microwave Maven
-TBD
+Microwave provides a Maven plugin to run microwave with your preferred build tool.
+
+link:microwave-maven/index.html[Read More]
== Microwave Gradle
-TBD
+Microwave provides a Gradle plugin to run microwave with your preferred build tool.
+
+link:microwave-gradle/index.html[Read More]
+
+== Microwave and the Testing
+
+Microwave provides two main testing integration: a JUnit one and an Arquillian Container.
+
+link:testing/index.html[Read More]
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/cli.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/cli.adoc?rev=1766728&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/cli.adoc (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/cli.adoc Wed Oct 26 19:49:57 2016
@@ -0,0 +1,10 @@
+= Microwave Command Line Interface
+:jbake-date: 2016-10-24
+:jbake-type: page
+:jbake-status: published
+:jbake-microwavepdf:
+:jbake-microwavetitleicon: icon icon_puzzle_alt
+:jbake-microwavecolor: body-pink
+:icons: font
+
+TBD
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/cli.adoc
------------------------------------------------------------------------------
svn:executable = *
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/configuration.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/configuration.adoc?rev=1766728&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/configuration.adoc (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/configuration.adoc Wed Oct 26 19:49:57 2016
@@ -0,0 +1,13 @@
+= Microwave Configuration
+:jbake-date: 2016-10-24
+:jbake-type: page
+:jbake-status: published
+:jbake-microwavepdf:
+:jbake-microwavetitleicon: icon icon_puzzle_alt
+:jbake-microwavecolor: body-pink
+:icons: font
+
+== Builder
+
+TBD
+
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-core/configuration.adoc
------------------------------------------------------------------------------
svn:executable = *
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/index.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/index.adoc?rev=1766728&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/index.adoc (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/index.adoc Wed Oct 26 19:49:57 2016
@@ -0,0 +1,10 @@
+= Microwave Gradle
+:jbake-date: 2016-10-24
+:jbake-type: page
+:jbake-status: published
+:jbake-microwavepdf:
+:jbake-microwavetitleicon: icon icon_puzzle_alt
+:jbake-microwavecolor: body-pink
+:icons: font
+
+TBD
\ No newline at end of file
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-gradle/index.adoc
------------------------------------------------------------------------------
svn:executable = *
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/index.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/index.adoc?rev=1766728&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/index.adoc (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/index.adoc Wed Oct 26 19:49:57 2016
@@ -0,0 +1,110 @@
+= Microwave JPA
+:jbake-date: 2016-10-24
+:jbake-type: page
+:jbake-status: published
+:jbake-microwavepdf:
+:jbake-microwavetitleicon: icon icon_puzzle_alt
+:jbake-microwavecolor: body-pink
+:icons: font
+
+
+The overall idea behind this module is to propose a CDI integration of JPA
+allowing to programmatically control its persistence units.
+
+Concretely you will create a persistence unit from a `PersistenceUnitBuilder`
+allowing you to fully configure your unit from CDI context including the datasource:
+
+[source,java]
+----
+@ApplicationScoped
+public class JpaConfig {
+ @Produces
+ public PersistenceUnitInfoBuilder unit(final DataSource ds) {
+ return new PersistenceUnitInfoBuilder()
+ .setUnitName("test")
+ .setDataSource(ds)
+ .setExcludeUnlistedClasses(true)
+ .addManagedClazz(User.class)
+ .addProperty("openjpa.RuntimeUnenhancedClasses", "supported")
+ .addProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema");
+ }
+}
+----
+
+TIP: if your application uses a single persistence unit this is optional and
+a default one will be created if a single DataSource bean is available as Bean<?>.
+
+The datasource can be produces as you wish using your own configuration mecanism:
+
+[source,java]
+----
+@ApplicationScoped
+public class JpaConfig {
+ @Produces // dbcp2 datasource for instance
+ @ApplicationScoped
+ public DataSource dataSource() {
+ final BasicDataSource source = new BasicDataSource();
+ source.setDriver(new Driver());
+ source.setUrl("jdbc:h2:mem:jpaextensiontest");
+ return source;
+ }
+}
+----
+
+NOTE: it is recommanded to ensure the `DataSource` is normal-scoped to not get surprises in term of behavior.
+
+Finally you can inject your entity manager using `@Unit`. Ensure to
+decorate with `@Jpa` a class/method before using the entity manager to activate
+the jpa CDI context:
+
+[source,java]
+----
+@ApplicationScoped
+@Jpa(transactional = false)
+public class JPADao {
+ @Inject
+ @Unit(name = "test")
+ private EntityManager em;
+
+ @Jpa // with a resource local transaction
+ public User save(final User user) {
+ em.persist(user);
+ return user;
+ }
+
+ // inherit form class, no tx
+ public User find(final long id) {
+ return em.find(User.class, id);
+ }
+}
+----
+
+IMPORTANT: this integration is 100% based on `RESOURCE_LOCAL` units for now.
+
+Not that if a bean get injected an `EntityManager` it gets automatically `@Jpa(transactional=true)`
+so previous bean is equivalent to:
+
+[source,java]
+----
+@ApplicationScoped
+public class JPADao {
+ @Inject
+ @Unit(name = "test")
+ private EntityManager em;
+
+ public User save(final User user) {
+ em.persist(user);
+ return user;
+ }
+
+ @Jpa(transactional = false)
+ public User find(final long id) {
+ return em.find(User.class, id);
+ }
+}
+----
+
+== Integration with Bean Validation
+
+The extension will try to find a `ValidatorFactory` in CDI context and will provide ir to the JPA provider
+if the `ValidationMode` is not `NONE` and a `Bean<ValidatorFactory>` exists.
Propchange: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-jpa/index.adoc
------------------------------------------------------------------------------
svn:executable = *
Copied: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-maven/index.adoc (from r1766603, openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc)
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-maven/index.adoc?p2=openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-maven/index.adoc&p1=openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc&r1=1766603&r2=1766728&rev=1766728&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/components.adoc (original)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/microwave-maven/index.adoc Wed Oct 26 19:49:57 2016
@@ -1,4 +1,4 @@
-= Components
+= Microwave Maven
:jbake-date: 2016-10-24
:jbake-type: page
:jbake-status: published
@@ -7,20 +7,4 @@
:jbake-microwavecolor: body-pink
:icons: font
-TBD
-
-== Microwave Core
-
-TBD
-
-== Microwave JPA
-
-TBD
-
-== Microwave Maven
-
-TBD
-
-== Microwave Gradle
-
-TBD
+TBD
\ No newline at end of file
Modified: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/start.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/start.adoc?rev=1766728&r1=1766727&r2=1766728&view=diff
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/start.adoc (original)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/start.adoc Wed Oct 26 19:49:57 2016
@@ -6,4 +6,43 @@
:jbake-microwavecolor: body-green
:icons: font
-TBD
+== Your first application
+
+Microwave relies on JAX-RS and CDI so to start you just need to write a JAX-RS endpoint:
+
+[source,java]
+----
+@Path("kitchen")
+@ApplicationScoped
+public class HelloKitchen {
+ @GET
+ public String getMenu() {
+ return "good things";
+ }
+}
+----
+
+Then booting Microwave is as easy as launching:
+
+[source,java]
+----
+try (final Microwave microwave = new Microwave().bake()) {
+ new Scanner(System.in).nextLine();
+}
+----
+
+You should get some output containing:
+
+[source]
+----
+[19:54:55.397][INFO][main][.microwave.cxf.CxfCdiAutoSetup] REST Application: / -> org.apache.cxf.cdi.DefaultApplication
+[19:54:55.399][INFO][main][.microwave.cxf.CxfCdiAutoSetup] Service URI: /kitchen -> org.app.HelloKitchen
+[19:54:55.401][INFO][main][.microwave.cxf.CxfCdiAutoSetup] GET /kitchen/ -> String getMenu()
+----
+
+And you can check it works doing:
+
+[source]
+----
+curl http://localhost:8080/kitchen
+----
Added: openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/testing/index.adoc
URL: http://svn.apache.org/viewvc/openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/testing/index.adoc?rev=1766728&view=auto
==============================================================================
--- openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/testing/index.adoc (added)
+++ openwebbeans/microwave/trunk/microwave-doc/src/main/jbake/content/testing/index.adoc Wed Oct 26 19:49:57 2016
@@ -0,0 +1,16 @@
+= Microwave Testing
+:jbake-date: 2016-10-24
+:jbake-type: page
+:jbake-status: published
+:jbake-microwavepdf:
+:jbake-microwavetitleicon: icon icon_puzzle_alt
+:jbake-microwavecolor: body-pink
+:icons: font
+
+== JUnit: rules and runners
+
+TBD
+
+== Arquillian Container
+
+TBD