From b697e623a344451a0067735dde0f7ffcdef83b5a Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Thu, 15 Feb 2007 16:40:44 +0000 Subject: [PATCH] AttributeList.java: Updated. 2007-02-15 Gary Benson * javax/management/AttributeList.java: Updated. * javax/management/MBeanServerDelegate.java: Likewise. * javax/management/MBeanServerFactory.java: Likewise. * javax/management/StandardMBean.java: Likewise. From-SVN: r122004 --- libjava/classpath/ChangeLog.gcj | 7 +++++++ .../javax/management/AttributeList.java | 2 +- .../javax/management/MBeanServerDelegate.java | 4 +--- .../javax/management/MBeanServerFactory.java | 17 +++++++++-------- .../javax/management/StandardMBean.java | 18 ++++++++++++------ .../lib/javax/management/AttributeList.class | Bin 1795 -> 1859 bytes .../management/MBeanServerDelegate.class | Bin 4939 -> 4928 bytes .../javax/management/MBeanServerFactory.class | Bin 6265 -> 6622 bytes .../lib/javax/management/StandardMBean.class | Bin 14040 -> 14328 bytes 9 files changed, 30 insertions(+), 18 deletions(-) diff --git a/libjava/classpath/ChangeLog.gcj b/libjava/classpath/ChangeLog.gcj index a4faec8c89b..e4a71a829a5 100644 --- a/libjava/classpath/ChangeLog.gcj +++ b/libjava/classpath/ChangeLog.gcj @@ -1,3 +1,10 @@ +2007-02-15 Gary Benson + + * javax/management/AttributeList.java: Updated. + * javax/management/MBeanServerDelegate.java: Likewise. + * javax/management/MBeanServerFactory.java: Likewise. + * javax/management/StandardMBean.java: Likewise. + 2007-02-15 Gary Benson * gnu/javax/management/Server.java diff --git a/libjava/classpath/javax/management/AttributeList.java b/libjava/classpath/javax/management/AttributeList.java index 6823df3f28a..09db9b621ba 100644 --- a/libjava/classpath/javax/management/AttributeList.java +++ b/libjava/classpath/javax/management/AttributeList.java @@ -49,7 +49,7 @@ import java.util.ArrayList; * @since 1.5 */ public class AttributeList - extends ArrayList + extends ArrayList { /** diff --git a/libjava/classpath/javax/management/MBeanServerDelegate.java b/libjava/classpath/javax/management/MBeanServerDelegate.java index bf3f5f89420..347e51fc97c 100644 --- a/libjava/classpath/javax/management/MBeanServerDelegate.java +++ b/libjava/classpath/javax/management/MBeanServerDelegate.java @@ -69,7 +69,7 @@ public class MBeanServerDelegate /** * The listeners registered with the delegate. */ - private List listeners; + private final List listeners = new ArrayList(); /** * The sequence identifier used by the delegate. @@ -120,8 +120,6 @@ public class MBeanServerDelegate { if (listener == null) throw new IllegalArgumentException("A null listener was supplied."); - if (listeners == null) - listeners = new ArrayList(); listeners.add(new ListenerData(listener, filter, passback)); } diff --git a/libjava/classpath/javax/management/MBeanServerFactory.java b/libjava/classpath/javax/management/MBeanServerFactory.java index 8b27c46e8d7..54195635bd2 100644 --- a/libjava/classpath/javax/management/MBeanServerFactory.java +++ b/libjava/classpath/javax/management/MBeanServerFactory.java @@ -1,5 +1,5 @@ /* MBeanServerFactory.java -- Manages server instances. - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -89,7 +89,7 @@ public class MBeanServerFactory /** * The map of registered servers (identifiers to servers). */ - private static Map servers = new HashMap(); + private static final Map servers = new HashMap(); /** * Private constructor to prevent instance creation. @@ -206,15 +206,15 @@ public class MBeanServerFactory * caller's permissions don't imply {@link * MBeanServerPermission(String)}("findMBeanServer") */ - public static ArrayList findMBeanServer(String id) + public static ArrayList findMBeanServer(String id) { SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkPermission(new MBeanServerPermission("findMBeanServer")); if (id == null) return new ArrayList(servers.values()); - ArrayList list = new ArrayList(); - MBeanServer server = (MBeanServer) servers.get(id); + ArrayList list = new ArrayList(); + MBeanServer server = servers.get(id); if (server != null) list.add(servers.get(id)); return list; @@ -334,7 +334,8 @@ public class MBeanServerFactory builder.getClass() != MBeanServerBuilder.class) builder = new MBeanServerBuilder(); } - else if (!(builderClass.equals(builder.getClass().getName()))) + else if (!(builder != null && + builderClass.equals(builder.getClass().getName()))) { ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (cl == null) @@ -394,10 +395,10 @@ public class MBeanServerFactory SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkPermission(new MBeanServerPermission("releaseMBeanServer")); - Iterator i = servers.values().iterator(); + Iterator i = servers.values().iterator(); while (i.hasNext()) { - MBeanServer s = (MBeanServer) i.next(); + MBeanServer s = i.next(); if (server == s) { i.remove(); diff --git a/libjava/classpath/javax/management/StandardMBean.java b/libjava/classpath/javax/management/StandardMBean.java index 16b6f0b6687..0434a40b8cc 100644 --- a/libjava/classpath/javax/management/StandardMBean.java +++ b/libjava/classpath/javax/management/StandardMBean.java @@ -107,8 +107,9 @@ public class StandardMBean catch (ClassNotFoundException e) { throw (NotCompliantMBeanException) - (new NotCompliantMBeanException("An interface for the class " + - className + " was not found.").initCause(e)); + (new NotCompliantMBeanException("An interface, " + className + + "MBean, for the class " + className + + " was not found.").initCause(e)); } } if (!(iface.isInstance(this))) @@ -142,13 +143,15 @@ public class StandardMBean String className = impl.getClass().getName(); try { - iface = Class.forName(className + "MBean"); + iface = Class.forName(className + "MBean", true, + impl.getClass().getClassLoader()); } catch (ClassNotFoundException e) { throw (NotCompliantMBeanException) - (new NotCompliantMBeanException("An interface for the class " + - className + " was not found.").initCause(e)); + (new NotCompliantMBeanException("An interface, " + className + + "MBean, for the class " + className + + " was not found.").initCause(e)); } } if (!(iface.isInstance(impl))) @@ -665,7 +668,10 @@ public class StandardMBean ainfo, cinfo, oinfo, null); String cname = getClassName(info); String desc = getDescription(info); - info = new MBeanInfo(cname, desc, ainfo, cinfo, oinfo, null); + MBeanNotificationInfo[] ninfo = null; + if (impl instanceof NotificationBroadcaster) + ninfo = ((NotificationBroadcaster) impl).getNotificationInfo(); + info = new MBeanInfo(cname, desc, ainfo, cinfo, oinfo, ninfo); cacheMBeanInfo(info); return info; } diff --git a/libjava/classpath/lib/javax/management/AttributeList.class b/libjava/classpath/lib/javax/management/AttributeList.class index 528918c72bf3eee58770bd1873e608beace5a9d1..b2402e989b50576142e96908eee06287a4c51ae6 100644 GIT binary patch delta 109 zcmZqXJIp6=>ff$?3=9m046f`9OpFY2lLMLMHtHQ`wqRu749-l?ODriZN@Zlw^vOyr zOVlqd$;{DrEGkN@^vNtPv4IHYB<7{-`zK|kCYM;-S#SQz%*rgt#NY@tm5ITL!5K`u F008tV9m@a! delta 44 zcmX@i*UTqy>ff$?3=9m049@HfOpFY2lLMLMHtHQ`-mJ^Q%FM~g;0TmtVsHWg4$KL7 diff --git a/libjava/classpath/lib/javax/management/MBeanServerDelegate.class b/libjava/classpath/lib/javax/management/MBeanServerDelegate.class index 325af96c49c338ea52de5d03587a36f33fe18e17..90130982041fc59a0ff18fa2e93ca0f8b4ba1a5b 100644 GIT binary patch delta 1474 zcmZuxTTfJ16#mwkfdhvFGn~P>A&7&Axiho{RG_seVrxOFfOOJ&nOcHaJ0vizv6t}B zG-=bOrtYWuWYUMGjaG1E28&T2Onm5rFUG`2e}EcIo3!<%Yo9}5GT~+KwJ+cLzV)58 z&mV2K+ZL**L&YY7=TzpCOzPv@^yyUp>}=-j(DYnRLjye3Aoz9EK-Un&W)+RXO#w#} znni*VRYA1q*ou%iPGQeBfP>) zl14`XFR!4RFYYK{X92Gk@cI(=EV6PJya-?~XWYj*o1yY}h#B7ClL7ltI@X}yGPI}M-S5h=_cp|S&klXz_J`LUdbr`e zA8=l_kGSCukWV~t_spAV<5zCwcmbD;E8Nc9!9^_IT4V?8kJ^n|jvuoVPoU!|x9>A< z-RJDUpNQfw{zW|H7xp)H;2$pKUmWCl94{>TPE;`V@M?)Nvb#&;KEBE>DiG)D{S{VA zi%a!^dEW}g((y#Hh{M;htl)xtUm`8v+`7!)S!P1&y}?0J1~)enZoN5bfS0@olMfx_ z$4&~MpVxb-(GqC4|KR@u#egx)zMMA(cS$E>Tr`N=fx_@pg#S)am=s5f66m5NXKBYM R@4ZJICFLHG*@Vy2`5$Y!sVkZ;wu!Dn}rymJUQkxJ$fi#eUYnq0v>R3T?(4eBBPnG=VJ8Ts6QS{`cLsNwz#++OC(gZ!miIyUv(4ORP2RQzec^y z`v~f6{8D`Fy|`<6Es>P*0-;6!MQU*==tQ@SE<(ML@NzW1a%N>UMliWOA)y};`a^`h?vVbeM&z6w$&Ny!P1p5R*?~W!Nc(o8HExh~zL6@%8m*F!wFqkTAc+!g9VVoazJS8~>0E z`4K~Xi~v3{0KNHB3V?hbgP&sxv3eU(qgz3o#|0)QEV4y!SX(zl=@w(xRU?aPtWAY1 zge5pRBI@YpS!6S5%MWK%kqVN#0TWCkK>(4m1XHF zB3$Dp?bynj^h4RcQj@M1QA!Jzj0_R~c5@6B9t82liOKlAN2Yf5_k^lez diff --git a/libjava/classpath/lib/javax/management/MBeanServerFactory.class b/libjava/classpath/lib/javax/management/MBeanServerFactory.class index b64a82f29096677755c0e3c16937be81c25dced6..4b73417d78c721a769d28b8c518625d9635257ff 100644 GIT binary patch literal 6622 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 literal 14040 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 lRBc>Ev(e5quBHWs6le(!OmCe%$U