<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 19, 2013 at 5:47 PM, Bruno Oliveira <span dir="ltr">&lt;<a href="mailto:bruno@abstractj.org" target="_blank">bruno@abstractj.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Matthias I have some questions.<br>
<div class="im"><br>
Matthias Wessendorf wrote:<br>
&gt; FYI<br>
&gt;<br>
&gt; JIRAs for the &quot;initial&quot; security work:<br>
&gt;<br>
&gt;<br>
&gt; All the endpoints are now secured:<br>
&gt; <a href="https://issues.jboss.org/browse/AGPUSH-59" target="_blank">https://issues.jboss.org/browse/AGPUSH-59</a><br>
&gt;<br>
&gt; Details on the actual enpoints, on the AGSEC JIRA:<br>
&gt;<br>
<br>
</div>For the endpoints below.<br>
<div class="im"><br>
&gt; Enpoint for Push Apps is secure (using AG-Security):<br>
&gt; <a href="https://issues.jboss.org/browse/AGSEC-51" target="_blank">https://issues.jboss.org/browse/AGSEC-51</a><br>
<br>
</div>Why?<br>
<br>
-<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L52" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L52</a><br>

<br>
-<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L74" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L74</a><br>

<br>
-<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L84" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L84</a><br>

<br>
-<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L102" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L102</a><br>

<br>
-<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L131" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/PushApplicationEndpoint.java#L131</a><br>

<div class="im"><br>
<br>
&gt;<br>
&gt; Enpoint for {Android|iOS|SimplePush} Variants is secure (using AG-Security):<br>
&gt; <a href="https://issues.jboss.org/browse/AGSEC-52" target="_blank">https://issues.jboss.org/browse/AGSEC-52</a><br>
<br>
</div><a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/AndroidVariantEndpoint.java#L67" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/AndroidVariantEndpoint.java#L67</a><br>

<br>
Well the same to the rest of the code and endpoints. Why are we doing<br>
it? As far as I know we just introduced an interceptor for it:<br>
<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/cdi/interceptor/SecurityInterceptor.java#L50" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/cdi/interceptor/SecurityInterceptor.java#L50</a><br>

