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(',');
}