Author: antelder
Date: Thu Jun 24 10:50:21 2010
New Revision: 957504

URL: http://svn.apache.org/viewvc?rev=957504&view=rev
Log:
TUSCANY-3517: Apply latest updates from async-servlet-sca-0.0.4.zip

Modified:
    
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java
    
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java
    
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/TestServlet.java

Modified: 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java?rev=957504&r1=957503&r2=957504&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java
 Thu Jun 24 10:50:21 2010
@@ -26,21 +26,21 @@ import org.apache.log4j.Logger;
 
 public class StockServiceImpl implements StockService {
 
-       public static final int MAX_VALUE = 1000;
-       private Random random = new Random(new Date().getTime());
-       private Logger logger = Logger.getLogger(StockServiceImpl.class);
+    public static final int MAX_VALUE = 1000;
+    private Random random = new Random(new Date().getTime());
+    private Logger logger = Logger.getLogger(StockServiceImpl.class);
 
-       @Override
-       public String getSymbol() {
-               logger.debug("Getting symbol...");
-               return "ASF";
-       }
+    @Override
+    public String getSymbol() {
+        logger.debug("Getting symbol...");
+        return "ASF";
+    }
 
-       @Override
-       public Double getValue() {
-               logger.debug("Getting value...");
-               Double value = Math.abs(random.nextDouble() * 
random.nextInt(MAX_VALUE));
-               return Double.valueOf(new DecimalFormat("#.##").format(value));
-       }
+    @Override
+    public Double getValue() {
+        logger.debug("Getting value...");
+        Double value = Math.abs(random.nextDouble() * 
random.nextInt(MAX_VALUE));
+        return Double.valueOf(new DecimalFormat("#.##").format(value));
+    }
 
 }

Modified: 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java?rev=957504&r1=957503&r2=957504&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java
 (original)
+++ 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java
 Thu Jun 24 10:50:21 2010
@@ -20,10 +20,9 @@ package sample;
 
 import java.io.IOException;
 import java.io.Writer;
-import java.util.Timer;
-import java.util.TimerTask;
 
 import javax.servlet.AsyncContext;
