<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    controller.uninstall() fails when overriding the KernelControllerContext name
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/emuckenhuber">Emanuel Muckenhuber</a> in <i>JBoss Microcontainer</i> - <a href="http://community.jboss.org/message/539255#539255">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>When i manully set a name for a KernelControllerContext the uninstallation of contexts does not work properly.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(<font color="red">"test"</font>, Object.class.getName());
&#160;&#160;&#160;&#160;&#160; 
ObjectName name = <font color="navy"><b>new</b></font> ObjectName(<font color="red">"org.jboss:service=test"</font>);
&#160;&#160;&#160;&#160;&#160; 
KernelControllerContext ctx = <font color="navy"><b>new</b></font> AbstractKernelControllerContext(null, builder.getBeanMetaData(), <font color="navy"><b>new</b></font> Object());
ctx.setName(name);
&#160;
getController().install(ctx);
getController().uninstall(name);
&#160;&#160;&#160;&#160;&#160; 
assertNull(getController().getContext(name, <font color="navy"><b>null</b></font>));
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In this case the context does not get properly uninstalled and ends up in the ERROR state (without any error message - which IMHO is also a bit weird). The name change happens in the "InstallAction" which uses the original name of the BeanMetaData to register the context in the KernelRegistry:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">BeanMetaData metaData = context.getBeanMetaData();
Object name = metaData.getName();
registry.registerEntry(name, context);
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Which then changes the controllerContexts back to the name which was defined in the BeanMetaData. Basically you can lookup the correct context, however the context cannot be remove from allContexts in the controller - since the name it got registers now is different from the context name:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">controller.uninstall(objectName)
...
ControllerContext context = getRegisteredContextAndInterruptAsynchronousInstall(objectName);
....
unregisterControllerContext(context);
....
Object beanMetaDataName = context.getName();
allContext.remove(beanMetaDataName);
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Obviously when i set the original context name before uninstalling this works fine.</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/539255#539255">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Microcontainer at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2114">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>