<br>
Which could be used with:<br>
<br>
@Secure({admin, developer})<br>
public void myPrettyEndpoint(){}<br>
<br>
If I&#39;m reading it correctly, you&#39;re not checking for which roles the<br>
current logged in user has<br>
<a href="https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/AbstractApplicationRegistrationEndpoint.java#L27" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/blob/master/src/main/java/org/jboss/aerogear/connectivity/rest/registry/applications/AbstractApplicationRegistrationEndpoint.java#L27</a></blockquote>
<div><br></div><div><br></div><div style>correct - currenlty there are no real different roles. It&#39;s (currently) just a &quot;developer&quot;.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
We have 2 alternatives:<br>
<br>
- If the interceptors are not a good fit, just delete it<br></blockquote><div><br></div><div style>I think I didn&#39;t use it, because it throws an RT exception (no problem with that), which I could catch on the RestEasy layer.</div>
<div style>Instead of (for unauthorized invokes) returning 401 (to cURL, for instance), it was just &quot;bad request&quot;.</div><div style><br></div><div style>So, I went for the &quot;check by code&quot; solution first. Not saying that I am AGAINST the interceptor.</div>
<div style><br></div><div style>I think on the long run that would be better and cleaner.   </div><div style><br></div><div style><br></div><div style>I can give the Interceptor another shot, but not today.</div><div style>
<br></div><div style>Ok ? </div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- Refactor the whole group of endpoints to make use of interceptors<br>
<br>
Let me know what do you want to do.<br>
<div class="im"><br>
<br>
&gt;<br>
&gt; Enpoint for Device Registration is secure (Using HTTP Basic):<br>
&gt; <a href="https://issues.jboss.org/browse/AGSEC-50" target="_blank">https://issues.jboss.org/browse/AGSEC-50</a><br>
&gt;<br>
&gt; Enpoint for SENDING is secure (Using HTTP Basic):<br>
&gt; <a href="https://issues.jboss.org/browse/AGSEC-54" target="_blank">https://issues.jboss.org/browse/AGSEC-54</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Jun 19, 2013 at 11:56 AM, Bruno Oliveira &lt;<a href="mailto:bruno@abstractj.org">bruno@abstractj.org</a><br>
</div><div class="im">&gt; &lt;mailto:<a href="mailto:bruno@abstractj.org">bruno@abstractj.org</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Thanks Sebi, I&#39;ll look at this.<br>
&gt;<br>
&gt;     Sebastien Blanc wrote:<br>
&gt;      &gt; FYI,<br>
&gt;      &gt;<br>
&gt;      &gt; A &quot;security&quot; Java Sender branch has also been pushed :<br>
&gt;      &gt;<br>
&gt;     <a href="https://github.com/aerogear/aerogear-unified-push-java-client/tree/security" target="_blank">https://github.com/aerogear/aerogear-unified-push-java-client/tree/security</a><br>
&gt;      &gt; It&#39;s using preemptive Basic Http Authentification but we will<br>
&gt;     switch to<br>
&gt;      &gt; a more &quot;classic&quot; flow when AGPUSH-99 will be resolved.<br>
&gt;      &gt;<br>
&gt;      &gt; Like Matthias said is &quot;all in progress&quot; work but &quot;Push early,<br>
&gt;     Push often&quot;<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt; On Wed, Jun 19, 2013 at 8:38 AM, Christos Vasilakis<br>
&gt;     &lt;<a href="mailto:cvasilak@gmail.com">cvasilak@gmail.com</a> &lt;mailto:<a href="mailto:cvasilak@gmail.com">cvasilak@gmail.com</a>&gt;<br>
</div><div class="im">&gt;      &gt; &lt;mailto:<a href="mailto:cvasilak@gmail.com">cvasilak@gmail.com</a> &lt;mailto:<a href="mailto:cvasilak@gmail.com">cvasilak@gmail.com</a>&gt;&gt;&gt; wrote:<br>
&gt;      &gt;<br>
&gt;      &gt;     looks great!<br>
&gt;      &gt;<br>
&gt;      &gt;     On Jun 17, 2013, at 3:52 PM, Matthias Wessendorf<br>
&gt;     &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a> &lt;mailto:<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;<br>
</div><div><div class="h5">&gt;      &gt; &lt;mailto:<a href="mailto:matzew@apache.org">matzew@apache.org</a> &lt;mailto:<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;&gt;&gt; wrote:<br>
&gt;      &gt;<br>
&gt;      &gt;&gt;     Hi,<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     I worked a bit on the initial security, after Bruno release the<br>
&gt;      &gt;&gt;     1.0.1 versions of AG-Security.<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     &lt;<a href="https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#management-of-pushapplications-and-mobilevariants" target="_blank">https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#management-of-pushapplications-and-mobilevariants</a>&gt;Management<br>

