From: gary Date: Tue, 20 Feb 2007 15:02:38 +0000 (+0000) Subject: 2007-02-20 Gary Benson X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7d41d59875b78732c2cc7ebbdd2e6ff0d11711f6;p=thirdparty%2Fgcc.git 2007-02-20 Gary Benson * javax/management/MBeanServer.java: Updated. * javax/management/MBeanServerConnection.java: Likewise. * javax/management/ObjectName.java: Likewise. * javax/management/StandardMBean.java: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122165 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libjava/classpath/ChangeLog.gcj b/libjava/classpath/ChangeLog.gcj index c147ab6a7a82..9273fe261c31 100644 --- a/libjava/classpath/ChangeLog.gcj +++ b/libjava/classpath/ChangeLog.gcj @@ -1,3 +1,10 @@ +2007-02-20 Gary Benson + + * javax/management/MBeanServer.java: Updated. + * javax/management/MBeanServerConnection.java: Likewise. + * javax/management/ObjectName.java: Likewise. + * javax/management/StandardMBean.java: Likewise. + 2007-02-15 David Daney * tools/Makefile.am (TOOLS_ZIP): Add classes from vm-tools-packages. diff --git a/libjava/classpath/javax/management/MBeanServer.java b/libjava/classpath/javax/management/MBeanServer.java index 73a28e3b85aa..0be5d71ad5df 100644 --- a/libjava/classpath/javax/management/MBeanServer.java +++ b/libjava/classpath/javax/management/MBeanServer.java @@ -890,7 +890,7 @@ public interface MBeanServer * arise from the execution of the query, in which * case that particular bean will again be excluded. */ - Set queryMBeans(ObjectName name, QueryExp query); + Set queryMBeans(ObjectName name, QueryExp query); /** *

@@ -929,7 +929,7 @@ public interface MBeanServer * Note that these permissions are implied if the * queryMBeans permissions are available. */ - Set queryNames(ObjectName name, QueryExp query); + Set queryNames(ObjectName name, QueryExp query); /** * Registers the supplied instance with the server, using the specified diff --git a/libjava/classpath/javax/management/MBeanServerConnection.java b/libjava/classpath/javax/management/MBeanServerConnection.java index dff03e8c0d47..cba6dacc63c7 100644 --- a/libjava/classpath/javax/management/MBeanServerConnection.java +++ b/libjava/classpath/javax/management/MBeanServerConnection.java @@ -533,7 +533,7 @@ public interface MBeanServerConnection * @throws IOException if an I/O error occurred in communicating with * the bean server. */ - Set queryMBeans(ObjectName name, QueryExp query) + Set queryMBeans(ObjectName name, QueryExp query) throws IOException; /** @@ -560,7 +560,7 @@ public interface MBeanServerConnection * @throws IOException if an I/O error occurred in communicating with * the bean server. */ - Set queryNames(ObjectName name, QueryExp query) + Set queryNames(ObjectName name, QueryExp query) throws IOException; /** diff --git a/libjava/classpath/javax/management/ObjectName.java b/libjava/classpath/javax/management/ObjectName.java index 757b80fb266a..8259eab02bed 100644 --- a/libjava/classpath/javax/management/ObjectName.java +++ b/libjava/classpath/javax/management/ObjectName.java @@ -105,7 +105,7 @@ public class ObjectName /** * The properties, as key-value pairs. */ - private TreeMap properties; + private TreeMap properties = new TreeMap(); /** * The properties as a string (stored for ordering). @@ -164,7 +164,6 @@ public class ObjectName throw new MalformedObjectNameException("A name that is not a " + "pattern must contain at " + "least one key-value pair."); - properties = new TreeMap(); for (int a = 0; a < pairs.length; ++a) { int sep = pairs[a].indexOf('='); @@ -197,7 +196,6 @@ public class ObjectName throws MalformedObjectNameException { this.domain = domain; - properties = new TreeMap(); properties.put(key, value); checkComponents(); } @@ -216,7 +214,7 @@ public class ObjectName * @throws NullPointerException if one of the parameters is * null. */ - public ObjectName(String domain, Hashtable properties) + public ObjectName(String domain, Hashtable properties) throws MalformedObjectNameException { this.domain = domain; @@ -305,70 +303,80 @@ public class ObjectName { if (name.isPattern()) return false; - if (isPattern()) + + if (!isPattern()) + return equals(name); + + if (isDomainPattern()) { - boolean domainMatch, propMatch; - if (isDomainPattern()) + if (!domainMatches(domain, 0, name.getDomain(), 0)) + return false; + } + else + { + if (!domain.equals(name.getDomain())) + return false; + } + + if (isPropertyPattern()) + { + Hashtable oProps = name.getKeyPropertyList(); + Iterator i = properties.entrySet().iterator(); + while (i.hasNext()) { - String oDomain = name.getDomain(); - int oLength = oDomain.length(); - for (int a = 0; a < domain.length(); ++a) - { - char n = domain.charAt(a); - if (oLength == a && n != '*') - return false; - if (n == '?') - continue; - if (n == '*') - if ((a + 1) < domain.length()) - { - if (oLength == a) - return false; - char next; - do - { - next = domain.charAt(a + 1); - } while (next == '*'); - if (next == '?') - continue; - int pos = a; - while (oDomain.charAt(pos) != next) - { - ++pos; - if (pos == oLength) - return false; - } - } - if (n != oDomain.charAt(a)) - return false; - } - domainMatch = true; + Map.Entry entry = (Map.Entry) i.next(); + String key = (String) entry.getKey(); + if (!(oProps.containsKey(key))) + return false; + String val = (String) entry.getValue(); + if (!(val.equals(oProps.get(key)))) + return false; } - else - domainMatch = domain.equals(name.getDomain()); - if (isPropertyPattern()) + } + else + { + if (!getCanonicalKeyPropertyListString().equals + (name.getCanonicalKeyPropertyListString())) + return false; + } + return true; + } + + /** + * Returns true if the domain matches the pattern. + * + * @param pattern the pattern to match against. + * @param patternindex the index into the pattern to start matching. + * @param domain the domain to match. + * @param domainindex the index into the domain to start matching. + * @return true if the domain matches the pattern. + */ + private static boolean domainMatches(String pattern, int patternindex, + String domain, int domainindex) + { + while (patternindex < pattern.length()) + { + char c = pattern.charAt(patternindex++); + + if (c == '*') { - Hashtable oProps = name.getKeyPropertyList(); - Iterator i = properties.entrySet().iterator(); - while (i.hasNext()) + for (int i = domain.length(); i >= domainindex; i--) { - Map.Entry entry = (Map.Entry) i.next(); - String key = (String) entry.getKey(); - if (!(oProps.containsKey(key))) - return false; - String val = (String) entry.getValue(); - if (!(val.equals(oProps.get(key)))) - return false; + if (domainMatches(pattern, patternindex, domain, i)) + return true; } - propMatch = true; + return false; } - else - propMatch = - getCanonicalKeyPropertyListString().equals - (name.getCanonicalKeyPropertyListString()); - return domainMatch && propMatch; + + if (domainindex >= domain.length()) + return false; + + if (c != '?' && c != domain.charAt(domainindex)) + return false; + + domainindex++; } - return equals(name); + return true; } /** @@ -542,7 +550,8 @@ public class ObjectName * specifications. * @throws NullPointerException if name is null. */ - public static ObjectName getInstance(String domain, Hashtable properties) + public static ObjectName getInstance(String domain, + Hashtable properties) throws MalformedObjectNameException { return new ObjectName(domain, properties); @@ -571,9 +580,9 @@ public class ObjectName * @return a {@link java.util.Hashtable}, containing each of the object * name's properties. */ - public Hashtable getKeyPropertyList() + public Hashtable getKeyPropertyList() { - return new Hashtable(properties); + return new Hashtable(properties); } /** diff --git a/libjava/classpath/javax/management/StandardMBean.java b/libjava/classpath/javax/management/StandardMBean.java index 0434a40b8cc3..b31436c6ec17 100644 --- a/libjava/classpath/javax/management/StandardMBean.java +++ b/libjava/classpath/javax/management/StandardMBean.java @@ -69,7 +69,7 @@ public class StandardMBean /** * The interface for this bean. */ - private Class iface; + private Class iface; /** * The implementation of the interface. @@ -94,7 +94,7 @@ public class StandardMBean * in the interface that doesn't comply * with the naming conventions. */ - protected StandardMBean(Class iface) + protected StandardMBean(Class iface) throws NotCompliantMBeanException { if (iface == null) @@ -133,7 +133,7 @@ public class StandardMBean * in the interface that doesn't comply * with the naming conventions. */ - public StandardMBean(Object impl, Class iface) + public StandardMBean(T impl, Class iface) throws NotCompliantMBeanException { if (impl == null) @@ -143,8 +143,8 @@ public class StandardMBean String className = impl.getClass().getName(); try { - iface = Class.forName(className + "MBean", true, - impl.getClass().getClassLoader()); + this.iface = Class.forName(className + "MBean", true, + impl.getClass().getClassLoader()); } catch (ClassNotFoundException e) { @@ -154,11 +154,12 @@ public class StandardMBean " was not found.").initCause(e)); } } - if (!(iface.isInstance(impl))) + else + this.iface = iface; + if (!(this.iface.isInstance(impl))) throw new NotCompliantMBeanException("The instance, " + impl + ", is not an instance of " + iface); this.impl = impl; - this.iface = iface; } /** @@ -493,7 +494,7 @@ public class StandardMBean * * @return the implementation class. */ - public Class getImplementationClass() + public Class getImplementationClass() { return impl.getClass(); } @@ -681,7 +682,7 @@ public class StandardMBean * * @return the management interface. */ - public final Class getMBeanInterface() + public final Class getMBeanInterface() { return iface; } diff --git a/libjava/classpath/lib/javax/management/MBeanServer.class b/libjava/classpath/lib/javax/management/MBeanServer.class index 119458287393..68c2041fa131 100644 Binary files a/libjava/classpath/lib/javax/management/MBeanServer.class and b/libjava/classpath/lib/javax/management/MBeanServer.class differ diff --git a/libjava/classpath/lib/javax/management/MBeanServerConnection.class b/libjava/classpath/lib/javax/management/MBeanServerConnection.class index 2ca079e125e3..7f60a3e8f9bc 100644 Binary files a/libjava/classpath/lib/javax/management/MBeanServerConnection.class and b/libjava/classpath/lib/javax/management/MBeanServerConnection.class differ diff --git a/libjava/classpath/lib/javax/management/ObjectName.class b/libjava/classpath/lib/javax/management/ObjectName.class index 720f6689d434..28a3f54fbbff 100644 Binary files a/libjava/classpath/lib/javax/management/ObjectName.class and b/libjava/classpath/lib/javax/management/ObjectName.class differ diff --git a/libjava/classpath/lib/javax/management/StandardMBean.class b/libjava/classpath/lib/javax/management/StandardMBean.class index 29ed9dbc1f39..be542358394f 100644 Binary files a/libjava/classpath/lib/javax/management/StandardMBean.class and b/libjava/classpath/lib/javax/management/StandardMBean.class differ diff --git a/libjava/javax/management/ObjectName.h b/libjava/javax/management/ObjectName.h index aaaf89b5ebf5..21473cace9ea 100644 --- a/libjava/javax/management/ObjectName.h +++ b/libjava/javax/management/ObjectName.h @@ -30,6 +30,9 @@ private: void checkComponents(); public: virtual jboolean apply(::javax::management::ObjectName *); +private: + static jboolean domainMatches(::java::lang::String *, jint, ::java::lang::String *, jint); +public: virtual jboolean equals(::java::lang::Object *); virtual ::java::lang::String * getCanonicalKeyPropertyListString(); virtual ::java::lang::String * getCanonicalName();