# Class MBeanRegistry

java.lang.Object
org.apache.zookeeper.jmx.MBeanRegistry

public class MBeanRegistry extends Object
This class provides a unified interface for registering/unregistering of zookeeper MBeans with the platform MBean server. It builds a hierarchy of MBeans where each MBean represented by a filesystem-like path. Eventually, this hierarchy will be stored in the zookeeper data tree instance as a virtual data tree.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`DOMAIN`

## Constructor Summary

Constructors
Constructor
Description
`MBeanRegistry()`

## Method Summary

Modifier and Type
Method
Description
`static MBeanRegistry`
`getInstance()`
`MBeanServer`
`getPlatformMBeanServer()`
Return the underlying MBeanServer that is being used to register MBean's.
`Set<ZKMBeanInfo>`
`getRegisteredBeans()`
`String`
`makeFullPath(String prefix, String... name)`
Generate a filesystem-like path.
`protected String`
`makeFullPath(String prefix, ZKMBeanInfo bean)`
`protected ObjectName`
`makeObjectName(String path, ZKMBeanInfo bean)`
Builds an MBean path and creates an ObjectName instance using the path.
`void`
`register(ZKMBeanInfo bean, ZKMBeanInfo parent)`
Registers a new MBean with the platform MBean server.
`static void`
`setInstance(MBeanRegistry instance)`
Useful for unit tests.
`void`
`unregister(ZKMBeanInfo bean)`
Unregister MBean.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DOMAIN

public static final String DOMAIN

See Also:
  - Constant Field Values

## Constructor Details

### MBeanRegistry

public MBeanRegistry()

## Method Details

### setInstance

public static void setInstance(MBeanRegistry instance)
Useful for unit tests. Change the MBeanRegistry instance

Parameters:
  `instance` - new instance

### getInstance

public static MBeanRegistry getInstance()

### getPlatformMBeanServer

public MBeanServer getPlatformMBeanServer()
Return the underlying MBeanServer that is being used to register MBean's. The returned MBeanServer may be a new empty MBeanServer if running through IKVM.

### register

public void register(ZKMBeanInfo bean, ZKMBeanInfo parent) throws JMException
Registers a new MBean with the platform MBean server.

Parameters:
  `bean` - the bean being registered
  `parent` - if not null, the new bean will be registered as a child node of this parent.
Throws:
  `JMException`

### getRegisteredBeans

public Set<ZKMBeanInfo> getRegisteredBeans()

Returns:
  a `Collection` with the `ZKMBeanInfo` instances not unregistered. Mainly for testing purposes.

### unregister

public void unregister(ZKMBeanInfo bean)
Unregister MBean.

Parameters:
  `bean` -

### makeFullPath

public String makeFullPath(String prefix, String... name)
Generate a filesystem-like path.

Parameters:
  `prefix` - path prefix
  `name` - path elements
Returns:
  absolute path

### makeFullPath

protected String makeFullPath(String prefix, ZKMBeanInfo bean)

### makeObjectName

protected ObjectName makeObjectName(String path, ZKMBeanInfo bean) throws MalformedObjectNameException
Builds an MBean path and creates an ObjectName instance using the path.

Parameters:
  `path` - MBean path
  `bean` - the MBean instance
Returns:
  ObjectName to be registered with the platform MBean server
Throws:
  `MalformedObjectNameException`