&gt;      &gt;&gt;         of PushApplications and MobileVariants<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     Adding a (simple) /DEVELOPER/ class (just that, no /fancy/<br>
&gt;     roles yet).<br>
&gt;      &gt;&gt;     This is powered by AG-Security and the very wellknown<br>
&gt;      &gt;&gt; &quot;login&quot;/&quot;logout&quot; will be used (and soon &quot;enroll&quot; for new users).<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     A /DEVELOPER/ is allowed to create/manage PushApplications and<br>
&gt;      &gt;&gt;     MobileVariants (including the standard CRUD flow).<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     Here is a little cURL based flow:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt; &lt;<a href="https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#login" target="_blank">https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#login</a>&gt;Login:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     |curl -v -b cookies.txt -c cookies.txt<br>
&gt;      &gt;&gt;        -H&quot;Accept: application/json&quot;  -H&quot;Content-type:<br>
&gt;     application/json&quot;<br>
&gt;      &gt;&gt;        -X POST<br>
&gt;      &gt;&gt;        -d&#39;{&quot;loginName&quot;:&quot;admin&quot;,&quot;password&quot;:&quot;123&quot;}&#39;<br>
&gt;      &gt;&gt; <a href="http://localhost:8080/ag-push/rest/auth/login" target="_blank">http://localhost:8080/ag-push/rest/auth/login</a><br>
&gt;      &gt;&gt;     |<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     &lt;<a href="https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#create-new-pushapp" target="_blank">https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#create-new-pushapp</a>&gt;Create<br>
&gt;      &gt;&gt;             new PushApp:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     |curl -v -b cookies.txt -c cookies.txt -v<br>
&gt;      &gt;&gt;        -H&quot;Accept: application/json&quot;  -H&quot;Content-type:<br>
&gt;     application/json&quot;<br>
&gt;      &gt;&gt;        -X POST<br>
&gt;      &gt;&gt;        -d&#39;{&quot;name&quot;  :&quot;MyApp&quot;,&quot;description&quot;  :&quot;awesome app&quot;  }&#39;<br>
&gt;      &gt;&gt; <a href="http://localhost:8080/ag-push/rest/applications" target="_blank">http://localhost:8080/ag-push/rest/applications</a><br>
&gt;      &gt;&gt;     |<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     &lt;<a href="https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#create-variant-here-simplepush-for-it" target="_blank">https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#create-variant-here-simplepush-for-it</a>&gt;Create<br>

&gt;      &gt;&gt;             Variant (here SimplePush) for it:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     |curl -v -b cookies.txt -c cookies.txt -v<br>
&gt;      &gt;&gt;        -H&quot;Accept: application/json&quot;  -H&quot;Content-type:<br>
&gt;     application/json&quot;<br>
&gt;      &gt;&gt;        -X POST<br>
&gt;      &gt;&gt;        -d&#39;{&quot;pushNetworkURL&quot;  :&quot;<a href="http://localhost:7777/endpoint/" target="_blank">http://localhost:7777/endpoint/</a>&quot;}&#39;<br>
&gt;      &gt;&gt;<br>
&gt;     <a href="http://localhost:8080/ag-push/rest/applications/{PUSH_APP_ID}/simplePush" target="_blank">http://localhost:8080/ag-push/rest/applications/{PUSH_APP_ID}/simplePush</a><br>
&gt;     &lt;<a href="http://localhost:8080/ag-push/rest/applications/%7BPUSH_APP_ID%7D/simplePush" target="_blank">http://localhost:8080/ag-push/rest/applications/%7BPUSH_APP_ID%7D/simplePush</a>&gt;<br>
&gt;      &gt;&gt;     |<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     &lt;<a href="https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#sending-push-notifications" target="_blank">https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#sending-push-notifications</a>&gt;Sending<br>

