<!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;">
    beanifying the config
</h3>
<span style="margin-bottom: 10px;">
    reply from <a href="http://community.jboss.org/people/jhalliday">Jonathan Halliday</a> in <i>JBoss Transactions Development</i> - <a href="http://community.jboss.org/message/534687#534687">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>I think it's about time for another round...</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Many of the remaining static initializers are concerned with taking a property value from an EnvironmentBean and using it to instantiate a class or classes e.g.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>String checkedActionFactory = arjPropertyManager.getCoordinatorEnvironmentBean().getCheckedActionFactory();<br/>Class factory = Thread.currentThread().getContextClassLoader().loadClass(checkedActionFactory);</p><p>CheckedActionFactory _checkedActionFactory = (CheckedActionFactory) factory.newInstance();</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'd like something that gives better control over</p><p>&#160; a) dynamic changes - it should not be necessary to reload the class (which basically means restarting the server) to change the effective value. Actually this is not just an issue for Class type properties and should probably be discussed separately.</p><p>&#160; b) type safety - ideally we'd detect problems at the point setCheckedActionFactory was called</p><p>&#160; c) class loading, particularly with regard to availability of the class and supply of any parameters it may need.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'm mulling over a few alternatives, such as adding a typed version of the getter to the EnvironmentBean</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>CheckedActionFactory _checkedActionFactory = arjPropertyManager.getCoordinatorEnvironmentBean().getCheckedActionFactoryInstance();</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>and having some form of update synchronization between that and the setCheckedActionFactory(String) method. That may be sync on write i.e. instantiate the class at the point its stringified name is supplied, or it may be lazy. It may also be desirable to add a typed setter to the EnvironmentBean:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>public class CoordinatorEnvironmentBean {</p><p>&#160; public void setCheckedActionFactoryInstance(CheckedActionFactory instance) {...}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>although then we have also to tackle the reverse update of the String value from the class. However, it would allow for better beans wiring by DI frameworks compared to the current situation. In particular, the CheckedActionFactory impl could require ctor params and have those wired by the DI farmework, which is not possible with the current loading mechanism.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Anybody care to venture an opinion before I pick an implementation alternative at random?</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/534687#534687">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Transactions Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2041">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


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

</div>

</body>
</html>