diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2013-01-08 21:18:35 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2013-01-08 21:18:35 +0100 |
commit | e2930e70cc2d5409732639f0bda3af36b27e6db4 (patch) | |
tree | d4c9a2514b7be9dfb0985471411db8ec431ba3b2 /org.jacoco.agent.rt | |
parent | 0c1bbb281ca81796708a79e1d04f6d8d3db12ea6 (diff) | |
download | jacoco-e2930e70cc2d5409732639f0bda3af36b27e6db4.tar.gz |
Remove output mode mbean in favor of new agent option 'jmx'.
Diffstat (limited to 'org.jacoco.agent.rt')
3 files changed, 15 insertions, 139 deletions
diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java index f726e0ca..68ac3c63 100644 --- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java +++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java @@ -13,13 +13,16 @@ package org.jacoco.agent.rt.internal; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.UnknownHostException; +import javax.management.ObjectName; +import javax.management.StandardMBean; + import org.jacoco.agent.rt.IAgent; import org.jacoco.agent.rt.internal.controller.IAgentController; import org.jacoco.agent.rt.internal.controller.LocalController; -import org.jacoco.agent.rt.internal.controller.MBeanController; import org.jacoco.agent.rt.internal.controller.TcpClientController; import org.jacoco.agent.rt.internal.controller.TcpServerController; import org.jacoco.core.JaCoCo; @@ -34,6 +37,8 @@ import org.jacoco.core.runtime.RuntimeData; */ public class Agent implements IAgent { + private static final String JMX_NAME = "org.jacoco:type=Runtime"; + private static Agent singleton; /** @@ -118,6 +123,11 @@ public class Agent implements IAgent { data.setSessionId(sessionId); controller = createAgentController(); controller.startup(options, data); + if (options.getJmx()) { + ManagementFactory.getPlatformMBeanServer().registerMBean( + new StandardMBean(this, IAgent.class), + new ObjectName(JMX_NAME)); + } } catch (final Exception e) { logger.logExeption(e); } @@ -132,6 +142,10 @@ public class Agent implements IAgent { controller.writeExecutionData(false); } controller.shutdown(); + if (options.getJmx()) { + ManagementFactory.getPlatformMBeanServer().unregisterMBean( + new ObjectName(JMX_NAME)); + } } catch (final Exception e) { logger.logExeption(e); } @@ -151,8 +165,6 @@ public class Agent implements IAgent { return new TcpServerController(logger); case tcpclient: return new TcpClientController(logger); - case mbean: - return new MBeanController(); default: throw new AssertionError(controllerType); } diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/IRuntimeMBean.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/IRuntimeMBean.java deleted file mode 100644 index 885cb8f4..00000000 --- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/IRuntimeMBean.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2013 Mountainminds GmbH & Co. KG and Contributors - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Evgeny Mandrikov - initial API and implementation - * - *******************************************************************************/ -package org.jacoco.agent.rt.internal.controller; - -import java.io.IOException; - -/** - * MBean interface for remote commands to a coverage runtime. - */ -public interface IRuntimeMBean { - - /** - * Returns version of JaCoCo. - * - * @return version of JaCoCo - */ - String getVersion(); - - /** - * Returns current a session identifier. - * - * @return current session identifier - */ - String getSessionId(); - - /** - * Sets a session identifier. - * - * @param id - * new session identifier - */ - void setSessionId(String id); - - /** - * Returns current execution data. - * - * @param reset - * if <code>true</code> the current coverage information is also - * cleared - * @return dump of current execution data - * @throws IOException - */ - byte[] dump(boolean reset) throws IOException; - - /** - * Resets all coverage information. - */ - void reset(); - -} diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/MBeanController.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/MBeanController.java deleted file mode 100644 index 2b3b9cb0..00000000 --- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/MBeanController.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2013 Mountainminds GmbH & Co. KG and Contributors - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Evgeny Mandrikov - initial API and implementation - * - *******************************************************************************/ -package org.jacoco.agent.rt.internal.controller; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.lang.management.ManagementFactory; - -import javax.management.ObjectName; -import javax.management.StandardMBean; - -import org.jacoco.core.JaCoCo; -import org.jacoco.core.data.ExecutionDataWriter; -import org.jacoco.core.runtime.AgentOptions; -import org.jacoco.core.runtime.RuntimeData; - -/** - * Controller that registers MBean. This controller does not use agent options. - */ -public class MBeanController implements IAgentController, IRuntimeMBean { - - private static final String OBJECT_NAME = "org.jacoco:type=Runtime"; - - private RuntimeData data; - - public void startup(final AgentOptions options, final RuntimeData data) - throws Exception { - this.data = data; - ManagementFactory.getPlatformMBeanServer().registerMBean( - new StandardMBean(this, IRuntimeMBean.class), - new ObjectName(OBJECT_NAME)); - } - - public void shutdown() throws Exception { - ManagementFactory.getPlatformMBeanServer().unregisterMBean( - new ObjectName(OBJECT_NAME)); - } - - public void writeExecutionData(final boolean reset) { - // nothing to do - } - - // === IRuntimeMBean === - - public String getVersion() { - return JaCoCo.VERSION; - } - - public String getSessionId() { - return data.getSessionId(); - } - - public void setSessionId(final String id) { - data.setSessionId(id); - } - - public byte[] dump(final boolean reset) throws IOException { - final ByteArrayOutputStream output = new ByteArrayOutputStream(); - final ExecutionDataWriter writer = new ExecutionDataWriter(output); - data.collect(writer, writer, reset); - return output.toByteArray(); - } - - public void reset() { - data.reset(); - } - -} |