Author: carnold
Date: Tue Aug  5 12:16:07 2008
New Revision: 682879

URL: http://svn.apache.org/viewvc?rev=682879&view=rev
Log:
Bug 45485: Agent.java is sole dependency on jmxtools.jar with Java 5+

Modified:
    logging/log4j/trunk/build.properties.sample
    logging/log4j/trunk/build.xml
    logging/log4j/trunk/pom.xml
    logging/log4j/trunk/src/changes/changes.xml
    logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java

Modified: logging/log4j/trunk/build.properties.sample
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/build.properties.sample?rev=682879&r1=682878&r2=682879&view=diff
==============================================================================
--- logging/log4j/trunk/build.properties.sample (original)
+++ logging/log4j/trunk/build.properties.sample Tue Aug  5 12:16:07 2008
@@ -49,7 +49,6 @@
 # Required to build the org.apache.log4j.jmx package.
 jmx.home.dir=${lib.home.dir}/jmx-1_2_1-bin
 jmx.jar=${jmx.home.dir}/lib/jmxri.jar
-jmx-extra.jar=${jmx.home.dir}/lib/jmxtools.jar
 jndi.jar=${lib.home.dir}/jndi-1_2_1/lib/jndi.jar
 
 # Required to run Checkstyle. Available from http://checkstyle.sf.net

Modified: logging/log4j/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/build.xml?rev=682879&r1=682878&r2=682879&view=diff
==============================================================================
--- logging/log4j/trunk/build.xml (original)
+++ logging/log4j/trunk/build.xml Tue Aug  5 12:16:07 2008
@@ -32,7 +32,6 @@
   <property name="javamail.jar" 
location="${m2_repo}/javax/mail/mail/1.4/mail-1.4.jar"/>
   <property name="jms.jar" 
location="${m2_repo}/javax/jms/jms/1.1/jms-1.1.jar"/>
   <property name="jmx.jar" 
location="${m2_repo}/com/sun/jmx/jmxri/1.2.1/jmxri-1.2.1.jar"/>
-  <property name="jmx-extra.jar" 
location="${m2_repo}/com/sun/jdmk/jmxtools/1.2.1/jmxtools-1.2.1.jar"/>
 
 
   <!-- Read the system environment variables and stores them in properties, -->
@@ -120,7 +119,6 @@
     <pathelement location="${jaxp.jaxp.jar}"/>
     <pathelement location="${jms.jar}"/>
     <pathelement location="${jmx.jar}"/>
-    <pathelement location="${jmx-extra.jar}"/>
     <pathelement location="${jndi.jar}"/>
     <pathelement location="${javaee-api.jar}"/>
   </path>
@@ -169,7 +167,6 @@
             <available classname="com.sun.jdmk.comm.HtmlAdaptorServer">
                 <classpath>
                     <pathelement location="${jmx.jar}"/>
-                    <pathelement location="${jmx-extra.jar}"/>
                                        <pathelement 
location="${javaee-api.jar}"/>
                 </classpath>
             </available>

Modified: logging/log4j/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/pom.xml?rev=682879&r1=682878&r2=682879&view=diff
==============================================================================
--- logging/log4j/trunk/pom.xml (original)
+++ logging/log4j/trunk/pom.xml Tue Aug  5 12:16:07 2008
@@ -407,12 +407,6 @@
       <optional>true</optional>
     </dependency>
     <dependency>
-      <groupId>com.sun.jdmk</groupId>
-      <artifactId>jmxtools</artifactId>
-      <version>1.2.1</version>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
       <groupId>com.sun.jmx</groupId>
       <artifactId>jmxri</artifactId>
       <version>1.2.1</version>

Modified: logging/log4j/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/changes/changes.xml?rev=682879&r1=682878&r2=682879&view=diff
==============================================================================
--- logging/log4j/trunk/src/changes/changes.xml (original)
+++ logging/log4j/trunk/src/changes/changes.xml Tue Aug  5 12:16:07 2008
@@ -37,8 +37,10 @@
        <action action="fix" issue="43304">Make javamail, jmx, jms dependencies 
optional in pom.xml.</action>
        <action action="add" issue="43874">SocketHubAppender should expose 
