001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.q2.iso; 020 021import org.jdom2.Element; 022import org.jpos.q2.QBeanSupport; 023import org.jpos.q2.QFactory; 024import org.jpos.util.Destroyable; 025import org.jpos.util.NameRegistrar; 026 027/** 028 * Task Adaptor 029 * 030 * @author Alejandro Revilla 031 * @version $Revision$ $Date$ 032 */ 033public class TaskAdaptor extends QBeanSupport { 034 Object task; 035 036 /** Default constructor. */ 037 public TaskAdaptor () { 038 super (); 039 } 040 041 protected void initService () throws Exception { 042 QFactory factory = getServer().getFactory(); 043 Element e = getPersist (); 044 task = factory.newInstance (e.getChildTextTrim ("class")); 045 factory.setLogger (task, e); 046 } 047 protected void startService () throws Exception { 048 getServer().getFactory().setConfiguration(task, getPersist()); 049 NameRegistrar.register (getName (), task); 050 if (task instanceof Runnable) { 051 new Thread ((Runnable) task).start (); 052 } 053 } 054 protected void stopService () throws Exception { 055 NameRegistrar.unregister (getName ()); 056 if (task instanceof Destroyable) 057 ((Destroyable)task).destroy (); 058 } 059 /** 060 * Returns the wrapped task instance. 061 * 062 * @return the task object, or {@code null} before {@code initService} 063 */ 064 public Object getObject () { 065 return task; 066 } 067} 068