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.references.MLibraryRef;
import org.mobicents.slee.container.component.deployment.jaxb.descriptors.event.MEventDefinition;
import org.mobicents.slee.container.component.deployment.jaxb.descriptors.event.MEventJar;
/**
* Factory to build {@link EventTypeDescriptorImpl} objects.
* @author martins
*
*/
public class EventTypeDescriptorFactory extends AbstractDescriptorFactory {
/**
* Builds a list of {@link EventTypeDescriptorImpl} objects, from an {@link InputStream} containing the event jar xml.
* @param inputStream
* @return
* @throws DeploymentException
*/
public List<EventTypeDescriptorImpl> parse(InputStream inputStream) throws DeploymentException {
Object jaxbPojo = buildJAXBPojo(inputStream);
List<EventTypeDescriptorImpl> result = new ArrayList<EventTypeDescriptorImpl>();
boolean isSlee11 = false;
MEventJar mEventJar = null;
if (jaxbPojo instanceof org.mobicents.slee.container.component.deployment.jaxb.slee.event.EventJar) {
mEventJar = new MEventJar((org.mobicents.slee.container.component.deployment.jaxb.slee.event.EventJar)jaxbPojo);
}
else if (jaxbPojo instanceof org.mobicents.slee.container.component.deployment.jaxb.slee11.event.EventJar ) {
mEventJar = new MEventJar((org.mobicents.slee.container.component.deployment.jaxb.slee11.event.EventJar)jaxbPojo);
isSlee11 = true;
}
else {
throw new SLEEException("unexpected class of jaxb pojo built: "+(jaxbPojo != null ? jaxbPojo.getClass() : null));
}
List<MLibraryRef> libraryRefs = mEventJar.getLibraryRef();
for (MEventDefinition mEventDefinition : mEventJar.getEventDefinition()) {
result.add(new EventTypeDescriptorImpl(mEventDefinition,libraryRefs,isSlee11));
}
return result;
}
}