{
final AMX proxy = getProxyFactory().getProxy( objectName, AMX.class );
if ( proxy instanceof Container && proxy.getGroup().equals( AMX.GROUP_CONFIGURATION ) )
{
final Extra extra = Util.getExtra( proxy );
final String[] attrNames = extra.getAttributeNames();
for( int i = 0; i < attrNames.length; ++i )
{
final String name = attrNames[ i ];
final String SUFFIX = "ObjectNameMap";
final String PREFIX = JMXUtil.GET;
if ( name.endsWith( SUFFIX ) )
{
final String base = StringUtil.stripPrefixAndSuffix( name, PREFIX, SUFFIX );
if ( base.endsWith( "ConnectorModuleConfig" ) )
{
// these are created via deployment not directly
continue;
}
final String createName = "create" + base;
final String removeName = "remove" + base;
final String j2eeType = proxy.getJ2EEType();
if ( ignoreCreateRemove( proxy.getJ2EEType(), createName ) )
{
continue;
}
final MBeanOperationInfo[] creates =
JMXUtil.findOperations( extra.getMBeanInfo().getOperations(), createName );
boolean haveCreate = false;
for( int op = 0; op < creates.length; ++op )
{
final MBeanOperationInfo info = creates[ op ];
if ( info.getReturnType().equals( ObjectName.class.getName() ) )
{
haveCreate = true;
break;
}
}
assert( haveCreate ) :
"Missing operation " + createName + "() for " + objectName;
final MBeanOperationInfo[] removes =
JMXUtil.findOperations( extra.getMBeanInfo().getOperations(), removeName );
boolean haveRemove = false;
for( int op = 0; op < removes.length; ++op )
{
final MBeanOperationInfo info = removes[ op ];
if ( info.getReturnType().equals( "void" ) &&