looking again at your code: you don't need a factory, just make the constructor public, remove the initialization method (form both class and hivemind descriptor) and you are done.

You don't need the code in the current() method, because hivemind will already take care of this...

By convention the class should be called ReportFactoryImpl and not ReportProvider...

Cheers,
Ron



Jason Suplizio wrote:
Hello all,
I've been spinning my wheels over this all day. I have 2 things I'm trying
to accomplish:
1- Wire up Hivemind to get singleton and inject it into my page.
2- If necessary, since I can not serialize my providers, data squeeze the
singleton.

Essentially, I call a synchronized current() method on a provider (with a
private constructor), which returns the singleton. My provider implements a
factory interface used to build the object returned.

This is where I'm at...please see if you can help!

hivemodule.xml
<service-point  id="report" interface="com.myApp.ReportFactory"/>

    <implementation service-id="reportMap">
        <invoke-factory model="singleton">
          <construct class="com.myApp.ReportProvider"
initialize-method="current"/>
       </invoke-factory>
    </implementation>

MyPage.page
    <inject object="service:myReportingApp.reportMap" property="provider"/>

MyPage.java
public abstract AdminReportMapFactory getProvider();

ReportProvider .java
public class ReportProvider implements ReportFactory {

    private static ReportProvider current = null;
    private ReportProvider() {
        // default constructor - needs to be private to enforce singleton
nature
        super();
    }

    /**
     * Get the singleton instance
     * @return ReportProvider
     */
    public static synchronized ReportProvider current() {
        if (current == null) {
            current = new ReportProvider();
        }
        return current;
}
public List lookup(String name, String reportID) {
        return getFactory().lookupReportID(name, reportID);
    }

private ReportFactory getFactory() {
        return ReportFactoryImpl.getInstance();
    }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to