In awt related persistence delegates, I need to do a check first:
1 .PersistenceDelegate pd = enc.getPersistenceDelegate(oldVal.getClass());

2. if (!pd.mutatesTo(oldVal, newVal)) {
        // Do something here.
    }

Do you mean here, that oldVal, newVal and pd are completely unrelated
to the persistence delegate that encapsulates this logic? Just try to
guess why do you need this - access methods of one persistence
delegate from another persistence delegate. Can you show the complete
context of this?

Regards,

2007/7/18, Spark Shen <[EMAIL PROTECTED]>:
2007/7/18, Alexei Zakharov <[EMAIL PROTECTED]>:
>
> Spark,
>
> > As you can see, put these delegates into o.a.h.beans package would
> result in
> > tweaked code.
>
> Sorry, looks like I miss your idea.  Do we need to call some
> package-protected methods here? Could you please explain in more
> details?


OK, sorry for not explain myself clearly.

In awt related persistence delegates, I need to do a check first:
1 .PersistenceDelegate pd = enc.getPersistenceDelegate(oldVal.getClass());

2. if (!pd.mutatesTo(oldVal, newVal)) {
        // Do something here.
    }

As you can see, in the first step, I get the persistence delegate for old
value. And in the 2nd step, if this delegate says old value and new value
are mutable, then I will do something. But mutatesTo method invoked in the
if statement is a protected method, if I put awt delegates into
o.a.h.beanspackage, I need to do many extra work to implement similar
logic as above,
and the result code may become complex and ugly.

Based on that, I prefer to move those delegates in o.a.h.beans into
java.beans.

Thanks!
>
> 2007/7/18, Spark Shen <[EMAIL PROTECTED]>:
> > 2007/7/18, Yang Paulex <[EMAIL PROTECTED]>:
> > >
> > > Spark,
> > >
> > > I noticed that you were working at the persistent delegation
> > > implementations
> > > recently, thanks for this enhancement.
> >
> > I am now adding  persistence delegate for some classes of awt package.
> > Please refer to HY-4473 for detailed information.
> >
> > But I'm a little confused on this
> > > patch and some others before, seems you are adding the implementations
> to
> > > java.beans package, but in our former implementations, there are some
> for
> > > primitive types in o.a.h.beans, I suppose they are actually stuffs in
> same
> > > category, so does it make sense to make them in same package?
> >
> >
> > I planed to put all the persistence delegates into o.a.h.beans package,
> but
> > encounter problem. Persistence delegate of awt classes need to first
> check
> > whether target value and new value will be mutable, as below:
> > <snip>
> > PersistenceDelegate pd = enc
> >     .getPersistenceDelegate(targetVal.getClass());
> > if (!pd.mutatesTo(targetVal, newVal)) {
> >     Statement setterStm = new Statement(oldInstance, "add", new Object[]
> {
> > oldVal });
> >     enc.writeStatement(setterStm);
> > }
> > </snip>
> > As you can see, put these delegates into o.a.h.beans package would
> result in
> > tweaked code.
> >
> > I agree to put all delegates into one place. Since that way, code would
> be
> > more readable. And given the awt delegates implementation, my preferred
> > destination is java.beans package.
> >
> >
> > 2007/7/18, spark shen (JIRA) <[EMAIL PROTECTED]>:
> > > >
> > > >
> > > >      [
> > > >
> > >
> 
https://issues.apache.org/jira/browse/HARMONY-4473?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
> > > ]
> > > >
> > > > spark shen updated HARMONY-4473:
> > > > --------------------------------
> > > >
> > > >     Attachment: HY-4473.patch
> > > >
> > > > > [classlib][beans] Current bean implementation does not persist
> > > > awt.Choice properly
> > > > >
> > > >
> > >
> 
----------------------------------------------------------------------------------
> > > > >
> > > > >                 Key: HARMONY-4473
> > > > >                 URL:
> > > https://issues.apache.org/jira/browse/HARMONY-4473
> > > > >             Project: Harmony
> > > > >          Issue Type: Bug
> > > > >          Components: Classlib
> > > > >            Reporter: spark shen
> > > > >            Assignee: Tony Wu
> > > > >         Attachments: HY-4473.patch, HY-4473.sh
> > > > >
> > > > >
> > > > > The following test case will throw StackOverflowError on Harmony
> but
> > > > pass on RI:
> > > > > public void test_writeObject_java_awt_Choice() {
> > > > >         ByteArrayOutputStream byteArrayOutputStream = new
> > > > ByteArrayOutputStream();
> > > > >         XMLEncoder encoder = new XMLEncoder(new
> BufferedOutputStream(
> > > > >             byteArrayOutputStream));
> > > > >         Choice choice = new Choice();
> > > > >         encoder.writeObject(choice);
> > > > >         encoder.close();
> > > > >         DataInputStream stream = new DataInputStream(new
> > > > ByteArrayInputStream(
> > > > >                 byteArrayOutputStream.toByteArray()));
> > > > >         XMLDecoder decoder = new XMLDecoder(stream);
> > > > >         Choice aChoice = (Choice) decoder.readObject();
> > > > >         assertEquals(choice.getFocusTraversalKeysEnabled(),
> aChoice
> > > > >                 .getFocusTraversalKeysEnabled());
> > > > >     }
> > > > > Besides Choice, the awt classes need special treatment are:
> > > > > SystemColor,
> > > > > TextAttribute,
> > > > > MenuShortcut,
> > > > > awt.Component,
> > > > > awt.Container,
> > > > > Menu,
> > > > > MenuBar,
> > > > > awt.List,
> > > > > BorderLayout,
> > > > > CardLayout,
> > > > > GridLayout,
> > > > > Insets,
> > > > > Point,
> > > > > ScrollPane
> > > >
> > > > --
> > > > This message is automatically generated by JIRA.
> > > > -
> > > > You can reply to this email to add a comment to the issue online.


--
Alexei Zakharov,
Intel ESSD

Reply via email to