pivot-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roger Whitcomb <Roger.Whitc...@actian.com>
Subject RE: Unserialize an object in class constructor
Date Mon, 24 Mar 2014 17:42:05 GMT
Hi Ilya,
	Well, the answer is yes, but ....  If your FinanceWindow.bxml has the top-level object as
a FinanceWindow, then if in the FinanceWindow constructor you load that bxml file, you will
get into an infinite recursion.  But, if your FinanceWindow.bxml has just the content of your
window and you create the top-level Window object some other way (i.e. just do a "new FinanceWindow"
in the startup code as you have it), then you could just read the contents of the window and
set the window's child from the BXML file (which is NOT what you have in your code), then
that should work.
	I'm curious why you want to do this?  It is pretty much the same code either way, but if
you let the BXMLSerializer create all the objects (including the top-level window) it is a
tiny bit less work in your code.  Or is there a design pattern you're trying to achieve?

HTH,
~Roger

-----Original Message-----
From: Ilya Zimnovich [mailto:zimnovich@gmail.com] 
Sent: Monday, March 24, 2014 9:26 AM
To: user@pivot.apache.org
Subject: Unserialize an object in class constructor

Dear Apache Pivot experts,

All the Apache Pivot examples unserialize an objects with BXMLSerializer's readObject method:

....
    public void startup(Display display, Map<String, String> properties) throws Exception
    {
        String language = properties.get("language");
        Locale locale = (language == null) ? Locale.getDefault() : new Locale(language);
        Resources resources = new
Resources(FinanceWindow.class.getName(), locale);
       
        BXMLSerializer bxmlSerializer = new BXMLSerializer();
        window =
(FinanceWindow)bxmlSerializer.readObject(getClass().getResource("FinanceWindow.bxml"),
resources);
        window.open(display);
    }
....

Is there a way to unserialize the object in its constructor? I mean something like the below:

....
    public void startup(Display display, Map<String, String> properties) throws Exception
    {
        window = new FinanceWindow();
        window.open(display);
    }
....

public class FinanceWindow extends Frame implements Bindable { ....

    public FinanceWindow()
    {
        BXMLSerializer bxmlSerializer = new BXMLSerializer();

        // Load localized resources and unserialize the object
        String language = properties.get("language");
        Locale locale = (language == null) ? Locale.getDefault() : new Locale(language);
        Resources resources = new Resources(getClass().getName(), locale);

        bxmlSerializer.readObjectXXXX(this, "FinanceWindow.bxml");

....


Best Regards,
Ilya A. Zimnovich



Mime
View raw message