ingo@1631: package de.intevation.flys.artifacts.services; ingo@1631: ingo@1631: import org.w3c.dom.Document; ingo@1631: ingo@1631: import org.apache.log4j.Logger; ingo@1631: ingo@1631: import org.hibernate.Session; ingo@1631: ingo@1631: import de.intevation.artifacts.CallMeta; ingo@1631: import de.intevation.artifacts.GlobalContext; ingo@1631: ingo@1631: import de.intevation.artifactdatabase.DefaultService; ingo@1631: ingo@1631: import de.intevation.flys.backend.SessionHolder; ingo@1631: ingo@1631: ingo@1631: public abstract class FLYSService extends DefaultService { ingo@1631: ingo@1631: private static final Logger logger = Logger.getLogger(FLYSService.class); ingo@1631: ingo@1631: ingo@1631: public Document process( ingo@1631: Document data, ingo@1631: GlobalContext globalContext, ingo@1631: CallMeta callMeta ingo@1631: ) { ingo@1631: init(); ingo@1631: ingo@1631: try { ingo@1631: return doProcess(data, globalContext, callMeta); ingo@1631: } ingo@1631: finally { ingo@1631: shutdown(); ingo@1631: } ingo@1631: } ingo@1631: ingo@1631: ingo@1631: protected abstract Document doProcess( ingo@1631: Document data, ingo@1631: GlobalContext globalContext, ingo@1631: CallMeta callMeta); ingo@1631: ingo@1631: ingo@1631: protected void init() { ingo@1631: logger.debug("init"); ingo@1631: SessionHolder.acquire(); ingo@1631: } ingo@1631: ingo@1631: ingo@1631: protected void shutdown() { ingo@1631: logger.debug("shutdown"); ingo@1631: Session session = SessionHolder.HOLDER.get(); ingo@1631: session.close(); ingo@1631: ingo@1631: SessionHolder.release(); ingo@1631: } ingo@1631: } ingo@1631: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :