Merge branch 'develop' into feature/JAL-3551Pymol
[jalview.git] / srcjar_unused / org / apache / log4j / jmx / Agent.java
diff --git a/srcjar_unused/org/apache/log4j/jmx/Agent.java b/srcjar_unused/org/apache/log4j/jmx/Agent.java
new file mode 100644 (file)
index 0000000..9bf3c1a
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.log4j.jmx;
+
+import org.apache.log4j.Logger;
+
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+import java.lang.reflect.InvocationTargetException;
+import java.io.InterruptedIOException;
+
+
+/**
+ * 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.
+     * @deprecated
+     */
+  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 RuntimeException(ex.toString());
+      } catch (InstantiationException ex) {
+          throw new RuntimeException(ex.toString());
+      } catch (IllegalAccessException ex) {
+          throw new RuntimeException(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(InvocationTargetException ex) {
+          Throwable cause = ex.getTargetException();
+          if (cause instanceof RuntimeException) {
+              throw (RuntimeException) cause;
+          } else if (cause != null) {
+              if (cause instanceof InterruptedException
+                      || cause instanceof InterruptedIOException) {
+                  Thread.currentThread().interrupt();
+              }
+              throw new RuntimeException(cause.toString());
+          } else {
+              throw new RuntimeException();
+          }
+      } catch(NoSuchMethodException ex) {
+          throw new RuntimeException(ex.toString());
+      } catch(IllegalAccessException ex) {
+        throw new RuntimeException(ex.toString());
+    }
+  }
+
+
+    /**
+     * Starts instance of HtmlAdapterServer.
+     * @deprecated
+      */
+  public void start() {
+
+    MBeanServer server = MBeanServerFactory.createMBeanServer();
+    Object html = createServer();
+
+    try {
+      log.info("Registering HtmlAdaptorServer instance.");
+      server.registerMBean(html, new ObjectName("Adaptor:name=html,port=8082"));
+      log.info("Registering HierarchyDynamicMBean instance.");
+      HierarchyDynamicMBean hdm = new HierarchyDynamicMBean();
+      server.registerMBean(hdm, new ObjectName("log4j:hiearchy=default"));
+    } catch(JMException e) {
+      log.error("Problem while registering MBeans instances.", e);
+      return;
+    } catch(RuntimeException e) {
+      log.error("Problem while registering MBeans instances.", e);
+      return;
+    }
+    startServer(html);
+  }
+}