Just as an FYI as you don't know its there - there is an itest that
checks that all the dependency jars in the distribution are mentioned
in the LICENSE file, so when versions get changed the distribution
LICENSE file also needs to be updated or else the itest fails -
https://builds.apache.org/job/Tuscany-2x/org.apache.tuscany.sca$itest-distribution-legal-checks/239/console

The distribution LICENSE file is at
https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/distribution/all/src/main/release/bin/LICENSE

   ...ant

On Thu, Jun 9, 2011 at 9:35 AM,  <[email protected]> wrote:
> Author: fmoga
> Date: Thu Jun  9 08:35:42 2011
> New Revision: 1133713
>
> URL: http://svn.apache.org/viewvc?rev=1133713&view=rev
> Log:
> Use the BroadcasterLifeCyclePolicy and new callback mechanism from Atmosphere 
> to improve resource cleanup. Move to Atmosphere 0.8-SNAPSHOT.
>
> Modified:
>    tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml
>    
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
>    
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
>    
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
>
> Modified: tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml
> URL: 
> http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml?rev=1133713&r1=1133712&r2=1133713&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml 
> (original)
> +++ tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/pom.xml Thu Jun  
> 9 08:35:42 2011
> @@ -61,7 +61,7 @@
>         <dependency>
>                <groupId>org.atmosphere</groupId>
>                <artifactId>atmosphere-jersey</artifactId>
> -               <version>0.7.1</version>
> +               <version>0.8-SNAPSHOT</version>
>                <scope>compile</scope>
>         </dependency>
>        </dependencies>
> @@ -78,14 +78,12 @@
>                        </releases>
>                </repository>
>                <repository>
> -                       <id>oss-sonatype-repository</id>
> +                       <id>sonatype-releases</id>
>                        
> <url>https://oss.sonatype.org/content/repositories/releases/</url>
> -                       <snapshots>
> -                               <enabled>true</enabled>
> -                       </snapshots>
> -                       <releases>
> -                               <enabled>true</enabled>
> -                       </releases>
> +               </repository>
> +               <repository>
> +                       <id>sonatype-snapshots</id>
> +                       
> <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
>                </repository>
>  </repositories>
>
>
> Modified: 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
> URL: 
> http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java?rev=1133713&r1=1133712&r2=1133713&view=diff
> ==============================================================================
> --- 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
>  (original)
> +++ 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometCallbackInvoker.java
>  Thu Jun  9 08:35:42 2011
> @@ -65,9 +65,6 @@ public class CometCallbackInvoker implem
>         Message response = new MessageImpl();
>         if (broadcaster == null) {
>             response.setBody(Status.CLIENT_DISCONNECTED);
> -        } else if (broadcaster.getAtmosphereResources().isEmpty()) {
> -            CometSessionManager.remove(sessionId);
> -            response.setBody(Status.CLIENT_DISCONNECTED);
>         } else {
>             String callbackMethod = msg.getTo().getURI();
>             Object[] body = msg.getBody();
>
> Modified: 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
> URL: 
> http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java?rev=1133713&r1=1133712&r2=1133713&view=diff
> ==============================================================================
> --- 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
>  (original)
> +++ 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
>  Thu Jun  9 08:35:42 2011
> @@ -56,6 +56,16 @@ public final class ServletFactory {
>     private static final String JS_PACKAGE = 
> "org.apache.tuscany.sca.binding.comet.runtime.javascript";
>
>     /**
> +     * Init-param key for Atmosphere filters.
> +     */
> +    private static final String FILTERS_KEY = 
> "org.atmosphere.cpr.broadcastFilterClasses";
> +
> +    /**
> +     * Defined filters.
> +     */
> +    private static final String FILTERS = 
> "org.atmosphere.client.JavascriptClientFilter";
> +
> +    /**
>      * Path where services will be exposed.
>      */
>     public static final String PATH = "/tuscany-comet/*";
> @@ -99,8 +109,9 @@ public final class ServletFactory {
>     private static String registerCometServlet(ServletHost servletHost) {
>         if (ServletFactory.cometServlet == null) {
>             ServletFactory.cometServlet = new AtmosphereServlet();
> -            
> ServletFactory.cometServlet.addInitParameter(ServletFactory.PACKAGE_KEY, 
> ServletFactory.HANDLER_PACKAGE);
> -            String uri = servletHost.addServletMapping(ServletFactory.PATH, 
> ServletFactory.cometServlet);
> +            ServletFactory.cometServlet.addInitParameter(PACKAGE_KEY, 
> HANDLER_PACKAGE);
> +//            ServletFactory.cometServlet.addInitParameter(FILTERS_KEY, 
> FILTERS);
> +            String uri = servletHost.addServletMapping(PATH, cometServlet);
>             return uri;
>         }
>         return null;
> @@ -109,8 +120,8 @@ public final class ServletFactory {
>     private static void registerJavascriptServlet(ServletHost servletHost) {
>         if (ServletFactory.javascriptServlet == null) {
>             ServletFactory.javascriptServlet = new AtmosphereServlet();
> -            
> ServletFactory.javascriptServlet.addInitParameter(ServletFactory.PACKAGE_KEY, 
> ServletFactory.JS_PACKAGE);
> -            servletHost.addServletMapping(ServletFactory.JS_PATH, 
> ServletFactory.javascriptServlet);
> +            ServletFactory.javascriptServlet.addInitParameter(PACKAGE_KEY, 
> JS_PACKAGE);
> +            servletHost.addServletMapping(JS_PATH, javascriptServlet);
>         }
>     }
>
> @@ -121,8 +132,8 @@ public final class ServletFactory {
>      *            the underlying servlet host.
>      */
>     public static void unregisterServlet(final ServletHost servletHost) {
> -        servletHost.removeServletMapping(ServletFactory.PATH);
> -        servletHost.removeServletMapping(ServletFactory.JS_PATH);
> +        servletHost.removeServletMapping(PATH);
> +        servletHost.removeServletMapping(JS_PATH);
>     }
>
>  }
>
> Modified: 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
> URL: 
> http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java?rev=1133713&r1=1133712&r2=1133713&view=diff
> ==============================================================================
> --- 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
>  (original)
> +++ 
> tuscany/sca-java-2.x/trunk/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
>  Thu Jun  9 08:35:42 2011
> @@ -43,6 +43,9 @@ import org.apache.tuscany.sca.interfaced
>  import org.apache.tuscany.sca.invocation.Message;
>  import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
>  import org.atmosphere.cpr.Broadcaster;
> +import org.atmosphere.cpr.BroadcasterLifeCyclePolicy;
> +import org.atmosphere.cpr.BroadcasterLifeCyclePolicyListener;
> +import 
> org.atmosphere.cpr.BroadcasterLifeCyclePolicy.ATMOSPHERE_RESOURCE_POLICY;
>  import org.atmosphere.jersey.JerseyBroadcaster;
>  import org.atmosphere.jersey.SuspendResponse;
>
> @@ -73,6 +76,10 @@ public class CometBindingHandler {
>         Broadcaster broadcaster = CometSessionManager.get(sessionId);
>         if (broadcaster == null) {
>             broadcaster = new JerseyBroadcaster(sessionId);
> +            BroadcasterLifeCyclePolicy policy = new 
> BroadcasterLifeCyclePolicy.Builder().policy(
> +                    ATMOSPHERE_RESOURCE_POLICY.EMPTY_DESTROY).build();
> +            broadcaster.setBroadcasterLifeCyclePolicy(policy);
> +            broadcaster.addBroadcasterLifeCyclePolicyListener(new 
> CometBroadcasterLifeCyclePolicyListener(sessionId));
>             CometSessionManager.add(sessionId, broadcaster);
>         }
>         return new 
> SuspendResponse.SuspendResponseBuilder<String>().broadcaster(broadcaster).outputComments(true)
> @@ -110,9 +117,8 @@ public class CometBindingHandler {
>         if (!isVoidReturnType) {
>             Object response = wire.invoke(operation, args);
>             Broadcaster broadcaster = CometSessionManager.get(sessionId);
> -            broadcaster.broadcast(callbackMethod + "($.secureEvalJSON('" + 
> gson.toJson(response) + "'))");
> -            if (broadcaster.getAtmosphereResources().isEmpty()) {
> -                CometSessionManager.remove(sessionId);
> +            if (broadcaster != null) {
> +                broadcaster.broadcast(callbackMethod + "($.secureEvalJSON('" 
> + gson.toJson(response) + "'))");
>             }
>         } else {
>             wire.invoke(operation, msg);
> @@ -205,4 +211,27 @@ public class CometBindingHandler {
>         return objects.toArray(new String[] {});
>     }
>
> +    public class CometBroadcasterLifeCyclePolicyListener implements 
> BroadcasterLifeCyclePolicyListener {
> +
> +        private String sessionId;
> +
> +        public CometBroadcasterLifeCyclePolicyListener(String sessionId) {
> +            this.sessionId = sessionId;
> +        }
> +
> +        @Override
> +        public void onDestroy() {
> +        }
> +
> +        @Override
> +        public void onEmpty() {
> +            CometSessionManager.remove(sessionId);
> +        }
> +
> +        @Override
> +        public void onIdle() {
> +        }
> +
> +    }
> +
>  }
>
>
>

Reply via email to