/** * Converts the received object into a {@link LifeCycleEvent} that can be handled by the {@link * org.jvoicexml.callmananager.mmi.MMICallManager}. * * @param object the received object * @return the converted lifecycle event, <code>null</code> if the object could not be converted * or is not addressed to this modality component * @throws ParserConfigurationException * @throws TransformerException * @throws IOException * @throws SAXException */ private LifeCycleEvent convertToLifeCycleEvent(final Object object) throws SAXException, IOException, TransformerException, ParserConfigurationException { if (!(object instanceof LifeCycleEvents.LifeCycleEvent)) { return null; } final LifeCycleEvents.LifeCycleEvent receivedEvent = (LifeCycleEvents.LifeCycleEvent) object; final String target = receivedEvent.getTarget(); if (!target.equals(sourceUrl)) { return null; } final LifeCycleEvent event; final LifeCycleEvents.LifeCycleEvent.LifeCycleEventType type = receivedEvent.getType(); if (type.equals(LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.PREPARE_REQUEST)) { final PrepareRequest request = new PrepareRequest(); final LifeCycleEvents.LifeCycleRequest decodedLifeCycleRequest = extractContext(receivedEvent, request); final LifeCycleEvents.PrepareRequest decodedPrepareRequest = decodedLifeCycleRequest.getExtension(LifeCycleEvents.PrepareRequest.request); request.setContentURL(decodedPrepareRequest.getContentURL()); final String content = decodedPrepareRequest.getContent(); if ((content != null) && !content.isEmpty()) { final AnyComplexType any = new AnyComplexType(); final Object convertedContent = convertContent(content); any.getContent().add(convertedContent); request.setContent(any); } event = request; } else if (type.equals(LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.NEW_CONTEXT_REQUEST)) { final NewContextRequest request = new NewContextRequest(); extractContext(receivedEvent, request); event = request; } else if (type.equals(LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.START_REQUEST)) { final StartRequest request = new StartRequest(); final LifeCycleEvents.LifeCycleRequest decodedLifeCycleRequest = extractContext(receivedEvent, request); final LifeCycleEvents.StartRequest decodedStartRequest = decodedLifeCycleRequest.getExtension(LifeCycleEvents.StartRequest.request); request.setContentURL(decodedStartRequest.getContentURL()); final String content = decodedStartRequest.getContent(); if ((content != null) && !content.isEmpty()) { final AnyComplexType any = new AnyComplexType(); final Object convertedContent = convertContent(content); any.getContent().add(convertedContent); request.setContent(any); } event = request; } else if (type.equals(LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.CANCEL_REQUEST)) { final NewContextRequest request = new NewContextRequest(); extractContext(receivedEvent, request); event = request; } else if (type.equals(LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.PAUSE_REQUEST)) { final NewContextRequest request = new NewContextRequest(); extractContext(receivedEvent, request); event = request; } else if (type.equals(LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.RESUME_REQUEST)) { final NewContextRequest request = new NewContextRequest(); extractContext(receivedEvent, request); event = request; } else if (type.equals( LifeCycleEvents.LifeCycleEvent.LifeCycleEventType.CLEAR_CONTEXT_REQUEST)) { final NewContextRequest request = new NewContextRequest(); extractContext(receivedEvent, request); event = request; } else { event = null; } event.setTarget(receivedEvent.getTarget()); event.setRequestId(receivedEvent.getRequestID()); event.setSource(receivedEvent.getSource()); return event; }