tomee-site-generator git commit: Text
Repository: tomee-site-generator Updated Branches: refs/heads/master affbff78c -> 4578ea0ff Text Project: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/commit/4578ea0f Tree: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/tree/4578ea0f Diff: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/diff/4578ea0f Branch: refs/heads/master Commit: 4578ea0ffdf65f69901d78961eadacb6e1b497b5 Parents: affbff7 Author: Andy Gumbrecht Authored: Tue Jul 4 23:50:47 2017 +0200 Committer: Andy Gumbrecht Committed: Tue Jul 4 23:50:47 2017 +0200 -- src/main/jbake/templates/header.gsp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/4578ea0f/src/main/jbake/templates/header.gsp -- diff --git a/src/main/jbake/templates/header.gsp b/src/main/jbake/templates/header.gsp index 649d759..2f0d662 100755 --- a/src/main/jbake/templates/header.gsp +++ b/src/main/jbake/templates/header.gsp @@ -6,7 +6,8 @@ Apache TomEE - +
tomee-site-generator git commit: comment about prod deployment potential automotion
Repository: tomee-site-generator Updated Branches: refs/heads/master eb450892c -> affbff78c comment about prod deployment potential automotion Project: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/commit/affbff78 Tree: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/tree/affbff78 Diff: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/diff/affbff78 Branch: refs/heads/master Commit: affbff78c2328e9124b021f13da2e6d2af419b1d Parents: eb45089 Author: rmannibucau Authored: Tue Jul 4 23:35:36 2017 +0200 Committer: rmannibucau Committed: Tue Jul 4 23:35:36 2017 +0200 -- src/main/java/org/apache/tomee/website/SvnPub.java | 5 + 1 file changed, 5 insertions(+) -- http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/affbff78/src/main/java/org/apache/tomee/website/SvnPub.java -- diff --git a/src/main/java/org/apache/tomee/website/SvnPub.java b/src/main/java/org/apache/tomee/website/SvnPub.java index 31d1c06..78c3d10 100644 --- a/src/main/java/org/apache/tomee/website/SvnPub.java +++ b/src/main/java/org/apache/tomee/website/SvnPub.java @@ -140,5 +140,10 @@ public class SvnPub { throw new IllegalStateException(commitInfo.getErrorMessage().toString()); } System.out.println(commitInfo.toString()); + +// do we want to POST https://cms.apache.org/tomee/publish?diff=1 \ +// message=&submit=Submit&key=commitInfo.getNewRevision()&source_url=https%3A%2F%2Fsvn.apache.org%2Frepos%2Fasf%2Ftomee%2Fsite&referer= +// +// to automatically publish on prod? } }
tomee-site-generator git commit: working svnpub impl
Repository: tomee-site-generator Updated Branches: refs/heads/master 61cae98ed -> eb450892c working svnpub impl Project: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/commit/eb450892 Tree: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/tree/eb450892 Diff: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/diff/eb450892 Branch: refs/heads/master Commit: eb450892c3e1cb58ea302635dca9679b1961de28 Parents: 61cae98 Author: rmannibucau Authored: Tue Jul 4 23:32:29 2017 +0200 Committer: rmannibucau Committed: Tue Jul 4 23:32:29 2017 +0200 -- README.adoc | 13 +++- pom.xml | 19 +- .../java/org/apache/tomee/website/SvnPub.java | 65 +--- src/main/jbake/content/community/index.adoc | 8 ++- 4 files changed, 90 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/eb450892/README.adoc -- diff --git a/README.adoc b/README.adoc index 0fefd33..8ee6431 100755 --- a/README.adoc +++ b/README.adoc @@ -71,11 +71,20 @@ Finally note that the site generation will rely on the cache as well to generate == Publish (needs an ASF account) -`SvnPub` is a main to push to the staging the site content once built, you need to set the system properties (`MAVEN_OPTS`) `site.password` -to your asf password and `site.username` if you user name is not `USER` environment variable for it to work. +`SvnPub` is a main to push to the staging the site content once built, you need to set the system properties (or properties in ~/.m2/settings.xml) +`site.password` to your asf password and `site.username` if you user name is not `USER` environment variable for it to work. It will checkout/update the site from svn then copy the site folder from target directory to synchronize it with the svn version and finally it will commit everything. You can set the system property `site.message` to not use the default commit message. +NOTE: `.content-site-checkout` will be the local copy of the website (if you need to modify manually the files or delete some old ones. + +NOTE: if the process fails unexpectedly (wrong update in the logic or anything) you can unlock the `.content-site-checkout` executing inside `svn cleanup`. + +To build and deploy on staging at once: `mvn clean compile pre-site`. + +Then to deploy to "prod": go on https://cms.apache.org/tomee/publish and hit "Submit" (note: you can review changes before if you want to check what the CMS took as changes). + +TIP: the staging is available when https://ci.apache.org/builders/tomee-site-staging build is done (triggered on commit), you can't deploy before. http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/eb450892/pom.xml -- diff --git a/pom.xml b/pom.xml index 7a229e6..1b74108 100755 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,6 @@ false false -notset notset UTF-8 @@ -91,7 +90,7 @@ org.tmatesoft.svnkit svnkit - 1.8.9 + 1.8.15 @@ -109,7 +108,7 @@ org.codehaus.mojo exec-maven-plugin -1.5.0 +1.6.0 tomee-site @@ -147,4 +146,18 @@ + + + + svnkit + SVNKit + https://maven.tmatesoft.com/content/repositories/releases/ + +true + + +false + + + http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/eb450892/src/main/java/org/apache/tomee/website/SvnPub.java -- diff --git a/src/main/java/org/apache/tomee/website/SvnPub.java b/src/main/java/org/apache/tomee/website/SvnPub.java index 9e3ec0a..31d1c06 100644 --- a/src/main/java/org/apache/tomee/website/SvnPub.java +++ b/src/main/java/org/apache/tomee/website/SvnPub.java @@ -20,12 +20,15 @@ import org.apache.commons.io.FileUtils; import org.tmatesoft.svn.core.SVNCommitInfo; import org.tmatesoft.svn.core.SVNDepth; import org.tmatesoft.svn.core.SVNException; -import org.tmatesoft.svn.core.SVNProperties; import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; +import org.tmatesoft.svn.core.internal.util.jna.SVNJNAUtil; import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions; +import org.tmatesoft.svn.core.wc.ISVNStatusHandler; import org.tmatesoft.svn.core.wc.SVNClientManager; import org.tmatesoft.svn.core.wc.SVNRevision; +import org.tmatesoft.svn.core.wc.SVNStatus; +import org.tmatesoft.svn.core.wc.SVNStatusType; import org.tmatesoft
svn commit: r1800826 - /tomee/site/trunk/content/community/contributors.html
Author: rmannibucau Date: Tue Jul 4 21:30:49 2017 New Revision: 1800826 URL: http://svn.apache.org/viewvc?rev=1800826&view=rev Log: Maven update of the website on the Tue Jul 04 23:30:45 CEST 2017 from rmannibucau Modified: tomee/site/trunk/content/community/contributors.html Modified: tomee/site/trunk/content/community/contributors.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/community/contributors.html?rev=1800826&r1=1800825&r2=1800826&view=diff == --- tomee/site/trunk/content/community/contributors.html (original) +++ tomee/site/trunk/content/community/contributors.html Tue Jul 4 21:30:49 2017 @@ -97,19 +97,6 @@ - http://www.gravatar.com/avatar/fea00dfa5f55664b225d9c072d9c6766?s=140"; style="width:140px"> - - - - Andy - - - - - - - - http://www.gravatar.com/avatar/dd2ab408381395402fb0b183d002165c?s=140"; style="width:140px"> @@ -144,6 +131,19 @@ + http://www.gravatar.com/avatar/fea00dfa5f55664b225d9c072d9c6766?s=140"; style="width:140px"> + + + + Andy + + + + + + + + http://www.gravatar.com/avatar/9b67307a606e8dbc311c449cd4cae2aa?s=140"; style="width:140px"> @@ -157,6 +157,19 @@ + http://www.gravatar.com/avatar/34820bca697fbf1598774b393c5ca4fe?s=140"; style="width:140px"> + + + + Jeremy Whitlock + + + + + + + + http://www.gravatar.com/avatar/a02777ec107dbbdaa723f4115397dbb0?s=140"; style="width:140px"> @@ -195,11 +208,11 @@ - http://www.gravatar.com/avatar/34820bca697fbf1598774b393c5ca4fe?s=140"; style="width:140px"> + http://www.gravatar.com/avatar/30fae5bce90608fb3df5c018c586aea6?s=140"; style="width:140px"> - Jeremy Whitlock + Mark Struberg @@ -208,11 +221,11 @@ - http://www.gravatar.com/avatar/30fae5bce90608fb3df5c018c586aea6?s=140"; style="width:140px"> + - Mark Struberg + Mohammad Nour El-Din @@ -234,11 +247,11 @@ - https://twitter.com/kevanmiller/profile_image?size=bigger"; style="width:140px"> + - Kevan Lee Miller + Rick McGuire @@ -247,11 +260,11 @@ - https://twitter.com/KrnMal/profile_image?size=bigger"; style="width:140px"> + https://twitter.com/kevanmiller/profile_image?size=bigger"; style="width:140px"> - Karan Singh Malhi + Kevan Lee Miller @@ -260,11 +273,11 @@ - + https://twitter.com/KrnMal/profile_image?size=bigger"; style="width:140px"> - Mohammad Nour El-Din + Karan Singh Malhi @@ -273,11 +286,11 @@
svn commit: r1800825 - in /tomee/site/trunk/content/community: contributors.html index.html
Author: rmannibucau Date: Tue Jul 4 21:27:18 2017 New Revision: 1800825 URL: http://svn.apache.org/viewvc?rev=1800825&view=rev Log: notset Modified: tomee/site/trunk/content/community/contributors.html tomee/site/trunk/content/community/index.html Modified: tomee/site/trunk/content/community/contributors.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/community/contributors.html?rev=1800825&r1=1800824&r2=1800825&view=diff == --- tomee/site/trunk/content/community/contributors.html (original) +++ tomee/site/trunk/content/community/contributors.html Tue Jul 4 21:27:18 2017 @@ -97,32 +97,24 @@ - http://www.gravatar.com/avatar/d46f3fc40e8ecba3bc3b250d5c0d1734?s=140"; style="width:140px"> + http://www.gravatar.com/avatar/fea00dfa5f55664b225d9c072d9c6766?s=140"; style="width:140px"> - David Blevins + Andy - http://people.apache.org/~dblevins";>Apache - - http://github.com/dblevins";>Github - - http://www.linkedin.com/in/dblevins";>linkedin - - http://twitter.com/dblevins";>twitter - - http://www.gravatar.com/avatar/9b67307a606e8dbc311c449cd4cae2aa?s=140"; style="width:140px"> + http://www.gravatar.com/avatar/dd2ab408381395402fb0b183d002165c?s=140"; style="width:140px"> - Dain Sundstrom + Jason van Zyl @@ -131,24 +123,32 @@ - http://www.gravatar.com/avatar/fea00dfa5f55664b225d9c072d9c6766?s=140"; style="width:140px"> + http://www.gravatar.com/avatar/d46f3fc40e8ecba3bc3b250d5c0d1734?s=140"; style="width:140px"> - Andy + David Blevins + http://people.apache.org/~dblevins";>Apache + + http://github.com/dblevins";>Github + + http://www.linkedin.com/in/dblevins";>linkedin + + http://twitter.com/dblevins";>twitter + - http://www.gravatar.com/avatar/dd2ab408381395402fb0b183d002165c?s=140"; style="width:140px"> + http://www.gravatar.com/avatar/9b67307a606e8dbc311c449cd4cae2aa?s=140"; style="width:140px"> - Jason van Zyl + Dain Sundstrom @@ -221,11 +221,11 @@ - + - Haihong Xu + Lajos Moczar @@ -234,11 +234,11 @@ - + https://twitter.com/kevanmiller/profile_image?size=bigger"; style="width:140px"> - Lajos Moczar + Kevan Lee Miller @@ -247,11 +247,11 @@ - + https://twitter.com/KrnMal/profile_image?size=bigger"; style="width:140px"> - Manu George + Karan Singh Malhi @@ -260,11 +260,11 @@ - https://twitter.com/KrnMal/profile_image?size=bigger"; style="width:140px"> + -
[30/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/bootstrap.css -- diff --git a/src/main/jbake/assets/css/bootstrap.css b/src/main/jbake/assets/css/bootstrap.css new file mode 100755 index 000..9910c44 --- /dev/null +++ b/src/main/jbake/assets/css/bootstrap.css @@ -0,0 +1,6782 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; + color: #33; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { +color: #000 !important; +text-shadow: none !important; +background: transparent !important; +-webkit-box-shadow: none !important; +box-shadow: none !important; + } + a, + a:visited { +text-decoration: underline; + } + a[href]:after { +content: " (" attr(href) ")"; + } + abbr[title]:after { +content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { +content: ""; + } + pre, + blockquote { +border: 1px solid #999; + +page-break-inside: avoid; + } + thead { +display: table-header-group; + } + tr, + img { +page-break-inside: avoid; + } + img { +max-width: 100% !important; + } + p, + h2, + h3 { +orphans: 3; +widows: 3; + } + h2, + h3 { +page-break-after: avoid; + } + .navbar { +display: none; + } + .btn > .caret, + .dropup > .btn > .caret { +border-top-color: #000 !important; + } + .label { +border: 1px solid #000; + } + .table { +border-collapse: collapse !important; + } + .table td, + .table th { +background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { +border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') f
[05/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/simple-stateful.adoc -- diff --git a/src/main/jbake/content/examples/simple-stateful.adoc b/src/main/jbake/content/examples/simple-stateful.adoc new file mode 100755 index 000..cc2b7d8 --- /dev/null +++ b/src/main/jbake/content/examples/simple-stateful.adoc @@ -0,0 +1,160 @@ += Simple Stateful +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example simple-stateful can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateful + + +This example demonstrates a simple deployment of a Stateful session bean. + + +NOTE: "As its name suggests, a stateful session bean is similar to an interactive session. A stateful session bean is not shared; + +it can have only one client, in the same way that an interactive session can have only one user. +When the client terminates, its stateful session bean appears to terminate and is no longer associated with the client." + +The `Counter` class is a Stateful session bean that maintains a state in a form of a `count` integer field. +It exposes three methods: `count()`, `increment()` and `reset()` to manipulate and view its state. + +Typically, Stateful and Stateless beans implement Local and/or Remote interfaces to determine which methods should +be exposed. In this case, the bean is using a no-interface view, which means that all public methods are exposed +as a local view. + +== Counter + + +[source,java] + +package org.superbiz.counter; + +import javax.ejb.Stateful; + +/** + * This is an EJB 3 style pojo stateful session bean + * Every stateful session bean implementation must be annotated + * using the annotation @Stateful + * This EJB has 2 business interfaces: CounterRemote, a remote business + * interface, and CounterLocal, a local business interface + * + * Per EJB3 rules when the @Remote or @Local annotation isn't present + * in the bean class (this class), all interfaces are considered + * local unless explicitly annotated otherwise. If you look + * in the CounterRemote interface, you'll notice it uses the @Remote + * annotation while the CounterLocal interface is not annotated relying + * on the EJB3 default rules to make it a local interface. + */ +//START SNIPPET: code +@Stateful +public class Counter { + +private int count = 0; + +public int count() { +return count; +} + +public int increment() { +return ++count; +} + +public int reset() { +return (count = 0); +} +} + + + +== CounterTest + +The `Counter` class is tested by obtaining a `Context` object and performing a JNDI lookup on it, to retrieve +an instance of the `Counter` bean. After some state manipulation, a new instance is fetched from the container +and we can see that it's a new instance. + + +[source,java] + +package org.superbiz.counter; + +import junit.framework.TestCase; + +import javax.ejb.embeddable.EJBContainer; +import javax.naming.Context; + +public class CounterTest extends TestCase { + +//START SNIPPET: local +public void test() throws Exception { + +final Context context = EJBContainer.createEJBContainer().getContext(); + +Counter counterA = (Counter) context.lookup("java:global/simple-stateful/Counter"); + +assertEquals(0, counterA.count()); +assertEquals(0, counterA.reset()); +assertEquals(1, counterA.increment()); +assertEquals(2, counterA.increment()); +assertEquals(0, counterA.reset()); + +counterA.increment(); +counterA.increment(); +counterA.increment(); +counterA.increment(); + +assertEquals(4, counterA.count()); + +// Get a new counter +Counter counterB = (Counter) context.lookup("java:global/simple-stateful/Counter"); + +// The new bean instance starts out at 0 +assertEquals(0, counterB.count()); +} +//END SNIPPET: local +} + + + += Running + + + +[source] + +--- + T E S T S +--- +Running org.superbiz.counter.CounterTest +Apache OpenEJB 4.0.0-beta-1build: 20111002-04:06 +http://tomee.apache.org/ +INFO - openejb.home = /Users/dblevins/examples/simple-stateful +INFO - openejb.base = /Users/dblevins/examples/simple-stateful +INFO - Using 'javax.ejb.embeddable.EJBContainer=true' +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-stateful/target/classes +INFO - Beginning load: /Users/dblevins/examples/simple-stateful/target/classes +INFO - Co
[02/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/webservice-holder.adoc -- diff --git a/src/main/jbake/content/examples/webservice-holder.adoc b/src/main/jbake/content/examples/webservice-holder.adoc new file mode 100755 index 000..bb4a5f4 --- /dev/null +++ b/src/main/jbake/content/examples/webservice-holder.adoc @@ -0,0 +1,201 @@ += @WebService OUT params via javax.xml.ws.Holder +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example webservice-holder can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-holder + + +With SOAP it is possible to return multiple values in a single request. This is impossible in Java as a method can only return one object. + +JAX-WS solves this problem with the concept of Holders. A `javax.xml.ws.Holder` is a simple wrapper object that can be passed into the `@WebService` method as a parameter. The application sets the value of the holder during the request and the server will send the value back as an OUT parameter. + +== Using @WebParam and javax.xml.ws.Holder + +The `@WebParam` annotation allows us to declare the `sum` and `multiply` Holders as `WebParam.Mode.OUT` parameters. As mentioned, these holders are simply empty buckets the application can fill in with data to have sent to the client. The server will pass them in uninitialized. + + +[source,java] + +@Stateless +@WebService( +portName = "CalculatorPort", +serviceName = "CalculatorService", +targetNamespace = "http://superbiz.org/wsdl";, +endpointInterface = "org.superbiz.ws.out.CalculatorWs") +public class Calculator implements CalculatorWs { + +public void sumAndMultiply(int a, int b, + @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder sum, + @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder multiply) { +sum.value = a + b; +multiply.value = a * b; +} +} + + + +If the Holders were specified as `WebParam.Mode.INOUT` params, then the client could use them to send data and the application as well. The `Holder` instances would then be initialized with the data from the client request. The application could check the data before eventually overriting it with the response values. + +== The WSDL + +The above JAX-WS `@WebService` component results in the folliwing WSDL that will be created automatically. Note the `sumAndMultiplyResponse` complext type returns two elements. These match the `@WebParam` declarations and our two `Holder` params. + + +[source,xml] + + +http://schemas.xmlsoap.org/wsdl/"; + name="CalculatorService" + targetNamespace="http://superbiz.org/wsdl"; + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; + xmlns:tns="http://superbiz.org/wsdl"; + xmlns:xsd="http://www.w3.org/2001/XMLSchema";> + +http://superbiz.org/wsdl"; +xmlns:tns="http://superbiz.org/wsdl"; +xmlns:xsd="http://www.w3.org/2001/XMLSchema";> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://schemas.xmlsoap.org/soap/http"/> + + + + + + + + + + + + + http://127.0.0.1:4204/Calculator?wsdl"/> + + + + + + +== Testing the OUT params + +Here we see a JAX-WS client executing the `sumAndMultiply` operation. Two empty `Holder` instances are created and passed in as parameters. The data from the `sumAndMultiplyResponse` is placed in the `Holder` instances and is then available to the client after the operation completes. + +The holders themselves are not actually sent in the request unless they are configured as INOUT params via WebParam.Mode.INOUT on `@WebParam` + + +[source,java] + +import org.junit.BeforeClass; +import org.junit.Test; + +import javax.ejb.embeddable.EJBContainer; +import javax.xml.namespace.QName; +import javax.xml.ws.Holder; +import javax.xml.ws.Service; +import java.net.URL; +import java.util.Properties; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class CalculatorTest { + +@BeforeClass +public static void setUp() throws Exception { +Properties properties = new Properties(); +properties.setProperty("openejb.embedded.remotable", "true"); +//properties.setProperty("httpejbd.print", "true"); +//properties.setProperty("httpejbd.indent.xml", "true"); +EJBContainer.createEJBContainer(properties); +} + +@Test +public void outParams() throws Exception { +final Ser
[22/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/jquery.onepagenav.js -- diff --git a/src/main/jbake/assets/js/jquery.onepagenav.js b/src/main/jbake/assets/js/jquery.onepagenav.js new file mode 100755 index 000..8668b46 --- /dev/null +++ b/src/main/jbake/assets/js/jquery.onepagenav.js @@ -0,0 +1,223 @@ +/* + * jQuery One Page Nav Plugin + * http://github.com/davist11/jQuery-One-Page-Nav + * + * Copyright (c) 2010 Trevor Davis (http://trevordavis.net) + * Dual licensed under the MIT and GPL licenses. + * Uses the same license as jQuery, see: + * http://jquery.org/license + * + * @version 3.0.0 + * + * Example usage: + * $('#nav').onePageNav({ + * currentClass: 'current', + * changeHash: false, + * scrollSpeed: 750 + * }); + */ + +;(function($, window, document, undefined){ + + // our plugin constructor + var OnePageNav = function(elem, options){ + this.elem = elem; + this.$elem = $(elem); + this.options = options; + this.metadata = this.$elem.data('plugin-options'); + this.$win = $(window); + this.sections = {}; + this.didScroll = false; + this.$doc = $(document); + this.docHeight = this.$doc.height(); + }; + + // the plugin prototype + OnePageNav.prototype = { + defaults: { + navItems: 'a', + currentClass: 'current', + changeHash: false, + easing: 'swing', + filter: '', + scrollSpeed: 750, + scrollThreshold: 0.5, + begin: false, + end: false, + scrollChange: false + }, + + init: function() { + // Introduce defaults that can be extended either + // globally or using an object literal. + this.config = $.extend({}, this.defaults, this.options, this.metadata); + + this.$nav = this.$elem.find(this.config.navItems); + + //Filter any links out of the nav + if(this.config.filter !== '') { + this.$nav = this.$nav.filter(this.config.filter); + } + + //Handle clicks on the nav + this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this)); + + //Get the section positions + this.getPositions(); + + //Handle scroll changes + this.bindInterval(); + + //Update the positions on resize too + this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this)); + + return this; + }, + + adjustNav: function(self, $parent) { + self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass); + $parent.addClass(self.config.currentClass); + }, + + bindInterval: function() { + var self = this; + var docHeight; + + self.$win.on('scroll.onePageNav', function() { + self.didScroll = true; + }); + + self.t = setInterval(function() { + docHeight = self.$doc.height(); + + //If it was scrolled + if(self.didScroll) { + self.didScroll = false; + self.scrollChange(); + } + + //If the document height changes + if(docHeight !== self.docHeight) { + self.docHeight = docHeight; + self.getPositions(); + } + }, 250); + }, + + getHash: function($link) { + return $link.attr('href').split('#')[1]; + }, + + getPositions: function() { + var self = this; + var linkHref; + var topPos; + var $target; + + self.$nav.each(function() { + linkHref = self.getHash($(this)); + $target = $('#' + linkHref); + + if($target.length) { + topPos = $target.offset().top; +
[06/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/simple-cdi-interceptor.adoc -- diff --git a/src/main/jbake/content/examples/simple-cdi-interceptor.adoc b/src/main/jbake/content/examples/simple-cdi-interceptor.adoc new file mode 100755 index 000..f29d9be --- /dev/null +++ b/src/main/jbake/content/examples/simple-cdi-interceptor.adoc @@ -0,0 +1,127 @@ += simple-cdi-interceptor +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example simple-cdi-interceptor can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-cdi-interceptor + += Simple CDI Interceptor + +Let's write a simple application that would allow us to book tickets for a movie show. As with all applications, logging is one cross-cutting concern that we have. + +(Relevant snippets are inlined but you can check out the complete code, from the links provided) + +How do we mark which methods are to be intercepted ? Wouldn't it be handy to annotate a method like + + +[source,java] + +@Log +public void aMethod(){...} + +Let's create an annotation that would "mark" a method for interception. + +@InterceptorBinding +@Target({ TYPE, METHOD }) +@Retention(RUNTIME) +public @interface Log { +} + + + +Sure, you haven't missed the @InterceptorBinding annotation above ! Now that our custom annotation is created, lets attach it (or to use a better term for it, "bind it" ) +to an interceptor. + +So here's our logging interceptor. An @AroundInvoke method and we are almost done. + + +[source,java] + +@Interceptor +@Log //binding the interceptor here. now any method annotated with @Log would be intercepted by logMethodEntry +public class LoggingInterceptor { +@AroundInvoke +public Object logMethodEntry(InvocationContext ctx) throws Exception { +System.out.println("Entering method: " + ctx.getMethod().getName()); +//or logger.info statement +return ctx.proceed(); +} +} + + + +Now the @Log annotation we created is bound to this interceptor. + +That done, let's annotate at class-level or method-level and have fun intercepting ! + + +[source,java] + +@Log +@Stateful +public class BookShow implements Serializable { +private static final long serialVersionUID = 6350400892234496909L; +public List getMoviesList() { +List moviesAvailable = new ArrayList(); +moviesAvailable.add("12 Angry Men"); +moviesAvailable.add("Kings speech"); +return moviesAvailable; +} +public Integer getDiscountedPrice(int ticketPrice) { +return ticketPrice - 50; +} +// assume more methods are present +} + + + +The `@Log` annotation applied at class level denotes that all the methods should be intercepted with `LoggingInterceptor`. + +Before we say "all done" there's one last thing we are left with ! To enable the interceptors ! + +Lets quickly put up a [beans.xml file] + + +[source,xml] + + + +org.superbiz.cdi.bookshow.interceptors.LoggingInterceptor + + + + + + + in META-INF + + +Those lines in beans.xml not only "enable" the interceptors, but also define the "order of execution" of the interceptors. +But we'll see that in another example on multiple-cdi-interceptors. + +Fire up the test, and we should see a 'Entering method: getMoviesList' printed in the console. + += Tests +Apache OpenEJB 4.0.0-beta-2build: 2003-01:00 +http://tomee.apache.org/ +INFO - openejb.home = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors +INFO - openejb.base = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors +INFO - Using 'javax.ejb.embeddable.EJBContainer=true' +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes +INFO - Beginning load: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes +INFO - Configuring enterprise application: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors +INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) +INFO - Auto-creating a container for bean cdi-simple-interceptors.Comp: Container(type=MANAGED, id=Default Managed Container) +INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container) +INFO - Auto-creating a container for bean BookShow: Container(type=STATEFUL, id=Default Stateful Container) +INFO - Enterprise application "/media/fthree/Wo
[16/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/download-ng.adoc -- diff --git a/src/main/jbake/content/download-ng.adoc b/src/main/jbake/content/download-ng.adoc new file mode 100755 index 000..0610a06 --- /dev/null +++ b/src/main/jbake/content/download-ng.adoc @@ -0,0 +1,280 @@ += Downloads +:jbake-date: 2015-04-05 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: +:icons: font + +IMPORTANT: only TomEE 1.x WebProfile and JAX-RS distributions are certified. + +[.table.table-bordered,options="header"] +|=== +|Name|Version|Date|Size|Type|Links +|Apache TomEE plume|7.0.3|Tue, 07 Mar 2017 21:47:50 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.asc[icon:download[] asc] +|Apache TomEE plume|7.0.3|Tue, 07 Mar 2017 21:45:35 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.asc[icon:download[] asc] +|Apache TomEE plus|7.0.3|Tue, 07 Mar 2017 21:43:39 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.asc[icon:download[] asc] +|Apache TomEE plus|7.0.3|Tue, 07 Mar 2017 21:41:45 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.asc[icon:download[] asc] +|Apache TomEE webprofile|7.0.3|Tue, 07 Mar 2017 21:40:27 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.asc[icon:download[] asc] +|Apache TomEE webprofile|7.0.3|Tue, 07 Mar 2017 21:39:18 GMT|34 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.asc[icon:download[] asc] +|Apache TomEE plume|7.0.2|Sun, 06 Nov 2016 19:13:59 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.asc[icon:download[] asc] +|Apache TomEE plume|7.0.2|Sun, 06 Nov 2016 19:05:57 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-t
[27/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg -- diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg new file mode 100755 index 000..93538d7 --- /dev/null +++ b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg @@ -0,0 +1,1832 @@ + +http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; > +http://www.w3.org/2000/svg";> + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf -- diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf new file mode 100755 index 000..12ff680 Binary files /dev/null and b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf differ
[07/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/rest-example.adoc -- diff --git a/src/main/jbake/content/examples/rest-example.adoc b/src/main/jbake/content/examples/rest-example.adoc new file mode 100755 index 000..c62eecb --- /dev/null +++ b/src/main/jbake/content/examples/rest-example.adoc @@ -0,0 +1,641 @@ += REST Example +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example rest-example can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-example + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== CommentDAO + + +[source,java] + +package org.superbiz.rest.dao; + +import org.superbiz.rest.model.Comment; +import org.superbiz.rest.model.Post; + +import javax.ejb.EJB; +import javax.ejb.Stateless; +import java.util.Collections; +import java.util.List; + +@Stateless +public class CommentDAO extends DAO { +@EJB +private DAO dao; + +public List list(long postId) { +Post post = dao.find(Post.class, postId); +if (post == null) { +throw new IllegalArgumentException("post with id " + postId + " not found"); +} +return Collections.unmodifiableList(post.getComments()); +} + +public Comment create(String author, String content, long postId) { +Post post = dao.find(Post.class, postId); +if (post == null) { +throw new IllegalArgumentException("post with id " + postId + " not found"); +} + +Comment comment = new Comment(); +comment.setAuthor(author); +comment.setContent(content); +dao.create(comment); +comment.setPost(post); +return comment; +} + +public void delete(long id) { +dao.delete(Comment.class, id); +} + +public Comment update(long id, String author, String content) { +Comment comment = dao.find(Comment.class, id); +if (comment == null) { +throw new IllegalArgumentException("comment with id " + id + " not found"); +} + +comment.setAuthor(author); +comment.setContent(content); +return dao.update(comment); +} +} + + + +== DAO + + +[source,java] + +package org.superbiz.rest.dao; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import java.util.List; + +/** + * Simply maps the entitymanager. + * It simplifies refactoring (unitName change) and wraps some logic (limited queries). + * + */ +@Stateless +public class DAO { +@PersistenceContext(unitName = "blog") +private EntityManager em; + +public E create(E e) { +em.persist(e); +return e; +} + +public E update(E e) { +return em.merge(e); +} + +public void delete(Class clazz, long id) { +em.remove(em.find(clazz, id)); +} + +public E find(Class clazz, long id) { +return em.find(clazz, id); +} + +public List find(Class clazz, String query, int min, int max) { +return queryRange(em.createQuery(query, clazz), min, max).getResultList(); +} + +public List namedFind(Class clazz, String query, int min, int max) { +return queryRange(em.createNamedQuery(query, clazz), min, max).getResultList(); +} + +private static Query queryRange(Query query, int min, int max) { +if (max >= 0) { +query.setMaxResults(max); +} +if (min >= 0) { +query.setFirstResult(min); +} +return query; +} +} + + + +== PostDAO + + +[source,java] + +package org.superbiz.rest.dao; + +import org.superbiz.rest.model.Post; +import org.superbiz.rest.model.User; + +import javax.ejb.EJB; +import javax.ejb.Stateless; +import java.util.List; + +@Stateless +public class PostDAO { +@EJB +private DAO dao; + +public Post create(String title, String content, long userId) { +User user = dao.find(User.class, userId); +Post post = new Post(); +post.setTitle(title); +post.setContent(content); +post.setUser(user); +return dao.create(post); +} + +public Post find(long id) { +return dao.find(Post.class, id); +} + +public List list(int first, int max) { +return dao.namedFind(Post.class, "post.list", first, max); +} + +public void delete(long id) { +dao.delete(Post.class, id); +} + +public Post update(long id, long userId, String title, String content) { +User user = dao.find(User.class, userId); +if (user == null) { +throw new IllegalArgumentException("user id " + id + " not found"); +} + +Post post = dao.find(Post.class, id); +if (post == null) { +throw
[14/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc -- diff --git a/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc b/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc new file mode 100755 index 000..2f5e99d --- /dev/null +++ b/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc @@ -0,0 +1,138 @@ += cdi-alternative-and-stereotypes +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example cdi-alternative-and-stereotypes can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes + += Introduction + +CDI is a revolution for Java EE world. This specification is the best one to avoid coupling between classes. + +This example simply aims to override bindings at runtime to simplify mocking work. + +It uses two kind of mocks: +1) a mock with no implementation in the classloader +2) a mock with an implementation in the classloader + +The mock answer from CDI is called *alternative*. + +Annotating `@Alternative` a class will mean it will replace any implementation if there is no other implementation +or if it is forced (through `META-INF/beans.xml`). + += Code explanation +== main code + +We use an EJB `Jouney` to modelize a journey where the vehicle and the society can change. Here an EJB is used simply +because it simplifies the test. A jouney wraps the vehicle and society information. + +We define then two interfaces to inject it in the `Journey` EJB: `Vehicle` and `Society`. + +Finally we add an implementation for `Scociety` interface: `LowCostCompanie`. + +If we don't go further `Journey` object will not be able to be created because no `Vehicle` implementation is available. + +Note: if we suppose we have a `Vehicle` implementation, the injected Society should be `LowCostCompanie`. + +== test code + +The goal here is to test our `Journey` EJB. So we have to provide a `Vehicle` implementation: `SuperCar`. + +We want to force the `Society` implementation (for any reason) by our test implementation: `AirOpenEJB`. + +One solution could simply be to add `@Alternative` annotation on `AirOpenEJB` and activate it through +the `META-INF/beans.xml` file. + +Here we want to write more explicit code. So we want to replace the `@Alternative` annotation by `@Mock` one. + +So we simply define an `@Mock` annotation for classes, resolvable at runtime which is a stereotype (`@Stereotype`) +which replace `@Alternative`. + +Here is the annotation: + + +[source,java] + +@Stereotype // we define a stereotype +@Retention(RUNTIME) // resolvable at runtime +@Target(TYPE) // this annotation is a class level one +@Alternative // it replace @Alternative +public @interface Mock {} + +Note: you can add more CDI annotations after `@Alternative` and it will get the behavior expected (the scope for instance). + +So now we have our `@Mock` annotation which is a stereotype able to replace `@Alternative` annotation +we simply add this annotation to our mocks. + +If you run it now you'll have this exception: + +javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.superbiz.cdi.stereotype.Vehicle] is not found with the qualifiers +Qualifiers: [@javax.enterprise.inject.Default()] +for injection into Field Injection Point, field name : vehicle, Bean Owner : [Journey, Name:null, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,org.superbiz.cdi.stereotype.Journey], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]] + +It means the stereotype is not activated. To do it simply add it to your `META-INF/beans.xml`: + + + org.superbiz.cdi.stereotype.Mock + + +Note: if you don't specify `AirOpenEJB` as `@Alternative` (done through our mock annotation) you'll get this exception: + +Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is more than one api type with : org.superbiz.cdi.stereotype.Society with qualifiers : Qualifiers: [@javax.enterprise.inject.Default()] +for injection into Field Injection Point, field name : society, Bean Owner : [Journey, Name:null, WebBeans Type:ENTERPRISE, API Types:[org.superbiz.cdi.stereotype.Journey,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]] +found beans: +AirOpenEJB, Name:null, WebBeans Type:MANAGED, API Types:[org.superbiz.cdi.stereotype.Society,org.superbiz.cdi.stereotype.AirOpenEJB,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default] +LowCostCompanie, Name:null, WebBeans Type:MANAGED, API Types:[org.superbiz.cdi.stereotype.Society,org.superbiz.cdi.stereotype.LowCostCompanie,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default] + +which simply means two implementations are available for the s
[28/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/cardio.css -- diff --git a/src/main/jbake/assets/css/cardio.css b/src/main/jbake/assets/css/cardio.css new file mode 100755 index 000..71c6ad6 --- /dev/null +++ b/src/main/jbake/assets/css/cardio.css @@ -0,0 +1,1173 @@ +@import url(http://fonts.googleapis.com/css?family=Roboto:300,400,500,700); +body { + font-family: 'Roboto', 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif; + font-size: 14px; + overflow-x: hidden; + color: #2a3237; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.parallax { + position: absolute; + overflow: hidden; + width: 100%; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +.parallax img { + width: 100%; + height: 100%; +} +/* Preloader */ + +.preloader { + position: fixed; + z-index: ; + width: 100%; + height: 100%; + background-color: white; +} + +.preloader img { + position: absolute; + top: calc(50% - 32px); + left: calc(50% - 32px); +} + +.preloader div { + display: none; + /* Preload the Second Pricing Image */ + background: url(../img/pricing2.jpg) no-repeat px px; + background-position: px px; +} + +/* Typography */ + +.bigp { + font-size: 18px; + line-height: 1.5; + color: #80287a; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Roboto', 'Avenir Next', 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif; + position: relative; + margin: 10px 0; +} + +h1 { + font-size: 60px; +} + +h2 { + font-size: 48px; +} + +h3 { + font-size: 30px; +} + +h4 { + font-size: 24px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +ul.white-list { + padding: 0; + list-style-type: none; +} + +ul.white-list li { + font-size: 18px; + margin: 10px 0; + color: #fff; +} + +ul.white-list li:before { + content: ' '; + position: relative; + top: -3px; + display: inline-block; + width: 6px; + height: 6px; + margin-right: 15px; + background: white; +} + +header { + position: relative; + width: 100%; + color: #80287a; + background: rgba(28, 36, 65, 0.93); + background: url('../img/header.jpg'); + background-size: cover; +} + +header .table { + display: table; + height: 100%; +} + +header .container { + height: 100%; +} + +header .header-text { + display: table-cell; + text-align: center; + vertical-align: middle; + color: #80287a; +} + +header .typed { + display: inline-block; + margin: 0; +} + +header .typed-cursor { + font-size: 60px; + display: inline-block; + margin: 0 10px; + color: #80287a; + -webkit-animation-name: flash; + animation-name: flash; + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +a { + text-decoration: none; + color: #80287a; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} +/* Navigation Bar ( Navbar ) */ + +nav.navbar { + position: absolute; + z-index: 9500; + width: 100%; + width: 100vw; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +nav.navbar .navbar-nav li.active a:not(.btn) { + color: #80287a !important; +} + +nav.navbar-fixed-top { + z-index: 9499; + top: 0; + padding-top: 10px; + padding-bottom: 10px; + opacity: 1; + background: white; + box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.05); +} + +nav.navbar-fixed-top .navbar-nav > li > a:not(.btn) { + color: #bbb; +} + +.icon-bar { + background: #bbb; +} +/* Buttons */ + +.btn { + font-size: 18px; + display: inline-block; + padding: 15px 30px; + color: #80287a; + border: 2px solid transparent; + border-radius: 2px; + background: transparent; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.btn:hover, +.btn:focus { + color: #CE2D34; +} + +.btn.btn-blue { + background: #80287a; + color: #fff; +} + +.btn.btn-blue:hover { + background: #31b9ff; +} + +.btn.btn-blue-fill { + color: #80287a; + border-color: #80287a; + background: transparent; +} + +.btn.btn-blue-fill:hover { + color: white; + background: #80287a; +} + +.btn.btn-white-fill { + color: #fff; + border-color: #fff; + background: transparent; +} + +.btn.btn-white-fill:hover { + color: #80287a; + back
[24/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf -- diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf new file mode 100755 index 000..96a3639 Binary files /dev/null and b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff -- diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff new file mode 100755 index 000..628b6a5 Binary files /dev/null and b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/gdamour.jpg -- diff --git a/src/main/jbake/assets/img/gdamour.jpg b/src/main/jbake/assets/img/gdamour.jpg new file mode 100644 index 000..148cc7b Binary files /dev/null and b/src/main/jbake/assets/img/gdamour.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/genspring.jpg -- diff --git a/src/main/jbake/assets/img/genspring.jpg b/src/main/jbake/assets/img/genspring.jpg new file mode 100644 index 000..a7bd1db Binary files /dev/null and b/src/main/jbake/assets/img/genspring.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/header.jpg -- diff --git a/src/main/jbake/assets/img/header.jpg b/src/main/jbake/assets/img/header.jpg new file mode 100755 index 000..56da914 Binary files /dev/null and b/src/main/jbake/assets/img/header.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/jgenender.jpg -- diff --git a/src/main/jbake/assets/img/jgenender.jpg b/src/main/jbake/assets/img/jgenender.jpg new file mode 100644 index 000..06c40dd Binary files /dev/null and b/src/main/jbake/assets/img/jgenender.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/loader.gif -- diff --git a/src/main/jbake/assets/img/loader.gif b/src/main/jbake/assets/img/loader.gif new file mode 100755 index 000..ab26baa Binary files /dev/null and b/src/main/jbake/assets/img/loader.gif differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/logo-active.png -- diff --git a/src/main/jbake/assets/img/logo-active.png b/src/main/jbake/assets/img/logo-active.png new file mode 100755 index 000..2352448 Binary files /dev/null and b/src/main/jbake/assets/img/logo-active.png differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/logo.png -- diff --git a/src/main/jbake/assets/img/logo.png b/src/main/jbake/assets/img/logo.png new file mode 100755 index 000..05dc2e7 Binary files /dev/null and b/src/main/jbake/assets/img/logo.png differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/manugeorge.jpg -- diff --git a/src/main/jbake/assets/img/manugeorge.jpg b/src/main/jbake/assets/img/manugeorge.jpg new file mode 100644 index 000..f69f4f7 Binary files /dev/null and b/src/main/jbake/assets/img/manugeorge.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/mnour.jpg -- diff --git a/src/main/jbake/assets/img/mnour.jpg b/src/main/jbake/assets/img/mnour.jpg new file mode 100644 index 000..e797b8b Binary files /dev/null and b/src/main/jbake/assets/img/mnour.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/noimg.png -- diff --git a/src/main/jbake/assets/img/noimg.png b/src/main/jbake/assets/img/noimg.png new file mode 100644 index 000..f779c8f Binary files /
[11/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/helloworld-weblogic.adoc -- diff --git a/src/main/jbake/content/examples/helloworld-weblogic.adoc b/src/main/jbake/content/examples/helloworld-weblogic.adoc new file mode 100755 index 000..dd8279e --- /dev/null +++ b/src/main/jbake/content/examples/helloworld-weblogic.adoc @@ -0,0 +1,169 @@ += Helloworld Weblogic +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example helloworld-weblogic can be browsed at https://github.com/apache/tomee/tree/master/examples/helloworld-weblogic + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== HelloBean + + +[source,java] + +package org.superbiz.hello; + +import javax.ejb.LocalHome; +import javax.ejb.Stateless; + +/** + * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $ + */ +@Stateless +@LocalHome(HelloEjbLocalHome.class) +public class HelloBean { + +public String sayHello() { +return "Hello, World!"; +} +} + + + +== HelloEjbLocal + + +[source,java] + +package org.superbiz.hello; + +import javax.ejb.EJBLocalObject; + +/** + * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $ + */ +public interface HelloEjbLocal extends EJBLocalObject { + +String sayHello(); +} + + + +== HelloEjbLocalHome + + +[source,java] + +package org.superbiz.hello; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +/** + * @version $Revision: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $ + */ +public interface HelloEjbLocalHome extends EJBLocalHome { +HelloEjbLocal create() throws CreateException; +} + + + +== ejb-jar.xml + + +[source,xml] + + + + + +== weblogic-ejb-jar.xml + + +[source,xml] + + + +HelloBean +MyHello + + + + + + + +== HelloTest + + +[source,java] + +package org.superbiz.hello; + +import junit.framework.TestCase; + +import javax.naming.Context; +import javax.naming.InitialContext; +import java.util.Properties; + +/** + * @version $Revision: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $ + */ +public class HelloTest extends TestCase { + +public void test() throws Exception { +Properties properties = new Properties(); +properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); +InitialContext initialContext = new InitialContext(properties); + +HelloEjbLocalHome localHome = (HelloEjbLocalHome) initialContext.lookup("MyHello"); +HelloEjbLocal helloEjb = localHome.create(); + +String message = helloEjb.sayHello(); + +assertEquals(message, "Hello, World!"); +} +} + + + += Running + + + +[source] + +--- + T E S T S +--- +Running org.superbiz.hello.HelloTest +Apache OpenEJB 4.0.0-beta-1build: 20111002-04:06 +http://tomee.apache.org/ +INFO - openejb.home = /Users/dblevins/examples/helloworld-weblogic +INFO - openejb.base = /Users/dblevins/examples/helloworld-weblogic +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /Users/dblevins/examples/helloworld-weblogic/target/classes +INFO - Beginning load: /Users/dblevins/examples/helloworld-weblogic/target/classes +INFO - Configuring enterprise application: /Users/dblevins/examples/helloworld-weblogic/classpath.ear +INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) +INFO - Auto-creating a container for bean HelloBean: Container(type=STATELESS, id=Default Stateless Container) +INFO - Enterprise application "/Users/dblevins/examples/helloworld-weblogic/classpath.ear" loaded. +INFO - Assembling app: /Users/dblevins/examples/helloworld-weblogic/classpath.ear +INFO - Jndi(name=MyHello) --> Ejb(deployment-id=HelloBean) +INFO - Jndi(name=global/classpath.ear/helloworld-weblogic/HelloBean!org.superbiz.hello.HelloEjbLocalHome) --> Ejb(deployment-id=HelloBean) +INFO - Jndi(name=global/classpath.ear/helloworld-weblogic/HelloBean) --> Ejb(deployment-id=HelloBean) +INFO - Created Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=Default Stateless Container) +INFO - Started Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=Default Stateless Container) +INFO - Deployed Application(path=/Users/dblevins/examples/helloworld-weblogic/classpath.ear) +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.414
[01/35] tomee-site-generator git commit: import from old website
Repository: tomee-site-generator Updated Branches: refs/heads/master [created] 61cae98ed http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/templates/footer.gsp -- diff --git a/src/main/jbake/templates/footer.gsp b/src/main/jbake/templates/footer.gsp new file mode 100755 index 000..2c24dc9 --- /dev/null +++ b/src/main/jbake/templates/footer.gsp @@ -0,0 +1,80 @@ + + + + + Apache TomEE the little great server. + "A good application in a good server" + + https://fr-fr.facebook.com/ApacheTomEE/";> + https://twitter.com/apachetomee";> + https://plus.google.com/communities/105208241852045684449";> + + + + + + Administration + + Cluster + Configuration + + + + Developer + + Classloading + IDE + Testing + Tools + + + + Advanced + + Application Composer + Setup + Shading + TomEE Embedded + + + + Community + + Contributors + Social + Sources + + + + + + + + Copyright © 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. + + + + + + + + Administrators + Developers + Advanced + Community + + + + + + + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/templates/header.gsp -- diff --git a/src/main/jbake/templates/header.gsp b/src/main/jbake/templates/header.gsp new file mode 100755 index 000..649d759 --- /dev/null +++ b/src/main/jbake/templates/header.gsp @@ -0,0 +1,45 @@ + + + + + + + + Apache TomEE + + + + + + + + + + + + + + + + + + + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-2717626-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { +var ga = document.createElement('script'); ga.t
[35/35] tomee-site-generator git commit: starting to impl svn pub sub - to finish
starting to impl svn pub sub - to finish Project: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/commit/61cae98e Tree: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/tree/61cae98e Diff: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/diff/61cae98e Branch: refs/heads/master Commit: 61cae98edd940d8117f70ad12915a599f814bb24 Parents: 972cc35 Author: rmannibucau Authored: Tue Jul 4 20:21:23 2017 +0200 Committer: rmannibucau Committed: Tue Jul 4 20:21:23 2017 +0200 -- .gitignore | 3 +- README.adoc | 11 +++ pom.xml | 43 ++--- .../java/org/apache/tomee/website/SvnPub.java | 95 4 files changed, 141 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/61cae98e/.gitignore -- diff --git a/.gitignore b/.gitignore index 8291ee8..5c494ca 100755 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties *~ -examples.cache.old \ No newline at end of file +examples.cache.old +.content-site-checkout http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/61cae98e/README.adoc -- diff --git a/README.adoc b/README.adoc index eb2a308..0fefd33 100755 --- a/README.adoc +++ b/README.adoc @@ -68,3 +68,14 @@ in `src/main/jbake/content/examples`. If you want to take into account another e need to delete the cache before re-running the generation. Finally note that the site generation will rely on the cache as well to generate the examples home page. + +== Publish (needs an ASF account) + +`SvnPub` is a main to push to the staging the site content once built, you need to set the system properties (`MAVEN_OPTS`) `site.password` +to your asf password and `site.username` if you user name is not `USER` environment variable for it to work. + +It will checkout/update the site from svn then copy the site folder from target directory to synchronize it with the svn version +and finally it will commit everything. + +You can set the system property `site.message` to not use the default commit message. + http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/61cae98e/pom.xml -- diff --git a/pom.xml b/pom.xml index a479edc..7a229e6 100755 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,9 @@ false false +notset +notset + UTF-8 @@ -85,6 +88,11 @@ pegdown 1.6.0 + + org.tmatesoft.svnkit + svnkit + 1.8.9 + @@ -109,18 +117,33 @@ java + + true + org.apache.tomee.website.JBake + +${project.basedir}/src/main/jbake/ + ${project.build.directory}/${project.build.finalName} +${jbake.http} +${jbake.pdf} + + + + +publish +pre-site + + java + + + true + org.apache.tomee.website.SvnPub + +${site.password} +${site.message} + + - - true - org.apache.tomee.website.JBake - -${project.basedir}/src/main/jbake/ - ${project.build.directory}/${project.build.finalName} -${jbake.http} -${jbake.pdf} - - http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/61cae98e/src/main/java/org/apache/tomee/website/SvnPub.java -- diff --git a/src/main/java/org/apache/tomee/website/SvnPub.java b/src/main/java/org/apache/tomee/website/SvnPub.java new file mode 100644 index 000..9e3ec0a --- /dev/null +++ b/src/main/java/org/apache/tomee/website/SvnPub.java @@ -0,0 +1,95 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law
[18/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/advanced/tomee-embedded/index.adoc -- diff --git a/src/main/jbake/content/advanced/tomee-embedded/index.adoc b/src/main/jbake/content/advanced/tomee-embedded/index.adoc new file mode 100755 index 000..8664ade --- /dev/null +++ b/src/main/jbake/content/advanced/tomee-embedded/index.adoc @@ -0,0 +1,223 @@ += TomEE Embedded +:jbake-date: 2016-03-16 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: + +TomEE Embedded is based on Tomcat embedded and starts a real TomEE in the launching JVM. It is also +able to deploy the classpath as a webapp and to use either `META-INF/resources` or a folder as web resources. + +Here is a basic programmatic usage based on `org.apache.tomee.embedded.Container` class: + +[source,java] + +try (final Container container = new Container(new Configuration()).deployClasspathAsWebApp()) { +System.out.println("Started on http://localhost:"; + container.getConfiguration().getHttpPort()); + +// do something or wait until the end of the application +} + + +All EE features are then accessible directly in the same JVM. + +== TomEE Embedded Configuration + +The default configuration allows to start tomee without issue but you can desire to customize some of them. + +[.table.table-bordered,options="header"] +|=== +| Name | Default | Description +|httpPort | 8080| http port +|stopPort | 8005| shutdown port +|host |localhost| host +|dir|-|where to create a file hierarchy for tomee (conf, temp, ...) +|serverXml|-|which server.xml to use +|keepServerXmlAsThis|false|don't adjust ports/host from the configuration and keep the ones in server.xml +|properties|-|container properties +|quickSession | true|use Random instead of SecureRandom (for dev) +|skipHttp|false|don't use the http connector +|httpsPort | 8443|https potr +|ssl|false| activate https +|withEjbRemote|false|use EJBd +|keystoreFile|-|https keystore location +|keystorePass|-|https keystore password +|keystoreType |JKS|https keystore type +|clientAuth|-|https client auth +|keyAlias|-|https alias +|sslProtocol|-|SSL protocol for https connector +|webXml|-|default web.xml to use +|loginConfig|-|which LoginConfig to use, relies on `org.apache.tomee.embedded.LoginConfigBuilder` to create it +|securityConstraints|-|add some security constraints, use `org.apache.tomee.embedded.SecurityConstaintBuilder` to build them +|realm|-|which realm to use (useful to switch to `JAASRealm` for instance) without modifying the application +|deployOpenEjbApp|false|should internal openejb application be delpoyed +|users|-|a map of user/password +|roles|-|a map of role/users +|tempDir|${java.io.tmpdir}/tomee-embedded_${timestamp}|tomcat needs a docBase, in case you don't provide one one will be created there +|webResourceCached |true|should web resources be cached by tomcat (set false in frontend dev) +|configuration-location|-|location (classpath or file) to a .properties to configure the server +[pre-task|-|Runnable or org.apache.tomee.embedded.LifecycleTask implementations to execute before the container starts +|classes-filter|-|implementation of a custom xbean Filter to ignore not desired classes during scanning +|basic|-|set /* under BASIC authentication for the realm "Security", authentication role being "*" +|=== + +Note: passing to `Container` constructor a `Configuration` it will start the container automatically but using `setup(Configuration)` +to initialize the configuration you will need to call `start()`. + +You can also pass through the properties `connector.xxx` and `connector.attributes.xxx` to customize connector(s) +configuration directly. + +== Standalone applications or TomEE Embedded provided main(String[]) + +Deploying an application in a server is very nice cause the application is generally small and it allows to update the +container without touching the application (typically insanely important in case of security issues for instance). + +However sometimes you don't have the choice so TomEE Embedded provides a built-in `main(String[])`. Here are its options: + +NOTE: this is still a TomEE so all system properties work (for instance to create a resource). + +[.table.table-bordered,options="header"] +|=== +|Name|Default|Description +|--path|-|location of application(s) to deploy +|--context|-|Context name for applications (same order than paths) +|-p or --port|8080|http port +|-s or --shutdown|8005|shutdown port +|-d or --directory|./.apache-tomee|tomee work directory +|-c or --as-war|-|deploy classpath as a war +|-b or --doc-base|-|where web resources are for classpath deployment +|--renaming|-|for fat war only, is renaming of the context supported +|--serverxml|-|the server.xml location +|--tomeexml|-|the server.xml location +|--property|-|a list of container properties (values follow the format x=y) +|=== + +Note that
[20/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/typeahead.bundle.min.js -- diff --git a/src/main/jbake/assets/js/typeahead.bundle.min.js b/src/main/jbake/assets/js/typeahead.bundle.min.js new file mode 100755 index 000..ffd98f3 --- /dev/null +++ b/src/main/jbake/assets/js/typeahead.bundle.min.js @@ -0,0 +1,8 @@ +/*! + * typeahead.js 0.11.1 + * https://github.com/twitter/typeahead.js + * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT + */ + +!function(a,b){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(c){return a.Bloodhound=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.Bloodhound=b(jQuery)}(this,function(a){var b=function(){"use strict";return{isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:!1},isBlankString:function(a){return!a||/^\s*$/.test(a)},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a},isArray:a.isArray,isFunction:a.isFunction,isObject:a.isPlainObject,isUndefined:function(a){return"undefined"==typeof a},isElement:function(a){return!(!a||1!==a.nodeType)},isJQuery:function(b){return b instanceof a},toStr:function(a){return b.isUndefined(a)||null===a?"":a+""},bind:a.proxy,each:function(b,c){function d(a,b){return c(b,a)}a.each(b,d)},map:a.map,filte r:a.grep,every:function(b,c){var d=!0;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?void 0:!1}),!!d):d},some:function(b,c){var d=!1;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?!1:void 0}),!!d):d},mixin:a.extend,identity:function(a){return a},clone:function(b){return a.extend(!0,{},b)},getIdGenerator:function(){var a=0;return function(){return a++}},templatify:function(b){function c(){return String(b)}return a.isFunction(b)?b:c},defer:function(a){setTimeout(a,0)},debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},throttle:function(a,b){var c,d,e,f,g,h;return g=0,h=function(){g=new Date,e=null,f=a.apply(c,d)},function(){var i=new Date,j=b-(i-g);return c=this,d=arguments,0>=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},stringify:function(a){return b.isString(a)?a:JSON.stringify(a)},noop: function(){}}}(),c="0.11.1",d=function(){"use strict";function a(a){return a=b.toStr(a),a?a.split(/\s+/):[]}function c(a){return a=b.toStr(a),a?a.split(/\W+/):[]}function d(a){return function(c){return c=b.isArray(c)?c:[].slice.call(arguments,0),function(d){var e=[];return b.each(c,function(c){e=e.concat(a(b.toStr(d[c])))}),e}}}return{nonword:c,whitespace:a,obj:{nonword:d(c),whitespace:d(a)}}}(),e=function(){"use strict";function c(c){this.maxSize=b.isNumber(c)?c:100,this.reset(),this.maxSize<=0&&(this.set=this.get=a.noop)}function d(){this.head=this.tail=null}function e(a,b){this.key=a,this.val=b,this.prev=this.next=null}return b.mixin(c.prototype,{set:function(a,b){var c,d=this.list.tail;this.size>=this.maxSize&&(this.list.remove(d),delete this.hash[d.key],this.size--),(c=this.hash[a])?(c.val=b,this.list.moveToFront(c)):(c=new e(a,b),this.list.add(c),this.hash[a]=c,this.size++)},get:function(a){var b=this.hash[a];return b?(this.list.moveToFront(b),b.val):void 0},reset:function(){t his.size=0,this.hash={},this.list=new d}}),b.mixin(d.prototype,{add:function(a){this.head&&(a.next=this.head,this.head.prev=a),this.head=a,this.tail=this.tail||a},remove:function(a){a.prev?a.prev.next=a.next:this.head=a.next,a.next?a.next.prev=a.prev:this.tail=a.prev},moveToFront:function(a){this.remove(a),this.add(a)}}),c}(),f=function(){"use strict";function c(a,c){this.prefix=["__",a,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+b.escapeRegExChars(this.prefix)),this.ls=c||h,!this.ls&&this._noop()}function d(){return(new Date).getTime()}function e(a){return JSON.stringify(b.isUndefined(a)?null:a)}function f(b){return a.parseJSON(b)}function g(a){var b,c,d=[],e=h.length;for(b=0;e>b;b++)(c=h.key(b)).match(a)&&d.push(c.replace(a,""));return d}var h;try{h=window.localStorage,h.setItem("~~~","!"),h.removeItem("~~~")}catch(i){h=null}return b.mixin(c.prototype,{_prefix:function(a){return this.prefix+a},_ttlKey:function(a){return this._prefix(a)+this.ttlKey},_noop:fu nction(){this.get=this.set=this.remove=this.clear=this.isExpired=b.noop},_safeSet:function(a,b){try{this.ls.setItem(a,b)}catch(c){"QuotaExceededError"===c.name&&(this.clear(),this._noop())}},get:function(a){return this.isExpired(a)&&this.remove(a),f(this.ls.getItem(this._prefix(a)))},set:function(a,c,f){return b.isNumber(f)?this._safeSet(this._tt
[26/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff -- diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff new file mode 100755 index 000..3933052 Binary files /dev/null and b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff differ http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/et-icons.css -- diff --git a/src/main/jbake/assets/fonts/eleganticons/et-icons.css b/src/main/jbake/assets/fonts/eleganticons/et-icons.css new file mode 100755 index 000..26f2053 --- /dev/null +++ b/src/main/jbake/assets/fonts/eleganticons/et-icons.css @@ -0,0 +1,1159 @@ +@font-face { + font-family: 'ElegantIcons'; + src:url('ElegantIcons.eot'); + src:url('ElegantIcons.eot?#iefix') format('embedded-opentype'), + url('ElegantIcons.woff') format('woff'), + url('ElegantIcons.ttf') format('truetype'), + url('ElegantIcons.svg#ElegantIcons') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Use the following CSS code if you want to use data attributes for inserting your icons */ +[data-icon]:before { + font-family: 'ElegantIcons'; + content: attr(data-icon); + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Use the following CSS code if you want to have a class per icon */ +/* +Instead of a list of all class selectors, +you can use the generic selector below, but it's slower: +[class*="your-class-prefix"] { +*/ +.arrow_up, .arrow_down, .arrow_left, .arrow_right, .arrow_left-up, .arrow_right-up, .arrow_right-down, .arrow_left-down, .arrow-up-down, .arrow_up-down_alt, .arrow_left-right_alt, .arrow_left-right, .arrow_expand_alt2, .arrow_expand_alt, .arrow_condense, .arrow_expand, .arrow_move, .arrow_carrot-up, .arrow_carrot-down, .arrow_carrot-left, .arrow_carrot-right, .arrow_carrot-2up, .arrow_carrot-2down, .arrow_carrot-2left, .arrow_carrot-2right, .arrow_carrot-up_alt2, .arrow_carrot-down_alt2, .arrow_carrot-left_alt2, .arrow_carrot-right_alt2, .arrow_carrot-2up_alt2, .arrow_carrot-2down_alt2, .arrow_carrot-2left_alt2, .arrow_carrot-2right_alt2, .arrow_triangle-up, .arrow_triangle-down, .arrow_triangle-left, .arrow_triangle-right, .arrow_triangle-up_alt2, .arrow_triangle-down_alt2, .arrow_triangle-left_alt2, .arrow_triangle-right_alt2, .arrow_back, .icon_minus-06, .icon_plus, .icon_close, .icon_check, .icon_minus_alt2, .icon_plus_alt2, .icon_close_alt2, .icon_check_alt2, .icon_zoom-out_alt , .icon_zoom-in_alt, .icon_search, .icon_box-empty, .icon_box-selected, .icon_minus-box, .icon_plus-box, .icon_box-checked, .icon_circle-empty, .icon_circle-slelected, .icon_stop_alt2, .icon_stop, .icon_pause_alt2, .icon_pause, .icon_menu, .icon_menu-square_alt2, .icon_menu-circle_alt2, .icon_ul, .icon_ol, .icon_adjust-horiz, .icon_adjust-vert, .icon_document_alt, .icon_documents_alt, .icon_pencil, .icon_pencil-edit_alt, .icon_pencil-edit, .icon_folder-alt, .icon_folder-open_alt, .icon_folder-add_alt, .icon_info_alt, .icon_error-oct_alt, .icon_error-circle_alt, .icon_error-triangle_alt, .icon_question_alt2, .icon_question, .icon_comment_alt, .icon_chat_alt, .icon_vol-mute_alt, .icon_volume-low_alt, .icon_volume-high_alt, .icon_quotations, .icon_quotations_alt2, .icon_clock_alt, .icon_lock_alt, .icon_lock-open_alt, .icon_key_alt, .icon_cloud_alt, .icon_cloud-upload_alt, .icon_cloud-download_alt, .icon_image, .icon_images, .icon_lightbulb_alt, .icon_gift_alt, .icon_house_alt, .icon_ge nius, .icon_mobile, .icon_tablet, .icon_laptop, .icon_desktop, .icon_camera_alt, .icon_mail_alt, .icon_cone_alt, .icon_ribbon_alt, .icon_bag_alt, .icon_creditcard, .icon_cart_alt, .icon_paperclip, .icon_tag_alt, .icon_tags_alt, .icon_trash_alt, .icon_cursor_alt, .icon_mic_alt, .icon_compass_alt, .icon_pin_alt, .icon_pushpin_alt, .icon_map_alt, .icon_drawer_alt, .icon_toolbox_alt, .icon_book_alt, .icon_calendar, .icon_film, .icon_table, .icon_contacts_alt, .icon_headphones, .icon_lifesaver, .icon_piechart, .icon_refresh, .icon_link_alt, .icon_link, .icon_loading, .icon_blocked, .icon_archive_alt, .icon_heart_alt, .icon_star_alt, .icon_star-half_alt, .icon_star, .icon_star-half, .icon_tools, .icon_tool, .icon_cog, .icon_cogs, .arrow_up_alt, .arrow_down_alt, .arrow_left_alt, .arrow_right_alt, .arrow_left-up_alt, .arrow_right-up_alt, .arrow_right-down_alt, .arrow_left-down_alt, .arrow_condense_alt, .arrow_expand_alt3, .arrow_carrot_up_alt, .arrow_carrot-down_alt, .arrow_carr
[10/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/javamail.adoc -- diff --git a/src/main/jbake/content/examples/javamail.adoc b/src/main/jbake/content/examples/javamail.adoc new file mode 100755 index 000..77141dd --- /dev/null +++ b/src/main/jbake/content/examples/javamail.adoc @@ -0,0 +1,201 @@ += Javamail API +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example javamail can be browsed at https://github.com/apache/tomee/tree/master/examples/javamail + + +This is just a simple example to demonstrate a very basic usage of the API. It should be enough to get you started using the java mail packages. + += The Code + +== A simple REST service using the Javamail API + +Here we see a very simple RESTful endpoint that can be called with a message to send by Email. It would not be hard to modify the application to provide +more useful configuration options. As is, this will not send anything, but if you change the parameters to match your mail server then you'll see the message being sent. +You can find much more detailed information on the link:https://java.net/projects/javamail/pages/Home#Samples[Javamail API here] + + +[source,java] + +package org.superbiz.rest; + +import javax.mail.Authenticator; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.PasswordAuthentication; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import java.util.Date; +import java.util.Properties; + +@Path("/email") +public class EmailService { + +@POST +public String lowerCase(final String message) { + +try { + +//Create some properties and get the default Session +final Properties props = new Properties(); +props.put("mail.smtp.host", "your.mailserver.host"); +props.put("mail.debug", "true"); + +final Session session = Session.getInstance(props, new Authenticator() { +@Override +protected PasswordAuthentication getPasswordAuthentication() { +return new PasswordAuthentication("MyUsername", "MyPassword"); +} +}); + +//Set this just to see some internal logging +session.setDebug(true); + +//Create a message +final MimeMessage msg = new MimeMessage(session); +msg.setFrom(new InternetAddress("your@email.address")); +final InternetAddress[] address = {new InternetAddress("gene...@tomitribe.com")}; +msg.setRecipients(Message.RecipientType.TO, address); +msg.setSubject("JavaMail API test"); +msg.setSentDate(new Date()); +msg.setText(message, "UTF-8"); + + +Transport.send(msg); +} catch (MessagingException e) { +return "Failed to send message: " + e.getMessage(); +} + +return "Sent"; +} +} + + + += Testing + +== Test for the JAXRS service + +The test uses the OpenEJB ApplicationComposer to make it trivial. + +The idea is first to activate the jaxrs services. This is done using @EnableServices annotation. + +Then we create on the fly the application simply returning an object representing the web.xml. Here we simply +use it to define the context root but you can use it to define your REST Application too. And to complete the +application definition we add @Classes annotation to define the set of classes to use in this app. + +Finally to test it we use cxf client API to call the REST service post() method. + + +[source,java] + +package org.superbiz.rest; + +import org.apache.cxf.jaxrs.client.WebClient; +import org.apache.openejb.jee.WebApp; +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.testing.Classes; +import org.apache.openejb.testing.EnableServices; +import org.apache.openejb.testing.Module; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +@EnableServices(value = "jaxrs") +@RunWith(ApplicationComposer.class) +public class EmailServiceTest { + +@Module +@Classes(EmailService.class) +public WebApp app() { +return new WebApp().contextRoot("test"); +} + +@Test +public void post() throws IOException { +final String message = WebClient.create("http://localhost:4204";).path("/test/email/").post("Hello Tomitribe", String.class); +assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message); +} +} + + + += Running + +Running the example is fairly simple. In the "javamail-api" directory run: + +$ mvn clean install + +Which should create o
[34/35] tomee-site-generator git commit: import from old website
import from old website Project: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/commit/972cc356 Tree: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/tree/972cc356 Diff: http://git-wip-us.apache.org/repos/asf/tomee-site-generator/diff/972cc356 Branch: refs/heads/master Commit: 972cc3567a8009690445f18ffc10ce8b14e962ab Parents: Author: rmannibucau Authored: Tue Jul 4 18:32:47 2017 +0200 Committer: rmannibucau Committed: Tue Jul 4 18:32:47 2017 +0200 -- .gitignore | 15 + README.adoc | 70 + examples.cache | 1653 + pom.xml | 127 + .../org/apache/tomee/website/Contributors.java | 222 + .../org/apache/tomee/website/Downloads.java | 247 + .../java/org/apache/tomee/website/Examples.java | 319 + .../java/org/apache/tomee/website/JBake.java| 181 + .../java/org/apache/tomee/website/PDFify.java | 76 + .../apache/tomee/website/ServiceJarHelper.java | 192 + .../org/slf4j/bridge/SLF4JBridgeHandler.java|7 + src/main/jbake/assets/bash | 147 + src/main/jbake/assets/css/animate.css | 3391 + src/main/jbake/assets/css/bootstrap.css | 6782 ++ src/main/jbake/assets/css/bootstrap.css.map |1 + src/main/jbake/assets/css/cardio.css| 1173 +++ src/main/jbake/assets/css/et-icons.css | 1159 +++ src/main/jbake/assets/css/idea.css | 123 + src/main/jbake/assets/css/jqtree.css| 132 + src/main/jbake/assets/css/normalize.css | 432 ++ src/main/jbake/assets/css/owl.css | 208 + src/main/jbake/assets/favicon.ico | Bin 0 -> 12322 bytes src/main/jbake/assets/favicon.png | Bin 0 -> 1983 bytes .../assets/fonts/eleganticons/ElegantIcons.eot | Bin 0 -> 59572 bytes .../assets/fonts/eleganticons/ElegantIcons.svg | 1832 + .../assets/fonts/eleganticons/ElegantIcons.ttf | Bin 0 -> 59388 bytes .../assets/fonts/eleganticons/ElegantIcons.woff | Bin 0 -> 63664 bytes .../assets/fonts/eleganticons/et-icons.css | 1159 +++ .../font-awesome-4.1.0/css/font-awesome.min.css |4 + .../font-awesome-4.1.0/fonts/FontAwesome.otf| Bin 0 -> 85908 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes .../fonts/fontawesome-webfont.svg | 520 ++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes src/main/jbake/assets/img/gdamour.jpg | Bin 0 -> 6288 bytes src/main/jbake/assets/img/genspring.jpg | Bin 0 -> 5115 bytes src/main/jbake/assets/img/header.jpg| Bin 0 -> 192314 bytes src/main/jbake/assets/img/jgenender.jpg | Bin 0 -> 9440 bytes src/main/jbake/assets/img/loader.gif| Bin 0 -> 20788 bytes src/main/jbake/assets/img/logo-active.png | Bin 0 -> 1983 bytes src/main/jbake/assets/img/logo.png | Bin 0 -> 2015 bytes src/main/jbake/assets/img/manugeorge.jpg| Bin 0 -> 7240 bytes src/main/jbake/assets/img/mnour.jpg | Bin 0 -> 23758 bytes src/main/jbake/assets/img/noimg.png | Bin 0 -> 4777 bytes src/main/jbake/assets/img/popup.jpg | Bin 0 -> 71172 bytes src/main/jbake/assets/img/pricing1.jpg | Bin 0 -> 176192 bytes src/main/jbake/assets/img/pricing2.jpg | Bin 0 -> 138505 bytes src/main/jbake/assets/img/rickmcguire.jpg | Bin 0 -> 21599 bytes src/main/jbake/assets/img/table-1-hover.jpg | Bin 0 -> 50138 bytes src/main/jbake/assets/img/table-1.jpg | Bin 0 -> 39889 bytes src/main/jbake/assets/img/table-2-hover.jpg | Bin 0 -> 19219 bytes src/main/jbake/assets/img/table-2.jpg | Bin 0 -> 18293 bytes src/main/jbake/assets/img/table-3-hover.jpg | Bin 0 -> 26828 bytes src/main/jbake/assets/img/table-3.jpg | Bin 0 -> 34756 bytes src/main/jbake/assets/img/xuhaihong.jpg | Bin 0 -> 20528 bytes src/main/jbake/assets/js/bootstrap.min.js |7 + src/main/jbake/assets/js/highlight.pack.js |3 + src/main/jbake/assets/js/jquery-1.11.1.min.js |4 + src/main/jbake/assets/js/jquery.onepagenav.js | 223 + src/main/jbake/assets/js/main.js| 178 + src/main/jbake/assets/js/owl.carousel.min.js| 47 + src/main/jbake/assets/js/tooltip.js | 304 + src/main/jbake/assets/js/tree.jquery.js | 3542 + .../jbake/assets/js/typeahead.bundle.min.js |8 + src/main/jbake/assets/js/typed.js | 421 ++ src/main/jbake/assets/js/typewriter.js | 54 + src/main/jbake/assets/js/wow.min.js
[23/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/jquery-1.11.1.min.js -- diff --git a/src/main/jbake/assets/js/jquery-1.11.1.min.js b/src/main/jbake/assets/js/jquery-1.11.1.min.js new file mode 100755 index 000..d1608e3 --- /dev/null +++ b/src/main/jbake/assets/js/jquery-1.11.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,argumen ts))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a= =a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d ===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(ar guments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k
[08/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/resources-jmx-example.adoc -- diff --git a/src/main/jbake/content/examples/resources-jmx-example.adoc b/src/main/jbake/content/examples/resources-jmx-example.adoc new file mode 100755 index 000..99f35b6 --- /dev/null +++ b/src/main/jbake/content/examples/resources-jmx-example.adoc @@ -0,0 +1,746 @@ += Custom resources in an EAR archive +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example resources-jmx-example can be browsed at https://github.com/apache/tomee/tree/master/examples/resources-jmx-example + + +TomEE allows you to define your own resources within your application, and declare them in `META-INF/resources.xml`. This allows you do inject these resource into any managed component within your application. + +In addition to this, you can also define a `create` method on either the resource itself, or on a POJO that acts as a factory. This example demonstrates using the `create` method to additionally register the resource as a JMX MBean, as well as make it available for injection. + +== Resource + +Custom resources can be defined using very simple Java classes. In this particular instance, as the application also wants to register this resource as an MBean, the resource class needs to follow the MBean specification. + + public class Hello implements HelloMBean { + + private AtomicInteger count = new AtomicInteger(0); + + @Override + public String greet(String name) { + if (name == null) { + throw new NullPointerException("Name cannot be null"); + } + + return "Hello, " + name; + } + + @Override + public int getCount() { + return count.get(); + } + + @Override + public void setCount(int value) { + count.set(value); + } + + @Override + public void increment() { + count.incrementAndGet(); + } + } + + public interface HelloMBean { + + public String greet(final String name); + + public int getCount(); + + public void setCount(int count); + + public void increment(); + + } + +== Create method + +To avoid adding the logic to register the resource as an MBean in every resource, the application provides a single class with a create() method that takes care of this logic for us. + + public class JMXBeanCreator { + + private static Logger LOGGER = Logger.getLogger(JMXBeanCreator.class.getName()); + private Properties properties; + + public Object create() throws MBeanRegistrationException { + // instantiate the bean + + final String code = properties.getProperty("code"); + final String name = properties.getProperty("name"); + + requireNotNull(code); + requireNotNull(name); + + try { + final Class cls = Class.forName(code, true, Thread.currentThread().getContextClassLoader()); + final Object instance = cls.newInstance(); + + final Field[] fields = cls.getDeclaredFields(); + for (final Field field : fields) { + + final String property = properties.getProperty(field.getName()); + if (property == null) { + continue; + } + + try { + field.setAccessible(true); + field.set(instance, Converter.convert(property, field.getType(), field.getName())); + } catch (Exception e) { + LOGGER.info(String.format("Unable to set value %s on field %s", property, field.getName())); + } + } + + final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + final ObjectName objectName = new ObjectName(name); + mbs.registerMBean(instance, objectName); + + return instance; + + } catch (final ClassNotFoundException e) { + LOGGER.severe("Unable to find class " + code); + throw new MBeanRegistrationException(e); + } catch (final InstantiationException e) { + LOGGER.severe("Unable to create instance of class " + code); + throw new MBeanRegistrationException(e); + } catch (final IllegalAccessException e) { + LOGGER.severe("Illegal access: " + code); + throw new MBeanRegistrationException(e); + } catch (final MalformedObjectNameExcepti
[13/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/custom-injection.adoc -- diff --git a/src/main/jbake/content/examples/custom-injection.adoc b/src/main/jbake/content/examples/custom-injection.adoc new file mode 100755 index 000..7edf520 --- /dev/null +++ b/src/main/jbake/content/examples/custom-injection.adoc @@ -0,0 +1,256 @@ += Custom Injection +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example custom-injection can be browsed at https://github.com/apache/tomee/tree/master/examples/custom-injection + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== Pickup + + +[source,java] + +package org.superbiz.enventries; + + +//START SNIPPET: code + +import java.beans.PropertyEditorManager; + +public enum Pickup { + +HUMBUCKER, +SINGLE_COIL; + +// Here's the little magic where we register the PickupEditor +// which knows how to create this object from a string. +// You can add any of your own Property Editors in the same way. +static { +PropertyEditorManager.registerEditor(Pickup.class, PickupEditor.class); +} +} + + + +== PickupEditor + + +[source,java] + +package org.superbiz.enventries; + +/** + * With a java.beans.PropertyEditor, you can go way beyond the built-in + * types that OpenEJB supports and can extend dependency injection to + * just about anywhere. + * + * In the world of electric guitars, two types of pickups are used: humbucking, and single-coil. + * Guitarists often refer to their guitars as HSS, meaning a guitar with 1 humbucker and + * 2 single coil pickups, and so on. This little PropertyEditor supports that shorthand notation. + * + * @version $Revision$ $Date$ + */ +//START SNIPPET: code +public class PickupEditor extends java.beans.PropertyEditorSupport { + +public void setAsText(String text) throws IllegalArgumentException { +text = text.trim(); + +if (text.equalsIgnoreCase("H")) setValue(Pickup.HUMBUCKER); +else if (text.equalsIgnoreCase("S")) setValue(Pickup.SINGLE_COIL); +else throw new IllegalStateException("H and S are the only supported Pickup aliases"); +} +} + + + +== Stratocaster + + +[source,java] + +package org.superbiz.enventries; + +import javax.annotation.Resource; +import javax.ejb.Stateless; +import java.io.File; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * In addition to the standard env-entry types (String, Integer, Long, Short, Byte, Boolean, Double, Float, Character) + * OpenEJB supports many other types. + */ +//START SNIPPET: code +@Stateless +public class Stratocaster { + + +@Resource(name = "pickups") +private List pickups; + +@Resource(name = "style") +private Style style; + +@Resource(name = "dateCreated") +private Date dateCreated; + +@Resource(name = "guitarStringGuages") +private Map guitarStringGuages; + +@Resource(name = "certificateOfAuthenticity") +private File certificateOfAuthenticity; + +public Date getDateCreated() { +return dateCreated; +} + +/** + * Gets the guage of the electric guitar strings + * used in this guitar. + * + * @param string + * @return + */ +public float getStringGuage(String string) { +return guitarStringGuages.get(string); +} + +public List getPickups() { +return pickups; +} + +public Style getStyle() { +return style; +} + +public File getCertificateOfAuthenticity() { +return certificateOfAuthenticity; +} +} + + + +== Style + + +[source,java] + +package org.superbiz.enventries; + +/** + * @version $Revision$ $Date$ + */ +//START SNIPPET: code +public enum Style { + +STANDARD, +DELUX, +VINTAGE; +} + + + +== StratocasterTest + + +[source,java] + +package org.superbiz.enventries; + +import junit.framework.TestCase; + +import javax.ejb.EJB; +import javax.ejb.embeddable.EJBContainer; +import java.io.File; +import java.text.DateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +import static java.util.Arrays.asList; + +/** + * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $ + */ +//START SNIPPET: code +public class StratocasterTest extends TestCase { + +@EJB +private Stratocaster strat; + +public void test() throws Exception { +EJBContainer.createEJBContainer().getContext().bind("inject", this); + +Date date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).parse("Mar 1, 1962"); +assertEquals("Strat.getDateCreated()", date, strat.getDateCreated()); + +List pickups = asList(Pickup.SINGLE_COIL, Pickup.SINGLE_COIL, Pickup.SINGLE_COIL); +assertEquals("Strat.getPickups()",
[04/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security-2.adoc -- diff --git a/src/main/jbake/content/examples/testing-security-2.adoc b/src/main/jbake/content/examples/testing-security-2.adoc new file mode 100755 index 000..c8a2491 --- /dev/null +++ b/src/main/jbake/content/examples/testing-security-2.adoc @@ -0,0 +1,306 @@ += Testing Security 2 +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example testing-security-2 can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security-2 + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== Movie + + +[source,java] + +package org.superbiz.injection.secure; + +import javax.persistence.Entity; + +@Entity +public class Movie { + +private String director; +private String title; +private int year; + +public Movie() { +} + +public Movie(String director, String title, int year) { +this.director = director; +this.title = title; +this.year = year; +} + +public String getDirector() { +return director; +} + +public void setDirector(String director) { +this.director = director; +} + +public String getTitle() { +return title; +} + +public void setTitle(String title) { +this.title = title; +} + +public int getYear() { +return year; +} + +public void setYear(int year) { +this.year = year; +} + +} + + + +== Movies + + +[source,java] + +package org.superbiz.injection.secure; + +//START SNIPPET: code + +import javax.annotation.security.PermitAll; +import javax.annotation.security.RolesAllowed; +import javax.ejb.Stateful; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +@Stateful +public class Movies { + +@PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED) +private EntityManager entityManager; + +@RolesAllowed({"Employee", "Manager"}) +public void addMovie(Movie movie) throws Exception { +entityManager.persist(movie); +} + +@RolesAllowed({"Manager"}) +public void deleteMovie(Movie movie) throws Exception { +entityManager.remove(movie); +} + +@PermitAll +@TransactionAttribute(TransactionAttributeType.SUPPORTS) +public List getMovies() throws Exception { +Query query = entityManager.createQuery("SELECT m from Movie as m"); +return query.getResultList(); +} +} + + + +== persistence.xml + + +[source,xml] + +http://java.sun.com/xml/ns/persistence"; version="1.0"> + + +movieDatabase +movieDatabaseUnmanaged +org.superbiz.injection.secure.Movie + + + + + + + + + +== MovieTest + + +[source,java] + +package org.superbiz.injection.secure; + +import junit.framework.TestCase; + +import javax.ejb.EJB; +import javax.ejb.EJBAccessException; +import javax.ejb.embeddable.EJBContainer; +import javax.naming.Context; +import javax.naming.InitialContext; +import java.util.List; +import java.util.Properties; + +//START SNIPPET: code +public class MovieTest extends TestCase { + +@EJB +private Movies movies; + +protected void setUp() throws Exception { + +// Uncomment this line to set the login/logout functionality on Debug +//System.setProperty("log4j.category.OpenEJB.security", "debug"); + +Properties p = new Properties(); +p.put("movieDatabase", "new://Resource?type=DataSource"); +p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); +p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); + +EJBContainer.createEJBContainer(p).getContext().bind("inject", this); +} + +public void testAsManager() throws Exception { +Properties p = new Properties(); +p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); +p.put(Context.SECURITY_PRINCIPAL, "jane"); +p.put(Context.SECURITY_CREDENTIALS, "waterfall"); + +InitialContext context = new InitialContext(p); + +try { +movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992)); +movies.addMovie(new Movie("Joel Coen", "Fargo", 1996)); +movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998)); + +List list = movies.getMovies(); +assertEquals("List.size()", 3, list.size()); + +for (Movie movie : list) { +movies.deleteMovie(movie); +} + +assertEquals("Movies.get
[33/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/examples.cache -- diff --git a/examples.cache b/examples.cache new file mode 100755 index 000..ba5ccce --- /dev/null +++ b/examples.cache @@ -0,0 +1,1653 @@ +{ + "all":{ +"adapters":[ + { +"name":"multiple-arquillian-adapters", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"; + } +], +"alternate":[ + { +"name":"alternate-descriptors", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/alternate-descriptors"; + } +], +"alternative":[ + { +"name":"cdi-alternative-and-stereotypes", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes"; + } +], +"applet":[ + { +"name":"applet", +"readme":"No README.md yet, be the first to contribute one!", +"url":"https://github.com/apache/tomee/tree/master/examples/applet"; + } +], +"applicationcomposer":[ + { +"name":"applicationcomposer-jaxws-cdi", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi"; + }, + { +"name":"rest-applicationcomposer", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer"; + }, + { +"name":"application-composer", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/application-composer"; + }, + { +"name":"rest-applicationcomposer-mockito", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito"; + } +], +"applicationexception":[ + { +"name":"applicationexception", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/applicationexception"; + } +], +"arquillian":[ + { +"name":"arquillian-jpa", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/arquillian-jpa"; + }, + { +"name":"multiple-tomee-arquillian", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian"; + }, + { +"name":"multiple-arquillian-adapters", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"; + } +], +"async":[ + { +"name":"async-postconstruct", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/async-postconstruct"; + }, + { +"name":"async-methods", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/async-methods"; + } +], +"attachments":[ + { +"name":"webservice-attachments", +"readme":"Title: Webservice Attachments\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AttachmentImpl\n\npackage org.superbiz.attachment;\n\n import javax.activation.DataHandler;\nimport javax.activation.DataSource;\n import javax.ejb.Stateless;\nimport javax.jws.WebService;\nimport javax.xml.ws.BindingType;\nimport javax.xml.ws.soap.SOAPBinding;\n import java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * This is an EJB 3 style pojo stateless session bean\n * Every stateless session bean implementation must be annotated\n * using the annotation @Stateless\n * This EJB has a single interface: {@link AttachmentWs} a webservice interface.\n */\n@Stateless\n@WebService(\n portName = \"AttachmentPort\",\nserviceName = \"AttachmentWsService\",\ntargetNamespace = \"http://superbiz.org/wsdl\",\ne ndpointInterface = \"org.superbiz.attachment.AttachmentWs\")\n @BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING)\npublic class AttachmentImpl implements AttachmentWs {\n\n
[17/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/developer/tools/maven/tomee.adoc -- diff --git a/src/main/jbake/content/developer/tools/maven/tomee.adoc b/src/main/jbake/content/developer/tools/maven/tomee.adoc new file mode 100755 index 000..e4f5896 --- /dev/null +++ b/src/main/jbake/content/developer/tools/maven/tomee.adoc @@ -0,0 +1,183 @@ += TomEE Maven Plugin +:jbake-date: 2016-03-16 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: + +TomEE Maven Plugin is a set of goals for the development and to prepare to go in production: + +- `tomee:build` +- `tomee:exec` +- `tomee:configtest` +- `tomee:debug` +- `tomee:deploy` +- `tomee:exec` +- `tomee:list` +- `tomee:run` +- `tomee:start` +- `tomee:stop` +- `tomee:undeploy` + +=== Run + +The most commonly used goal, it allows to start a tomee with applications. Here is its configuration: + +[.table.table-bordered,options="header"] +|=== +|Name|Default|Description + +|synchronization|-|a synchronization (see after the table) +|synchronizations|-|list of synchronizations +|reloadOnUpdate|-|should the application be redeployed when a synchronization is triggered + +|skipCurrentProject|false|should current project not be considered as a deployable even if its packaging is compatible (war typically) +|tomeeVersion|auto, plugin one|which version of TomEE to use +|tomeeGroupId|org.apache.tomee|TomEE artifact groupId +|tomeeArtifactId|apache-tomee|TomEE artifact artifactId +|tomeeType|zip| the type of the TomEE artifact , only zip supported at the moment +|tomeeClassifier|webprofile|which flavor of TomEE to use (classifier) +|tomeeShutdownPort|read from server.xml|the shutdown port +|tomeeShutdownAttempts|60|how many times to wait for startup/shutdown (waits 1s in between) +|tomeeShutdownCommand|SHUTDOWN|the shutdown command +|tomeeAjpPort|read from the pom|the AJP port if needed +|tomeeHttpsPort|read from the pom|the HTTPS port if needed +|args|-|command line arguments (system properties, javaagent, JVM options ...) +|debug|-|start and wait for a remote debugger to connect +|debugPort|5005|used when debug to change the default port +|simpleLog|false|use one line logs +|extractWars|false|explode wars before starting +|stripWarVersion|true|remove the version from the war name +|stripVersion|false|remove the version from the artifact name whatever it is (even jar) +|webappResources|${project.basedir}/src/main/webapp|where web resources are +|webappClasses and classes|${project.build.outputDirectory}|where artifact binaries are +|catalinaBase|${project.build.directory}/apache-tomee|where to create the tomee instance +|context|-|name of the current artifact (rename the war from the maven name to this one) +|webappDir|webapps|path to webapps folder from tomee.base +|appDir|apps|path to apps folder from tomee.base +|libDir|lib|where is lib folder +|mainDir|${project.basedir}/src/main|used in openejb mode to change default config of conf/lib/bin folders to openejb instead of tomee +|config|${project.basedir}/src/main/tomee/conf|a conf folder synchronized with TomEE one +|bin|${project.basedir}/src/main/tomee/bin|a bin folder synchronized with TomEE one +|lib|${project.basedir}/src/main/tomee/lib|a lib folder synchronized with TomEE one +|systemVariables|-|a map of system properties +|classpaths|-|a list of additional entries for the startup classpath +|customizers|-|a list of customizers +|jsCustomizers|-|a list of js customizers (js scripts) +|groovyCustomizers|-|a list of groovy customizers (groovy scripts) +|webappDefaultConfig|false|auto config war oriented +|quickSession|true|session generation will use `Random` instead of `SecureRandom` (for dev) +|forceReloadable|false|ensure TomEE supports reloading/redeployment +|forceJspDevelopment|true|JSP will be auto-recompiled on changes +|libs|-|dependencies to add in lib, see after this table for advanced usage +|endorsedLibs|-|dependencies to add in endorsed, see after this table for advanced usage +|javaagents|-|javaagents to add on the JVM, supports maven coordinates +|persistJavaagents|false|should javaagent be saved or just use for this plugin run +|webapps|-|additional applicatinos to deploy +|warFile|${project.build.directory}/${project.build.finalName}.${project.packaging}|the war to deploy +|workWarFile|${project.build.directory}/${project.build.finalName}"|the exploded war to deploy +|removeDefaultWebapps|true| should default webapps (ROOT, docs, ...) be deleted +|deployOpenEjbApplication|false|should openejb internal application be deployed +|removeTomeeWebapp|true|should tomee webapp (with EJBd adapter) be deployed +|tomeeAlreadyInstalled|false|skip all the setup configuration +|ejbRemote|true|should EJBd be activated +|checkStarted|false|should the plugin check the server is up (useful when used with `pre-integration` phase +|useConsole|true|wait for the end of
[19/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/admin/configuration/containers.adoc -- diff --git a/src/main/jbake/content/admin/configuration/containers.adoc b/src/main/jbake/content/admin/configuration/containers.adoc new file mode 100755 index 000..3d86272 --- /dev/null +++ b/src/main/jbake/content/admin/configuration/containers.adoc @@ -0,0 +1,585 @@ += Resources +:jbake-date: 2016-03-16 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: + +All containers will be created automatically - which means you don't need to define them +if you don't need to tune their configuration - when a bean of their type if found. + +To avoid that use `openejb.offline` property and set it to `true`. See link:server.html[Server Configuration] for more detail. + +=== @Stateless + +A `@Stateless` container. + +Declarable in tomee.xml via + +[source,xml] + + +AccessTimeout = 30 seconds +MaxSize = 10 +MinSize = 0 +StrictPooling = true +MaxAge = 0 hours +ReplaceAged = true +ReplaceFlushed = false +MaxAgeOffset = -1 +IdleTimeout = 0 minutes +GarbageCollection = false +SweepInterval = 5 minutes +CallbackThreads = 5 +CloseTimeout = 5 minutes +UseOneSchedulerThreadByBean = false +EvictionThreads = 1 + + + +Declarable in properties via + +[source,bash] + +Foo = new://Container?type=STATELESS +Foo.AccessTimeout = 30 seconds +Foo.MaxSize = 10 +Foo.MinSize = 0 +Foo.StrictPooling = true +Foo.MaxAge = 0 hours +Foo.ReplaceAged = true +Foo.ReplaceFlushed = false +Foo.MaxAgeOffset = -1 +Foo.IdleTimeout = 0 minutes +Foo.GarbageCollection = false +Foo.SweepInterval = 5 minutes +Foo.CallbackThreads = 5 +Foo.CloseTimeout = 5 minutes +Foo.UseOneSchedulerThreadByBean = false +Foo.EvictionThreads = 1 + + + Configuration + += AccessTimeout + +Specifies the time an invokation should wait for an instance +of the pool to become available. + +After the timeout is reached, if an instance in the pool cannot +be obtained, the method invocation will fail. + +Usable time units: nanoseconds, microsecons, milliseconds, +seconds, minutes, hours, days. Or any combination such as +"1 hour and 27 minutes and 10 seconds" + +Any usage of the `javax.ejb.AccessTimeout` annotation will +override this setting for the bean or method where the +annotation is used. + += MaxSize + +Specifies the size of the bean pools for this stateless +SessionBean container. If StrictPooling is not used, instances +will still be created beyond this number if there is demand, but +they will not be returned to the pool and instead will be +immediately destroyed. + += MinSize + +Specifies the minimum number of bean instances that should be in +the pool for each bean. Pools are prefilled to the minimum on +startup. Note this will create start order dependencies between +other beans that also eagerly start, such as other `@Stateless` +beans with a minimum or `@Singleton` beans using `@Startup`. The +start order. + +The minimum pool size is rigidly maintained. Instances in the +minimum side of the pool are not eligible for `IdleTimeout` or +`GarbageCollection`, but are subject to `MaxAge` and flushing. + +If the pool is flushed it is immediately refilled to the minimum +size with `MaxAgeOffset` applied. If an instance from the minimum +side of the pool reaches its `MaxAge`, it is also immediately +replaced. Replacement is done in a background queue using the +number of threads specified by `CallbackThreads`. + += StrictPooling + +StrictPooling tells the container what to do when the pool +reaches it's maximum size and there are incoming requests that +need instances. + +With strict pooling, requests will have to wait for instances to +become available. The pool size will never grow beyond the the +set `MaxSize` value. The maximum amount of time a request should +wait is specified via the `AccessTimeout` setting. + +Without strict pooling, the container will create temporary +instances to meet demand. The instances will last for just one +method invocation and then are removed. + +Setting `StrictPooling` to `false` and `MaxSize` to `0` will result in +no pooling. Instead instances will be created on demand and live +for exactly one method call before being removed. + += MaxAge + +Specifies the maximum time that an instance should live before +it should be retired and removed from use. This will happen +gracefully. Useful for situations where bean instances are +designed to hold potentially expensive resources such as memory +or file handles and need to be periodically cleared out. + +Usable time units: nanoseconds, microsecons, milliseconds, +seconds, minutes, hours, days. Or any combination such as +`1 hour and 27 minutes and 10 seconds` + += ReplaceAged + +When `ReplaceAged` is enabled, any instances in the pool that +expire due to reaching the
[21/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/tree.jquery.js -- diff --git a/src/main/jbake/assets/js/tree.jquery.js b/src/main/jbake/assets/js/tree.jquery.js new file mode 100755 index 000..71290b1 --- /dev/null +++ b/src/main/jbake/assets/js/tree.jquery.js @@ -0,0 +1,3542 @@ +/* +JqTree 1.3.2 + +Copyright 2015 Marco Braak + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o dimensions.right || y > dimensions.bottom) { + return null; +} +low = 0; +high = this.hit_areas.length; +while (low < high) { + mid = (low + high) >> 1; + area = this.hit_areas[mid]; + if (y < area.top) { +high = mid; + } else if (y > area.bottom) { +low = mid + 1; + } else { +return area; + } +} +return null; + }; + + DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) { +var node; +node = area.node; +return node.isFolder() && !node.is_open && area.position === Position.INSIDE; + }; + + DragAndDropHandler.prototype.updateDropHint = function() { +var node_element; +if (!this.hovered_area) { + return; +} +this.removeDropHint(); +node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node); +return this.previous_ghost = node_element.addDropHint(this.hovered_area.position); + }; + + DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) { +var openFolder; +openFolder = (function(_this) { + return function() { +return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() { + _this.refresh(); + return _this.updateDropHint(); +}); + }; +})(this); +this.stopOpenFolderTimer(); +return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay); + }; + + DragAndDropHandler.prototype.stopOpenFolderTimer = function() { +if (this.open_folder_timer) { + clearTimeout(this.open_folder_timer); + return this.open_folder_timer = null; +} + }; + + DragAndDropHandler.prototype.moveItem = function(position_info) { +var doMove, event, moved_node, position, previous_parent, target_node; +if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) { + moved_node = this.current_item.node; + target_node = this.hovered_area.node; + position = this.hovered_area.position; + previous_parent = moved_node.parent; + if (position === Position.INSIDE) { +this.hovered_area.node.is_open = true; + } + doMove = (function(_this) { +return function() { + _this.tree_widget.tree.moveNode(moved_node, target_node, position); + _this.tree_widget.element.empty(); + return _this.tree_widget._refreshElements(); +}; + })(this); + event = this.tree_widget._triggerEvent('tree.move', { +move_info: { + moved_node: moved_node, + target_node: target_node, + position: Position.getName(position), + previous_parent: previous_parent, + do_move: doMove, + original_event: position_info.original_event +} + }); + if (!event.isDefaultPrevented()) { +return doMove(); + } +} + }; + + DragAndDropHandler.prototype.getTreeDimensions = function() { +var offset; +offset = this.tree_widget.element.offset(); +return { + left: offset.left, + top: offset.top, + right: offset.left + this.tree_widget.element.width(), + bottom: offset.top + this.tree_widget.element.height() + 16 +}; + }; + + return DragAndDropHandler; + +})(); + +VisibleNodeIterator = (function() { + function VisibleNodeIterator(tree) { +this.tree = tree; + } + + VisibleNodeIterator.prototype.iterate = function() { +var _iterateNode, is_first_node; +is_first_node = true; +_iterateNode = (function(_this) { +
[09/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/moviefun.adoc -- diff --git a/src/main/jbake/content/examples/moviefun.adoc b/src/main/jbake/content/examples/moviefun.adoc new file mode 100755 index 000..bd2ccd9 --- /dev/null +++ b/src/main/jbake/content/examples/moviefun.adoc @@ -0,0 +1,385 @@ += Movies Complete +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example moviefun can be browsed at https://github.com/apache/tomee/tree/master/examples/moviefun + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== AddInterceptor + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class AddInterceptor { + +@AroundInvoke +public Object invoke(InvocationContext context) throws Exception { +// Log Add +return context.proceed(); +} +} + + + +== DeleteInterceptor + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class DeleteInterceptor { + +@AroundInvoke +public Object invoke(InvocationContext context) throws Exception { +// Log Delete +return context.proceed(); +} +} + + + +== Movie + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.persistence.Entity; + +@Entity +public class Movie { + +private String director; +private String title; +private int year; + +public Movie() { +} + +public Movie(String director, String title, int year) { +this.director = director; +this.title = title; +this.year = year; +} + +public String getDirector() { +return director; +} + +public void setDirector(String director) { +this.director = director; +} + +public String getTitle() { +return title; +} + +public void setTitle(String title) { +this.title = title; +} + +public int getYear() { +return year; +} + +public void setYear(int year) { +this.year = year; +} + +} + + + +== Movies + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.annotation.security.PermitAll; +import javax.annotation.security.RolesAllowed; +import javax.ejb.Stateful; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.interceptor.Interceptors; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +//START SNIPPET: code +@Stateful +public class Movies { + +@PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION) +private EntityManager entityManager; + +@RolesAllowed({"Employee", "Manager"}) +@TransactionAttribute(TransactionAttributeType.REQUIRED) +@Interceptors(AddInterceptor.class) +public void addMovie(Movie movie) throws Exception { +entityManager.persist(movie); +} + +@RolesAllowed({"Manager"}) +@TransactionAttribute(TransactionAttributeType.MANDATORY) +@Interceptors(DeleteInterceptor.class) +public void deleteMovie(Movie movie) throws Exception { +entityManager.remove(movie); +} + +@PermitAll +@TransactionAttribute(TransactionAttributeType.SUPPORTS) +public List getMovies() throws Exception { +Query query = entityManager.createQuery("SELECT m from Movie as m"); +return query.getResultList(); +} +} + + + +== ReadInterceptor + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class ReadInterceptor { + +@AroundInvoke +public Object invoke(InvocationContext context) throws Exception { +// Log Delete +return context.proceed(); +} +} + + + +== persistence.xml + + +[source,xml] + +http://java.sun.com/xml/ns/persistence"; version="1.0"> + + +movieDatabase +movieDatabaseUnmanaged +org.superbiz.injection.tx.Movie + + + + + + + + + +== MoviesTest + + +[source,java] + +package org.superbiz.injection.tx; + +import junit.framework.TestCase; + +import javax.annotation.security.RunAs; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.ejb.embeddable.EJBContainer; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.Callable; + +import st
[29/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/bootstrap.css.map -- diff --git a/src/main/jbake/assets/css/bootstrap.css.map b/src/main/jbake/assets/css/bootstrap.css.map new file mode 100755 index 000..f944af4 --- /dev/null +++ b/src/main/jbake/assets/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labe ls.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;EAaE,eAAA;CDjBD;ACyBDEAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACg ED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgIDEAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKDEAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA ;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,eAAA;CH8O9C;AG7OmC;EAAW,eAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA ;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;
[03/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/transaction-rollback.adoc -- diff --git a/src/main/jbake/content/examples/transaction-rollback.adoc b/src/main/jbake/content/examples/transaction-rollback.adoc new file mode 100755 index 000..6b8088d --- /dev/null +++ b/src/main/jbake/content/examples/transaction-rollback.adoc @@ -0,0 +1,584 @@ += Transaction Rollback +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example transaction-rollback can be browsed at https://github.com/apache/tomee/tree/master/examples/transaction-rollback + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== CustomRuntimeException + + +[source,java] + +package org.superbiz.txrollback; + +import javax.ejb.ApplicationException; + +@ApplicationException +public class CustomRuntimeException extends RuntimeException { + +public CustomRuntimeException() { +} + +public CustomRuntimeException(String s) { +super(s); +} + +public CustomRuntimeException(String s, Throwable throwable) { +super(s, throwable); +} + +public CustomRuntimeException(Throwable throwable) { +super(throwable); +} +} + + + +== Movie + + +[source,java] + +package org.superbiz.txrollback; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity(name = "Movie") +public class Movie { + +@Id +@GeneratedValue(strategy = GenerationType.AUTO) +private long id; + +private String director; +private String title; +private int year; + +public Movie() { +} + +public Movie(String director, String title, int year) { +this.director = director; +this.title = title; +this.year = year; +} + +public String getDirector() { +return director; +} + +public void setDirector(String director) { +this.director = director; +} + +public String getTitle() { +return title; +} + +public void setTitle(String title) { +this.title = title; +} + +public int getYear() { +return year; +} + +public void setYear(int year) { +this.year = year; +} + +} + + + +== Movies + + +[source,java] + +package org.superbiz.txrollback; + +import javax.annotation.Resource; +import javax.ejb.SessionContext; +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +//START SNIPPET: code +@Stateless +public class Movies { + +@PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION) +private EntityManager entityManager; + +@Resource +private SessionContext sessionContext; + +public void addMovie(Movie movie) throws Exception { +entityManager.persist(movie); +} + +public void deleteMovie(Movie movie) throws Exception { +entityManager.remove(movie); +} + +public List getMovies() throws Exception { +Query query = entityManager.createQuery("SELECT m from Movie as m"); +return query.getResultList(); +} + +public void callSetRollbackOnly() { +sessionContext.setRollbackOnly(); +} + +public void throwUncheckedException() { +throw new RuntimeException("Throwing unchecked exceptions will rollback a transaction"); +} + +public void throwApplicationException() { +throw new CustomRuntimeException("This is marked @ApplicationException, so no TX rollback"); +} +} + + + +== persistence.xml + + +[source,xml] + +http://java.sun.com/xml/ns/persistence"; version="1.0"> + + +movieDatabase +movieDatabaseUnmanaged +org.superbiz.testinjection.MoviesTest.Movie + + + + + + + + + +== MoviesTest + + +[source,java] + +package org.superbiz.txrollback; + +import junit.framework.TestCase; + +import javax.annotation.Resource; +import javax.ejb.EJB; +import javax.ejb.embeddable.EJBContainer; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.RollbackException; +import javax.transaction.UserTransaction; +import java.util.List; +import java.util.Properties; + +//START SNIPPET: code +public class MoviesTest extends TestCase { + +@EJB +private Movies movies; + +@Resource +private UserTransaction userTransaction; + +@PersistenceContext +private EntityManager entityManager; + +private EJBContainer ejbContainer; + +public void setUp() throws Exception { +Properties p = new Properties(); +p.put("movieDatabase", "new://Resource?type=DataS
[12/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/dynamic-datasource-routing.adoc -- diff --git a/src/main/jbake/content/examples/dynamic-datasource-routing.adoc b/src/main/jbake/content/examples/dynamic-datasource-routing.adoc new file mode 100755 index 000..8b7a76e --- /dev/null +++ b/src/main/jbake/content/examples/dynamic-datasource-routing.adoc @@ -0,0 +1,473 @@ += Dynamic Datasource Routing +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example dynamic-datasource-routing can be browsed at https://github.com/apache/tomee/tree/master/examples/dynamic-datasource-routing + + +The TomEE dynamic datasource api aims to allow to use multiple data sources as one from an application point of view. + +It can be useful for technical reasons (load balancing for example) or more generally +functionnal reasons (filtering, aggregation, enriching...). However please note you can choose +only one datasource by transaction. It means the goal of this feature is not to switch more than +once of datasource in a transaction. The following code will not work: + + +[source,java] + +@Stateless +public class MyEJB { +@Resource private MyRouter router; +@PersistenceContext private EntityManager em; + +public void workWithDataSources() { +router.setDataSource("ds1"); +em.persist(new MyEntity()); + +router.setDataSource("ds2"); // same transaction -> this invocation doesn't work +em.persist(new MyEntity()); +} +} + + + +In this example the implementation simply use a datasource from its name and needs to be set before using any JPA +operation in the transaction (to keep the logic simple in the example). + += The implementation of the Router + +Our router has two configuration parameters: +* a list of jndi names representing datasources to use +* a default datasource to use + +== Router implementation + +The interface Router (`org.apache.openejb.resource.jdbc.Router`) has only one method to implement, `public DataSource getDataSource()` + +Our `DeterminedRouter` implementation uses a ThreadLocal to manage the currently used datasource. Keep in mind JPA used more than once the getDatasource() method +for one operation. To change the datasource in one transaction is dangerous and should be avoid. + + +[source,java] + +package org.superbiz.dynamicdatasourcerouting; + +import org.apache.openejb.resource.jdbc.AbstractRouter; + +import javax.naming.NamingException; +import javax.sql.DataSource; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class DeterminedRouter extends AbstractRouter { +private String dataSourceNames; +private String defaultDataSourceName; +private Map dataSources = null; +private ThreadLocal currentDataSource = new ThreadLocal(); + +/** + * @param datasourceList datasource resource name, separator is a space + */ +public void setDataSourceNames(String datasourceList) { +dataSourceNames = datasourceList; +} + +/** + * lookup datasource in openejb resources + */ +private void init() { +dataSources = new ConcurrentHashMap(); +for (String ds : dataSourceNames.split(" ")) { +try { +Object o = getOpenEJBResource(ds); +if (o instanceof DataSource) { +dataSources.put(ds, DataSource.class.cast(o)); +} +} catch (NamingException e) { +// ignored +} +} +} + +/** + * @return the user selected data source if it is set + * or the default one + * @throws IllegalArgumentException if the data source is not found + */ +@Override +public DataSource getDataSource() { +// lazy init of routed datasources +if (dataSources == null) { +init(); +} + +// if no datasource is selected use the default one +if (currentDataSource.get() == null) { +if (dataSources.containsKey(defaultDataSourceName)) { +return dataSources.get(defaultDataSourceName); + +} else { +throw new IllegalArgumentException("you have to specify at least one datasource"); +} +} + +// the developper set the datasource to use +return currentDataSource.get(); +} + +/** + * + * @param datasourceName data source name + */ +public void setDataSource(String datasourceName) { +if (dataSources == null) { +init(); +} +if (!dataSources.containsKey(datasourceName)) { +throw new IllegalArgumentException("data source called " + datasourceName + " can't be found."); +} +DataSource ds = dataSources.get(datasourceName); +currentDataSource.set(
[32/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/pom.xml -- diff --git a/pom.xml b/pom.xml new file mode 100755 index 000..a479edc --- /dev/null +++ b/pom.xml @@ -0,0 +1,127 @@ + +http://maven.apache.org/POM/4.0.0"; + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";> + 4.0.0 + + org.apache.tomee + site + 1.0-SNAPSHOT + Apache TomEE :: WebSite NG + + +7.0.3 +false +false + +UTF-8 + + + + + org.asciidoctor + asciidoctorj-pdf + 1.5.0-alpha.11 + + + org.asciidoctor + asciidoctorj + 1.5.4 + + + org.projectlombok + lombok + 1.16.12 + provided + + + org.apache.geronimo.specs + geronimo-json_1.0_spec + 1.0-alpha-1 + + + org.apache.johnzon + johnzon-jaxrs + 0.9.5 + + + org.apache.cxf + cxf-rt-rs-client + 3.1.8 + + + org.apache.tomee + javaee-api + 7.0-1 + + + org.apache.tomee + tomee-embedded + ${tomee.version} + + + org.jbake + jbake-core + 2.4.0 + + + org.slf4j + jul-to-slf4j + + + + + org.codehaus.groovy + groovy + 2.3.11 + + + org.codehaus.groovy + groovy-templates + 2.3.11 + + + org.pegdown + pegdown + 1.6.0 + + + + + + +org.apache.maven.plugins +maven-compiler-plugin +3.5.1 + + 1.8 + 1.8 + + + +org.codehaus.mojo +exec-maven-plugin +1.5.0 + + +tomee-site +compile + + java + + + + + true + org.apache.tomee.website.JBake + +${project.basedir}/src/main/jbake/ + ${project.build.directory}/${project.build.finalName} +${jbake.http} +${jbake.pdf} + + + + + + http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/java/org/apache/tomee/website/Contributors.java -- diff --git a/src/main/java/org/apache/tomee/website/Contributors.java b/src/main/java/org/apache/tomee/website/Contributors.java new file mode 100755 index 000..fb4d0bf --- /dev/null +++ b/src/main/java/org/apache/tomee/website/Contributors.java @@ -0,0 +1,222 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomee.website; + +import lombok.Builder; +import lombok.Data; +import org.apache.johnzon.jaxrs.JohnzonProvider; + +import javax.net.ssl.HttpsURLConnection; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Stream; + +import static java.util.Collections.emptyList; +import static java.util.Optional.ofNullable; +import static java.util.stream.Collectors.toList; + +public class Contributors { +private static final String GRAVATAR_BASE = "http://fr.gravatar.com/";; + +private Contributors() { +// no-op +} + +public static Contributor singleLoad(final WebTarget target, final String input) throws IOException { +try { +return ofNullable(loadGravatar(target, input)).orElse(loadStatic(input)); +} catch (Exception e) { +e.printStackTrace(); +return loadStatic(
[15/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/access-timeout-meta.adoc -- diff --git a/src/main/jbake/content/examples/access-timeout-meta.adoc b/src/main/jbake/content/examples/access-timeout-meta.adoc new file mode 100755 index 000..345b7c3 --- /dev/null +++ b/src/main/jbake/content/examples/access-timeout-meta.adoc @@ -0,0 +1,291 @@ += @AccessTimeout the Meta-Annotation Way +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example access-timeout-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/access-timeout-meta + + +Any annotation that takes parameters can benefit from meta-annotations. Here we see how `@AccessTimeout` can be far more understandable and manageable through meta-annotations. +We'll use the link:access-timeout.html[access-timeout] example as our use-case. + +The value of the parameters supplied to `@AccessTimeout` have a dramatic affect on how what that annotation actually does. Moreover, `@AccessTimeout` has one of those designs +where `-1` and `0` have signifcantly different meanings. One means "wait forever", the other means "never wait". Only a lucky few can remember which is which on a daily basis. +For the rest of us it is a constant source of bugs. + +Meta-Annotations to the rescue! + += Creating the Meta-Annotations + +As a matter of best-practices, we will put our meta-annotations in a package called `api`, for this example that gives us `org.superbiz.accesstimeout.api`. The package `org.superbiz.api` would work just as well. + +The basic idea is to have a package where "approved' annotations are used and to prohibit usage of the non-meta versions of the annotations. All the real configuration will +then be centralized in the `api` package and changes to timeout values will be localized to that package and automatically be reflected throuhout the application. + +An interesting side-effect of this approach is that if the `api` package where the meta-annotation definitions exist is kept in a separate jar as well, then one can effectively +change the configuration of an entire application by simply replacing the `api` jar. + +== @Metatype The "root" Meta-Annotation + +As with all meta-annotation usage, you first need to create your own "root" meta-annotation. This is as easy as creating an annotation +named `Metatype` that is annotated with itself and has `ElementType.ANNOTATION_TYPE` as its target. + + + +[source,java] + +package org.superbiz.accesstimeout.api; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Metatype +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.ANNOTATION_TYPE) +public @interface Metatype { +} + + + +== @AwaitNever + +When the `@AccessTimeout` annotation has the value of `0` that has the implication that one should never wait to access the bean. If the bean is busy, the caller will immediately +receive an `ConcurrentAccessException`. This is hard to remember and definitely not self-documenting for those that never knew the details. + +To create a meta-annotation version of `@AccessTimeout(0)` we simply need to think of a good annotation name, create that annotation, and annotate it with both `@AccessTimeout` +and `@Metatype` + + +[source,java] + +package org.superbiz.accesstimeout.api; + +import javax.ejb.AccessTimeout; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Metatype +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) + +@AccessTimeout(0) +public @interface AwaitNever { +} + + + +== @AwaitForever + +Just as `0` carries the special meaning of "never wait", a value of `-1` means "wait forever." + +As long as we're being picky, which we can be with meta-annotations, +Technically "wait forever" is not the best description. The actual methods of the `javax.util.concurrent` APIs use "await" rather than "wait". One (wait) perphaps implies a +command to wait, which this is not, and the other (await) perhaps better implies that waiting is possible but not a certainty. So we will use "await" in our annotation names. + +We make our own `@AwaitForever` and annotate it with `@AccessTimeout(0)` and `@Metatype` + + +[source,java] + +package org.superbiz.accesstimeout.api; + +import javax.ejb.AccessTimeout; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Metatype +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) + +@AccessTimeout(-1) +public @interface AwaitForever { +} + + + +== @AwaitBriefly + +Non `-1`
[25/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg -- diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg new file mode 100755 index 000..d907b25 --- /dev/null +++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg @@ -0,0 +1,520 @@ + +http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; > +http://www.w3.org/2000/svg";> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[31/35] tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/animate.css -- diff --git a/src/main/jbake/assets/css/animate.css b/src/main/jbake/assets/css/animate.css new file mode 100755 index 000..e1a54e2 --- /dev/null +++ b/src/main/jbake/assets/css/animate.css @@ -0,0 +1,3391 @@ +@charset "UTF-8"; + +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/ + +.animated { + -webkit-animation-duration: .3s; + animation-duration: .3s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + -webkit-animation-duration: 1s; + animation-duration: 1s; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +@-webkit-keyframes bounce { + 0%, 20%, 53%, 80%, 100% { +-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +-webkit-transform: translate3d(0,0,0); +transform: translate3d(0,0,0); + } + + 40%, 43% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -30px, 0); +transform: translate3d(0, -30px, 0); + } + + 70% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -15px, 0); +transform: translate3d(0, -15px, 0); + } + + 90% { +-webkit-transform: translate3d(0,-4px,0); +transform: translate3d(0,-4px,0); + } +} + +@keyframes bounce { + 0%, 20%, 53%, 80%, 100% { +-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +-webkit-transform: translate3d(0,0,0); +-ms-transform: translate3d(0,0,0); +transform: translate3d(0,0,0); + } + + 40%, 43% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -30px, 0); +-ms-transform: translate3d(0, -30px, 0); +transform: translate3d(0, -30px, 0); + } + + 70% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -15px, 0); +-ms-transform: translate3d(0, -15px, 0); +transform: translate3d(0, -15px, 0); + } + + 90% { +-webkit-transform: translate3d(0,-4px,0); +-ms-transform: translate3d(0,-4px,0); +transform: translate3d(0,-4px,0); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + -ms-transform-origin: center bottom; + transform-origin: center bottom; +} + +@-webkit-keyframes flash { + 0%, 100% { +opacity: 1; + } + + 50% { +opacity: 0; + } +} + +@keyframes flash { + 0%, 100% { +opacity: 1; + } + + 50% { +opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + 0% { +-webkit-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } + + 50% { +-webkit-transform: scale3d(1.05, 1.05, 1.05); +transform: scale3d(1.05, 1.05, 1.05); + } + + 100% { +-webkit-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } +} + +@keyframes pulse { + 0% { +-webkit-transform: scale3d(1, 1, 1); +-ms-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } + + 50% { +-webkit-transform: scale3d(1.05, 1.05, 1.05); +-ms-transform: scale3d(1.05, 1.05, 1.05); +transform: scale3d(1.05, 1.05, 1.05); + } + + 100% { +-webkit-transform: scale3d(1, 1, 1); +-ms-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-webkit-keyframes rubberBand { + 0% { +-webkit-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } + + 30% { +-webkit-transform: scale3d(1.25, 0.75, 1); +transform: scale3d(1.25, 0.75, 1); + } + + 40% { +-webkit-transform: scale3d(0.75, 1.25, 1); +transform: scale3d(0.75, 1.25, 1); + } + + 50% { +-webkit-transform: scale3d(1.15, 0.85, 1); +transform: scale3d(1.15, 0.85, 1); + } + + 65% { +-webkit-transform: scale3d(.95, 1.05, 1); +transform: scale3d(.95, 1.05, 1); + } + + 75% { +-webkit-
svn commit: r1800805 - /tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java
Author: rmannibucau Date: Tue Jul 4 17:14:37 2017 New Revision: 1800805 URL: http://svn.apache.org/viewvc?rev=1800805&view=rev Log: fixing repo path Modified: tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java Modified: tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java?rev=1800805&r1=1800804&r2=1800805&view=diff == --- tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java (original) +++ tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java Tue Jul 4 17:14:37 2017 @@ -37,7 +37,7 @@ public class JBake { System.out.println(); System.out.println(); System.out.println(); -System.out.println("WARNING: site moved to https://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator.git";); +System.out.println("WARNING: site moved to https://git-wip-us.apache.org/repos/asf/tomee-site-generator.git";); System.out.println(); System.out.println("Think to use that repository, this one will be soon dropped off"); System.out.println();
svn commit: r1800804 - /tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java
Author: rmannibucau Date: Tue Jul 4 16:39:05 2017 New Revision: 1800804 URL: http://svn.apache.org/viewvc?rev=1800804&view=rev Log: warning in generator since we moved to git Modified: tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java Modified: tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java?rev=1800804&r1=1800803&r2=1800804&view=diff == --- tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java (original) +++ tomee/site/trunk/generators/site-tomee-ng/src/main/java/org/apache/tomee/website/JBake.java Tue Jul 4 16:39:05 2017 @@ -29,6 +29,28 @@ import static lombok.AccessLevel.PRIVATE @RequiredArgsConstructor(access = PRIVATE) public class JBake { public static void main(final String[] args) throws Exception { +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println("WARNING: site moved to https://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator.git";); +System.out.println(); +System.out.println("Think to use that repository, this one will be soon dropped off"); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); +System.out.println(); + System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "64"); // try to have parallelStream better than default final File source = args == null || args.length < 1 ? new File("src/main/jbake") : new File(args[0]);
[32/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/animate.css -- diff --git a/src/main/jbake/assets/css/animate.css b/src/main/jbake/assets/css/animate.css new file mode 100755 index 000..e1a54e2 --- /dev/null +++ b/src/main/jbake/assets/css/animate.css @@ -0,0 +1,3391 @@ +@charset "UTF-8"; + +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/ + +.animated { + -webkit-animation-duration: .3s; + animation-duration: .3s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + -webkit-animation-duration: 1s; + animation-duration: 1s; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +@-webkit-keyframes bounce { + 0%, 20%, 53%, 80%, 100% { +-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +-webkit-transform: translate3d(0,0,0); +transform: translate3d(0,0,0); + } + + 40%, 43% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -30px, 0); +transform: translate3d(0, -30px, 0); + } + + 70% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -15px, 0); +transform: translate3d(0, -15px, 0); + } + + 90% { +-webkit-transform: translate3d(0,-4px,0); +transform: translate3d(0,-4px,0); + } +} + +@keyframes bounce { + 0%, 20%, 53%, 80%, 100% { +-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); +-webkit-transform: translate3d(0,0,0); +-ms-transform: translate3d(0,0,0); +transform: translate3d(0,0,0); + } + + 40%, 43% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -30px, 0); +-ms-transform: translate3d(0, -30px, 0); +transform: translate3d(0, -30px, 0); + } + + 70% { +-webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); +-webkit-transform: translate3d(0, -15px, 0); +-ms-transform: translate3d(0, -15px, 0); +transform: translate3d(0, -15px, 0); + } + + 90% { +-webkit-transform: translate3d(0,-4px,0); +-ms-transform: translate3d(0,-4px,0); +transform: translate3d(0,-4px,0); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + -ms-transform-origin: center bottom; + transform-origin: center bottom; +} + +@-webkit-keyframes flash { + 0%, 100% { +opacity: 1; + } + + 50% { +opacity: 0; + } +} + +@keyframes flash { + 0%, 100% { +opacity: 1; + } + + 50% { +opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + 0% { +-webkit-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } + + 50% { +-webkit-transform: scale3d(1.05, 1.05, 1.05); +transform: scale3d(1.05, 1.05, 1.05); + } + + 100% { +-webkit-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } +} + +@keyframes pulse { + 0% { +-webkit-transform: scale3d(1, 1, 1); +-ms-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } + + 50% { +-webkit-transform: scale3d(1.05, 1.05, 1.05); +-ms-transform: scale3d(1.05, 1.05, 1.05); +transform: scale3d(1.05, 1.05, 1.05); + } + + 100% { +-webkit-transform: scale3d(1, 1, 1); +-ms-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-webkit-keyframes rubberBand { + 0% { +-webkit-transform: scale3d(1, 1, 1); +transform: scale3d(1, 1, 1); + } + + 30% { +-webkit-transform: scale3d(1.25, 0.75, 1); +transform: scale3d(1.25, 0.75, 1); + } + + 40% { +-webkit-transform: scale3d(0.75, 1.25, 1); +transform: scale3d(0.75, 1.25, 1); + } + + 50% { +-webkit-transform: scale3d(1.15, 0.85, 1); +transform: scale3d(1.15, 0.85, 1); + } + + 65% { +-webkit-transform: scale3d(.95, 1.05, 1); +transform: scale3d(.95, 1.05, 1); + } + + 75% { +-w
[04/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security-2.adoc -- diff --git a/src/main/jbake/content/examples/testing-security-2.adoc b/src/main/jbake/content/examples/testing-security-2.adoc new file mode 100755 index 000..c8a2491 --- /dev/null +++ b/src/main/jbake/content/examples/testing-security-2.adoc @@ -0,0 +1,306 @@ += Testing Security 2 +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example testing-security-2 can be browsed at https://github.com/apache/tomee/tree/master/examples/testing-security-2 + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== Movie + + +[source,java] + +package org.superbiz.injection.secure; + +import javax.persistence.Entity; + +@Entity +public class Movie { + +private String director; +private String title; +private int year; + +public Movie() { +} + +public Movie(String director, String title, int year) { +this.director = director; +this.title = title; +this.year = year; +} + +public String getDirector() { +return director; +} + +public void setDirector(String director) { +this.director = director; +} + +public String getTitle() { +return title; +} + +public void setTitle(String title) { +this.title = title; +} + +public int getYear() { +return year; +} + +public void setYear(int year) { +this.year = year; +} + +} + + + +== Movies + + +[source,java] + +package org.superbiz.injection.secure; + +//START SNIPPET: code + +import javax.annotation.security.PermitAll; +import javax.annotation.security.RolesAllowed; +import javax.ejb.Stateful; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +@Stateful +public class Movies { + +@PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED) +private EntityManager entityManager; + +@RolesAllowed({"Employee", "Manager"}) +public void addMovie(Movie movie) throws Exception { +entityManager.persist(movie); +} + +@RolesAllowed({"Manager"}) +public void deleteMovie(Movie movie) throws Exception { +entityManager.remove(movie); +} + +@PermitAll +@TransactionAttribute(TransactionAttributeType.SUPPORTS) +public List getMovies() throws Exception { +Query query = entityManager.createQuery("SELECT m from Movie as m"); +return query.getResultList(); +} +} + + + +== persistence.xml + + +[source,xml] + +http://java.sun.com/xml/ns/persistence"; version="1.0"> + + +movieDatabase +movieDatabaseUnmanaged +org.superbiz.injection.secure.Movie + + + + + + + + + +== MovieTest + + +[source,java] + +package org.superbiz.injection.secure; + +import junit.framework.TestCase; + +import javax.ejb.EJB; +import javax.ejb.EJBAccessException; +import javax.ejb.embeddable.EJBContainer; +import javax.naming.Context; +import javax.naming.InitialContext; +import java.util.List; +import java.util.Properties; + +//START SNIPPET: code +public class MovieTest extends TestCase { + +@EJB +private Movies movies; + +protected void setUp() throws Exception { + +// Uncomment this line to set the login/logout functionality on Debug +//System.setProperty("log4j.category.OpenEJB.security", "debug"); + +Properties p = new Properties(); +p.put("movieDatabase", "new://Resource?type=DataSource"); +p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); +p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); + +EJBContainer.createEJBContainer(p).getContext().bind("inject", this); +} + +public void testAsManager() throws Exception { +Properties p = new Properties(); +p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); +p.put(Context.SECURITY_PRINCIPAL, "jane"); +p.put(Context.SECURITY_CREDENTIALS, "waterfall"); + +InitialContext context = new InitialContext(p); + +try { +movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992)); +movies.addMovie(new Movie("Joel Coen", "Fargo", 1996)); +movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998)); + +List list = movies.getMovies(); +assertEquals("List.size()", 3, list.size()); + +for (Movie movie : list) { +movies.deleteMovie(movie); +} + +assertEquals("Movi
[33/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/pom.xml -- diff --git a/pom.xml b/pom.xml new file mode 100755 index 000..a479edc --- /dev/null +++ b/pom.xml @@ -0,0 +1,127 @@ + +http://maven.apache.org/POM/4.0.0"; + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd";> + 4.0.0 + + org.apache.tomee + site + 1.0-SNAPSHOT + Apache TomEE :: WebSite NG + + +7.0.3 +false +false + +UTF-8 + + + + + org.asciidoctor + asciidoctorj-pdf + 1.5.0-alpha.11 + + + org.asciidoctor + asciidoctorj + 1.5.4 + + + org.projectlombok + lombok + 1.16.12 + provided + + + org.apache.geronimo.specs + geronimo-json_1.0_spec + 1.0-alpha-1 + + + org.apache.johnzon + johnzon-jaxrs + 0.9.5 + + + org.apache.cxf + cxf-rt-rs-client + 3.1.8 + + + org.apache.tomee + javaee-api + 7.0-1 + + + org.apache.tomee + tomee-embedded + ${tomee.version} + + + org.jbake + jbake-core + 2.4.0 + + + org.slf4j + jul-to-slf4j + + + + + org.codehaus.groovy + groovy + 2.3.11 + + + org.codehaus.groovy + groovy-templates + 2.3.11 + + + org.pegdown + pegdown + 1.6.0 + + + + + + +org.apache.maven.plugins +maven-compiler-plugin +3.5.1 + + 1.8 + 1.8 + + + +org.codehaus.mojo +exec-maven-plugin +1.5.0 + + +tomee-site +compile + + java + + + + + true + org.apache.tomee.website.JBake + +${project.basedir}/src/main/jbake/ + ${project.build.directory}/${project.build.finalName} +${jbake.http} +${jbake.pdf} + + + + + + http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/java/org/apache/tomee/website/Contributors.java -- diff --git a/src/main/java/org/apache/tomee/website/Contributors.java b/src/main/java/org/apache/tomee/website/Contributors.java new file mode 100755 index 000..fb4d0bf --- /dev/null +++ b/src/main/java/org/apache/tomee/website/Contributors.java @@ -0,0 +1,222 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomee.website; + +import lombok.Builder; +import lombok.Data; +import org.apache.johnzon.jaxrs.JohnzonProvider; + +import javax.net.ssl.HttpsURLConnection; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Stream; + +import static java.util.Collections.emptyList; +import static java.util.Optional.ofNullable; +import static java.util.stream.Collectors.toList; + +public class Contributors { +private static final String GRAVATAR_BASE = "http://fr.gravatar.com/";; + +private Contributors() { +// no-op +} + +public static Contributor singleLoad(final WebTarget target, final String input) throws IOException { +try { +return ofNullable(loadGravatar(target, input)).orElse(loadStatic(input)); +} catch (Exception e) { +e.printStackTrace(); +return
[18/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/advanced/tomee-embedded/index.adoc -- diff --git a/src/main/jbake/content/advanced/tomee-embedded/index.adoc b/src/main/jbake/content/advanced/tomee-embedded/index.adoc new file mode 100755 index 000..8664ade --- /dev/null +++ b/src/main/jbake/content/advanced/tomee-embedded/index.adoc @@ -0,0 +1,223 @@ += TomEE Embedded +:jbake-date: 2016-03-16 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: + +TomEE Embedded is based on Tomcat embedded and starts a real TomEE in the launching JVM. It is also +able to deploy the classpath as a webapp and to use either `META-INF/resources` or a folder as web resources. + +Here is a basic programmatic usage based on `org.apache.tomee.embedded.Container` class: + +[source,java] + +try (final Container container = new Container(new Configuration()).deployClasspathAsWebApp()) { +System.out.println("Started on http://localhost:"; + container.getConfiguration().getHttpPort()); + +// do something or wait until the end of the application +} + + +All EE features are then accessible directly in the same JVM. + +== TomEE Embedded Configuration + +The default configuration allows to start tomee without issue but you can desire to customize some of them. + +[.table.table-bordered,options="header"] +|=== +| Name | Default | Description +|httpPort | 8080| http port +|stopPort | 8005| shutdown port +|host |localhost| host +|dir|-|where to create a file hierarchy for tomee (conf, temp, ...) +|serverXml|-|which server.xml to use +|keepServerXmlAsThis|false|don't adjust ports/host from the configuration and keep the ones in server.xml +|properties|-|container properties +|quickSession | true|use Random instead of SecureRandom (for dev) +|skipHttp|false|don't use the http connector +|httpsPort | 8443|https potr +|ssl|false| activate https +|withEjbRemote|false|use EJBd +|keystoreFile|-|https keystore location +|keystorePass|-|https keystore password +|keystoreType |JKS|https keystore type +|clientAuth|-|https client auth +|keyAlias|-|https alias +|sslProtocol|-|SSL protocol for https connector +|webXml|-|default web.xml to use +|loginConfig|-|which LoginConfig to use, relies on `org.apache.tomee.embedded.LoginConfigBuilder` to create it +|securityConstraints|-|add some security constraints, use `org.apache.tomee.embedded.SecurityConstaintBuilder` to build them +|realm|-|which realm to use (useful to switch to `JAASRealm` for instance) without modifying the application +|deployOpenEjbApp|false|should internal openejb application be delpoyed +|users|-|a map of user/password +|roles|-|a map of role/users +|tempDir|${java.io.tmpdir}/tomee-embedded_${timestamp}|tomcat needs a docBase, in case you don't provide one one will be created there +|webResourceCached |true|should web resources be cached by tomcat (set false in frontend dev) +|configuration-location|-|location (classpath or file) to a .properties to configure the server +[pre-task|-|Runnable or org.apache.tomee.embedded.LifecycleTask implementations to execute before the container starts +|classes-filter|-|implementation of a custom xbean Filter to ignore not desired classes during scanning +|basic|-|set /* under BASIC authentication for the realm "Security", authentication role being "*" +|=== + +Note: passing to `Container` constructor a `Configuration` it will start the container automatically but using `setup(Configuration)` +to initialize the configuration you will need to call `start()`. + +You can also pass through the properties `connector.xxx` and `connector.attributes.xxx` to customize connector(s) +configuration directly. + +== Standalone applications or TomEE Embedded provided main(String[]) + +Deploying an application in a server is very nice cause the application is generally small and it allows to update the +container without touching the application (typically insanely important in case of security issues for instance). + +However sometimes you don't have the choice so TomEE Embedded provides a built-in `main(String[])`. Here are its options: + +NOTE: this is still a TomEE so all system properties work (for instance to create a resource). + +[.table.table-bordered,options="header"] +|=== +|Name|Default|Description +|--path|-|location of application(s) to deploy +|--context|-|Context name for applications (same order than paths) +|-p or --port|8080|http port +|-s or --shutdown|8005|shutdown port +|-d or --directory|./.apache-tomee|tomee work directory +|-c or --as-war|-|deploy classpath as a war +|-b or --doc-base|-|where web resources are for classpath deployment +|--renaming|-|for fat war only, is renaming of the context supported +|--serverxml|-|the server.xml location +|--tomeexml|-|the server.xml location +|--property|-|a list of container properties (values follow the format x=y) +|=== + +Note
[02/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/webservice-holder.adoc -- diff --git a/src/main/jbake/content/examples/webservice-holder.adoc b/src/main/jbake/content/examples/webservice-holder.adoc new file mode 100755 index 000..bb4a5f4 --- /dev/null +++ b/src/main/jbake/content/examples/webservice-holder.adoc @@ -0,0 +1,201 @@ += @WebService OUT params via javax.xml.ws.Holder +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example webservice-holder can be browsed at https://github.com/apache/tomee/tree/master/examples/webservice-holder + + +With SOAP it is possible to return multiple values in a single request. This is impossible in Java as a method can only return one object. + +JAX-WS solves this problem with the concept of Holders. A `javax.xml.ws.Holder` is a simple wrapper object that can be passed into the `@WebService` method as a parameter. The application sets the value of the holder during the request and the server will send the value back as an OUT parameter. + +== Using @WebParam and javax.xml.ws.Holder + +The `@WebParam` annotation allows us to declare the `sum` and `multiply` Holders as `WebParam.Mode.OUT` parameters. As mentioned, these holders are simply empty buckets the application can fill in with data to have sent to the client. The server will pass them in uninitialized. + + +[source,java] + +@Stateless +@WebService( +portName = "CalculatorPort", +serviceName = "CalculatorService", +targetNamespace = "http://superbiz.org/wsdl";, +endpointInterface = "org.superbiz.ws.out.CalculatorWs") +public class Calculator implements CalculatorWs { + +public void sumAndMultiply(int a, int b, + @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder sum, + @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder multiply) { +sum.value = a + b; +multiply.value = a * b; +} +} + + + +If the Holders were specified as `WebParam.Mode.INOUT` params, then the client could use them to send data and the application as well. The `Holder` instances would then be initialized with the data from the client request. The application could check the data before eventually overriting it with the response values. + +== The WSDL + +The above JAX-WS `@WebService` component results in the folliwing WSDL that will be created automatically. Note the `sumAndMultiplyResponse` complext type returns two elements. These match the `@WebParam` declarations and our two `Holder` params. + + +[source,xml] + + +http://schemas.xmlsoap.org/wsdl/"; + name="CalculatorService" + targetNamespace="http://superbiz.org/wsdl"; + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; + xmlns:tns="http://superbiz.org/wsdl"; + xmlns:xsd="http://www.w3.org/2001/XMLSchema";> + +http://superbiz.org/wsdl"; +xmlns:tns="http://superbiz.org/wsdl"; +xmlns:xsd="http://www.w3.org/2001/XMLSchema";> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://schemas.xmlsoap.org/soap/http"/> + + + + + + + + + + + + + http://127.0.0.1:4204/Calculator?wsdl"/> + + + + + + +== Testing the OUT params + +Here we see a JAX-WS client executing the `sumAndMultiply` operation. Two empty `Holder` instances are created and passed in as parameters. The data from the `sumAndMultiplyResponse` is placed in the `Holder` instances and is then available to the client after the operation completes. + +The holders themselves are not actually sent in the request unless they are configured as INOUT params via WebParam.Mode.INOUT on `@WebParam` + + +[source,java] + +import org.junit.BeforeClass; +import org.junit.Test; + +import javax.ejb.embeddable.EJBContainer; +import javax.xml.namespace.QName; +import javax.xml.ws.Holder; +import javax.xml.ws.Service; +import java.net.URL; +import java.util.Properties; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class CalculatorTest { + +@BeforeClass +public static void setUp() throws Exception { +Properties properties = new Properties(); +properties.setProperty("openejb.embedded.remotable", "true"); +//properties.setProperty("httpejbd.print", "true"); +//properties.setProperty("httpejbd.indent.xml", "true"); +EJBContainer.createEJBContainer(properties); +} + +@Test +public void outParams() throws Exception { +fin
[20/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/typeahead.bundle.min.js -- diff --git a/src/main/jbake/assets/js/typeahead.bundle.min.js b/src/main/jbake/assets/js/typeahead.bundle.min.js new file mode 100755 index 000..ffd98f3 --- /dev/null +++ b/src/main/jbake/assets/js/typeahead.bundle.min.js @@ -0,0 +1,8 @@ +/*! + * typeahead.js 0.11.1 + * https://github.com/twitter/typeahead.js + * Copyright 2013-2015 Twitter, Inc. and other contributors; Licensed MIT + */ + +!function(a,b){"function"==typeof define&&define.amd?define("bloodhound",["jquery"],function(c){return a.Bloodhound=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.Bloodhound=b(jQuery)}(this,function(a){var b=function(){"use strict";return{isMsie:function(){return/(msie|trident)/i.test(navigator.userAgent)?navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]:!1},isBlankString:function(a){return!a||/^\s*$/.test(a)},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isString:function(a){return"string"==typeof a},isNumber:function(a){return"number"==typeof a},isArray:a.isArray,isFunction:a.isFunction,isObject:a.isPlainObject,isUndefined:function(a){return"undefined"==typeof a},isElement:function(a){return!(!a||1!==a.nodeType)},isJQuery:function(b){return b instanceof a},toStr:function(a){return b.isUndefined(a)||null===a?"":a+""},bind:a.proxy,each:function(b,c){function d(a,b){return c(b,a)}a.each(b,d)},map:a.map,filte r:a.grep,every:function(b,c){var d=!0;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?void 0:!1}),!!d):d},some:function(b,c){var d=!1;return b?(a.each(b,function(a,e){return(d=c.call(null,e,a,b))?!1:void 0}),!!d):d},mixin:a.extend,identity:function(a){return a},clone:function(b){return a.extend(!0,{},b)},getIdGenerator:function(){var a=0;return function(){return a++}},templatify:function(b){function c(){return String(b)}return a.isFunction(b)?b:c},defer:function(a){setTimeout(a,0)},debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},throttle:function(a,b){var c,d,e,f,g,h;return g=0,h=function(){g=new Date,e=null,f=a.apply(c,d)},function(){var i=new Date,j=b-(i-g);return c=this,d=arguments,0>=j?(clearTimeout(e),e=null,g=i,f=a.apply(c,d)):e||(e=setTimeout(h,j)),f}},stringify:function(a){return b.isString(a)?a:JSON.stringify(a)},noop: function(){}}}(),c="0.11.1",d=function(){"use strict";function a(a){return a=b.toStr(a),a?a.split(/\s+/):[]}function c(a){return a=b.toStr(a),a?a.split(/\W+/):[]}function d(a){return function(c){return c=b.isArray(c)?c:[].slice.call(arguments,0),function(d){var e=[];return b.each(c,function(c){e=e.concat(a(b.toStr(d[c])))}),e}}}return{nonword:c,whitespace:a,obj:{nonword:d(c),whitespace:d(a)}}}(),e=function(){"use strict";function c(c){this.maxSize=b.isNumber(c)?c:100,this.reset(),this.maxSize<=0&&(this.set=this.get=a.noop)}function d(){this.head=this.tail=null}function e(a,b){this.key=a,this.val=b,this.prev=this.next=null}return b.mixin(c.prototype,{set:function(a,b){var c,d=this.list.tail;this.size>=this.maxSize&&(this.list.remove(d),delete this.hash[d.key],this.size--),(c=this.hash[a])?(c.val=b,this.list.moveToFront(c)):(c=new e(a,b),this.list.add(c),this.hash[a]=c,this.size++)},get:function(a){var b=this.hash[a];return b?(this.list.moveToFront(b),b.val):void 0},reset:function(){t his.size=0,this.hash={},this.list=new d}}),b.mixin(d.prototype,{add:function(a){this.head&&(a.next=this.head,this.head.prev=a),this.head=a,this.tail=this.tail||a},remove:function(a){a.prev?a.prev.next=a.next:this.head=a.next,a.next?a.next.prev=a.prev:this.tail=a.prev},moveToFront:function(a){this.remove(a),this.add(a)}}),c}(),f=function(){"use strict";function c(a,c){this.prefix=["__",a,"__"].join(""),this.ttlKey="__ttl__",this.keyMatcher=new RegExp("^"+b.escapeRegExChars(this.prefix)),this.ls=c||h,!this.ls&&this._noop()}function d(){return(new Date).getTime()}function e(a){return JSON.stringify(b.isUndefined(a)?null:a)}function f(b){return a.parseJSON(b)}function g(a){var b,c,d=[],e=h.length;for(b=0;e>b;b++)(c=h.key(b)).match(a)&&d.push(c.replace(a,""));return d}var h;try{h=window.localStorage,h.setItem("~~~","!"),h.removeItem("~~~")}catch(i){h=null}return b.mixin(c.prototype,{_prefix:function(a){return this.prefix+a},_ttlKey:function(a){return this._prefix(a)+this.ttlKey},_noop:fu nction(){this.get=this.set=this.remove=this.clear=this.isExpired=b.noop},_safeSet:function(a,b){try{this.ls.setItem(a,b)}catch(c){"QuotaExceededError"===c.name&&(this.clear(),this._noop())}},get:function(a){return this.isExpired(a)&&this.remove(a),f(this.ls.getItem(this._prefix(a)))},set:function(a,c,f){return b.isNumber(f)?this._safeSet(th
[13/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/custom-injection.adoc -- diff --git a/src/main/jbake/content/examples/custom-injection.adoc b/src/main/jbake/content/examples/custom-injection.adoc new file mode 100755 index 000..7edf520 --- /dev/null +++ b/src/main/jbake/content/examples/custom-injection.adoc @@ -0,0 +1,256 @@ += Custom Injection +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example custom-injection can be browsed at https://github.com/apache/tomee/tree/master/examples/custom-injection + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== Pickup + + +[source,java] + +package org.superbiz.enventries; + + +//START SNIPPET: code + +import java.beans.PropertyEditorManager; + +public enum Pickup { + +HUMBUCKER, +SINGLE_COIL; + +// Here's the little magic where we register the PickupEditor +// which knows how to create this object from a string. +// You can add any of your own Property Editors in the same way. +static { +PropertyEditorManager.registerEditor(Pickup.class, PickupEditor.class); +} +} + + + +== PickupEditor + + +[source,java] + +package org.superbiz.enventries; + +/** + * With a java.beans.PropertyEditor, you can go way beyond the built-in + * types that OpenEJB supports and can extend dependency injection to + * just about anywhere. + * + * In the world of electric guitars, two types of pickups are used: humbucking, and single-coil. + * Guitarists often refer to their guitars as HSS, meaning a guitar with 1 humbucker and + * 2 single coil pickups, and so on. This little PropertyEditor supports that shorthand notation. + * + * @version $Revision$ $Date$ + */ +//START SNIPPET: code +public class PickupEditor extends java.beans.PropertyEditorSupport { + +public void setAsText(String text) throws IllegalArgumentException { +text = text.trim(); + +if (text.equalsIgnoreCase("H")) setValue(Pickup.HUMBUCKER); +else if (text.equalsIgnoreCase("S")) setValue(Pickup.SINGLE_COIL); +else throw new IllegalStateException("H and S are the only supported Pickup aliases"); +} +} + + + +== Stratocaster + + +[source,java] + +package org.superbiz.enventries; + +import javax.annotation.Resource; +import javax.ejb.Stateless; +import java.io.File; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * In addition to the standard env-entry types (String, Integer, Long, Short, Byte, Boolean, Double, Float, Character) + * OpenEJB supports many other types. + */ +//START SNIPPET: code +@Stateless +public class Stratocaster { + + +@Resource(name = "pickups") +private List pickups; + +@Resource(name = "style") +private Style style; + +@Resource(name = "dateCreated") +private Date dateCreated; + +@Resource(name = "guitarStringGuages") +private Map guitarStringGuages; + +@Resource(name = "certificateOfAuthenticity") +private File certificateOfAuthenticity; + +public Date getDateCreated() { +return dateCreated; +} + +/** + * Gets the guage of the electric guitar strings + * used in this guitar. + * + * @param string + * @return + */ +public float getStringGuage(String string) { +return guitarStringGuages.get(string); +} + +public List getPickups() { +return pickups; +} + +public Style getStyle() { +return style; +} + +public File getCertificateOfAuthenticity() { +return certificateOfAuthenticity; +} +} + + + +== Style + + +[source,java] + +package org.superbiz.enventries; + +/** + * @version $Revision$ $Date$ + */ +//START SNIPPET: code +public enum Style { + +STANDARD, +DELUX, +VINTAGE; +} + + + +== StratocasterTest + + +[source,java] + +package org.superbiz.enventries; + +import junit.framework.TestCase; + +import javax.ejb.EJB; +import javax.ejb.embeddable.EJBContainer; +import java.io.File; +import java.text.DateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +import static java.util.Arrays.asList; + +/** + * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $ + */ +//START SNIPPET: code +public class StratocasterTest extends TestCase { + +@EJB +private Stratocaster strat; + +public void test() throws Exception { +EJBContainer.createEJBContainer().getContext().bind("inject", this); + +Date date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).parse("Mar 1, 1962"); +assertEquals("Strat.getDateCreated()", date, strat.getDateCreated()); + +List pickups = asList(Pickup.SINGLE_COIL, Pickup.SINGLE_COIL, Pickup.SINGLE_COIL); +assertEquals("Strat.getPicku
[29/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/cardio.css -- diff --git a/src/main/jbake/assets/css/cardio.css b/src/main/jbake/assets/css/cardio.css new file mode 100755 index 000..71c6ad6 --- /dev/null +++ b/src/main/jbake/assets/css/cardio.css @@ -0,0 +1,1173 @@ +@import url(http://fonts.googleapis.com/css?family=Roboto:300,400,500,700); +body { + font-family: 'Roboto', 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif; + font-size: 14px; + overflow-x: hidden; + color: #2a3237; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.parallax { + position: absolute; + overflow: hidden; + width: 100%; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); +} + +.parallax img { + width: 100%; + height: 100%; +} +/* Preloader */ + +.preloader { + position: fixed; + z-index: ; + width: 100%; + height: 100%; + background-color: white; +} + +.preloader img { + position: absolute; + top: calc(50% - 32px); + left: calc(50% - 32px); +} + +.preloader div { + display: none; + /* Preload the Second Pricing Image */ + background: url(../img/pricing2.jpg) no-repeat px px; + background-position: px px; +} + +/* Typography */ + +.bigp { + font-size: 18px; + line-height: 1.5; + color: #80287a; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Roboto', 'Avenir Next', 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif; + position: relative; + margin: 10px 0; +} + +h1 { + font-size: 60px; +} + +h2 { + font-size: 48px; +} + +h3 { + font-size: 30px; +} + +h4 { + font-size: 24px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +ul.white-list { + padding: 0; + list-style-type: none; +} + +ul.white-list li { + font-size: 18px; + margin: 10px 0; + color: #fff; +} + +ul.white-list li:before { + content: ' '; + position: relative; + top: -3px; + display: inline-block; + width: 6px; + height: 6px; + margin-right: 15px; + background: white; +} + +header { + position: relative; + width: 100%; + color: #80287a; + background: rgba(28, 36, 65, 0.93); + background: url('../img/header.jpg'); + background-size: cover; +} + +header .table { + display: table; + height: 100%; +} + +header .container { + height: 100%; +} + +header .header-text { + display: table-cell; + text-align: center; + vertical-align: middle; + color: #80287a; +} + +header .typed { + display: inline-block; + margin: 0; +} + +header .typed-cursor { + font-size: 60px; + display: inline-block; + margin: 0 10px; + color: #80287a; + -webkit-animation-name: flash; + animation-name: flash; + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +a { + text-decoration: none; + color: #80287a; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} +/* Navigation Bar ( Navbar ) */ + +nav.navbar { + position: absolute; + z-index: 9500; + width: 100%; + width: 100vw; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +nav.navbar .navbar-nav li.active a:not(.btn) { + color: #80287a !important; +} + +nav.navbar-fixed-top { + z-index: 9499; + top: 0; + padding-top: 10px; + padding-bottom: 10px; + opacity: 1; + background: white; + box-shadow: 0px 4px 3px rgba(0, 0, 0, 0.05); +} + +nav.navbar-fixed-top .navbar-nav > li > a:not(.btn) { + color: #bbb; +} + +.icon-bar { + background: #bbb; +} +/* Buttons */ + +.btn { + font-size: 18px; + display: inline-block; + padding: 15px 30px; + color: #80287a; + border: 2px solid transparent; + border-radius: 2px; + background: transparent; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.btn:hover, +.btn:focus { + color: #CE2D34; +} + +.btn.btn-blue { + background: #80287a; + color: #fff; +} + +.btn.btn-blue:hover { + background: #31b9ff; +} + +.btn.btn-blue-fill { + color: #80287a; + border-color: #80287a; + background: transparent; +} + +.btn.btn-blue-fill:hover { + color: white; + background: #80287a; +} + +.btn.btn-white-fill { + color: #fff; + border-color: #fff; + background: transparent; +} + +.btn.btn-white-fill:hover { + color: #80287a; +
[11/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/helloworld-weblogic.adoc -- diff --git a/src/main/jbake/content/examples/helloworld-weblogic.adoc b/src/main/jbake/content/examples/helloworld-weblogic.adoc new file mode 100755 index 000..dd8279e --- /dev/null +++ b/src/main/jbake/content/examples/helloworld-weblogic.adoc @@ -0,0 +1,169 @@ += Helloworld Weblogic +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example helloworld-weblogic can be browsed at https://github.com/apache/tomee/tree/master/examples/helloworld-weblogic + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== HelloBean + + +[source,java] + +package org.superbiz.hello; + +import javax.ejb.LocalHome; +import javax.ejb.Stateless; + +/** + * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $ + */ +@Stateless +@LocalHome(HelloEjbLocalHome.class) +public class HelloBean { + +public String sayHello() { +return "Hello, World!"; +} +} + + + +== HelloEjbLocal + + +[source,java] + +package org.superbiz.hello; + +import javax.ejb.EJBLocalObject; + +/** + * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $ + */ +public interface HelloEjbLocal extends EJBLocalObject { + +String sayHello(); +} + + + +== HelloEjbLocalHome + + +[source,java] + +package org.superbiz.hello; + +import javax.ejb.CreateException; +import javax.ejb.EJBLocalHome; + +/** + * @version $Revision: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $ + */ +public interface HelloEjbLocalHome extends EJBLocalHome { +HelloEjbLocal create() throws CreateException; +} + + + +== ejb-jar.xml + + +[source,xml] + + + + + +== weblogic-ejb-jar.xml + + +[source,xml] + + + +HelloBean +MyHello + + + + + + + +== HelloTest + + +[source,java] + +package org.superbiz.hello; + +import junit.framework.TestCase; + +import javax.naming.Context; +import javax.naming.InitialContext; +import java.util.Properties; + +/** + * @version $Revision: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $ + */ +public class HelloTest extends TestCase { + +public void test() throws Exception { +Properties properties = new Properties(); +properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); +InitialContext initialContext = new InitialContext(properties); + +HelloEjbLocalHome localHome = (HelloEjbLocalHome) initialContext.lookup("MyHello"); +HelloEjbLocal helloEjb = localHome.create(); + +String message = helloEjb.sayHello(); + +assertEquals(message, "Hello, World!"); +} +} + + + += Running + + + +[source] + +--- + T E S T S +--- +Running org.superbiz.hello.HelloTest +Apache OpenEJB 4.0.0-beta-1build: 20111002-04:06 +http://tomee.apache.org/ +INFO - openejb.home = /Users/dblevins/examples/helloworld-weblogic +INFO - openejb.base = /Users/dblevins/examples/helloworld-weblogic +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /Users/dblevins/examples/helloworld-weblogic/target/classes +INFO - Beginning load: /Users/dblevins/examples/helloworld-weblogic/target/classes +INFO - Configuring enterprise application: /Users/dblevins/examples/helloworld-weblogic/classpath.ear +INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) +INFO - Auto-creating a container for bean HelloBean: Container(type=STATELESS, id=Default Stateless Container) +INFO - Enterprise application "/Users/dblevins/examples/helloworld-weblogic/classpath.ear" loaded. +INFO - Assembling app: /Users/dblevins/examples/helloworld-weblogic/classpath.ear +INFO - Jndi(name=MyHello) --> Ejb(deployment-id=HelloBean) +INFO - Jndi(name=global/classpath.ear/helloworld-weblogic/HelloBean!org.superbiz.hello.HelloEjbLocalHome) --> Ejb(deployment-id=HelloBean) +INFO - Jndi(name=global/classpath.ear/helloworld-weblogic/HelloBean) --> Ejb(deployment-id=HelloBean) +INFO - Created Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=Default Stateless Container) +INFO - Started Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=Default Stateless Container) +INFO - Deployed Application(path=/Users/dblevins/examples/helloworld-weblogic/classpath.ear) +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed:
[21/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/tree.jquery.js -- diff --git a/src/main/jbake/assets/js/tree.jquery.js b/src/main/jbake/assets/js/tree.jquery.js new file mode 100755 index 000..71290b1 --- /dev/null +++ b/src/main/jbake/assets/js/tree.jquery.js @@ -0,0 +1,3542 @@ +/* +JqTree 1.3.2 + +Copyright 2015 Marco Braak + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o dimensions.right || y > dimensions.bottom) { + return null; +} +low = 0; +high = this.hit_areas.length; +while (low < high) { + mid = (low + high) >> 1; + area = this.hit_areas[mid]; + if (y < area.top) { +high = mid; + } else if (y > area.bottom) { +low = mid + 1; + } else { +return area; + } +} +return null; + }; + + DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) { +var node; +node = area.node; +return node.isFolder() && !node.is_open && area.position === Position.INSIDE; + }; + + DragAndDropHandler.prototype.updateDropHint = function() { +var node_element; +if (!this.hovered_area) { + return; +} +this.removeDropHint(); +node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node); +return this.previous_ghost = node_element.addDropHint(this.hovered_area.position); + }; + + DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) { +var openFolder; +openFolder = (function(_this) { + return function() { +return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() { + _this.refresh(); + return _this.updateDropHint(); +}); + }; +})(this); +this.stopOpenFolderTimer(); +return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay); + }; + + DragAndDropHandler.prototype.stopOpenFolderTimer = function() { +if (this.open_folder_timer) { + clearTimeout(this.open_folder_timer); + return this.open_folder_timer = null; +} + }; + + DragAndDropHandler.prototype.moveItem = function(position_info) { +var doMove, event, moved_node, position, previous_parent, target_node; +if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) { + moved_node = this.current_item.node; + target_node = this.hovered_area.node; + position = this.hovered_area.position; + previous_parent = moved_node.parent; + if (position === Position.INSIDE) { +this.hovered_area.node.is_open = true; + } + doMove = (function(_this) { +return function() { + _this.tree_widget.tree.moveNode(moved_node, target_node, position); + _this.tree_widget.element.empty(); + return _this.tree_widget._refreshElements(); +}; + })(this); + event = this.tree_widget._triggerEvent('tree.move', { +move_info: { + moved_node: moved_node, + target_node: target_node, + position: Position.getName(position), + previous_parent: previous_parent, + do_move: doMove, + original_event: position_info.original_event +} + }); + if (!event.isDefaultPrevented()) { +return doMove(); + } +} + }; + + DragAndDropHandler.prototype.getTreeDimensions = function() { +var offset; +offset = this.tree_widget.element.offset(); +return { + left: offset.left, + top: offset.top, + right: offset.left + this.tree_widget.element.width(), + bottom: offset.top + this.tree_widget.element.height() + 16 +}; + }; + + return DragAndDropHandler; + +})(); + +VisibleNodeIterator = (function() { + function VisibleNodeIterator(tree) { +this.tree = tree; + } + + VisibleNodeIterator.prototype.iterate = function() { +var _iterateNode, is_first_node; +is_first_node = true; +_iterateNode = (function(_this)
[09/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/moviefun.adoc -- diff --git a/src/main/jbake/content/examples/moviefun.adoc b/src/main/jbake/content/examples/moviefun.adoc new file mode 100755 index 000..bd2ccd9 --- /dev/null +++ b/src/main/jbake/content/examples/moviefun.adoc @@ -0,0 +1,385 @@ += Movies Complete +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example moviefun can be browsed at https://github.com/apache/tomee/tree/master/examples/moviefun + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== AddInterceptor + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class AddInterceptor { + +@AroundInvoke +public Object invoke(InvocationContext context) throws Exception { +// Log Add +return context.proceed(); +} +} + + + +== DeleteInterceptor + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class DeleteInterceptor { + +@AroundInvoke +public Object invoke(InvocationContext context) throws Exception { +// Log Delete +return context.proceed(); +} +} + + + +== Movie + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.persistence.Entity; + +@Entity +public class Movie { + +private String director; +private String title; +private int year; + +public Movie() { +} + +public Movie(String director, String title, int year) { +this.director = director; +this.title = title; +this.year = year; +} + +public String getDirector() { +return director; +} + +public void setDirector(String director) { +this.director = director; +} + +public String getTitle() { +return title; +} + +public void setTitle(String title) { +this.title = title; +} + +public int getYear() { +return year; +} + +public void setYear(int year) { +this.year = year; +} + +} + + + +== Movies + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.annotation.security.PermitAll; +import javax.annotation.security.RolesAllowed; +import javax.ejb.Stateful; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.interceptor.Interceptors; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +//START SNIPPET: code +@Stateful +public class Movies { + +@PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION) +private EntityManager entityManager; + +@RolesAllowed({"Employee", "Manager"}) +@TransactionAttribute(TransactionAttributeType.REQUIRED) +@Interceptors(AddInterceptor.class) +public void addMovie(Movie movie) throws Exception { +entityManager.persist(movie); +} + +@RolesAllowed({"Manager"}) +@TransactionAttribute(TransactionAttributeType.MANDATORY) +@Interceptors(DeleteInterceptor.class) +public void deleteMovie(Movie movie) throws Exception { +entityManager.remove(movie); +} + +@PermitAll +@TransactionAttribute(TransactionAttributeType.SUPPORTS) +public List getMovies() throws Exception { +Query query = entityManager.createQuery("SELECT m from Movie as m"); +return query.getResultList(); +} +} + + + +== ReadInterceptor + + +[source,java] + +package org.superbiz.injection.tx; + +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; + +/** + * @version $Revision$ $Date$ + */ +public class ReadInterceptor { + +@AroundInvoke +public Object invoke(InvocationContext context) throws Exception { +// Log Delete +return context.proceed(); +} +} + + + +== persistence.xml + + +[source,xml] + +http://java.sun.com/xml/ns/persistence"; version="1.0"> + + +movieDatabase +movieDatabaseUnmanaged +org.superbiz.injection.tx.Movie + + + + + + + + + +== MoviesTest + + +[source,java] + +package org.superbiz.injection.tx; + +import junit.framework.TestCase; + +import javax.annotation.security.RunAs; +import javax.ejb.EJB; +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.ejb.embeddable.EJBContainer; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.Callable; + +imp
[17/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/developer/tools/maven/tomee.adoc -- diff --git a/src/main/jbake/content/developer/tools/maven/tomee.adoc b/src/main/jbake/content/developer/tools/maven/tomee.adoc new file mode 100755 index 000..e4f5896 --- /dev/null +++ b/src/main/jbake/content/developer/tools/maven/tomee.adoc @@ -0,0 +1,183 @@ += TomEE Maven Plugin +:jbake-date: 2016-03-16 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: + +TomEE Maven Plugin is a set of goals for the development and to prepare to go in production: + +- `tomee:build` +- `tomee:exec` +- `tomee:configtest` +- `tomee:debug` +- `tomee:deploy` +- `tomee:exec` +- `tomee:list` +- `tomee:run` +- `tomee:start` +- `tomee:stop` +- `tomee:undeploy` + +=== Run + +The most commonly used goal, it allows to start a tomee with applications. Here is its configuration: + +[.table.table-bordered,options="header"] +|=== +|Name|Default|Description + +|synchronization|-|a synchronization (see after the table) +|synchronizations|-|list of synchronizations +|reloadOnUpdate|-|should the application be redeployed when a synchronization is triggered + +|skipCurrentProject|false|should current project not be considered as a deployable even if its packaging is compatible (war typically) +|tomeeVersion|auto, plugin one|which version of TomEE to use +|tomeeGroupId|org.apache.tomee|TomEE artifact groupId +|tomeeArtifactId|apache-tomee|TomEE artifact artifactId +|tomeeType|zip| the type of the TomEE artifact , only zip supported at the moment +|tomeeClassifier|webprofile|which flavor of TomEE to use (classifier) +|tomeeShutdownPort|read from server.xml|the shutdown port +|tomeeShutdownAttempts|60|how many times to wait for startup/shutdown (waits 1s in between) +|tomeeShutdownCommand|SHUTDOWN|the shutdown command +|tomeeAjpPort|read from the pom|the AJP port if needed +|tomeeHttpsPort|read from the pom|the HTTPS port if needed +|args|-|command line arguments (system properties, javaagent, JVM options ...) +|debug|-|start and wait for a remote debugger to connect +|debugPort|5005|used when debug to change the default port +|simpleLog|false|use one line logs +|extractWars|false|explode wars before starting +|stripWarVersion|true|remove the version from the war name +|stripVersion|false|remove the version from the artifact name whatever it is (even jar) +|webappResources|${project.basedir}/src/main/webapp|where web resources are +|webappClasses and classes|${project.build.outputDirectory}|where artifact binaries are +|catalinaBase|${project.build.directory}/apache-tomee|where to create the tomee instance +|context|-|name of the current artifact (rename the war from the maven name to this one) +|webappDir|webapps|path to webapps folder from tomee.base +|appDir|apps|path to apps folder from tomee.base +|libDir|lib|where is lib folder +|mainDir|${project.basedir}/src/main|used in openejb mode to change default config of conf/lib/bin folders to openejb instead of tomee +|config|${project.basedir}/src/main/tomee/conf|a conf folder synchronized with TomEE one +|bin|${project.basedir}/src/main/tomee/bin|a bin folder synchronized with TomEE one +|lib|${project.basedir}/src/main/tomee/lib|a lib folder synchronized with TomEE one +|systemVariables|-|a map of system properties +|classpaths|-|a list of additional entries for the startup classpath +|customizers|-|a list of customizers +|jsCustomizers|-|a list of js customizers (js scripts) +|groovyCustomizers|-|a list of groovy customizers (groovy scripts) +|webappDefaultConfig|false|auto config war oriented +|quickSession|true|session generation will use `Random` instead of `SecureRandom` (for dev) +|forceReloadable|false|ensure TomEE supports reloading/redeployment +|forceJspDevelopment|true|JSP will be auto-recompiled on changes +|libs|-|dependencies to add in lib, see after this table for advanced usage +|endorsedLibs|-|dependencies to add in endorsed, see after this table for advanced usage +|javaagents|-|javaagents to add on the JVM, supports maven coordinates +|persistJavaagents|false|should javaagent be saved or just use for this plugin run +|webapps|-|additional applicatinos to deploy +|warFile|${project.build.directory}/${project.build.finalName}.${project.packaging}|the war to deploy +|workWarFile|${project.build.directory}/${project.build.finalName}"|the exploded war to deploy +|removeDefaultWebapps|true| should default webapps (ROOT, docs, ...) be deleted +|deployOpenEjbApplication|false|should openejb internal application be deployed +|removeTomeeWebapp|true|should tomee webapp (with EJBd adapter) be deployed +|tomeeAlreadyInstalled|false|skip all the setup configuration +|ejbRemote|true|should EJBd be activated +|checkStarted|false|should the plugin check the server is up (useful when used with `pre-integration` phase +|useConsole|true|wait for the
[03/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/transaction-rollback.adoc -- diff --git a/src/main/jbake/content/examples/transaction-rollback.adoc b/src/main/jbake/content/examples/transaction-rollback.adoc new file mode 100755 index 000..6b8088d --- /dev/null +++ b/src/main/jbake/content/examples/transaction-rollback.adoc @@ -0,0 +1,584 @@ += Transaction Rollback +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example transaction-rollback can be browsed at https://github.com/apache/tomee/tree/master/examples/transaction-rollback + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== CustomRuntimeException + + +[source,java] + +package org.superbiz.txrollback; + +import javax.ejb.ApplicationException; + +@ApplicationException +public class CustomRuntimeException extends RuntimeException { + +public CustomRuntimeException() { +} + +public CustomRuntimeException(String s) { +super(s); +} + +public CustomRuntimeException(String s, Throwable throwable) { +super(s, throwable); +} + +public CustomRuntimeException(Throwable throwable) { +super(throwable); +} +} + + + +== Movie + + +[source,java] + +package org.superbiz.txrollback; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity(name = "Movie") +public class Movie { + +@Id +@GeneratedValue(strategy = GenerationType.AUTO) +private long id; + +private String director; +private String title; +private int year; + +public Movie() { +} + +public Movie(String director, String title, int year) { +this.director = director; +this.title = title; +this.year = year; +} + +public String getDirector() { +return director; +} + +public void setDirector(String director) { +this.director = director; +} + +public String getTitle() { +return title; +} + +public void setTitle(String title) { +this.title = title; +} + +public int getYear() { +return year; +} + +public void setYear(int year) { +this.year = year; +} + +} + + + +== Movies + + +[source,java] + +package org.superbiz.txrollback; + +import javax.annotation.Resource; +import javax.ejb.SessionContext; +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.PersistenceContextType; +import javax.persistence.Query; +import java.util.List; + +//START SNIPPET: code +@Stateless +public class Movies { + +@PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.TRANSACTION) +private EntityManager entityManager; + +@Resource +private SessionContext sessionContext; + +public void addMovie(Movie movie) throws Exception { +entityManager.persist(movie); +} + +public void deleteMovie(Movie movie) throws Exception { +entityManager.remove(movie); +} + +public List getMovies() throws Exception { +Query query = entityManager.createQuery("SELECT m from Movie as m"); +return query.getResultList(); +} + +public void callSetRollbackOnly() { +sessionContext.setRollbackOnly(); +} + +public void throwUncheckedException() { +throw new RuntimeException("Throwing unchecked exceptions will rollback a transaction"); +} + +public void throwApplicationException() { +throw new CustomRuntimeException("This is marked @ApplicationException, so no TX rollback"); +} +} + + + +== persistence.xml + + +[source,xml] + +http://java.sun.com/xml/ns/persistence"; version="1.0"> + + +movieDatabase +movieDatabaseUnmanaged +org.superbiz.testinjection.MoviesTest.Movie + + + + + + + + + +== MoviesTest + + +[source,java] + +package org.superbiz.txrollback; + +import junit.framework.TestCase; + +import javax.annotation.Resource; +import javax.ejb.EJB; +import javax.ejb.embeddable.EJBContainer; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.transaction.RollbackException; +import javax.transaction.UserTransaction; +import java.util.List; +import java.util.Properties; + +//START SNIPPET: code +public class MoviesTest extends TestCase { + +@EJB +private Movies movies; + +@Resource +private UserTransaction userTransaction; + +@PersistenceContext +private EntityManager entityManager; + +private EJBContainer ejbContainer; + +public void setUp() throws Exception { +Properties p = new Properties(); +p.put("movieDatabase", "new://Resource?type
[35/35] tomee-tomee-site-generator git commit: import from old website
import from old website Project: http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/commit/972cc356 Tree: http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/tree/972cc356 Diff: http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/diff/972cc356 Branch: refs/heads/master Commit: 972cc3567a8009690445f18ffc10ce8b14e962ab Parents: Author: rmannibucau Authored: Tue Jul 4 18:32:47 2017 +0200 Committer: rmannibucau Committed: Tue Jul 4 18:32:47 2017 +0200 -- .gitignore | 15 + README.adoc | 70 + examples.cache | 1653 + pom.xml | 127 + .../org/apache/tomee/website/Contributors.java | 222 + .../org/apache/tomee/website/Downloads.java | 247 + .../java/org/apache/tomee/website/Examples.java | 319 + .../java/org/apache/tomee/website/JBake.java| 181 + .../java/org/apache/tomee/website/PDFify.java | 76 + .../apache/tomee/website/ServiceJarHelper.java | 192 + .../org/slf4j/bridge/SLF4JBridgeHandler.java|7 + src/main/jbake/assets/bash | 147 + src/main/jbake/assets/css/animate.css | 3391 + src/main/jbake/assets/css/bootstrap.css | 6782 ++ src/main/jbake/assets/css/bootstrap.css.map |1 + src/main/jbake/assets/css/cardio.css| 1173 +++ src/main/jbake/assets/css/et-icons.css | 1159 +++ src/main/jbake/assets/css/idea.css | 123 + src/main/jbake/assets/css/jqtree.css| 132 + src/main/jbake/assets/css/normalize.css | 432 ++ src/main/jbake/assets/css/owl.css | 208 + src/main/jbake/assets/favicon.ico | Bin 0 -> 12322 bytes src/main/jbake/assets/favicon.png | Bin 0 -> 1983 bytes .../assets/fonts/eleganticons/ElegantIcons.eot | Bin 0 -> 59572 bytes .../assets/fonts/eleganticons/ElegantIcons.svg | 1832 + .../assets/fonts/eleganticons/ElegantIcons.ttf | Bin 0 -> 59388 bytes .../assets/fonts/eleganticons/ElegantIcons.woff | Bin 0 -> 63664 bytes .../assets/fonts/eleganticons/et-icons.css | 1159 +++ .../font-awesome-4.1.0/css/font-awesome.min.css |4 + .../font-awesome-4.1.0/fonts/FontAwesome.otf| Bin 0 -> 85908 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes .../fonts/fontawesome-webfont.svg | 520 ++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes src/main/jbake/assets/img/gdamour.jpg | Bin 0 -> 6288 bytes src/main/jbake/assets/img/genspring.jpg | Bin 0 -> 5115 bytes src/main/jbake/assets/img/header.jpg| Bin 0 -> 192314 bytes src/main/jbake/assets/img/jgenender.jpg | Bin 0 -> 9440 bytes src/main/jbake/assets/img/loader.gif| Bin 0 -> 20788 bytes src/main/jbake/assets/img/logo-active.png | Bin 0 -> 1983 bytes src/main/jbake/assets/img/logo.png | Bin 0 -> 2015 bytes src/main/jbake/assets/img/manugeorge.jpg| Bin 0 -> 7240 bytes src/main/jbake/assets/img/mnour.jpg | Bin 0 -> 23758 bytes src/main/jbake/assets/img/noimg.png | Bin 0 -> 4777 bytes src/main/jbake/assets/img/popup.jpg | Bin 0 -> 71172 bytes src/main/jbake/assets/img/pricing1.jpg | Bin 0 -> 176192 bytes src/main/jbake/assets/img/pricing2.jpg | Bin 0 -> 138505 bytes src/main/jbake/assets/img/rickmcguire.jpg | Bin 0 -> 21599 bytes src/main/jbake/assets/img/table-1-hover.jpg | Bin 0 -> 50138 bytes src/main/jbake/assets/img/table-1.jpg | Bin 0 -> 39889 bytes src/main/jbake/assets/img/table-2-hover.jpg | Bin 0 -> 19219 bytes src/main/jbake/assets/img/table-2.jpg | Bin 0 -> 18293 bytes src/main/jbake/assets/img/table-3-hover.jpg | Bin 0 -> 26828 bytes src/main/jbake/assets/img/table-3.jpg | Bin 0 -> 34756 bytes src/main/jbake/assets/img/xuhaihong.jpg | Bin 0 -> 20528 bytes src/main/jbake/assets/js/bootstrap.min.js |7 + src/main/jbake/assets/js/highlight.pack.js |3 + src/main/jbake/assets/js/jquery-1.11.1.min.js |4 + src/main/jbake/assets/js/jquery.onepagenav.js | 223 + src/main/jbake/assets/js/main.js| 178 + src/main/jbake/assets/js/owl.carousel.min.js| 47 + src/main/jbake/assets/js/tooltip.js | 304 + src/main/jbake/assets/js/tree.jquery.js | 3542 + .../jbake/assets/js/typeahead.bundle.min.js |8 + src/main/jbake/assets/js/typed.js | 421 ++ src/main/jbake/assets/js/typewriter.js | 54 + src/main/jbake/asse
[16/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/download-ng.adoc -- diff --git a/src/main/jbake/content/download-ng.adoc b/src/main/jbake/content/download-ng.adoc new file mode 100755 index 000..0610a06 --- /dev/null +++ b/src/main/jbake/content/download-ng.adoc @@ -0,0 +1,280 @@ += Downloads +:jbake-date: 2015-04-05 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: +:icons: font + +IMPORTANT: only TomEE 1.x WebProfile and JAX-RS distributions are certified. + +[.table.table-bordered,options="header"] +|=== +|Name|Version|Date|Size|Type|Links +|Apache TomEE plume|7.0.3|Tue, 07 Mar 2017 21:47:50 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.tar.gz.asc[icon:download[] asc] +|Apache TomEE plume|7.0.3|Tue, 07 Mar 2017 21:45:35 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plume.zip.asc[icon:download[] asc] +|Apache TomEE plus|7.0.3|Tue, 07 Mar 2017 21:43:39 GMT|48 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.tar.gz.asc[icon:download[] asc] +|Apache TomEE plus|7.0.3|Tue, 07 Mar 2017 21:41:45 GMT|48 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-plus.zip.asc[icon:download[] asc] +|Apache TomEE webprofile|7.0.3|Tue, 07 Mar 2017 21:40:27 GMT|33 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.tar.gz.asc[icon:download[] asc] +|Apache TomEE webprofile|7.0.3|Tue, 07 Mar 2017 21:39:18 GMT|34 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip[icon:download[] zip] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.3/apache-tomee-7.0.3-webprofile.zip.asc[icon:download[] asc] +|Apache TomEE plume|7.0.2|Sun, 06 Nov 2016 19:13:59 GMT|55 MB |tar.gz| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz[icon:download[] tar.gz] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.sha1[icon:download[] sha1] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.md5[icon:download[] md5] http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/apache-tomee-7.0.2-plume.tar.gz.asc[icon:download[] asc] +|Apache TomEE plume|7.0.2|Sun, 06 Nov 2016 19:05:57 GMT|55 MB |zip| http://repo.maven.apache.org/maven2/org/apache/tomee/apache-tomee/7.0.2/ap
[19/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/admin/configuration/containers.adoc -- diff --git a/src/main/jbake/content/admin/configuration/containers.adoc b/src/main/jbake/content/admin/configuration/containers.adoc new file mode 100755 index 000..3d86272 --- /dev/null +++ b/src/main/jbake/content/admin/configuration/containers.adoc @@ -0,0 +1,585 @@ += Resources +:jbake-date: 2016-03-16 +:jbake-type: page +:jbake-status: published +:jbake-tomeepdf: + +All containers will be created automatically - which means you don't need to define them +if you don't need to tune their configuration - when a bean of their type if found. + +To avoid that use `openejb.offline` property and set it to `true`. See link:server.html[Server Configuration] for more detail. + +=== @Stateless + +A `@Stateless` container. + +Declarable in tomee.xml via + +[source,xml] + + +AccessTimeout = 30 seconds +MaxSize = 10 +MinSize = 0 +StrictPooling = true +MaxAge = 0 hours +ReplaceAged = true +ReplaceFlushed = false +MaxAgeOffset = -1 +IdleTimeout = 0 minutes +GarbageCollection = false +SweepInterval = 5 minutes +CallbackThreads = 5 +CloseTimeout = 5 minutes +UseOneSchedulerThreadByBean = false +EvictionThreads = 1 + + + +Declarable in properties via + +[source,bash] + +Foo = new://Container?type=STATELESS +Foo.AccessTimeout = 30 seconds +Foo.MaxSize = 10 +Foo.MinSize = 0 +Foo.StrictPooling = true +Foo.MaxAge = 0 hours +Foo.ReplaceAged = true +Foo.ReplaceFlushed = false +Foo.MaxAgeOffset = -1 +Foo.IdleTimeout = 0 minutes +Foo.GarbageCollection = false +Foo.SweepInterval = 5 minutes +Foo.CallbackThreads = 5 +Foo.CloseTimeout = 5 minutes +Foo.UseOneSchedulerThreadByBean = false +Foo.EvictionThreads = 1 + + + Configuration + += AccessTimeout + +Specifies the time an invokation should wait for an instance +of the pool to become available. + +After the timeout is reached, if an instance in the pool cannot +be obtained, the method invocation will fail. + +Usable time units: nanoseconds, microsecons, milliseconds, +seconds, minutes, hours, days. Or any combination such as +"1 hour and 27 minutes and 10 seconds" + +Any usage of the `javax.ejb.AccessTimeout` annotation will +override this setting for the bean or method where the +annotation is used. + += MaxSize + +Specifies the size of the bean pools for this stateless +SessionBean container. If StrictPooling is not used, instances +will still be created beyond this number if there is demand, but +they will not be returned to the pool and instead will be +immediately destroyed. + += MinSize + +Specifies the minimum number of bean instances that should be in +the pool for each bean. Pools are prefilled to the minimum on +startup. Note this will create start order dependencies between +other beans that also eagerly start, such as other `@Stateless` +beans with a minimum or `@Singleton` beans using `@Startup`. The +start order. + +The minimum pool size is rigidly maintained. Instances in the +minimum side of the pool are not eligible for `IdleTimeout` or +`GarbageCollection`, but are subject to `MaxAge` and flushing. + +If the pool is flushed it is immediately refilled to the minimum +size with `MaxAgeOffset` applied. If an instance from the minimum +side of the pool reaches its `MaxAge`, it is also immediately +replaced. Replacement is done in a background queue using the +number of threads specified by `CallbackThreads`. + += StrictPooling + +StrictPooling tells the container what to do when the pool +reaches it's maximum size and there are incoming requests that +need instances. + +With strict pooling, requests will have to wait for instances to +become available. The pool size will never grow beyond the the +set `MaxSize` value. The maximum amount of time a request should +wait is specified via the `AccessTimeout` setting. + +Without strict pooling, the container will create temporary +instances to meet demand. The instances will last for just one +method invocation and then are removed. + +Setting `StrictPooling` to `false` and `MaxSize` to `0` will result in +no pooling. Instead instances will be created on demand and live +for exactly one method call before being removed. + += MaxAge + +Specifies the maximum time that an instance should live before +it should be retired and removed from use. This will happen +gracefully. Useful for situations where bean instances are +designed to hold potentially expensive resources such as memory +or file handles and need to be periodically cleared out. + +Usable time units: nanoseconds, microsecons, milliseconds, +seconds, minutes, hours, days. Or any combination such as +`1 hour and 27 minutes and 10 seconds` + += ReplaceAged + +When `ReplaceAged` is enabled, any instances in the pool that +expire due to reachi
[25/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf -- diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf new file mode 100755 index 000..96a3639 Binary files /dev/null and b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.ttf differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff -- diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff new file mode 100755 index 000..628b6a5 Binary files /dev/null and b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.woff differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/gdamour.jpg -- diff --git a/src/main/jbake/assets/img/gdamour.jpg b/src/main/jbake/assets/img/gdamour.jpg new file mode 100644 index 000..148cc7b Binary files /dev/null and b/src/main/jbake/assets/img/gdamour.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/genspring.jpg -- diff --git a/src/main/jbake/assets/img/genspring.jpg b/src/main/jbake/assets/img/genspring.jpg new file mode 100644 index 000..a7bd1db Binary files /dev/null and b/src/main/jbake/assets/img/genspring.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/header.jpg -- diff --git a/src/main/jbake/assets/img/header.jpg b/src/main/jbake/assets/img/header.jpg new file mode 100755 index 000..56da914 Binary files /dev/null and b/src/main/jbake/assets/img/header.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/jgenender.jpg -- diff --git a/src/main/jbake/assets/img/jgenender.jpg b/src/main/jbake/assets/img/jgenender.jpg new file mode 100644 index 000..06c40dd Binary files /dev/null and b/src/main/jbake/assets/img/jgenender.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/loader.gif -- diff --git a/src/main/jbake/assets/img/loader.gif b/src/main/jbake/assets/img/loader.gif new file mode 100755 index 000..ab26baa Binary files /dev/null and b/src/main/jbake/assets/img/loader.gif differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/logo-active.png -- diff --git a/src/main/jbake/assets/img/logo-active.png b/src/main/jbake/assets/img/logo-active.png new file mode 100755 index 000..2352448 Binary files /dev/null and b/src/main/jbake/assets/img/logo-active.png differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/logo.png -- diff --git a/src/main/jbake/assets/img/logo.png b/src/main/jbake/assets/img/logo.png new file mode 100755 index 000..05dc2e7 Binary files /dev/null and b/src/main/jbake/assets/img/logo.png differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/manugeorge.jpg -- diff --git a/src/main/jbake/assets/img/manugeorge.jpg b/src/main/jbake/assets/img/manugeorge.jpg new file mode 100644 index 000..f69f4f7 Binary files /dev/null and b/src/main/jbake/assets/img/manugeorge.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/mnour.jpg -- diff --git a/src/main/jbake/assets/img/mnour.jpg b/src/main/jbake/assets/img/mnour.jpg new file mode 100644 index 000..e797b8b Binary files /dev/null and b/src/main/jbake/assets/img/mnour.jpg differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/img/noimg.png -- diff --git a/src/main/jbake/assets/img/noimg.png b/src/main/jbake/assets/
[23/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/jquery-1.11.1.min.js -- diff --git a/src/main/jbake/assets/js/jquery-1.11.1.min.js b/src/main/jbake/assets/js/jquery-1.11.1.min.js new file mode 100755 index 000..d1608e3 --- /dev/null +++ b/src/main/jbake/assets/js/jquery-1.11.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,argumen ts))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a= =a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d ===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(ar guments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h
[10/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/javamail.adoc -- diff --git a/src/main/jbake/content/examples/javamail.adoc b/src/main/jbake/content/examples/javamail.adoc new file mode 100755 index 000..77141dd --- /dev/null +++ b/src/main/jbake/content/examples/javamail.adoc @@ -0,0 +1,201 @@ += Javamail API +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example javamail can be browsed at https://github.com/apache/tomee/tree/master/examples/javamail + + +This is just a simple example to demonstrate a very basic usage of the API. It should be enough to get you started using the java mail packages. + += The Code + +== A simple REST service using the Javamail API + +Here we see a very simple RESTful endpoint that can be called with a message to send by Email. It would not be hard to modify the application to provide +more useful configuration options. As is, this will not send anything, but if you change the parameters to match your mail server then you'll see the message being sent. +You can find much more detailed information on the link:https://java.net/projects/javamail/pages/Home#Samples[Javamail API here] + + +[source,java] + +package org.superbiz.rest; + +import javax.mail.Authenticator; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.PasswordAuthentication; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import java.util.Date; +import java.util.Properties; + +@Path("/email") +public class EmailService { + +@POST +public String lowerCase(final String message) { + +try { + +//Create some properties and get the default Session +final Properties props = new Properties(); +props.put("mail.smtp.host", "your.mailserver.host"); +props.put("mail.debug", "true"); + +final Session session = Session.getInstance(props, new Authenticator() { +@Override +protected PasswordAuthentication getPasswordAuthentication() { +return new PasswordAuthentication("MyUsername", "MyPassword"); +} +}); + +//Set this just to see some internal logging +session.setDebug(true); + +//Create a message +final MimeMessage msg = new MimeMessage(session); +msg.setFrom(new InternetAddress("your@email.address")); +final InternetAddress[] address = {new InternetAddress("gene...@tomitribe.com")}; +msg.setRecipients(Message.RecipientType.TO, address); +msg.setSubject("JavaMail API test"); +msg.setSentDate(new Date()); +msg.setText(message, "UTF-8"); + + +Transport.send(msg); +} catch (MessagingException e) { +return "Failed to send message: " + e.getMessage(); +} + +return "Sent"; +} +} + + + += Testing + +== Test for the JAXRS service + +The test uses the OpenEJB ApplicationComposer to make it trivial. + +The idea is first to activate the jaxrs services. This is done using @EnableServices annotation. + +Then we create on the fly the application simply returning an object representing the web.xml. Here we simply +use it to define the context root but you can use it to define your REST Application too. And to complete the +application definition we add @Classes annotation to define the set of classes to use in this app. + +Finally to test it we use cxf client API to call the REST service post() method. + + +[source,java] + +package org.superbiz.rest; + +import org.apache.cxf.jaxrs.client.WebClient; +import org.apache.openejb.jee.WebApp; +import org.apache.openejb.junit.ApplicationComposer; +import org.apache.openejb.testing.Classes; +import org.apache.openejb.testing.EnableServices; +import org.apache.openejb.testing.Module; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +@EnableServices(value = "jaxrs") +@RunWith(ApplicationComposer.class) +public class EmailServiceTest { + +@Module +@Classes(EmailService.class) +public WebApp app() { +return new WebApp().contextRoot("test"); +} + +@Test +public void post() throws IOException { +final String message = WebClient.create("http://localhost:4204";).path("/test/email/").post("Hello Tomitribe", String.class); +assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message); +} +} + + + += Running + +Running the example is fairly simple. In the "javamail-api" directory run: + +$ mvn clean install + +Which should cr
[12/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/dynamic-datasource-routing.adoc -- diff --git a/src/main/jbake/content/examples/dynamic-datasource-routing.adoc b/src/main/jbake/content/examples/dynamic-datasource-routing.adoc new file mode 100755 index 000..8b7a76e --- /dev/null +++ b/src/main/jbake/content/examples/dynamic-datasource-routing.adoc @@ -0,0 +1,473 @@ += Dynamic Datasource Routing +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example dynamic-datasource-routing can be browsed at https://github.com/apache/tomee/tree/master/examples/dynamic-datasource-routing + + +The TomEE dynamic datasource api aims to allow to use multiple data sources as one from an application point of view. + +It can be useful for technical reasons (load balancing for example) or more generally +functionnal reasons (filtering, aggregation, enriching...). However please note you can choose +only one datasource by transaction. It means the goal of this feature is not to switch more than +once of datasource in a transaction. The following code will not work: + + +[source,java] + +@Stateless +public class MyEJB { +@Resource private MyRouter router; +@PersistenceContext private EntityManager em; + +public void workWithDataSources() { +router.setDataSource("ds1"); +em.persist(new MyEntity()); + +router.setDataSource("ds2"); // same transaction -> this invocation doesn't work +em.persist(new MyEntity()); +} +} + + + +In this example the implementation simply use a datasource from its name and needs to be set before using any JPA +operation in the transaction (to keep the logic simple in the example). + += The implementation of the Router + +Our router has two configuration parameters: +* a list of jndi names representing datasources to use +* a default datasource to use + +== Router implementation + +The interface Router (`org.apache.openejb.resource.jdbc.Router`) has only one method to implement, `public DataSource getDataSource()` + +Our `DeterminedRouter` implementation uses a ThreadLocal to manage the currently used datasource. Keep in mind JPA used more than once the getDatasource() method +for one operation. To change the datasource in one transaction is dangerous and should be avoid. + + +[source,java] + +package org.superbiz.dynamicdatasourcerouting; + +import org.apache.openejb.resource.jdbc.AbstractRouter; + +import javax.naming.NamingException; +import javax.sql.DataSource; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class DeterminedRouter extends AbstractRouter { +private String dataSourceNames; +private String defaultDataSourceName; +private Map dataSources = null; +private ThreadLocal currentDataSource = new ThreadLocal(); + +/** + * @param datasourceList datasource resource name, separator is a space + */ +public void setDataSourceNames(String datasourceList) { +dataSourceNames = datasourceList; +} + +/** + * lookup datasource in openejb resources + */ +private void init() { +dataSources = new ConcurrentHashMap(); +for (String ds : dataSourceNames.split(" ")) { +try { +Object o = getOpenEJBResource(ds); +if (o instanceof DataSource) { +dataSources.put(ds, DataSource.class.cast(o)); +} +} catch (NamingException e) { +// ignored +} +} +} + +/** + * @return the user selected data source if it is set + * or the default one + * @throws IllegalArgumentException if the data source is not found + */ +@Override +public DataSource getDataSource() { +// lazy init of routed datasources +if (dataSources == null) { +init(); +} + +// if no datasource is selected use the default one +if (currentDataSource.get() == null) { +if (dataSources.containsKey(defaultDataSourceName)) { +return dataSources.get(defaultDataSourceName); + +} else { +throw new IllegalArgumentException("you have to specify at least one datasource"); +} +} + +// the developper set the datasource to use +return currentDataSource.get(); +} + +/** + * + * @param datasourceName data source name + */ +public void setDataSource(String datasourceName) { +if (dataSources == null) { +init(); +} +if (!dataSources.containsKey(datasourceName)) { +throw new IllegalArgumentException("data source called " + datasourceName + " can't be found."); +} +DataSource ds = dataSources.get(datasourceName); +currentDataSourc
[15/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/access-timeout-meta.adoc -- diff --git a/src/main/jbake/content/examples/access-timeout-meta.adoc b/src/main/jbake/content/examples/access-timeout-meta.adoc new file mode 100755 index 000..345b7c3 --- /dev/null +++ b/src/main/jbake/content/examples/access-timeout-meta.adoc @@ -0,0 +1,291 @@ += @AccessTimeout the Meta-Annotation Way +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example access-timeout-meta can be browsed at https://github.com/apache/tomee/tree/master/examples/access-timeout-meta + + +Any annotation that takes parameters can benefit from meta-annotations. Here we see how `@AccessTimeout` can be far more understandable and manageable through meta-annotations. +We'll use the link:access-timeout.html[access-timeout] example as our use-case. + +The value of the parameters supplied to `@AccessTimeout` have a dramatic affect on how what that annotation actually does. Moreover, `@AccessTimeout` has one of those designs +where `-1` and `0` have signifcantly different meanings. One means "wait forever", the other means "never wait". Only a lucky few can remember which is which on a daily basis. +For the rest of us it is a constant source of bugs. + +Meta-Annotations to the rescue! + += Creating the Meta-Annotations + +As a matter of best-practices, we will put our meta-annotations in a package called `api`, for this example that gives us `org.superbiz.accesstimeout.api`. The package `org.superbiz.api` would work just as well. + +The basic idea is to have a package where "approved' annotations are used and to prohibit usage of the non-meta versions of the annotations. All the real configuration will +then be centralized in the `api` package and changes to timeout values will be localized to that package and automatically be reflected throuhout the application. + +An interesting side-effect of this approach is that if the `api` package where the meta-annotation definitions exist is kept in a separate jar as well, then one can effectively +change the configuration of an entire application by simply replacing the `api` jar. + +== @Metatype The "root" Meta-Annotation + +As with all meta-annotation usage, you first need to create your own "root" meta-annotation. This is as easy as creating an annotation +named `Metatype` that is annotated with itself and has `ElementType.ANNOTATION_TYPE` as its target. + + + +[source,java] + +package org.superbiz.accesstimeout.api; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Metatype +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.ANNOTATION_TYPE) +public @interface Metatype { +} + + + +== @AwaitNever + +When the `@AccessTimeout` annotation has the value of `0` that has the implication that one should never wait to access the bean. If the bean is busy, the caller will immediately +receive an `ConcurrentAccessException`. This is hard to remember and definitely not self-documenting for those that never knew the details. + +To create a meta-annotation version of `@AccessTimeout(0)` we simply need to think of a good annotation name, create that annotation, and annotate it with both `@AccessTimeout` +and `@Metatype` + + +[source,java] + +package org.superbiz.accesstimeout.api; + +import javax.ejb.AccessTimeout; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Metatype +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) + +@AccessTimeout(0) +public @interface AwaitNever { +} + + + +== @AwaitForever + +Just as `0` carries the special meaning of "never wait", a value of `-1` means "wait forever." + +As long as we're being picky, which we can be with meta-annotations, +Technically "wait forever" is not the best description. The actual methods of the `javax.util.concurrent` APIs use "await" rather than "wait". One (wait) perphaps implies a +command to wait, which this is not, and the other (await) perhaps better implies that waiting is possible but not a certainty. So we will use "await" in our annotation names. + +We make our own `@AwaitForever` and annotate it with `@AccessTimeout(0)` and `@Metatype` + + +[source,java] + +package org.superbiz.accesstimeout.api; + +import javax.ejb.AccessTimeout; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Metatype +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) + +@AccessTimeout(-1) +public @interface AwaitForever { +} + + + +== @AwaitBriefly + +No
[05/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/simple-stateful.adoc -- diff --git a/src/main/jbake/content/examples/simple-stateful.adoc b/src/main/jbake/content/examples/simple-stateful.adoc new file mode 100755 index 000..cc2b7d8 --- /dev/null +++ b/src/main/jbake/content/examples/simple-stateful.adoc @@ -0,0 +1,160 @@ += Simple Stateful +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example simple-stateful can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-stateful + + +This example demonstrates a simple deployment of a Stateful session bean. + + +NOTE: "As its name suggests, a stateful session bean is similar to an interactive session. A stateful session bean is not shared; + +it can have only one client, in the same way that an interactive session can have only one user. +When the client terminates, its stateful session bean appears to terminate and is no longer associated with the client." + +The `Counter` class is a Stateful session bean that maintains a state in a form of a `count` integer field. +It exposes three methods: `count()`, `increment()` and `reset()` to manipulate and view its state. + +Typically, Stateful and Stateless beans implement Local and/or Remote interfaces to determine which methods should +be exposed. In this case, the bean is using a no-interface view, which means that all public methods are exposed +as a local view. + +== Counter + + +[source,java] + +package org.superbiz.counter; + +import javax.ejb.Stateful; + +/** + * This is an EJB 3 style pojo stateful session bean + * Every stateful session bean implementation must be annotated + * using the annotation @Stateful + * This EJB has 2 business interfaces: CounterRemote, a remote business + * interface, and CounterLocal, a local business interface + * + * Per EJB3 rules when the @Remote or @Local annotation isn't present + * in the bean class (this class), all interfaces are considered + * local unless explicitly annotated otherwise. If you look + * in the CounterRemote interface, you'll notice it uses the @Remote + * annotation while the CounterLocal interface is not annotated relying + * on the EJB3 default rules to make it a local interface. + */ +//START SNIPPET: code +@Stateful +public class Counter { + +private int count = 0; + +public int count() { +return count; +} + +public int increment() { +return ++count; +} + +public int reset() { +return (count = 0); +} +} + + + +== CounterTest + +The `Counter` class is tested by obtaining a `Context` object and performing a JNDI lookup on it, to retrieve +an instance of the `Counter` bean. After some state manipulation, a new instance is fetched from the container +and we can see that it's a new instance. + + +[source,java] + +package org.superbiz.counter; + +import junit.framework.TestCase; + +import javax.ejb.embeddable.EJBContainer; +import javax.naming.Context; + +public class CounterTest extends TestCase { + +//START SNIPPET: local +public void test() throws Exception { + +final Context context = EJBContainer.createEJBContainer().getContext(); + +Counter counterA = (Counter) context.lookup("java:global/simple-stateful/Counter"); + +assertEquals(0, counterA.count()); +assertEquals(0, counterA.reset()); +assertEquals(1, counterA.increment()); +assertEquals(2, counterA.increment()); +assertEquals(0, counterA.reset()); + +counterA.increment(); +counterA.increment(); +counterA.increment(); +counterA.increment(); + +assertEquals(4, counterA.count()); + +// Get a new counter +Counter counterB = (Counter) context.lookup("java:global/simple-stateful/Counter"); + +// The new bean instance starts out at 0 +assertEquals(0, counterB.count()); +} +//END SNIPPET: local +} + + + += Running + + + +[source] + +--- + T E S T S +--- +Running org.superbiz.counter.CounterTest +Apache OpenEJB 4.0.0-beta-1build: 20111002-04:06 +http://tomee.apache.org/ +INFO - openejb.home = /Users/dblevins/examples/simple-stateful +INFO - openejb.base = /Users/dblevins/examples/simple-stateful +INFO - Using 'javax.ejb.embeddable.EJBContainer=true' +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /Users/dblevins/examples/simple-stateful/target/classes +INFO - Beginning load: /Users/dblevins/examples/simple-stateful/target/classes +INF
[14/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc -- diff --git a/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc b/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc new file mode 100755 index 000..2f5e99d --- /dev/null +++ b/src/main/jbake/content/examples/cdi-alternative-and-stereotypes.adoc @@ -0,0 +1,138 @@ += cdi-alternative-and-stereotypes +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example cdi-alternative-and-stereotypes can be browsed at https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes + += Introduction + +CDI is a revolution for Java EE world. This specification is the best one to avoid coupling between classes. + +This example simply aims to override bindings at runtime to simplify mocking work. + +It uses two kind of mocks: +1) a mock with no implementation in the classloader +2) a mock with an implementation in the classloader + +The mock answer from CDI is called *alternative*. + +Annotating `@Alternative` a class will mean it will replace any implementation if there is no other implementation +or if it is forced (through `META-INF/beans.xml`). + += Code explanation +== main code + +We use an EJB `Jouney` to modelize a journey where the vehicle and the society can change. Here an EJB is used simply +because it simplifies the test. A jouney wraps the vehicle and society information. + +We define then two interfaces to inject it in the `Journey` EJB: `Vehicle` and `Society`. + +Finally we add an implementation for `Scociety` interface: `LowCostCompanie`. + +If we don't go further `Journey` object will not be able to be created because no `Vehicle` implementation is available. + +Note: if we suppose we have a `Vehicle` implementation, the injected Society should be `LowCostCompanie`. + +== test code + +The goal here is to test our `Journey` EJB. So we have to provide a `Vehicle` implementation: `SuperCar`. + +We want to force the `Society` implementation (for any reason) by our test implementation: `AirOpenEJB`. + +One solution could simply be to add `@Alternative` annotation on `AirOpenEJB` and activate it through +the `META-INF/beans.xml` file. + +Here we want to write more explicit code. So we want to replace the `@Alternative` annotation by `@Mock` one. + +So we simply define an `@Mock` annotation for classes, resolvable at runtime which is a stereotype (`@Stereotype`) +which replace `@Alternative`. + +Here is the annotation: + + +[source,java] + +@Stereotype // we define a stereotype +@Retention(RUNTIME) // resolvable at runtime +@Target(TYPE) // this annotation is a class level one +@Alternative // it replace @Alternative +public @interface Mock {} + +Note: you can add more CDI annotations after `@Alternative` and it will get the behavior expected (the scope for instance). + +So now we have our `@Mock` annotation which is a stereotype able to replace `@Alternative` annotation +we simply add this annotation to our mocks. + +If you run it now you'll have this exception: + +javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.superbiz.cdi.stereotype.Vehicle] is not found with the qualifiers +Qualifiers: [@javax.enterprise.inject.Default()] +for injection into Field Injection Point, field name : vehicle, Bean Owner : [Journey, Name:null, WebBeans Type:ENTERPRISE, API Types:[java.lang.Object,org.superbiz.cdi.stereotype.Journey], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]] + +It means the stereotype is not activated. To do it simply add it to your `META-INF/beans.xml`: + + + org.superbiz.cdi.stereotype.Mock + + +Note: if you don't specify `AirOpenEJB` as `@Alternative` (done through our mock annotation) you'll get this exception: + +Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is more than one api type with : org.superbiz.cdi.stereotype.Society with qualifiers : Qualifiers: [@javax.enterprise.inject.Default()] +for injection into Field Injection Point, field name : society, Bean Owner : [Journey, Name:null, WebBeans Type:ENTERPRISE, API Types:[org.superbiz.cdi.stereotype.Journey,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]] +found beans: +AirOpenEJB, Name:null, WebBeans Type:MANAGED, API Types:[org.superbiz.cdi.stereotype.Society,org.superbiz.cdi.stereotype.AirOpenEJB,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default] +LowCostCompanie, Name:null, WebBeans Type:MANAGED, API Types:[org.superbiz.cdi.stereotype.Society,org.superbiz.cdi.stereotype.LowCostCompanie,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default] + +which simply means two implementations are available for
[22/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/jquery.onepagenav.js -- diff --git a/src/main/jbake/assets/js/jquery.onepagenav.js b/src/main/jbake/assets/js/jquery.onepagenav.js new file mode 100755 index 000..8668b46 --- /dev/null +++ b/src/main/jbake/assets/js/jquery.onepagenav.js @@ -0,0 +1,223 @@ +/* + * jQuery One Page Nav Plugin + * http://github.com/davist11/jQuery-One-Page-Nav + * + * Copyright (c) 2010 Trevor Davis (http://trevordavis.net) + * Dual licensed under the MIT and GPL licenses. + * Uses the same license as jQuery, see: + * http://jquery.org/license + * + * @version 3.0.0 + * + * Example usage: + * $('#nav').onePageNav({ + * currentClass: 'current', + * changeHash: false, + * scrollSpeed: 750 + * }); + */ + +;(function($, window, document, undefined){ + + // our plugin constructor + var OnePageNav = function(elem, options){ + this.elem = elem; + this.$elem = $(elem); + this.options = options; + this.metadata = this.$elem.data('plugin-options'); + this.$win = $(window); + this.sections = {}; + this.didScroll = false; + this.$doc = $(document); + this.docHeight = this.$doc.height(); + }; + + // the plugin prototype + OnePageNav.prototype = { + defaults: { + navItems: 'a', + currentClass: 'current', + changeHash: false, + easing: 'swing', + filter: '', + scrollSpeed: 750, + scrollThreshold: 0.5, + begin: false, + end: false, + scrollChange: false + }, + + init: function() { + // Introduce defaults that can be extended either + // globally or using an object literal. + this.config = $.extend({}, this.defaults, this.options, this.metadata); + + this.$nav = this.$elem.find(this.config.navItems); + + //Filter any links out of the nav + if(this.config.filter !== '') { + this.$nav = this.$nav.filter(this.config.filter); + } + + //Handle clicks on the nav + this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this)); + + //Get the section positions + this.getPositions(); + + //Handle scroll changes + this.bindInterval(); + + //Update the positions on resize too + this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this)); + + return this; + }, + + adjustNav: function(self, $parent) { + self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass); + $parent.addClass(self.config.currentClass); + }, + + bindInterval: function() { + var self = this; + var docHeight; + + self.$win.on('scroll.onePageNav', function() { + self.didScroll = true; + }); + + self.t = setInterval(function() { + docHeight = self.$doc.height(); + + //If it was scrolled + if(self.didScroll) { + self.didScroll = false; + self.scrollChange(); + } + + //If the document height changes + if(docHeight !== self.docHeight) { + self.docHeight = docHeight; + self.getPositions(); + } + }, 250); + }, + + getHash: function($link) { + return $link.attr('href').split('#')[1]; + }, + + getPositions: function() { + var self = this; + var linkHref; + var topPos; + var $target; + + self.$nav.each(function() { + linkHref = self.getHash($(this)); + $target = $('#' + linkHref); + + if($target.length) { + topPos = $target.offset().top; +
[27/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff -- diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff new file mode 100755 index 000..3933052 Binary files /dev/null and b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.woff differ http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/et-icons.css -- diff --git a/src/main/jbake/assets/fonts/eleganticons/et-icons.css b/src/main/jbake/assets/fonts/eleganticons/et-icons.css new file mode 100755 index 000..26f2053 --- /dev/null +++ b/src/main/jbake/assets/fonts/eleganticons/et-icons.css @@ -0,0 +1,1159 @@ +@font-face { + font-family: 'ElegantIcons'; + src:url('ElegantIcons.eot'); + src:url('ElegantIcons.eot?#iefix') format('embedded-opentype'), + url('ElegantIcons.woff') format('woff'), + url('ElegantIcons.ttf') format('truetype'), + url('ElegantIcons.svg#ElegantIcons') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Use the following CSS code if you want to use data attributes for inserting your icons */ +[data-icon]:before { + font-family: 'ElegantIcons'; + content: attr(data-icon); + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Use the following CSS code if you want to have a class per icon */ +/* +Instead of a list of all class selectors, +you can use the generic selector below, but it's slower: +[class*="your-class-prefix"] { +*/ +.arrow_up, .arrow_down, .arrow_left, .arrow_right, .arrow_left-up, .arrow_right-up, .arrow_right-down, .arrow_left-down, .arrow-up-down, .arrow_up-down_alt, .arrow_left-right_alt, .arrow_left-right, .arrow_expand_alt2, .arrow_expand_alt, .arrow_condense, .arrow_expand, .arrow_move, .arrow_carrot-up, .arrow_carrot-down, .arrow_carrot-left, .arrow_carrot-right, .arrow_carrot-2up, .arrow_carrot-2down, .arrow_carrot-2left, .arrow_carrot-2right, .arrow_carrot-up_alt2, .arrow_carrot-down_alt2, .arrow_carrot-left_alt2, .arrow_carrot-right_alt2, .arrow_carrot-2up_alt2, .arrow_carrot-2down_alt2, .arrow_carrot-2left_alt2, .arrow_carrot-2right_alt2, .arrow_triangle-up, .arrow_triangle-down, .arrow_triangle-left, .arrow_triangle-right, .arrow_triangle-up_alt2, .arrow_triangle-down_alt2, .arrow_triangle-left_alt2, .arrow_triangle-right_alt2, .arrow_back, .icon_minus-06, .icon_plus, .icon_close, .icon_check, .icon_minus_alt2, .icon_plus_alt2, .icon_close_alt2, .icon_check_alt2, .icon_zoom-out_alt , .icon_zoom-in_alt, .icon_search, .icon_box-empty, .icon_box-selected, .icon_minus-box, .icon_plus-box, .icon_box-checked, .icon_circle-empty, .icon_circle-slelected, .icon_stop_alt2, .icon_stop, .icon_pause_alt2, .icon_pause, .icon_menu, .icon_menu-square_alt2, .icon_menu-circle_alt2, .icon_ul, .icon_ol, .icon_adjust-horiz, .icon_adjust-vert, .icon_document_alt, .icon_documents_alt, .icon_pencil, .icon_pencil-edit_alt, .icon_pencil-edit, .icon_folder-alt, .icon_folder-open_alt, .icon_folder-add_alt, .icon_info_alt, .icon_error-oct_alt, .icon_error-circle_alt, .icon_error-triangle_alt, .icon_question_alt2, .icon_question, .icon_comment_alt, .icon_chat_alt, .icon_vol-mute_alt, .icon_volume-low_alt, .icon_volume-high_alt, .icon_quotations, .icon_quotations_alt2, .icon_clock_alt, .icon_lock_alt, .icon_lock-open_alt, .icon_key_alt, .icon_cloud_alt, .icon_cloud-upload_alt, .icon_cloud-download_alt, .icon_image, .icon_images, .icon_lightbulb_alt, .icon_gift_alt, .icon_house_alt, .icon_ge nius, .icon_mobile, .icon_tablet, .icon_laptop, .icon_desktop, .icon_camera_alt, .icon_mail_alt, .icon_cone_alt, .icon_ribbon_alt, .icon_bag_alt, .icon_creditcard, .icon_cart_alt, .icon_paperclip, .icon_tag_alt, .icon_tags_alt, .icon_trash_alt, .icon_cursor_alt, .icon_mic_alt, .icon_compass_alt, .icon_pin_alt, .icon_pushpin_alt, .icon_map_alt, .icon_drawer_alt, .icon_toolbox_alt, .icon_book_alt, .icon_calendar, .icon_film, .icon_table, .icon_contacts_alt, .icon_headphones, .icon_lifesaver, .icon_piechart, .icon_refresh, .icon_link_alt, .icon_link, .icon_loading, .icon_blocked, .icon_archive_alt, .icon_heart_alt, .icon_star_alt, .icon_star-half_alt, .icon_star, .icon_star-half, .icon_tools, .icon_tool, .icon_cog, .icon_cogs, .arrow_up_alt, .arrow_down_alt, .arrow_left_alt, .arrow_right_alt, .arrow_left-up_alt, .arrow_right-up_alt, .arrow_right-down_alt, .arrow_left-down_alt, .arrow_condense_alt, .arrow_expand_alt3, .arrow_carrot_up_alt, .arrow_carrot-down_alt,
[26/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg -- diff --git a/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg new file mode 100755 index 000..d907b25 --- /dev/null +++ b/src/main/jbake/assets/fonts/font-awesome-4.1.0/fonts/fontawesome-webfont.svg @@ -0,0 +1,520 @@ + +http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; > +http://www.w3.org/2000/svg";> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[28/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg -- diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg new file mode 100755 index 000..93538d7 --- /dev/null +++ b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.svg @@ -0,0 +1,1832 @@ + +http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; > +http://www.w3.org/2000/svg";> + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf -- diff --git a/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf new file mode 100755 index 000..12ff680 Binary files /dev/null and b/src/main/jbake/assets/fonts/eleganticons/ElegantIcons.ttf differ
[34/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/examples.cache -- diff --git a/examples.cache b/examples.cache new file mode 100755 index 000..ba5ccce --- /dev/null +++ b/examples.cache @@ -0,0 +1,1653 @@ +{ + "all":{ +"adapters":[ + { +"name":"multiple-arquillian-adapters", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"; + } +], +"alternate":[ + { +"name":"alternate-descriptors", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/alternate-descriptors"; + } +], +"alternative":[ + { +"name":"cdi-alternative-and-stereotypes", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes"; + } +], +"applet":[ + { +"name":"applet", +"readme":"No README.md yet, be the first to contribute one!", +"url":"https://github.com/apache/tomee/tree/master/examples/applet"; + } +], +"applicationcomposer":[ + { +"name":"applicationcomposer-jaxws-cdi", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi"; + }, + { +"name":"rest-applicationcomposer", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer"; + }, + { +"name":"application-composer", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/application-composer"; + }, + { +"name":"rest-applicationcomposer-mockito", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito"; + } +], +"applicationexception":[ + { +"name":"applicationexception", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/applicationexception"; + } +], +"arquillian":[ + { +"name":"arquillian-jpa", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/arquillian-jpa"; + }, + { +"name":"multiple-tomee-arquillian", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian"; + }, + { +"name":"multiple-arquillian-adapters", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters"; + } +], +"async":[ + { +"name":"async-postconstruct", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/async-postconstruct"; + }, + { +"name":"async-methods", +"readme":"No README.md yet, be the first to contribute one!", + "url":"https://github.com/apache/tomee/tree/master/examples/async-methods"; + } +], +"attachments":[ + { +"name":"webservice-attachments", +"readme":"Title: Webservice Attachments\n\n*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*\n\n## AttachmentImpl\n\npackage org.superbiz.attachment;\n\n import javax.activation.DataHandler;\nimport javax.activation.DataSource;\n import javax.ejb.Stateless;\nimport javax.jws.WebService;\nimport javax.xml.ws.BindingType;\nimport javax.xml.ws.soap.SOAPBinding;\n import java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * This is an EJB 3 style pojo stateless session bean\n * Every stateless session bean implementation must be annotated\n * using the annotation @Stateless\n * This EJB has a single interface: {@link AttachmentWs} a webservice interface.\n */\n@Stateless\n@WebService(\n portName = \"AttachmentPort\",\nserviceName = \"AttachmentWsService\",\ntargetNamespace = \"http://superbiz.org/wsdl\",\ne ndpointInterface = \"org.superbiz.attachment.AttachmentWs\")\n @BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING)\npublic class AttachmentImpl implements AttachmentWs {\n
[24/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/js/highlight.pack.js -- diff --git a/src/main/jbake/assets/js/highlight.pack.js b/src/main/jbake/assets/js/highlight.pack.js new file mode 100755 index 000..6797e89 --- /dev/null +++ b/src/main/jbake/assets/js/highlight.pack.js @@ -0,0 +1,3 @@ +/*! highlight.js v9.2.0 | BSD3 License | git.io/hljslicense */ +!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/&/gm,"&").replace(//gm,">")}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0==r.index}function n(e){return/^(no-?highlight|plain|text)$/i.test(e)}function i(e){var t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=/\blang(?:uage)?-([\w-]+)\b/i.exec(i))return y(r[1])?r[1]:"no-highlight";for(i=i.split(/\s+/),t=0,a=i.length;a>t;t++)if(y(i[t])||n(i[t]))return i[t]}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?n+=i.nodeValue.length:1==i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match (/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!=a[0].offset?e[0].offset"}function c(e){u+=""}function o(e){("start"==e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substr(l,b[0].offset-l)),l=b[0].offset,b==e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b==e&&b.length&&b[0].offset==l);d.reverse().forEach(s)}else"start"==b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split( " ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):Object.keys(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\b\w+\b/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),void 0===n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"==e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var u=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=u.length?r(u.join("|"),!0):{exec:function(){return nulla(e)}function u(e,r,n,i){function s(e,t){for(var r=0;r";return i+=e+'">',i+t+s}function m(){if(!x.k)return t(E);var e="",r=0;x.lR.lastIndex=0;for(var a=x.lR.exec(E);a;){e+=t(E.substr(r,a.index-r));var n=b(x,a);n?(B+=n[1],e+=p(n[0],t(a[0]))):e+=t(a[0]),r=x.lR.lastIndex,a=x.lR.exec(E)}return e+t(E.substr(r))}function f(){var e="string"==typeof x.sL;if(e&&!N[x.sL])return t(E);var r=e?u(x.sL,E,!0,C[x.sL]):d(E,x.sL.length?x.sL:void 0);return x.r>0&&(B+=r.r),e&&(C[x.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){M+=void 0!==x.sL?f():m(),E=""}function h(e,t){M+=e.cN?p(e.cN,"",!0):"",x=Object.create(e,{parent:{value:x}})}function _(e,t){if(E+=e,void 0===t)return g(),0;var r=s(t,x);if(r)return r.skip?E+=t:(r.eB&&(E+=t),g(),r.rB||r.eB||(E=t)),h(r,t),r.rB?0:t.length;var a=c(x,t);if(a){var n=x;n.skip?E+=t:(n.rE||n.eE||(E+=t),g(),n.eE&&(E=t));do x.cN& &(M+=""),x.skip||(B+=x.r),x=x.parent;while(x!=a.parent);return a.starts&&h(a.starts,""),n.rE?0:t.length}if(o(t,x))throw new Error('Illegal lexeme "'+t+'" for mode "'+(x.cN||"")+'"');return E+=t,t.length||1}var v=y(e);if(!v)throw new Error('Unknown language: "'+e+'"');l(v);var k,x=i||v,C={},M="";for(k=x;k!=v;k=k.parent)k.cN&&(M=p(k.cN,"",!0)+M);var E="",B=0;try{for(var $,z,L=0;;){if(x.t.lastIndex=L,$=x.t.exec(r),!$)break;z=_(r.substr(L,$.index-L),$[0]),L=$.index+z}for(_(r.substr(L)),k=x;k.parent;k=k.parent)k.cN&&(M+="");return{r:B,value:M,language:e,top:x}}catch(R){if(-1!=R.message.indexOf("Illegal"))return{r:0,value:t(r)};throw R}}function d(e,r){r=r||w.languages||Object.keys(N);var a={r:0,value:t(e)},n=a;return r.forEach(function(t){if(y(t)){var r=u(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}}),n.language&&(a.second_best=n),a}function b(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,w.tabReplace)})), w.useBR&&(e=e.replace(/\n/g,"")),e}function p(e,t,r){var a=t?k[t]:r,n=[e
[08/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/resources-jmx-example.adoc -- diff --git a/src/main/jbake/content/examples/resources-jmx-example.adoc b/src/main/jbake/content/examples/resources-jmx-example.adoc new file mode 100755 index 000..99f35b6 --- /dev/null +++ b/src/main/jbake/content/examples/resources-jmx-example.adoc @@ -0,0 +1,746 @@ += Custom resources in an EAR archive +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example resources-jmx-example can be browsed at https://github.com/apache/tomee/tree/master/examples/resources-jmx-example + + +TomEE allows you to define your own resources within your application, and declare them in `META-INF/resources.xml`. This allows you do inject these resource into any managed component within your application. + +In addition to this, you can also define a `create` method on either the resource itself, or on a POJO that acts as a factory. This example demonstrates using the `create` method to additionally register the resource as a JMX MBean, as well as make it available for injection. + +== Resource + +Custom resources can be defined using very simple Java classes. In this particular instance, as the application also wants to register this resource as an MBean, the resource class needs to follow the MBean specification. + + public class Hello implements HelloMBean { + + private AtomicInteger count = new AtomicInteger(0); + + @Override + public String greet(String name) { + if (name == null) { + throw new NullPointerException("Name cannot be null"); + } + + return "Hello, " + name; + } + + @Override + public int getCount() { + return count.get(); + } + + @Override + public void setCount(int value) { + count.set(value); + } + + @Override + public void increment() { + count.incrementAndGet(); + } + } + + public interface HelloMBean { + + public String greet(final String name); + + public int getCount(); + + public void setCount(int count); + + public void increment(); + + } + +== Create method + +To avoid adding the logic to register the resource as an MBean in every resource, the application provides a single class with a create() method that takes care of this logic for us. + + public class JMXBeanCreator { + + private static Logger LOGGER = Logger.getLogger(JMXBeanCreator.class.getName()); + private Properties properties; + + public Object create() throws MBeanRegistrationException { + // instantiate the bean + + final String code = properties.getProperty("code"); + final String name = properties.getProperty("name"); + + requireNotNull(code); + requireNotNull(name); + + try { + final Class cls = Class.forName(code, true, Thread.currentThread().getContextClassLoader()); + final Object instance = cls.newInstance(); + + final Field[] fields = cls.getDeclaredFields(); + for (final Field field : fields) { + + final String property = properties.getProperty(field.getName()); + if (property == null) { + continue; + } + + try { + field.setAccessible(true); + field.set(instance, Converter.convert(property, field.getType(), field.getName())); + } catch (Exception e) { + LOGGER.info(String.format("Unable to set value %s on field %s", property, field.getName())); + } + } + + final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + final ObjectName objectName = new ObjectName(name); + mbs.registerMBean(instance, objectName); + + return instance; + + } catch (final ClassNotFoundException e) { + LOGGER.severe("Unable to find class " + code); + throw new MBeanRegistrationException(e); + } catch (final InstantiationException e) { + LOGGER.severe("Unable to create instance of class " + code); + throw new MBeanRegistrationException(e); + } catch (final IllegalAccessException e) { + LOGGER.severe("Illegal access: " + code); + throw new MBeanRegistrationException(e); + } catch (final MalformedObjectNameE
[01/35] tomee-tomee-site-generator git commit: import from old website
Repository: tomee-tomee-site-generator Updated Branches: refs/heads/master [created] 972cc3567 http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/templates/footer.gsp -- diff --git a/src/main/jbake/templates/footer.gsp b/src/main/jbake/templates/footer.gsp new file mode 100755 index 000..2c24dc9 --- /dev/null +++ b/src/main/jbake/templates/footer.gsp @@ -0,0 +1,80 @@ + + + + + Apache TomEE the little great server. + "A good application in a good server" + + https://fr-fr.facebook.com/ApacheTomEE/";> + https://twitter.com/apachetomee";> + https://plus.google.com/communities/105208241852045684449";> + + + + + + Administration + + Cluster + Configuration + + + + Developer + + Classloading + IDE + Testing + Tools + + + + Advanced + + Application Composer + Setup + Shading + TomEE Embedded + + + + Community + + Contributors + Social + Sources + + + + + + + + Copyright © 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. + + + + + + + + Administrators + Developers + Advanced + Community + + + + + + + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/templates/header.gsp -- diff --git a/src/main/jbake/templates/header.gsp b/src/main/jbake/templates/header.gsp new file mode 100755 index 000..649d759 --- /dev/null +++ b/src/main/jbake/templates/header.gsp @@ -0,0 +1,45 @@ + + + + + + + + Apache TomEE + + + + + + + + + + + + + + + + + + + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-2717626-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { +var ga = document.createEleme
[06/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/simple-cdi-interceptor.adoc -- diff --git a/src/main/jbake/content/examples/simple-cdi-interceptor.adoc b/src/main/jbake/content/examples/simple-cdi-interceptor.adoc new file mode 100755 index 000..f29d9be --- /dev/null +++ b/src/main/jbake/content/examples/simple-cdi-interceptor.adoc @@ -0,0 +1,127 @@ += simple-cdi-interceptor +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example simple-cdi-interceptor can be browsed at https://github.com/apache/tomee/tree/master/examples/simple-cdi-interceptor + += Simple CDI Interceptor + +Let's write a simple application that would allow us to book tickets for a movie show. As with all applications, logging is one cross-cutting concern that we have. + +(Relevant snippets are inlined but you can check out the complete code, from the links provided) + +How do we mark which methods are to be intercepted ? Wouldn't it be handy to annotate a method like + + +[source,java] + +@Log +public void aMethod(){...} + +Let's create an annotation that would "mark" a method for interception. + +@InterceptorBinding +@Target({ TYPE, METHOD }) +@Retention(RUNTIME) +public @interface Log { +} + + + +Sure, you haven't missed the @InterceptorBinding annotation above ! Now that our custom annotation is created, lets attach it (or to use a better term for it, "bind it" ) +to an interceptor. + +So here's our logging interceptor. An @AroundInvoke method and we are almost done. + + +[source,java] + +@Interceptor +@Log //binding the interceptor here. now any method annotated with @Log would be intercepted by logMethodEntry +public class LoggingInterceptor { +@AroundInvoke +public Object logMethodEntry(InvocationContext ctx) throws Exception { +System.out.println("Entering method: " + ctx.getMethod().getName()); +//or logger.info statement +return ctx.proceed(); +} +} + + + +Now the @Log annotation we created is bound to this interceptor. + +That done, let's annotate at class-level or method-level and have fun intercepting ! + + +[source,java] + +@Log +@Stateful +public class BookShow implements Serializable { +private static final long serialVersionUID = 6350400892234496909L; +public List getMoviesList() { +List moviesAvailable = new ArrayList(); +moviesAvailable.add("12 Angry Men"); +moviesAvailable.add("Kings speech"); +return moviesAvailable; +} +public Integer getDiscountedPrice(int ticketPrice) { +return ticketPrice - 50; +} +// assume more methods are present +} + + + +The `@Log` annotation applied at class level denotes that all the methods should be intercepted with `LoggingInterceptor`. + +Before we say "all done" there's one last thing we are left with ! To enable the interceptors ! + +Lets quickly put up a [beans.xml file] + + +[source,xml] + + + +org.superbiz.cdi.bookshow.interceptors.LoggingInterceptor + + + + + + + in META-INF + + +Those lines in beans.xml not only "enable" the interceptors, but also define the "order of execution" of the interceptors. +But we'll see that in another example on multiple-cdi-interceptors. + +Fire up the test, and we should see a 'Entering method: getMoviesList' printed in the console. + += Tests +Apache OpenEJB 4.0.0-beta-2build: 2003-01:00 +http://tomee.apache.org/ +INFO - openejb.home = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors +INFO - openejb.base = /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors +INFO - Using 'javax.ejb.embeddable.EJBContainer=true' +INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service) +INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager) +INFO - Found EjbModule in classpath: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes +INFO - Beginning load: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes +INFO - Configuring enterprise application: /media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors +INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container) +INFO - Auto-creating a container for bean cdi-simple-interceptors.Comp: Container(type=MANAGED, id=Default Managed Container) +INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container) +INFO - Auto-creating a container for bean BookShow: Container(type=STATEFUL, id=Default Stateful Container) +INFO - Enterprise application "/media/fth
[07/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/rest-example.adoc -- diff --git a/src/main/jbake/content/examples/rest-example.adoc b/src/main/jbake/content/examples/rest-example.adoc new file mode 100755 index 000..c62eecb --- /dev/null +++ b/src/main/jbake/content/examples/rest-example.adoc @@ -0,0 +1,641 @@ += REST Example +:jbake-date: 2016-09-06 +:jbake-type: page +:jbake-tomeepdf: +:jbake-status: published + +Example rest-example can be browsed at https://github.com/apache/tomee/tree/master/examples/rest-example + + +*Help us document this example! Click the blue pencil icon in the upper right to edit this page.* + +== CommentDAO + + +[source,java] + +package org.superbiz.rest.dao; + +import org.superbiz.rest.model.Comment; +import org.superbiz.rest.model.Post; + +import javax.ejb.EJB; +import javax.ejb.Stateless; +import java.util.Collections; +import java.util.List; + +@Stateless +public class CommentDAO extends DAO { +@EJB +private DAO dao; + +public List list(long postId) { +Post post = dao.find(Post.class, postId); +if (post == null) { +throw new IllegalArgumentException("post with id " + postId + " not found"); +} +return Collections.unmodifiableList(post.getComments()); +} + +public Comment create(String author, String content, long postId) { +Post post = dao.find(Post.class, postId); +if (post == null) { +throw new IllegalArgumentException("post with id " + postId + " not found"); +} + +Comment comment = new Comment(); +comment.setAuthor(author); +comment.setContent(content); +dao.create(comment); +comment.setPost(post); +return comment; +} + +public void delete(long id) { +dao.delete(Comment.class, id); +} + +public Comment update(long id, String author, String content) { +Comment comment = dao.find(Comment.class, id); +if (comment == null) { +throw new IllegalArgumentException("comment with id " + id + " not found"); +} + +comment.setAuthor(author); +comment.setContent(content); +return dao.update(comment); +} +} + + + +== DAO + + +[source,java] + +package org.superbiz.rest.dao; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import java.util.List; + +/** + * Simply maps the entitymanager. + * It simplifies refactoring (unitName change) and wraps some logic (limited queries). + * + */ +@Stateless +public class DAO { +@PersistenceContext(unitName = "blog") +private EntityManager em; + +public E create(E e) { +em.persist(e); +return e; +} + +public E update(E e) { +return em.merge(e); +} + +public void delete(Class clazz, long id) { +em.remove(em.find(clazz, id)); +} + +public E find(Class clazz, long id) { +return em.find(clazz, id); +} + +public List find(Class clazz, String query, int min, int max) { +return queryRange(em.createQuery(query, clazz), min, max).getResultList(); +} + +public List namedFind(Class clazz, String query, int min, int max) { +return queryRange(em.createNamedQuery(query, clazz), min, max).getResultList(); +} + +private static Query queryRange(Query query, int min, int max) { +if (max >= 0) { +query.setMaxResults(max); +} +if (min >= 0) { +query.setFirstResult(min); +} +return query; +} +} + + + +== PostDAO + + +[source,java] + +package org.superbiz.rest.dao; + +import org.superbiz.rest.model.Post; +import org.superbiz.rest.model.User; + +import javax.ejb.EJB; +import javax.ejb.Stateless; +import java.util.List; + +@Stateless +public class PostDAO { +@EJB +private DAO dao; + +public Post create(String title, String content, long userId) { +User user = dao.find(User.class, userId); +Post post = new Post(); +post.setTitle(title); +post.setContent(content); +post.setUser(user); +return dao.create(post); +} + +public Post find(long id) { +return dao.find(Post.class, id); +} + +public List list(int first, int max) { +return dao.namedFind(Post.class, "post.list", first, max); +} + +public void delete(long id) { +dao.delete(Post.class, id); +} + +public Post update(long id, long userId, String title, String content) { +User user = dao.find(User.class, userId); +if (user == null) { +throw new IllegalArgumentException("user id " + id + " not found"); +} + +Post post = dao.find(Post.class, id); +if (post == null) { +
[30/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/bootstrap.css.map -- diff --git a/src/main/jbake/assets/css/bootstrap.css.map b/src/main/jbake/assets/css/bootstrap.css.map new file mode 100755 index 000..f944af4 --- /dev/null +++ b/src/main/jbake/assets/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labe ls.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;EAaE,eAAA;CDjBD;ACyBDEAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACg ED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgIDEAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKDEAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA ;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,eAAA;CH8O9C;AG7OmC;EAAW,eAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA ;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;C
[31/35] tomee-tomee-site-generator git commit: import from old website
http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/assets/css/bootstrap.css -- diff --git a/src/main/jbake/assets/css/bootstrap.css b/src/main/jbake/assets/css/bootstrap.css new file mode 100755 index 000..9910c44 --- /dev/null +++ b/src/main/jbake/assets/css/bootstrap.css @@ -0,0 +1,6782 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; + color: #33; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { +color: #000 !important; +text-shadow: none !important; +background: transparent !important; +-webkit-box-shadow: none !important; +box-shadow: none !important; + } + a, + a:visited { +text-decoration: underline; + } + a[href]:after { +content: " (" attr(href) ")"; + } + abbr[title]:after { +content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { +content: ""; + } + pre, + blockquote { +border: 1px solid #999; + +page-break-inside: avoid; + } + thead { +display: table-header-group; + } + tr, + img { +page-break-inside: avoid; + } + img { +max-width: 100% !important; + } + p, + h2, + h3 { +orphans: 3; +widows: 3; + } + h2, + h3 { +page-break-after: avoid; + } + .navbar { +display: none; + } + .btn > .caret, + .dropup > .btn > .caret { +border-top-color: #000 !important; + } + .label { +border: 1px solid #000; + } + .table { +border-collapse: collapse !important; + } + .table td, + .table th { +background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { +border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff
[jira] [Resolved] (TOMEE-2084) Update files with correct copyright.
[ https://issues.apache.org/jira/browse/TOMEE-2084?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jean-Louis MONTEIRO resolved TOMEE-2084. Resolution: Fixed Fix Version/s: 7.0.4 Thanks Daniel for the PR > Update files with correct copyright. > > > Key: TOMEE-2084 > URL: https://issues.apache.org/jira/browse/TOMEE-2084 > Project: TomEE > Issue Type: Task >Reporter: Daniel Cunha > Fix For: 7.0.4 > > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Created] (TOMEE-2085) AutoConfig::firstMatching sorting issue with java 8
Svetlin Zarev created TOMEE-2085: Summary: AutoConfig::firstMatching sorting issue with java 8 Key: TOMEE-2085 URL: https://issues.apache.org/jira/browse/TOMEE-2085 Project: TomEE Issue Type: Bug Reporter: Svetlin Zarev Java 8 changed the implementation of Collections.sort(). In java < 8 it always allocated a new array which was used for the actual sorting, and then the list was recreated with it's content. Starting with Jav a8, the sort() method delegates to the concrete implementation of the concrete list. For arrya list it works directly on the backing array, which violates the assumption of the current comparator impl, that the backing array is not modified during the actual sorting. Test case {code} public final class Main { public static void main(String[] args) { final Random random = new Random(); final String prefix = "0"; for (int k = 0; k < 1000; k++) { try { final List resourceIds = generateRandomData(random); sort(prefix, resourceIds); } catch (Exception e) { System.out.println(e); break; } System.out.println(k); } } private static void sort(final String prefix, final List resourceIds) { Collections.sort(resourceIds, new Comparator() { // sort from webapp to global resources @Override public int compare(final String o1, final String o2) { // don't change global order, just put app scoped resource before others if (o1.startsWith(prefix) && o2.startsWith(prefix)) { return resourceIds.indexOf(o1) - resourceIds.indexOf(o2); } else if (o1.startsWith(prefix)) { return -1; } else if (o2.startsWith(prefix)) { return 1; } // make it stable with prefixed comparison + keep existing ordering (bck compat) return resourceIds.indexOf(o1) - resourceIds.indexOf(o2); } }); } private static List generateRandomData(Random random) { final List resourceIds = new ArrayList<>(); for (int i = 0; i < 5000; i++) { resourceIds.add(Integer.toString(random.nextInt(3)) + random.nextInt(1000)); } return resourceIds; } } {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (TOMEE-2084) Update files with correct copyright.
[ https://issues.apache.org/jira/browse/TOMEE-2084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16073252#comment-16073252 ] ASF GitHub Bot commented on TOMEE-2084: --- Github user asfgit closed the pull request at: https://github.com/apache/tomee/pull/83 > Update files with correct copyright. > > > Key: TOMEE-2084 > URL: https://issues.apache.org/jira/browse/TOMEE-2084 > Project: TomEE > Issue Type: Task >Reporter: Daniel Cunha > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (TOMEE-2084) Update files with correct copyright.
[ https://issues.apache.org/jira/browse/TOMEE-2084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16073250#comment-16073250 ] ASF GitHub Bot commented on TOMEE-2084: --- Github user jeanouii commented on the issue: https://github.com/apache/tomee/pull/83 Thanks Daniel, pushed > Update files with correct copyright. > > > Key: TOMEE-2084 > URL: https://issues.apache.org/jira/browse/TOMEE-2084 > Project: TomEE > Issue Type: Task >Reporter: Daniel Cunha > -- This message was sent by Atlassian JIRA (v6.4.14#64029)
tomee git commit: TOMEE-2084 - Update files with correct copyright.
Repository: tomee Updated Branches: refs/heads/master 97b606b0d -> ccad627c0 TOMEE-2084 - Update files with correct copyright. Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ccad627c Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ccad627c Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ccad627c Branch: refs/heads/master Commit: ccad627c02e058bc42377652238f862de0eb7287 Parents: 97b606b Author: Daniel Cunha (soro) Authored: Mon Jul 3 10:24:02 2017 -0300 Committer: Daniel Cunha (soro) Committed: Mon Jul 3 10:24:02 2017 -0300 -- examples/javamail/README.md | 4 ++-- .../src/test/java/test/patch/MyMain.java | 17 - .../src/test/java/test/patch/foo/Another.java| 17 - tomee/apache-tomee/src/main/resources/tomee.bat | 19 --- 4 files changed, 38 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/tomee/blob/ccad627c/examples/javamail/README.md -- diff --git a/examples/javamail/README.md b/examples/javamail/README.md index 61ff594..fa239b2 100644 --- a/examples/javamail/README.md +++ b/examples/javamail/README.md @@ -51,7 +51,7 @@ You can find much more detailed information on the [Javamail API here](https://j //Create a message final MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("your@email.address")); -final InternetAddress[] address = {new InternetAddress("gene...@tomitribe.com")}; +final InternetAddress[] address = {new InternetAddress("gene...@email.com")}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject("JavaMail API test"); msg.setSentDate(new Date()); @@ -108,7 +108,7 @@ Finally to test it we use cxf client API to call the REST service post() method. @Test public void post() throws IOException { -final String message = WebClient.create("http://localhost:4204";).path("/test/email/").post("Hello Tomitribe", String.class); +final String message = WebClient.create("http://localhost:4204";).path("/test/email/").post("Hello General", String.class); assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message); } } http://git-wip-us.apache.org/repos/asf/tomee/blob/ccad627c/maven/tomee-maven-plugin/src/test/java/test/patch/MyMain.java -- diff --git a/maven/tomee-maven-plugin/src/test/java/test/patch/MyMain.java b/maven/tomee-maven-plugin/src/test/java/test/patch/MyMain.java index d9ef975..d56ade5 100644 --- a/maven/tomee-maven-plugin/src/test/java/test/patch/MyMain.java +++ b/maven/tomee-maven-plugin/src/test/java/test/patch/MyMain.java @@ -1,11 +1,18 @@ /* - * Tomitribe Confidential + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at * - * Copyright Tomitribe Corporation. 2016 + * http://www.apache.org/licenses/LICENSE-2.0 * - * The source code for this program is not published or otherwise divested - * of its trade secrets, irrespective of what has been deposited with the - * U.S. Copyright Office. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package test.patch; http://git-wip-us.apache.org/repos/asf/tomee/blob/ccad627c/maven/tomee-maven-plugin/src/test/java/test/patch/foo/Another.java -- diff --git a/maven/tomee-maven-plugin/src/test/java/test/patch/foo/Another.java b/maven/tomee-maven-plugin/src/test/java/test/patch/foo/Another.java index fe0608a..f7d74dc 100644 --- a/maven/tomee-maven-plugin/src/test/java/test/patch/foo/Another.java +++ b/maven/tomee-maven-plugin/src/test/java/test/patch/foo/Another.java @@ -1,11 +1,18 @@ /* - * Tomitribe Confidential + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work