You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2013/02/14 17:22:10 UTC

svn commit: r1446266 - in /tomee/tomee/trunk/server: openejb-client/src/main/java/org/apache/openejb/client/ openejb-multicast/src/main/java/org/apache/openejb/server/discovery/

Author: andygumbrecht
Date: Thu Feb 14 16:22:09 2013
New Revision: 1446266

URL: http://svn.apache.org/r1446266
Log:
Resolve https://issues.apache.org/jira/browse/OPENEJB-2000

Modified:
    tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/CommandParser.java
    tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/GenericServiceLocator.java
    tomee/tomee/trunk/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java

Modified: tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/CommandParser.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/CommandParser.java?rev=1446266&r1=1446265&r2=1446266&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/CommandParser.java (original)
+++ tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/CommandParser.java Thu Feb 14 16:22:09 2013
@@ -24,11 +24,11 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
-* @version $Rev$ $Date$
-*/
+ * @version $Rev$ $Date$
+ */
+@SuppressWarnings("UseOfSystemOutOrSystemErr")
 public class CommandParser {
 
     private final Map<String, Option> opts = new LinkedHashMap<String, Option>();
@@ -37,9 +37,10 @@ public class CommandParser {
         init();
     }
 
-    protected void init(){}
+    protected void init() {
+    }
 
-    protected List<String> validate(Arguments arguments) {
+    protected List<String> validate(final Arguments arguments) {
         return new ArrayList<String>();
     }
 
@@ -47,21 +48,22 @@ public class CommandParser {
         return new ArrayList<String>();
     }
 
-    public void category(String name) {
+    public void category(final String name) {
         opts.put("-@" + name, new Category(name));
     }
 
-    public Option opt(String _long) {
+    public Option opt(final String _long) {
         return opt(new Option(_long));
     }
 
-    public Option opt(char _short, String _long) {
+    public Option opt(final char _short, final String _long) {
         return opt(new Option(_short, _long));
     }
 
-    private Option opt(Option o) {
+    private Option opt(final Option o) {
         opts.put(o.getName(), o);
-        if (o.getMini() != null) opts.put(o.getMini(), o);
+        if (o.getMini() != null)
+            opts.put(o.getMini(), o);
         return o;
     }
 
@@ -77,10 +79,11 @@ public class CommandParser {
             System.out.println("  or   " + usage.next());
         }
 
-        List<Option> seen = new ArrayList<Option>();
+        final List<Option> seen = new ArrayList<Option>();
 
-        for (Option option : opts.values()) {
-            if (seen.contains(option)) continue;
+        for (final Option option : opts.values()) {
+            if (seen.contains(option))
+                continue;
             seen.add(option);
 
             if (option instanceof Category) {
@@ -89,7 +92,7 @@ public class CommandParser {
                 continue;
             }
 
-            StringBuilder s = new StringBuilder();
+            final StringBuilder s = new StringBuilder();
             if (option.getMini() != null) {
                 s.append(" -");
                 s.append(option.getMini());
@@ -118,7 +121,8 @@ public class CommandParser {
                 }
 
                 if (option.getValue() != null) {
-                    if (option.getDescription() != null) s.append(" ");
+                    if (option.getDescription() != null)
+                        s.append(" ");
                     s.append("Default is ");
                     s.append(option.getValue());
                 }
@@ -128,31 +132,33 @@ public class CommandParser {
         }
     }
 
-    public Arguments parse(String[] args) throws HelpException, InvalidOptionsException {
-        List<String> list = new ArrayList<String>(Arrays.asList(args));
+    public Arguments parse(final String[] args) throws HelpException, InvalidOptionsException {
+        final List<String> list = new ArrayList<String>(Arrays.asList(args));
 
-        ListIterator<String> items = list.listIterator();
+        final ListIterator<String> items = list.listIterator();
 
-        Properties props = new Properties();
+        final Properties props = new Properties();
 
         while (items.hasNext()) {
             String arg = items.next();
 
-            if (!arg.startsWith("-")) break;
+            if (!arg.startsWith("-"))
+                break;
 
             items.remove();
 
-            boolean longOption = arg.startsWith("--");
+            final boolean longOption = arg.startsWith("--");
 
             arg = arg.replaceFirst("-+", "");
 
             if (longOption) {
-                String name, value = "";
+                final String name;
+                final String value;
 
                 if (arg.equals("help")) {
                     props.put("help", "");
                     continue;
-                } else if (arg.indexOf("=") > -1) {
+                } else if (arg.contains("=")) {
                     name = arg.substring(0, arg.indexOf("="));
                     value = arg.substring(arg.indexOf("=") + 1);
                 } else {
@@ -163,21 +169,21 @@ public class CommandParser {
                     value = value(items, option);
                 }
 
-                Option option = opts.get(name);
+                final Option option = opts.get(name);
 
                 checkOption("--" + name, option);
                 checkValue("--" + name, value, option);
                 props.put(option.getName(), value);
             } else {
-                char[] chars = new char[arg.length()];
+                final char[] chars = new char[arg.length()];
                 arg.getChars(0, chars.length, chars, 0);
 
                 for (int i = 0; i < chars.length; i++) {
-                    char c = chars[i];
+                    final char c = chars[i];
 
-                    String name = c + "";
+                    final String name = c + "";
 
-                    Option option = opts.get(name);
+                    final Option option = opts.get(name);
 
                     checkOption("-" + name, option);
 
@@ -207,24 +213,25 @@ public class CommandParser {
 
         if (issues.size() > 0) {
 
-            for (String issue : issues) {
+            for (final String issue : issues) {
                 System.err.println(issue);
             }
 
             System.err.println();
-            
+
             help();
 
             throw new InvalidOptionsException();
         }
-        
+
         return arguments;
     }
 
-    private void checkValue(String optString, String value, Option option) {
+    private void checkValue(final String optString, final String value, final Option option) {
         checkOption(optString, option);
 
-        if (option.getType() == null) return;
+        if (option.getType() == null)
+            return;
 
         if (value == null || value.equals("")) {
             System.err.println("Missing param " + optString + " <" + option.getType().getSimpleName() + ">");
@@ -232,8 +239,9 @@ public class CommandParser {
         }
     }
 
-    private void checkOption(String invalid, Option option) {
-        if (option != null) return;
+    private void checkOption(final String invalid, final Option option) {
+        if (option != null)
+            return;
 
         System.err.println("Unknown option: " + invalid);
 
@@ -242,10 +250,10 @@ public class CommandParser {
         System.exit(1);
     }
 
-    private String value(ListIterator<String> items, Option option) {
+    private String value(final ListIterator<String> items, final Option option) {
         if (option.getType() != null && items.hasNext()) {
 
-            String possibleValue = items.next();
+            final String possibleValue = items.next();
 
             if (!possibleValue.startsWith("-")) {
                 items.remove();
@@ -260,10 +268,11 @@ public class CommandParser {
     }
 
     public static final class Arguments {
+
         private final Options options;
         private final List<String> args;
 
-        public Arguments(Options options, List<String> args) {
+        public Arguments(final Options options, final List<String> args) {
             this.options = options;
             this.args = args;
         }
@@ -278,45 +287,49 @@ public class CommandParser {
     }
 
     public static class Category extends Option {
-        public Category(String name) {
+
+        public Category(final String name) {
             super(name);
         }
     }
 
     public static class Option {
+
         private final String mini;
         private final String name;
         private String description;
         private Class type;
         private Object value;
 
-        Option(char mini, String name) {
+        Option(final char mini, final String name) {
             this(mini + "", name);
         }
 
-        Option(String name) {
+        Option(final String name) {
             this(null, name);
         }
 
-        Option(String mini, String name) {
+        Option(final String mini, final String name) {
             this.mini = mini;
             this.name = name;
         }
 
         public Option description(String description) {
-            if (!description.endsWith(".")) description += ".";
+            if (!description.endsWith("."))
+                description += ".";
             this.setDescription(description);
             return this;
         }
 
-        public Option type(Class type) {
+        public Option type(final Class type) {
             this.setType(type);
             return this;
         }
 
-        public Option value(Object value) {
+        public Option value(final Object value) {
             this.setValue(value);
-            if (getType() == null) this.setType(value.getClass());
+            if (getType() == null)
+                this.setType(value.getClass());
             return this;
         }
 
@@ -332,7 +345,7 @@ public class CommandParser {
             return description;
         }
 
-        public void setDescription(String description) {
+        public void setDescription(final String description) {
             this.description = description;
         }
 
@@ -340,7 +353,7 @@ public class CommandParser {
             return type;
         }
 
-        public void setType(Class type) {
+        public void setType(final Class type) {
             this.type = type;
         }
 
@@ -348,17 +361,16 @@ public class CommandParser {
             return value;
         }
 
-        public void setValue(Object value) {
+        public void setValue(final Object value) {
             this.value = value;
         }
     }
 
-    
     public static class HelpException extends Exception {
 
     }
 
     public static class InvalidOptionsException extends Exception {
-        
+
     }
 }

Modified: tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/GenericServiceLocator.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/GenericServiceLocator.java?rev=1446266&r1=1446265&r2=1446266&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/GenericServiceLocator.java (original)
+++ tomee/tomee/trunk/server/openejb-client/src/main/java/org/apache/openejb/client/GenericServiceLocator.java Thu Feb 14 16:22:09 2013
@@ -16,99 +16,101 @@
  */
 package org.apache.openejb.client;
 
-import javax.naming.NamingException;
 import javax.naming.Context;
+import javax.naming.NamingException;
 import java.net.URI;
 
 /**
  * @version $Rev$ $Date$
  */
+@SuppressWarnings("unchecked")
 public class GenericServiceLocator extends ServiceLocator {
 
     private final String commonPrefix;
 
-    public GenericServiceLocator(URI serverUri, String commonPrefix) throws NamingException {
+    public GenericServiceLocator(final URI serverUri, final String commonPrefix) throws NamingException {
         super(serverUri);
         this.commonPrefix = commonPrefix;
     }
 
-    public GenericServiceLocator(URI serverUri, String username, String password, String commonPrefix) throws NamingException {
+    public GenericServiceLocator(final URI serverUri, final String username, final String password, final String commonPrefix) throws NamingException {
         super(serverUri, username, password);
         this.commonPrefix = commonPrefix;
     }
 
-    public GenericServiceLocator(URI serverUri, String username, String password, String realm, String commonPrefix) throws NamingException {
+    public GenericServiceLocator(final URI serverUri, final String username, final String password, final String realm, final String commonPrefix) throws NamingException {
         super(serverUri, username, password, realm);
         this.commonPrefix = commonPrefix;
     }
 
-    public GenericServiceLocator(Context context, String commonPrefix) {
+    public GenericServiceLocator(final Context context, final String commonPrefix) {
         super(context);
         this.commonPrefix = commonPrefix;
     }
 
     @Override
     public Object lookup(String name) {
-        if (commonPrefix != null) name = commonPrefix + "/" +name;
+        if (commonPrefix != null)
+            name = commonPrefix + "/" + name;
         return super.lookup(name);
     }
 
     /**
      * Usable with JNDI name formats ending in the full class name of the interface
-     *
+     * <p/>
      * Such as:
-     *  - {interfaceClass}
-     *
+     * - {interfaceClass}
+     * <p/>
      * Or with commonPrefix (supplied in constructor) such as:
-     *  - {moduleId}/{interfaceClass}
-     *  - ejb/{moduleId}/{interfaceClass}
+     * - {moduleId}/{interfaceClass}
+     * - ejb/{moduleId}/{interfaceClass}
      *
      * @param type the interfaceClass
      * @return (T) lookup(type.getName())
      */
-    public <T> T lookup(Class<T> type) {
+    public <T> T lookup(final Class<T> type) {
         return (T) lookup(type.getName());
     }
 
     /**
      * Usable with JNDI name formats including a varying prefix such as ejbName or deploymentID
      * and ending in the full class name of the interface
-     *
+     * <p/>
      * Such as:
-     *  - {ejbName}/{interfaceClass}
-     *  - {deploymentId}/{interfaceClass}
-     *
+     * - {ejbName}/{interfaceClass}
+     * - {deploymentId}/{interfaceClass}
+     * <p/>
      * Or with commonPrefix (supplied in constructor) such as:
-     *  - {moduleId}/{ejbName}/{interfaceClass}
-     *  - ejb/{moduleId}/{deploymentId}/{interfaceClass}
+     * - {moduleId}/{ejbName}/{interfaceClass}
+     * - ejb/{moduleId}/{deploymentId}/{interfaceClass}
      *
      * @param prefix such as ejbName or deploymentId
-     * @param type the interfaceClass
+     * @param type   the interfaceClass
      * @return (T) lookup(prefix + "/" + type.getName())
      */
-    public <T> T lookup(String prefix, Class<T> type) {
+    public <T> T lookup(final String prefix, final Class<T> type) {
         return (T) lookup(prefix + "/" + type.getName());
     }
 
     /**
      * Usable with JNDI name formats comprised of the interfaceClass and ejbClass
-     *
+     * <p/>
      * For variation, the interface class is the prefix and the ejb class is the
      * suffix.  This is neat as the the prefix (the interface class name) becomes
      * a jndi context with one binding in it for each implementing ejb class.
-     *
+     * <p/>
      * Works with:
-     *  - {interfaceClass}/{ejbClass}
-     *
+     * - {interfaceClass}/{ejbClass}
+     * <p/>
      * Or with commonPrefix (supplied in constructor) such as:
-     *  - {moduleId}/{interfaceClass}/{ejbClass}
-     *  - ejb/{moduleId}/{interfaceClass}/{ejbClass}
+     * - {moduleId}/{interfaceClass}/{ejbClass}
+     * - ejb/{moduleId}/{interfaceClass}/{ejbClass}
      *
-     * @param type the interfaceClass
+     * @param type     the interfaceClass
      * @param ejbClass the ejbClass
      * @return (T) lookup(type.getName() + "/" + ejbClass.getName())
      */
-    public <T,B> T lookup(Class<T> type, Class<B> ejbClass) {
+    public <T, B> T lookup(final Class<T> type, final Class<B> ejbClass) {
         return (T) lookup(type.getName() + "/" + ejbClass.getName());
     }
 }

Modified: tomee/tomee/trunk/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java?rev=1446266&r1=1446265&r2=1446266&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java (original)
+++ tomee/tomee/trunk/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java Thu Feb 14 16:22:09 2013
@@ -67,6 +67,7 @@ public class MulticastPulseAgent impleme
     public static final String CLIENT = "OpenEJB.MCP.Client:";
     public static final String EMPTY = "NoService";
 
+    private final Set<String> ignore = new HashSet<String>();
     private final Set<URI> uriSet = new HashSet<URI>();
     private AtomicBoolean running = new AtomicBoolean(false);
     final ArrayList<Future> futures = new ArrayList<Future>();
@@ -96,6 +97,21 @@ public class MulticastPulseAgent impleme
         final Options o = new Options(p);
         o.setLogger(new OptionsLog(log));
 
+        this.ignore.add("localhost");
+        this.ignore.add("::1");
+        this.ignore.add("127.0.0.1");
+
+        try {
+            final String[] ignoreList = o.get("ignore", "").split(",");
+            for (final String s : ignoreList) {
+                if (null != s && s.trim().length() > 0) {
+                    this.ignore.add(s.trim().toLowerCase());
+                }
+            }
+        } catch (Exception e) {
+            log.warning("Invalid ignore parameter. Should be a lowercase single or comma seperated list like: ignore=host1,host2");
+        }
+
         this.multicast = p.getProperty("bind", this.multicast);
         this.port = o.get("port", this.port);
         this.group = o.get("group", this.group);
@@ -115,7 +131,7 @@ public class MulticastPulseAgent impleme
             }
         }
 
-        final String hosts = getHosts();
+        final String hosts = getHosts(this.ignore);
         final StringBuilder sb = new StringBuilder(SERVER);
         sb.append(this.group);
         sb.append(':');
@@ -240,8 +256,7 @@ public class MulticastPulseAgent impleme
                                             if (MulticastPulseAgent.this.loopbackOnly) {
                                                 //We only have local services, so make sure the request is from a local source else ignore it
                                                 if (!MulticastPulseAgent.isLocalAddress(client, false)) {
-                                                    log.debug(String.format("Ignoring remote client %1$s pulse request for group: %2$s - No remote services available"
-                                                            , client, s));
+                                                    log.debug(String.format("Ignoring remote client %1$s pulse request for group: %2$s - No remote services available", client, s));
                                                     continue;
                                                 }
                                             }
@@ -476,7 +491,7 @@ public class MulticastPulseAgent impleme
         }
     }
 
-    private static String getHosts() {
+    private static String getHosts(final Set<String> ignore) {
 
         final Set<String> hosts = new TreeSet<String>(new Comparator<String>() {
 
@@ -529,7 +544,7 @@ public class MulticastPulseAgent impleme
         final StringBuilder sb = new StringBuilder();
         for (final String host : hosts) {
             final String lc = host.toLowerCase();
-            if (!"localhost".equals(lc) && !"::1".equals(lc) && !"127.0.0.1".equals(lc)) {
+            if (!ignore.contains(lc)) {
                 if (sb.length() > 0) {
                     sb.append(',');
                 }