/* * Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.wso2.carbon.mediator.fault.ui.util; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.impl.llom.util.AXIOMUtil; import org.apache.axiom.soap.SOAP11Constants; import org.apache.axiom.soap.SOAP12Constants; import org.wso2.carbon.mediator.fault.FaultMediator; import org.wso2.carbon.sequences.ui.util.ns.XPathFactory; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.xml.namespace.QName; import java.net.URI; import java.net.URISyntaxException; import java.util.Iterator; public class FaultUtil { public static void populateFautlMediator(HttpServletRequest request, javax.servlet.http.HttpSession session, FaultMediator faultMediator) { populateSoapVersion(request, faultMediator); if (FaultMediator.SOAP11 == faultMediator.getSoapVersion()) { populateFaultCode(request, faultMediator); populateFaultString(request, session, faultMediator); populateFaultActor(request, faultMediator); populateFaultDetail(request, session, faultMediator); } else if (FaultMediator.SOAP12 == faultMediator.getSoapVersion()) { populateFaultCode(request, faultMediator); populateFaultReason(request, session, faultMediator); populateRole(request, faultMediator); populateNode(request, faultMediator); populateFaultDetail(request, session, faultMediator); }else if(FaultMediator.POX == faultMediator.getSoapVersion()){ populateFaultReason(request, session, faultMediator); populateFaultDetail(request, session, faultMediator); } } private static void populateSoapVersion(HttpServletRequest request, FaultMediator faultMediator) { //TODO validation faultMediator.setSoapVersion(Integer.parseInt(request.getParameter("soap_version"))); } private static void populateFaultCode(HttpServletRequest request, FaultMediator faultMediator) { String faultCode; String namespace; String prefix; if (faultMediator.getSoapVersion() == FaultMediator.SOAP12) { namespace = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI; faultCode = request.getParameter("fault_code2"); prefix = "soap12Env"; } else { namespace = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI; faultCode = request.getParameter("fault_code1"); prefix = "soap11Env"; } if(faultMediator.getSoapVersion() != FaultMediator.POX){ faultMediator.setFaultCodeValue(new QName(namespace, faultCode, prefix)); } } private static void populateFaultString(HttpServletRequest request, javax.servlet.http.HttpSession session, FaultMediator faultMediator) { String faultStringType = request.getParameter("fault_string"); if ("value".equals(faultStringType)) { String faultString = request.getParameter("name_space"); faultMediator.setFaultReasonValue(faultString); faultMediator.setFaultReasonExpr(null); } else if ("expression".equals(faultStringType)) { XPathFactory xPathFactory = XPathFactory.getInstance(); faultMediator.setFaultReasonExpr(xPathFactory.createSynapseXPath("name_space", request, session)); faultMediator.setFaultReasonValue(null); } } private static void populateFaultReason(HttpServletRequest request, HttpSession session, FaultMediator faultMediator) { String faultStringType = request.getParameter("fault_string"); if ("value".equals(faultStringType)) { String faultString = request.getParameter("name_space"); faultMediator.setFaultReasonValue(faultString); faultMediator.setFaultReasonExpr(null); } else if ("expression".equals(faultStringType)) { XPathFactory xPathFactory = XPathFactory.getInstance(); faultMediator.setFaultReasonExpr(xPathFactory.createSynapseXPath("name_space", request, session)); faultMediator.setFaultReasonValue(null); } } private static void populateFaultActor(HttpServletRequest request, FaultMediator faultMediator) { try { if (request.getParameter("fault_actor") != null) { URI faultActor = new URI(request.getParameter("fault_actor")); faultMediator.setFaultRole(faultActor); } } catch (URISyntaxException e) { //TODO handler this expection } } private static void populateFaultDetail(HttpServletRequest request, HttpSession session, FaultMediator faultMediator) { String faultDetailType = request.getParameter("fault_detail"); if ("value".equals(faultDetailType)) { String faultDetail = request.getParameter("detail"); faultDetail = faultDetail.trim(); faultMediator.setFaultDetail(null); faultMediator.getFaultDetailElements().clear(); faultMediator.setFaultDetailExpr(null); if (!faultDetail.equals("")) { faultDetail = "<detail>" + faultDetail.trim() + "</detail>"; try { // first try to create an OMElement OMElement element = AXIOMUtil.stringToOM(faultDetail); if (element.getChildElements().hasNext()){ Iterator it = element.getChildElements(); while (it.hasNext()) { faultMediator.addFaultDetailElement((OMElement) it.next()); } } else if (element.getText() != null) { faultMediator.setFaultDetail(element.getText()); } } catch (Exception e) { /* if failed set it as an string */ faultMediator.setFaultDetail(faultDetail); } } else if ("expression".equals(faultDetailType)) { XPathFactory xPathFactory = XPathFactory.getInstance(); faultMediator.setFaultDetailExpr(xPathFactory.createSynapseXPath("detail", request, session)); faultMediator.setFaultDetail(null); } } } private static void populateRole(HttpServletRequest request, FaultMediator faultMediator) { try { if (request.getParameter("fault_actor") != null) { URI faultActor = new URI(request.getParameter("fault_actor")); faultMediator.setFaultRole(faultActor); } } catch (URISyntaxException e) { //TODO handler this expection } } private static void populateNode(HttpServletRequest request, FaultMediator faultMediator) { try { if (request.getParameter("node") != null) { URI faultActor = new URI(request.getParameter("node")); faultMediator.setFaultNode(faultActor); } } catch (URISyntaxException e) { //TODO handler this expection } } public static String repalceDoubleQuotation(String in) { return in.replaceAll("\"", "\'"); } }