| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF 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.apache.camel.wsdl_first; |
| |
| import javax.xml.ws.Holder; |
| |
| import org.apache.camel.Exchange; |
| import org.apache.camel.Processor; |
| import org.apache.cxf.message.MessageContentsList; |
| import org.apache.cxf.service.model.BindingOperationInfo; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| // START SNIPPET: personProcessor |
| public class PersonProcessor implements Processor { |
| |
| private static final transient Logger LOG = LoggerFactory.getLogger(PersonProcessor.class); |
| |
| @SuppressWarnings("unchecked") |
| public void process(Exchange exchange) throws Exception { |
| LOG.info("processing exchange in camel"); |
| |
| BindingOperationInfo boi = (BindingOperationInfo)exchange.getProperty(BindingOperationInfo.class.toString()); |
| if (boi != null) { |
| LOG.info("boi.isUnwrapped" + boi.isUnwrapped()); |
| } |
| // Get the parameters list which element is the holder. |
| MessageContentsList msgList = (MessageContentsList)exchange.getIn().getBody(); |
| Holder<String> personId = (Holder<String>)msgList.get(0); |
| Holder<String> ssn = (Holder<String>)msgList.get(1); |
| Holder<String> name = (Holder<String>)msgList.get(2); |
| |
| if (personId.value == null || personId.value.length() == 0) { |
| LOG.info("person id 123, so throwing exception"); |
| // Try to throw out the soap fault message |
| org.apache.camel.wsdl_first.types.UnknownPersonFault personFault = |
| new org.apache.camel.wsdl_first.types.UnknownPersonFault(); |
| personFault.setPersonId(""); |
| org.apache.camel.wsdl_first.UnknownPersonFault fault = |
| new org.apache.camel.wsdl_first.UnknownPersonFault("Get the null value of person name", personFault); |
| // Since camel has its own exception handler framework, we can't throw the exception to trigger it |
| // We just set the fault message in the exchange for camel-cxf component handling and return |
| exchange.getOut().setFault(true); |
| exchange.getOut().setBody(fault); |
| return; |
| } |
| |
| name.value = "Bonjour"; |
| ssn.value = "123"; |
| LOG.info("setting Bonjour as the response"); |
| // Set the response message, first element is the return value of the operation, |
| // the others are the holders of method parameters |
| exchange.getOut().setBody(new Object[] {null, personId, ssn, name}); |
| } |
| |
| } |
| // END SNIPPET: personProcessor |