package org.mobicents.slee.container.component.deployment.jaxb.descriptors; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.slee.SLEEException; import javax.slee.management.DeploymentException; import org.mobicents.slee.container.component.deployment.jaxb.descriptors.common.MSecurityPermissions; import org.mobicents.slee.container.component.deployment.jaxb.descriptors.ra.MResourceAdaptor; import org.mobicents.slee.container.component.deployment.jaxb.descriptors.ra.MResourceAdaptorJar; /** * * Factory to build {@link ResourceAdaptorDescriptorImpl} objects. * * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a> * @author <a href="mailto:baranowb@gmail.com"> Bartosz Baranowski </a> */ public class ResourceAdaptorDescriptorFactory extends AbstractDescriptorFactory { /** * Builds a list of {@link ResourceAdaptorDescriptorImpl} objects, from an {@link InputStream} containing the resource adaptor jar xml. * @param inputStream * @return * @throws DeploymentException */ public List<ResourceAdaptorDescriptorImpl> parse(InputStream inputStream) throws DeploymentException { Object jaxbPojo = buildJAXBPojo(inputStream); List<ResourceAdaptorDescriptorImpl> result = new ArrayList<ResourceAdaptorDescriptorImpl>(); boolean isSlee11 = false; MResourceAdaptorJar mResourceAdaptorJar = null; if (jaxbPojo instanceof org.mobicents.slee.container.component.deployment.jaxb.slee.ra.ResourceAdaptorJar) { mResourceAdaptorJar = new MResourceAdaptorJar((org.mobicents.slee.container.component.deployment.jaxb.slee.ra.ResourceAdaptorJar)jaxbPojo); } else if (jaxbPojo instanceof org.mobicents.slee.container.component.deployment.jaxb.slee11.ra.ResourceAdaptorJar ) { mResourceAdaptorJar = new MResourceAdaptorJar((org.mobicents.slee.container.component.deployment.jaxb.slee11.ra.ResourceAdaptorJar)jaxbPojo); isSlee11 = true; } else { throw new SLEEException("unexpected class of jaxb pojo built: "+(jaxbPojo != null ? jaxbPojo.getClass() : null)); } MSecurityPermissions securityPermissions = mResourceAdaptorJar.getSecurityPermissions(); for (MResourceAdaptor mResourceAdaptor : mResourceAdaptorJar.getResourceAdaptor()) { result.add(new ResourceAdaptorDescriptorImpl(mResourceAdaptor, securityPermissions, isSlee11)); } return result; } }