<!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;">
JBJPA-27 and setting PersistenceUnitMetaData reference to PersistenceMetaData
</h3>
<span style="margin-bottom: 10px;">
reply from <a href="http://community.jboss.org/people/smarlow%40redhat.com">Scott Marlow</a> in <i>JBoss XML Binding Development</i> - <a href="http://community.jboss.org/message/540480#540480">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 the collection is set, I need to do some special initialization on each item in the collection.  It might look something like this:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>public</b></font> List<PersistenceUnitMetaData> getPersistenceUnits()
   <font color="navy">{</font>
      <font color="navy"><b>if</b></font>(NOT INITIALIZED YET)
      <font color="navy">{</font>
         <font color="navy"><b>for</b></font>( Iterator<PersistenceUnitMetaData> iter = persistenceUnits.iterator(); iter.hasNext(); )
         <font color="navy">{</font>
            PersistenceUnitMetaData pumd = iter.next();
            pumd.setPersistenceMetaData(<font color="navy"><b>this</b></font>);
         <font color="navy">}</font>
      <font color="navy">}</font>
      <font color="navy"><b>return</b></font> persistenceUnits;
   <font color="navy">}</font>
 
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I started out with this logic in the setter but found that null is passed in.  When the getter is called from CollectionPropertyHandler (I'm not on XB trunk yet), the collection hasn't been set yet (as by design in CollectionPropertyHandler.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Others have said that I should place my initialization logic in the getter (by convention).  I'm not sure if that is a XB convention or a more general convention that other XML parsing/processing libraries also use. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>1.  I need a strong contract/convention that I can depend on with regard to custom initialization after the collection has been set.  Whether that is a setter or getter contract (I assume getter is better since it shouldn't mutate the collection).  I am mutating the objects referenced by the collection which can be a delicate operation (will need to avoid mutating the hashkey).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>2.  I don't know the existing conventions that we might already depend on.  I am not making a case to make changes to current conventions that could break other XB dependent code. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>I hope that helps illustrate what I am trying to do.</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/540480#540480">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss XML Binding Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2065">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>