&gt;      &gt;&gt;         Push Notifications<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     When a PushApplication is created, it will get a GENERATED<br>
&gt;      &gt;&gt;     /PUSH-APP-ID/ (like before) and it will also have a generated<br>
&gt;      &gt;&gt;     /master secret/. For sending (NOW) you need HTTP BASIC auth<br>
&gt;      &gt;&gt;     against the SENDER HTTP interface:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     |curl -u&quot;{PushApplicationID}:{MasterSecret}&quot;<br>
&gt;      &gt;&gt;         -v -H&quot;Accept: application/json&quot;  -H&quot;Content-type:<br>
&gt;     application/json&quot;<br>
&gt;      &gt;&gt;         -X POST<br>
&gt;      &gt;&gt;<br>
&gt;     -d&#39;{&quot;key&quot;:&quot;value&quot;,&quot;alert&quot;:&quot;HELLO!&quot;,&quot;sound&quot;:&quot;default&quot;,&quot;badge&quot;:7,<br>
&gt;      &gt;&gt; &quot;simple-push&quot;:&quot;version=123&quot;}&#39;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt; <a href="http://localhost:8080/ag-push/rest/sender/broadcast" target="_blank">http://localhost:8080/ag-push/rest/sender/broadcast</a><br>
&gt;      &gt;&gt;     |<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     The user is a combination of PushApplicationID:MasterSecret,<br>
&gt;     hence<br>
&gt;      &gt;&gt;     no need to include the PushApplicationID on the URL.....<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     &lt;<a href="https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#device-registration" target="_blank">https://gist.github.com/anonymous/b82b7bb1b2d1ab36f92d#device-registration</a>&gt;Device<br>
&gt;      &gt;&gt;         Registration<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     When a MobileVariant is created, it will get a GENERATED<br>
&gt;      &gt;&gt;     /VARIANT-ID/ (like before) and it will have a generated &quot;variant<br>
&gt;      &gt;&gt;     secret&quot; (valid ONLY!!! for that variant). Now a device needs to<br>
&gt;      &gt;&gt;     perform HTTP basic against that server, in order to register<br>
&gt;     itself:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     An Android (cURL) example:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     |curl -u&quot;{MobileVariantID}:{secret}&quot;<br>
&gt;      &gt;&gt;         -v -H&quot;Accept: application/json&quot;  -H&quot;Content-type:<br>
&gt;     application/json&quot;<br>
&gt;      &gt;&gt;         -X POST<br>
&gt;      &gt;&gt;         -d&#39;{<br>
&gt;      &gt;&gt; &quot;deviceToken&quot;  :&quot;someTokenString&quot;,<br>
&gt;      &gt;&gt; &quot;deviceType&quot;  :&quot;ANDROID&quot;,<br>
&gt;      &gt;&gt; &quot;mobileOperatingSystem&quot;  :&quot;android&quot;,<br>
&gt;      &gt;&gt; &quot;osVersion&quot;  :&quot;4.0.1&quot;<br>
&gt;      &gt;&gt;          }&#39;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt; <a href="http://localhost:8080/ag-push/rest/registry/device" target="_blank">http://localhost:8080/ag-push/rest/registry/device</a><br>
&gt;      &gt;&gt;     |<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     The user is a combination of MobileVariantID:MasterSecret, hence<br>
&gt;      &gt;&gt;     no need to include the MobileVariantID (was a http header in the<br>
&gt;      &gt;&gt;     past).<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     The work lives on a branch for now:<br>
&gt;      &gt;&gt;<br>
&gt;     <a href="https://github.com/aerogear/aerogear-unified-push-server/tree/endpoint-security" target="_blank">https://github.com/aerogear/aerogear-unified-push-server/tree/endpoint-security</a><br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     FYI, the iOS SDK has been updated to reflect that:<br>
&gt;      &gt;&gt;<br>
&gt;     <a href="https://github.com/matzew/aerogear-push-ios-registration/commit/ef8001684c38144b5a8fb05abbb87d0ddf452b07" target="_blank">https://github.com/matzew/aerogear-push-ios-registration/commit/ef8001684c38144b5a8fb05abbb87d0ddf452b07</a><br>

&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     --<br>
&gt;      &gt;&gt;     Matthias Wessendorf<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;      &gt;&gt;     sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;      &gt;&gt;     twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;      &gt;&gt;     _______________________________________________<br>
&gt;      &gt;&gt;     aerogear-dev mailing list<br>
&gt;      &gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>&gt;<br>
</div></div>&gt;     &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<div class="im">&gt;     &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>&gt;&gt;<br>
&gt;      &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;     _______________________________________________<br>
&gt;      &gt;     aerogear-dev mailing list<br>
&gt;      &gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>&gt;<br>
</div>&gt;     &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<div class="im">&gt;     &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>&gt;&gt;<br>
&gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt; _______________________________________________<br>
&gt;      &gt; aerogear-dev mailing list<br>
&gt;      &gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a> &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>&gt;<br>
&gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;<br>
</div><div class="im">&gt;     --<br>
&gt;     abstractj<br>
&gt;<br>
&gt;     _______________________________________________<br>
&gt;     aerogear-dev mailing list<br>
</div>&gt;     <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a> &lt;mailto:<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>&gt;<br>
<div class="HOEnZb"><div class="h5">&gt;     <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Matthias Wessendorf<br>
&gt;<br>
&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; aerogear-dev mailing list<br>
&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
<br>
--<br>
abstractj<br>
<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div>