actual port in use to extending classes.</action>
        <action action="add" issue="44551">SocketHubAppender in the 1.2.16 does 
not support a scroll back buffer or application property</action>
-       <action action="add" issue="41156">Give log4j threads reasonable 
names/<action>
+       <action action="add" issue="41156">Give log4j threads reasonable 
names.</action>
        <action action="fix" issue="44888">LocationInfo can report wrong caller 
when other class names contain logger class name as substring.</action>
+       <action action="fix" issue="45426">ErrorHandlerTestCase is not run and 
does not pass.</action>
+       <action action="fix" issue="45485">Agent.java is sole dependency on 
jmxtools.jar with Java 5+.</action> 
     </release>
   
     <release version="1.2.15" date="2007-08-24" description="SyslogAppender 
enhancements, NTEventLogAppender and Maven build.">

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java?rev=682879&r1=682878&r2=682879&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java (original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/jmx/Agent.java Tue Aug  
5 12:16:07 2008
@@ -20,24 +20,84 @@
 import javax.management.ObjectName;
 import javax.management.MBeanServer;
 import javax.management.MBeanServerFactory;
-import com.sun.jdmk.comm.HtmlAdaptorServer;
 
 import org.apache.log4j.Logger;
 
+import java.lang.reflect.InvocationTargetException;
 
+
+/**
+ * Manages an instance of com.sun.jdmk.comm.HtmlAdapterServer which
+ * was provided for demonstration purposes in the
+ * Java Management Extensions Reference Implementation 1.2.1.
+ * This class is provided to maintain compatibility with earlier
+ * versions of log4j and use in new code is discouraged.
+ *
+ * @deprecated
+ */
 public class Agent {
 
+    /**
+     * Diagnostic logger.
+     * @deprecated
+     */
   static Logger log = Logger.getLogger(Agent.class);
 
+    /**
+     * Create new instance.
+     */
   public Agent() {
   }
 
+    /**
+     * Creates a new instance of com.sun.jdmk.comm.HtmlAdapterServer
+     * using reflection.
+     *
+     * @since 1.2.16
+     * @return new instance.
+     */
+  private static Object createServer() {
+      Object newInstance = null;
+      try {
+        newInstance = Class.forName(
+                "com.sun.jdmk.comm.HtmlAdapterServer").newInstance();
+      } catch (ClassNotFoundException ex) {
+          throw new NoClassDefFoundError(ex.toString());
+      } catch (IllegalAccessException ex) {
+          throw new IllegalAccessError(ex.toString());
+      } catch (InstantiationException ex) {
+          throw new InstantiationError(ex.toString());
+      }
+      return newInstance;
+  }
+
+    /**
+     * Invokes HtmlAdapterServer.start() using reflection.
+     *
+     * @since 1.2.16
+     * @param server instance of com.sun.jdmk.comm.HtmlAdapterServer.
+     */
+  private static void startServer(final Object server) {
+      try {
+          server.getClass().getMethod("start", new Class[0]).
+                  invoke(server, new Object[0]);
+      } catch(NoSuchMethodException ex) {
+          throw new NoSuchMethodError(ex.toString());
+      } catch(IllegalAccessException ex) {
+          throw new IllegalAccessError(ex.toString());
+      } catch(InvocationTargetException ex) {
+          throw (RuntimeException) ex.getTargetException();
+      }
+  }
+
 
-  public
-  void start() {
+    /**
+     * Starts instance of HtmlAdapterServer.
+      */
+  public void start() {
 
     MBeanServer server = MBeanServerFactory.createMBeanServer();
-    HtmlAdaptorServer html = new HtmlAdaptorServer();
+    Object html = createServer();
 
     try {
       log.info("Registering HtmlAdaptorServer instance.");
@@ -47,9 +107,9 @@
       server.registerMBean(hdm, new ObjectName("log4j:hiearchy=default"));
 
     } catch(Exception e) {
-      log.error("Problem while regitering MBeans instances.", e);
+      log.error("Problem while registering MBeans instances.", e);
       return;
     }
-    html.start();
+    startServer(html);
   }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to