+import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
@@ -31,95 +30,124 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.log4j.Logger;
+import org.oasisopen.sca.ComponentContext;
 import org.oasisopen.sca.annotation.Reference;
 
 @WebServlet(asyncSupported = true, urlPatterns = "/stock")
 public class StockServlet extends HttpServlet {
-       private static final long serialVersionUID = 1L;
-       private static final long MILLIS_PER_SECOND = 1000L;
-
-       // @Reference
-       private StockService service = new StockServiceImpl();
-       private AsyncContext asyncContext;
-       private Timer timer;
-       private long updatePeriod = 1L; // default 1 sec
-       private Logger logger = Logger.getLogger(StockServlet.class);
-
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-                       throws ServletException {
-               logger.debug("Received request.");
-               logger.debug("Starting async context...");
-               asyncContext = req.startAsync();
-               resp.setContentType("text/html");
-
-               logger.debug("Sending initial response...");
-               try {
-                       Writer writer = asyncContext.getResponse().getWriter();
-                       writer.write("<html>\n");
-                       writer.write("<head>\n");
-                       writer.write("<title>Stock Monitor</title>\n");
-
-                       writer.write("<script type=\"text/javascript\">\n");
-                       writer.write("function updateData(data) {\n");
-                       writer.write("var aux = data.split('#');\n");
-                       writer
-                                       
.write("document.getElementById('symbol').textContent = aux[0];\n");
-                       writer
-                                       
.write("document.getElementById('price').textContent = aux[1];\n");
-                       writer.write("}\n");
-                       writer.write("</script>\n");
-                       writer.write("</head>\n");
-                       writer.write("<body>\n");
-                       writer.write("<h2>Apache Tuscany Asynchronous Servlet 
Sample</h2>\n");
-                       writer.write("<h3>Stock Monitor</h3>\n");
-                       writer.write("<b><label>Company Symbol: 
</label></b>\n");
-                       writer.write("<span id=\"symbol\"></span>\n");
-                       writer.write("<b><label>Price: </label></b>\n");
-                       writer.write("<span id=\"price\"></span>\n");
-                       writer.write("</body>\n");
-                       writer.write("</html>\n");
-                       resp.flushBuffer();
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
-
-               logger.debug("Service reference: " + service);
-               logger.debug("Setting timer...");
-               timer = new Timer();
-               logger.debug("Setting update period...");
-               if (req.getParameter("interval") != null) {
-                       this.updatePeriod = 
Long.parseLong(req.getParameter("interval"));
-               }
-               timer.scheduleAtFixedRate(new StockTask(), 0, updatePeriod * 
MILLIS_PER_SECOND);
-               logger.debug("Exiting doGet method...");
-       }
-
-       public void updateClient() {
-               try {
-                       logger.debug("Updating response...");
-                       Writer writer = asyncContext.getResponse().getWriter();
-                       writer.write("<script type=\"text/javascript\">\n");
-                       writer.write("updateData('" + service.getSymbol() + "#" 
+ service.getValue()    + "');\n");
-                       writer.write("</script>\n");
-                       // writer.write("Symbol: " + service.getSymbol() + ", 
Price: " + service.getValue() + "\n");
-                       writer.flush();
-                       asyncContext.getResponse().flushBuffer();
-                       logger.debug("Flushed response.");
-               } catch (IOException e) {
-                       logger.debug(e.getMessage(), e);
-                       asyncContext.complete();
-               }
-       }
-
-       // -----------------------------------------------------------
-
-       public class StockTask extends TimerTask {
-
-               @Override
-               public void run() {
-                       updateClient();
-               }
-
-       }
+    private static final long serialVersionUID = 1L;
+    private static final long MILLIS_PER_SECOND = 1000L;
+    private static final long DEFAULT_UPDATE_INTERVAL = 1L; // default 1 sec
+
+    @Reference
+    protected StockService service;
+    private Logger logger = Logger.getLogger(StockServlet.class);
+
+    public void init(ServletConfig servletConfig) throws ServletException {
+        if (service == null) {
+            logger.debug("Service reference injection failed, using 
ComponentContext...");
+            ComponentContext cc =
+                
(ComponentContext)servletConfig.getServletContext().getAttribute("org.oasisopen.sca.ComponentContext");
+            service = cc.getService(StockService.class, "service");
+        } else {
+            logger.debug("Service reference succesfully injected.");
+        }
+    }
+
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException {
+        logger.debug("Received request.");
+        logger.debug("Starting async context...");
+
+        AsyncContext asyncContext = req.startAsync();
+        resp.setContentType("text/html");
+
+        logger.debug("Sending initial response...");
+        try {
+            Writer writer = asyncContext.getResponse().getWriter();
+            writer.write("<html>\n");
+            writer.write("<head>\n");
+            writer.write("<title>Stock Monitor</title>\n");
+
+            writer.write("<script type=\"text/javascript\">\n");
+            writer.write("function updateData(data) {\n");
+            writer.write("var aux = data.split('#');\n");
+            writer.write("document.getElementById('symbol').textContent = 
aux[0];\n");
+            writer.write("document.getElementById('price').textContent = 
aux[1];\n");
+            writer.write("}\n");
+            writer.write("</script>\n");
+            writer.write("</head>\n");
+            writer.write("<body>\n");
+            writer.write("<h2>Apache Tuscany Asynchronous Servlet 
Sample</h2>\n");
+            writer.write("<h3>Stock Monitor</h3>\n");
+            writer.write("<b><label>Company Symbol: </label></b>\n");
+            writer.write("<span id=\"symbol\"></span>\n");
+            writer.write("<b><label>Price: </label></b>\n");
+            writer.write("<span id=\"price\"></span>\n");
+            writer.write("</body>\n");
+            writer.write("</html>\n");
+            resp.flushBuffer();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        logger.debug("Service reference: " + service);
+
+        logger.debug("Starting updates...");
+        if (req.getParameter("interval") != null) {
+            logger.debug("Using custom update interval value...");
+            long updateInterval = Long.parseLong(req.getParameter("interval"));
+            new Thread(new StockTask(asyncContext, updateInterval * 
MILLIS_PER_SECOND)).start();
+        } else {
+            logger.debug("Using default update interval value...");
+            new Thread(new StockTask(asyncContext, DEFAULT_UPDATE_INTERVAL * 
MILLIS_PER_SECOND)).start();
+        }
+
+        logger.debug("Exiting doGet method...");
+    }
+
+    // -----------------------------------------------------------
+
+    public class StockTask implements Runnable {
+
+        private AsyncContext asyncContext;
+        private long updateInterval;
+
+        public StockTask(AsyncContext asyncContext, long updateInterval) {
+            super();
+            this.asyncContext = asyncContext;
+            this.updateInterval = updateInterval;
+        }
+
+        public void setAsyncContext(AsyncContext asyncContext) {
+            this.asyncContext = asyncContext;
+        }
+
+        public void setUpdateInterval(long updateInterval) {
+            this.updateInterval = updateInterval;
+        }
+
+        @Override
+        public void run() {
+            try {
+                while (true) {
+                    logger.debug("Updating response...");
+                    Writer writer = asyncContext.getResponse().getWriter();
+                    writer.write("<script type=\"text/javascript\">\n");
+                    writer.write("updateData('" + service.getSymbol() + "#" + 
service.getValue() + "');\n");
+                    writer.write("</script>\n");
+                    writer.flush();
+                    asyncContext.getResponse().flushBuffer();
+                    logger.debug("Flushed response.");
+                    Thread.sleep(updateInterval);
+                }
+            } catch (IOException e) {
+                logger.debug(e.getMessage(), e);
+                asyncContext.complete();
+            } catch (InterruptedException e) {
+                logger.debug(e.getMessage(), e);
+                asyncContext.complete();
+            }
+        }
+    }
 
 }

Modified: 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/TestServlet.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/TestServlet.java?rev=957504&r1=957503&r2=957504&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/TestServlet.java
 (original)
+++ 
tuscany/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/TestServlet.java
 Thu Jun 24 10:50:21 2010
@@ -32,40 +32,39 @@ import org.apache.log4j.Logger;
 
 @WebServlet(asyncSupported = true, urlPatterns = "/test")
 public class TestServlet extends HttpServlet {
-       private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-       private AsyncContext asyncContext;
-       private Logger logger = Logger.getLogger(TestServlet.class);
+    private AsyncContext asyncContext;
+    private Logger logger = Logger.getLogger(TestServlet.class);
 
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-                       throws ServletException {
-               logger.debug("Received test request.");
-               logger.debug("Gathering async context...");
-               asyncContext = req.startAsync();
-               resp.setContentType("text/plain");
-
-               logger.debug("Gathering writer...");
-               Writer writer;
-               try {
-                       writer = asyncContext.getResponse().getWriter();
-                       for (int i = 0; i < 10; i++) {
-                               Thread.sleep(1000);
-                               logger.debug("Sending " + i + "...");
-                               writer.write("" + i + "\n");
-                               writer.flush();
-                               resp.flushBuffer();
-                       }
-
-                       logger.debug("Completing response...");
-                       asyncContext.complete();
-                       writer.close();
-               } catch (IOException e1) {
-                       asyncContext.complete();
-                       e1.printStackTrace();
-               } catch (InterruptedException e) {
-                       asyncContext.complete();
-                       e.printStackTrace();
-               }
-       }
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException {
+        logger.debug("Received test request.");
+        logger.debug("Gathering async context...");
+        asyncContext = req.startAsync();
+        resp.setContentType("text/plain");
+
+        logger.debug("Gathering writer...");
+        Writer writer;
+        try {
+            writer = asyncContext.getResponse().getWriter();
+            for (int i = 0; i < 10; i++) {
+                Thread.sleep(1000);
+                logger.debug("Sending " + i + "...");
+                writer.write("" + i + "\n");
+                writer.flush();
+                resp.flushBuffer();
+            }
+
+            logger.debug("Completing response...");
+            asyncContext.complete();
+            writer.close();
+        } catch (IOException e1) {
+            asyncContext.complete();
+            e1.printStackTrace();
+        } catch (InterruptedException e) {
+            asyncContext.complete();
+            e.printStackTrace();
+        }
+    }
 
-}
\ No newline at end of file
+}


Reply via email to