aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.agent.rt
diff options
context:
space:
mode:
authorMarc R. Hoffmann <hoffmann@mountainminds.com>2013-01-08 21:18:35 +0100
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2013-01-08 21:18:35 +0100
commite2930e70cc2d5409732639f0bda3af36b27e6db4 (patch)
treed4c9a2514b7be9dfb0985471411db8ec431ba3b2 /org.jacoco.agent.rt
parent0c1bbb281ca81796708a79e1d04f6d8d3db12ea6 (diff)
downloadjacoco-e2930e70cc2d5409732639f0bda3af36b27e6db4.tar.gz
Remove output mode mbean in favor of new agent option 'jmx'.
Diffstat (limited to 'org.jacoco.agent.rt')
-rw-r--r--org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java18
-rw-r--r--org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/IRuntimeMBean.java59
-rw-r--r--org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/controller/MBeanController.java77
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();
- }
-
-}