You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@tomee.apache.org by bu...@apache.org on 2012/03/12 11:16:34 UTC

svn commit: r808376 - in /websites/staging/openejb/trunk: cgi-bin/ content/ content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/api/ content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command...

Author: buildbot
Date: Mon Mar 12 10:16:33 2012
New Revision: 808376

Log:
Staging update by buildbot for openejb

Added:
    websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/impl/SwitchClientCommand.java
    websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/util/ClientNameHolder.java
Modified:
    websites/staging/openejb/trunk/cgi-bin/   (props changed)
    websites/staging/openejb/trunk/content/   (props changed)
    websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/api/AbstractCommand.java
    websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-core/src/main/java/jug/dao/SubjectDao.java
    websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/PollingRouter.java
    websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/RoutingFilter.java

Propchange: websites/staging/openejb/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Mar 12 10:16:33 2012
@@ -1 +1 @@
-1299307
+1299612

Propchange: websites/staging/openejb/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Mar 12 10:16:33 2012
@@ -1 +1 @@
-1299307
+1299612

Modified: websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/api/AbstractCommand.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/api/AbstractCommand.java (original)
+++ websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/api/AbstractCommand.java Mon Mar 12 10:16:33 2012
@@ -1,5 +1,6 @@
 package jug.client.command.api;
 
+import jug.client.util.ClientNameHolder;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.codehaus.jettison.util.StringIndenter;
@@ -51,6 +52,9 @@ public abstract class AbstractCommand {
     public void setUrl(String url) {
         this.url = url;
         client = WebClient.create(url).accept(MediaType.APPLICATION_JSON);
+        if (ClientNameHolder.getCurrent() != null) {
+            client.query("client", ClientNameHolder.getCurrent());
+        }
     }
 
     public static String slurp(final InputStream from) throws IOException {

Added: websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/impl/SwitchClientCommand.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/impl/SwitchClientCommand.java (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/command/impl/SwitchClientCommand.java Mon Mar 12 10:16:33 2012
@@ -0,0 +1,30 @@
+package jug.client.command.impl;
+
+import jug.client.command.api.AbstractCommand;
+import jug.client.command.api.Command;
+import jug.client.util.ClientNameHolder;
+
+import javax.ws.rs.core.Response;
+import java.util.Map;
+
+@Command(name = "client", usage = "client <name>", description = "change client")
+public class SwitchClientCommand extends AbstractCommand {
+    private Map<String, Class<?>> commands;
+
+    @Override
+    public void execute(final String cmd) {
+        if (cmd.length() <= "client ".length()) {
+            System.err.println("please specify a client name (client1 or client2)");
+            return;
+        }
+
+        final String client = cmd.substring(7);
+        ClientNameHolder.setCurrent(client);
+    }
+
+    @Override
+    protected Response invoke(String cmd) {
+        return null;
+    }
+}
+

Added: websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/util/ClientNameHolder.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/util/ClientNameHolder.java (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-client/src/main/java/jug/client/util/ClientNameHolder.java Mon Mar 12 10:16:33 2012
@@ -0,0 +1,13 @@
+package jug.client.util;
+
+public class ClientNameHolder {
+    private static String current = null;
+
+    public static String getCurrent() {
+        return current;
+    }
+
+    public static void setCurrent(String current) {
+        ClientNameHolder.current = current;
+    }
+}

Modified: websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-core/src/main/java/jug/dao/SubjectDao.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-core/src/main/java/jug/dao/SubjectDao.java (original)
+++ websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-core/src/main/java/jug/dao/SubjectDao.java Mon Mar 12 10:16:33 2012
@@ -4,6 +4,7 @@ import jug.domain.Subject;
 import jug.domain.Value;
 import jug.domain.Vote;
 
+import javax.ejb.EJB;
 import javax.ejb.Lock;
 import javax.ejb.LockType;
 import javax.ejb.Singleton;
@@ -17,6 +18,9 @@ public class SubjectDao {
     @PersistenceContext(unitName = "polling")
     private EntityManager em;
 
+    @EJB
+    private ReadSubjectDao readDao;
+
     public Subject create(final String name, final String question) {
         final Subject subject = new Subject();
         subject.setName(name);
@@ -35,9 +39,11 @@ public class SubjectDao {
     }
 
     public Subject findByName(final String name) {
-        return em.createNamedQuery(Subject.FIND_BY_NAME_QUERY, Subject.class)
-                .setParameter("name", name)
-                .getSingleResult();
+        return readDao.findByName(name);
+    }
+
+    public Collection<Subject> findAll() {
+        return readDao.findAll();
     }
 
     public int subjectLikeVoteNumber(final String subjectName) {
@@ -67,10 +73,6 @@ public class SubjectDao {
         return t;
     }
 
-    public Collection<Subject> findAll() {
-        return em.createNamedQuery(Subject.FIND_ALL, Subject.class).getResultList();
-    }
-
     public Subject bestSubject() {
         int bestScore = 0;
         Subject best = null;
@@ -83,4 +85,12 @@ public class SubjectDao {
         }
         return best;
     }
+
+    @Singleton
+    @Lock(LockType.READ)
+    @PersistenceContext(name = "polling")
+    public static interface ReadSubjectDao {
+        Subject findByName(final String name);
+        Collection<Subject> findAll();
+    }
 }

Modified: websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/PollingRouter.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/PollingRouter.java (original)
+++ websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/PollingRouter.java Mon Mar 12 10:16:33 2012
@@ -7,7 +7,6 @@ import javax.sql.DataSource;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Logger;
 
 public class PollingRouter extends AbstractRouter {
     private Map<String, DataSource> dataSources = null;
@@ -35,7 +34,11 @@ public class PollingRouter extends Abstr
         currentDataSource.set(ds);
     }
 
-    private void init() {
+    private synchronized void init() {
+        if (dataSources != null) {
+            return;
+        }
+
         dataSources = new HashMap<String, DataSource>();
         for (String ds : Arrays.asList("jdbc/client1", "jdbc/client2")) {
             try {

Modified: websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/RoutingFilter.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/RoutingFilter.java (original)
+++ websites/staging/openejb/trunk/content/examples-trunk/polling-parent/polling-web/src/main/java/jug/routing/RoutingFilter.java Mon Mar 12 10:16:33 2012
@@ -31,7 +31,10 @@ public class RoutingFilter implements Fi
 
     @Override
     public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
-        final String client = getClient();
+        String client = servletRequest.getParameter("client");
+        if (client == null) {
+            client = getRandomClient();
+        }
         LOGGER.info("using client " + client);
         router.setDataSource(client);
         try {
@@ -41,7 +44,7 @@ public class RoutingFilter implements Fi
         }
     }
 
-    private String getClient() {
+    private String getRandomClient() {
         return "client" +  (1 + COUNTER.getAndIncrement() % 2); // 2 clients
     }