org.objectweb.petals.engine.pojo.PojoSE Maven / Gradle / Ivy
/**
* PETALS - PETALS Services Platform.
* Copyright (c) 2005 EBM Websourcing, http://www.ebmwebsourcing.com/
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* -------------------------------------------------------------------------
* $Id: PojoSE.java 676 2006-06-27 15:44:03Z alouis $
* -------------------------------------------------------------------------
*/
package org.objectweb.petals.engine.pojo;
import java.util.HashMap;
import java.util.Map;
import javax.jbi.JBIException;
import javax.jbi.component.ComponentContext;
import javax.jbi.servicedesc.ServiceEndpoint;
import org.objectweb.petals.component.common.HandlingException;
import org.objectweb.petals.component.common.se.AbstractServiceEngine;
import org.objectweb.petals.component.common.su.ServiceUnitDataHandler;
import org.objectweb.petals.component.common.su.SimpleServiceUnitManager;
import org.objectweb.petals.component.common.util.MessageExchangeWrapper;
import org.objectweb.petals.tools.jbicommon.descriptor.Extensions;
public class PojoSE extends AbstractServiceEngine {
private Map pojos;
public void init(final ComponentContext compContext) throws JBIException {
super.init(compContext);
pojos = new HashMap();
// set the SU listener that will perform extra process on SU deployment
PojoServiceUnitListener suListener = new PojoServiceUnitListener(this,
pojos);
setServiceUnitListener(suListener);
}
@Override
protected boolean onExchange(MessageExchangeWrapper exchangeWrapper, Extensions extensions)
throws HandlingException {
ServiceEndpoint ep = exchangeWrapper.getEndpoint();
ServiceUnitDataHandler suData = ((SimpleServiceUnitManager) getServiceUnitManager())
.getSuDataHandlerForEp(ep);
if (suData == null) {
throw new HandlingException("No POJO is found for service "
+ ep.getServiceName());
}
Pojo pojo = pojos.get(suData.getName());
return pojo.callOnExchangeMethod(exchangeWrapper);
}
}