You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Jonathan Anstey <ja...@iona.com> on 2007/04/20 17:28:29 UTC

Re: svn commit: r530117 [1/2] - in /incubator/cxf/trunk/rt: ./ bindings/ bindings/jbi/ bindings/jbi/src/ bindings/jbi/src/main/ bindings/jbi/src/main/java/ bindings/jbi/src/main/java/org/ bindings/jbi/src/main/java/org/apache/ bindings/jbi/src/main/java/or...

Hi Guillaume,

Was the 
trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi 
directory meant to be a replacement for 
trunk/integration/jbi/src/main/java/org/apache/cxf/jbi/transport? If so, 
the duplicate stuff should probably be removed.

Cheers,
Jon

gnodet@apache.org wrote:
> Author: gnodet
> Date: Wed Apr 18 11:27:39 2007
> New Revision: 530117
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=530117
> Log:
> CXF-262: add a JBI binding and a JBI transport
>
> Added:
>     incubator/cxf/trunk/rt/bindings/jbi/   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/pom.xml   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/
>     incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml   (with props)
>     incubator/cxf/trunk/rt/bindings/jbi/src/test/
>     incubator/cxf/trunk/rt/bindings/jbi/src/test/java/
>     incubator/cxf/trunk/rt/bindings/jbi/src/test/resources/
>     incubator/cxf/trunk/rt/transports/jbi/   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/pom.xml   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBITransportFactory.java   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/Messages.properties   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/resources/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/resources/META-INF/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/resources/META-INF/bus-extensions.xml   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/main/resources/META-INF/cxf/
>     incubator/cxf/trunk/rt/transports/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml   (with props)
>     incubator/cxf/trunk/rt/transports/jbi/src/test/
>     incubator/cxf/trunk/rt/transports/jbi/src/test/java/
>     incubator/cxf/trunk/rt/transports/jbi/src/test/resources/
> Modified:
>     incubator/cxf/trunk/rt/bindings/pom.xml
>     incubator/cxf/trunk/rt/pom.xml
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,3 @@
> +.classpath
> +.project
> +.settings
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/pom.xml?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/pom.xml (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/pom.xml Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,93 @@
> +<!--
> +  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.
> +-->
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
> +    <modelVersion>4.0.0</modelVersion>
> +    <artifactId>cxf-rt-bindings-jbi</artifactId>
> +    <packaging>jar</packaging>
> +    <name>Apache CXF Runtime JBI Binding</name>
> +    <url>http://cwiki.apache.org/CXF</url>
> +
> +    <parent>
> +        <groupId>org.apache.cxf</groupId>
> +        <artifactId>cxf-parent</artifactId>
> +        <version>2.0-incubator-RC-SNAPSHOT</version>
> +        <relativePath>../../../parent/pom.xml</relativePath>
> +    </parent>
> +
> +
> +    <dependencies>
> +
> +        <dependency>
> +            <groupId>org.apache.cxf</groupId>
> +            <artifactId>cxf-api</artifactId>
> +            <version>${project.version}</version>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.cxf</groupId>
> +            <artifactId>cxf-rt-databinding-jaxb</artifactId>
> +            <version>${project.version}</version>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.cxf</groupId>
> +            <artifactId>cxf-testutils</artifactId>
> +            <version>${project.version}</version>
> +            <scope>test</scope>
> +        </dependency>
> +
> +        <dependency>
> +            <groupId>junit</groupId>
> +            <artifactId>junit</artifactId>
> +            <scope>test</scope>
> +        </dependency>
> +
> +        <dependency>
> +            <groupId>org.easymock</groupId>
> +            <artifactId>easymockclassextension</artifactId>
> +            <scope>test</scope>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.geronimo.specs</groupId>
> +            <artifactId>geronimo-javamail_1.4_spec</artifactId>
> +            <scope>test</scope>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.geronimo.specs</groupId>
> +            <artifactId>geronimo-activation_1.1_spec</artifactId>
> +            <scope>test</scope>
> +        </dependency>
> +        
> +         <dependency>
> +             <groupId>org.apache.cxf</groupId>
> +             <artifactId>cxf-tools-common</artifactId>
> +             <version>${project.version}</version>
> +        </dependency>
> +        
> +        <dependency>
> +            <groupId>org.apache.servicemix</groupId>
> +            <artifactId>servicemix-jbi</artifactId>
> +            <version>3.1-incubating</version>
> +        </dependency>
> +      
> +    </dependencies>
> +    <scm>
> +        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/cxf/trunk/rt/bindings/jbi</connection>
> +        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/cxf/trunk/rt/bindings/jbi</developerConnection>
> +    </scm>
> +
> +</project>
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/pom.xml
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/pom.xml
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/pom.xml
> ------------------------------------------------------------------------------
>     svn:mime-type = text/xml
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,50 @@
> +/**
> + * 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.cxf.binding.jbi;
> +
> +import org.apache.cxf.binding.Binding;
> +import org.apache.cxf.interceptor.AbstractBasicInterceptorProvider;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.message.MessageImpl;
> +import org.apache.cxf.service.model.BindingInfo;
> +
> +public class JBIBinding extends AbstractBasicInterceptorProvider implements Binding {
> +
> +    private JBIBindingInfo bindingInfo;
> +    
> +    public JBIBinding(JBIBindingInfo bindingInfo) {
> +        this.bindingInfo = bindingInfo;
> +    }
> +    
> +    public Message createMessage() {
> +        return createMessage(new MessageImpl());
> +    }
> +
> +    public Message createMessage(Message m) {
> +        if (!m.containsKey(Message.CONTENT_TYPE)) {
> +            m.put(Message.CONTENT_TYPE, "text/xml");
> +        }
> +        return new JBIMessage(m);
> +    }
> +
> +    public BindingInfo getBindingInfo() {
> +        return bindingInfo;
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBinding.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,66 @@
> +/**
> + * 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.cxf.binding.jbi;
> +
> +import javax.xml.namespace.QName;
> +
> +import org.apache.cxf.binding.AbstractBindingFactory;
> +import org.apache.cxf.binding.Binding;
> +import org.apache.cxf.binding.jbi.interceptor.JBIFaultOutInterceptor;
> +import org.apache.cxf.binding.jbi.interceptor.JBIOperationInInterceptor;
> +import org.apache.cxf.binding.jbi.interceptor.JBIWrapperInInterceptor;
> +import org.apache.cxf.binding.jbi.interceptor.JBIWrapperOutInterceptor;
> +import org.apache.cxf.interceptor.StaxInInterceptor;
> +import org.apache.cxf.interceptor.StaxOutInterceptor;
> +import org.apache.cxf.service.model.BindingInfo;
> +import org.apache.cxf.service.model.BindingOperationInfo;
> +import org.apache.cxf.service.model.OperationInfo;
> +import org.apache.cxf.service.model.ServiceInfo;
> +
> +public class JBIBindingFactory extends AbstractBindingFactory {
> +
> +    public Binding createBinding(BindingInfo binding) {
> +        JBIBinding jb = new JBIBinding((JBIBindingInfo) binding);
> +        jb.getInInterceptors().add(new JBIOperationInInterceptor());
> +        jb.getInInterceptors().add(new StaxInInterceptor());
> +        jb.getInInterceptors().add(new JBIWrapperInInterceptor());
> +        
> +        jb.getOutInterceptors().add(new StaxOutInterceptor());
> +        jb.getOutInterceptors().add(new JBIWrapperOutInterceptor());
> +
> +        jb.getOutFaultInterceptors().add(new StaxOutInterceptor());
> +        jb.getOutFaultInterceptors().add(new JBIFaultOutInterceptor());
> +        return jb;
> +    }
> +
> +    public BindingInfo createBindingInfo(ServiceInfo service, String namespace, Object config) {
> +        JBIBindingInfo info = new JBIBindingInfo(service, JBIConstants.NS_JBI_BINDING);        
> +        info.setName(new QName(service.getName().getNamespaceURI(), 
> +                               service.getName().getLocalPart() + "JBIBinding"));
> +
> +        for (OperationInfo op : service.getInterface().getOperations()) {                       
> +            BindingOperationInfo bop = 
> +                info.buildOperation(op.getName(), op.getInputName(), op.getOutputName());
> +            info.addOperation(bop);
> +        }
> +        
> +        return info;
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingFactory.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,30 @@
> +/**
> + * 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.cxf.binding.jbi;
> +
> +import org.apache.cxf.service.model.BindingInfo;
> +import org.apache.cxf.service.model.ServiceInfo;
> +
> +public class JBIBindingInfo extends BindingInfo {
> +
> +    public JBIBindingInfo(ServiceInfo service, String bindingId) {
> +        super(service, bindingId);
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIBindingInfo.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,34 @@
> +/**
> + * 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.cxf.binding.jbi;
> +
> +import javax.xml.namespace.QName;
> +
> +
> +public final class JBIConstants {
> +
> +    public static final String NS_JBI_BINDING = "http://cxf.apache.org/bindings/jbi";
> +
> +    public static final String NS_JBI_WRAPPER = "http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper";
> +    
> +    public static final QName JBI_WRAPPER_MESSAGE = new QName(NS_JBI_WRAPPER, "message");
> +
> +    public static final QName JBI_WRAPPER_PART = new QName(NS_JBI_WRAPPER, "part");
> +
> +}
> \ No newline at end of file
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIConstants.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,36 @@
> +/**
> + * 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.cxf.binding.jbi;
> +
> +import javax.jbi.messaging.MessageExchange;
> +
> +import org.apache.cxf.message.AbstractWrappedMessage;
> +import org.apache.cxf.message.Message;
> +
> +public class JBIMessage extends AbstractWrappedMessage {
> +
> +    protected JBIMessage(Message msg) {
> +        super(msg);
> +    }
> +    
> +    public MessageExchange getJbiExchange() {
> +        return get(MessageExchange.class);
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/JBIMessage.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,66 @@
> +/**
> + * 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.cxf.binding.jbi.interceptor;
> +
> +import java.util.ResourceBundle;
> +
> +import javax.xml.stream.XMLStreamException;
> +import javax.xml.stream.XMLStreamWriter;
> +
> +import org.w3c.dom.Element;
> +import org.w3c.dom.NodeList;
> +
> +import org.apache.cxf.binding.jbi.JBIMessage;
> +import org.apache.cxf.common.i18n.BundleUtils;
> +import org.apache.cxf.common.i18n.Message;
> +import org.apache.cxf.interceptor.Fault;
> +import org.apache.cxf.phase.AbstractPhaseInterceptor;
> +import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.staxutils.StaxUtils;
> +
> +public class JBIFaultOutInterceptor extends AbstractPhaseInterceptor<JBIMessage> {
> +
> +    private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JBIFaultOutInterceptor.class);
> +
> +    public JBIFaultOutInterceptor() {
> +        setPhase(Phase.MARSHAL);
> +    }
> +
> +    public void handleMessage(JBIMessage message) throws Fault {
> +        XMLStreamWriter writer = message.getContent(XMLStreamWriter.class);
> +        Fault fault = (Fault) message.getContent(Exception.class);
> +        try {
> +            if (!fault.hasDetails()) {
> +                writer.writeEmptyElement("fault");
> +            } else {
> +                Element detail = fault.getDetail();
> +                NodeList details = detail.getChildNodes();
> +                for (int i = 0; i < details.getLength(); i++) {
> +                    if (details.item(i) instanceof Element) {
> +                        StaxUtils.writeNode(details.item(i), writer, true);
> +                        break;
> +                    }
> +                }
> +            }
> +        } catch (XMLStreamException xe) {
> +            throw new Fault(new Message("XML_WRITE_EXC", BUNDLE), xe);
> +        }
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIFaultOutInterceptor.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,72 @@
> +/**
> + * 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.cxf.binding.jbi.interceptor;
> +
> +import java.util.ResourceBundle;
> +import java.util.logging.Logger;
> +
> +import javax.xml.namespace.QName;
> +
> +import org.apache.cxf.binding.jbi.JBIMessage;
> +import org.apache.cxf.common.i18n.Message;
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.interceptor.Fault;
> +import org.apache.cxf.message.Exchange;
> +import org.apache.cxf.phase.AbstractPhaseInterceptor;
> +import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.service.model.BindingInfo;
> +import org.apache.cxf.service.model.BindingOperationInfo;
> +import org.apache.cxf.service.model.MessageInfo;
> +import org.apache.cxf.service.model.OperationInfo;
> +
> +public class JBIOperationInInterceptor extends AbstractPhaseInterceptor<JBIMessage> {
> +
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIOperationInInterceptor.class);
> +
> +    private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
> +
> +    public JBIOperationInInterceptor() {
> +        super();
> +        setPhase(Phase.PRE_PROTOCOL);
> +    }
> +
> +    public void handleMessage(JBIMessage message) throws Fault {
> +        Exchange ex = message.getExchange();
> +        Endpoint ep = ex.get(Endpoint.class);
> +        BindingOperationInfo boi = ex.get(BindingOperationInfo.class);
> +        if (boi == null && message.getJbiExchange().getOperation() != null) {
> +            BindingInfo service = ep.getEndpointInfo().getBinding();
> +            boi = getBindingOperationInfo(service, message.getJbiExchange().getOperation());
> +            if (boi == null) {
> +                throw new Fault(new Message("UNKNOWN_OPERATION", BUNDLE, 
> +                        message.getJbiExchange().getOperation().toString()));
> +            }
> +            ex.put(BindingOperationInfo.class, boi);
> +            ex.put(OperationInfo.class, boi.getOperationInfo());
> +            ex.setOneWay(boi.getOperationInfo().isOneWay());
> +            message.put(MessageInfo.class, boi.getInput().getMessageInfo());
> +        }
> +    }
> +
> +    protected BindingOperationInfo getBindingOperationInfo(BindingInfo service, QName operation) {
> +        return service.getOperation(operation);
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIOperationInInterceptor.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,122 @@
> +/**
> + * 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.cxf.binding.jbi.interceptor;
> +
> +import java.util.ArrayList;
> +import java.util.List;
> +import java.util.ResourceBundle;
> +import java.util.logging.Logger;
> +
> +import javax.xml.namespace.QName;
> +import javax.xml.stream.XMLStreamConstants;
> +import javax.xml.stream.XMLStreamException;
> +import javax.xml.stream.XMLStreamReader;
> +
> +import org.apache.cxf.binding.jbi.JBIBindingInfo;
> +import org.apache.cxf.binding.jbi.JBIConstants;
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.databinding.DataReader;
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.interceptor.AbstractInDatabindingInterceptor;
> +import org.apache.cxf.interceptor.Fault;
> +import org.apache.cxf.message.Exchange;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.service.model.BindingInfo;
> +import org.apache.cxf.service.model.BindingOperationInfo;
> +import org.apache.cxf.service.model.MessagePartInfo;
> +import org.apache.cxf.staxutils.DepthXMLStreamReader;
> +import org.apache.cxf.staxutils.StaxUtils;
> +
> +public class JBIWrapperInInterceptor extends AbstractInDatabindingInterceptor {
> +
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIWrapperInInterceptor.class);
> +
> +    private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
> +
> +    public JBIWrapperInInterceptor() {
> +        setPhase(Phase.UNMARSHAL);
> +    }
> +
> +    public void handleMessage(Message message) throws Fault {
> +        if (isGET(message)) {
> +            LOG.info("JbiMessageInInterceptor skipped in HTTP GET method");
> +            return;
> +        }
> +        XMLStreamReader xsr = message.getContent(XMLStreamReader.class);
> +
> +        DepthXMLStreamReader reader = new DepthXMLStreamReader(xsr);
> +
> +        Endpoint ep = message.getExchange().get(Endpoint.class);
> +        BindingInfo binding = ep.getEndpointInfo().getBinding();
> +        if (!(binding instanceof JBIBindingInfo)) {
> +            throw new IllegalStateException("BindingInfo should be a JbiBindingInfo");
> +        }
> +
> +        if (!StaxUtils.toNextElement(reader)) {
> +            throw new Fault(new org.apache.cxf.common.i18n.Message("NO_OPERATION_ELEMENT", BUNDLE));
> +        }
> +
> +        Exchange ex = message.getExchange();
> +        QName startQName = reader.getName();
> +
> +        // handling xml normal inbound message
> +        if (!startQName.equals(JBIConstants.JBI_WRAPPER_MESSAGE)) {
> +            throw new Fault(new org.apache.cxf.common.i18n.Message(
> +                    "NO_JBI_MESSAGE_ELEMENT", BUNDLE));
> +        }
> +
> +        try {
> +            BindingOperationInfo bop = ex.get(BindingOperationInfo.class);
> +            DataReader<XMLStreamReader> dr = getDataReader(message);
> +            List<Object> parameters = new ArrayList<Object>();
> +            for (MessagePartInfo part : bop.getInput().getMessageParts()) {
> +                if (reader.nextTag() != XMLStreamConstants.START_ELEMENT) {
> +                    throw new Fault(new org.apache.cxf.common.i18n.Message(
> +                            "NO_ENOUGH_PARTS", BUNDLE));
> +                }
> +                startQName = reader.getName();
> +                if (!startQName.equals(JBIConstants.JBI_WRAPPER_PART)) {
> +                    throw new Fault(new org.apache.cxf.common.i18n.Message(
> +                            "NO_JBI_PART_ELEMENT", BUNDLE));
> +                }
> +                if (part.isElement()) {
> +                    reader.next();
> +                    if (!StaxUtils.toNextElement(reader)) {
> +                        throw new Fault(new org.apache.cxf.common.i18n.Message(
> +                                "EXPECTED_ELEMENT_IN_PART", BUNDLE));
> +                    }
> +                }
> +                parameters.add(dr.read(part, reader));
> +                // skip end element
> +                if (part.isElement()) {
> +                    reader.next();
> +                }
> +                reader.next();
> +            }
> +            if (reader.getEventType() != XMLStreamConstants.END_DOCUMENT) {
> +                throw new Fault(new org.apache.cxf.common.i18n.Message("TOO_MUCH_PARTS", BUNDLE));
> +            }
> +            message.setContent(List.class, parameters);
> +        } catch (XMLStreamException e) {
> +            throw new RuntimeException("Couldn't parse stream.", e);
> +        }
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperInInterceptor.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,99 @@
> +/**
> + * 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.cxf.binding.jbi.interceptor;
> +
> +import java.util.List;
> +import java.util.ResourceBundle;
> +import java.util.logging.Logger;
> +
> +import javax.xml.stream.XMLStreamException;
> +import javax.xml.stream.XMLStreamWriter;
> +
> +import org.apache.cxf.binding.jbi.JBIConstants;
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.databinding.DataWriter;
> +import org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor;
> +import org.apache.cxf.interceptor.Fault;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.phase.Phase;
> +import org.apache.cxf.service.model.BindingOperationInfo;
> +import org.apache.cxf.service.model.MessagePartInfo;
> +
> +public class JBIWrapperOutInterceptor extends AbstractOutDatabindingInterceptor {
> +
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIWrapperOutInterceptor.class);
> +
> +    private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
> +
> +    public JBIWrapperOutInterceptor() {
> +        setPhase(Phase.MARSHAL);
> +    }
> +
> +    public void handleMessage(Message message) throws Fault {
> +        BindingOperationInfo bop = message.getExchange().get(BindingOperationInfo.class);
> +        XMLStreamWriter xmlWriter = getXMLStreamWriter(message);
> +        DataWriter<XMLStreamWriter> dataWriter = getDataWriter(message, XMLStreamWriter.class);
> +
> +        try {
> +            xmlWriter.setPrefix("jbi", JBIConstants.NS_JBI_WRAPPER);
> +            xmlWriter.writeStartElement(JBIConstants.NS_JBI_WRAPPER, 
> +                                        JBIConstants.JBI_WRAPPER_MESSAGE.getLocalPart());
> +            xmlWriter.writeNamespace("jbi", JBIConstants.NS_JBI_WRAPPER);
> +            
> +            List<MessagePartInfo> parts = null;
> +            if (!isRequestor(message)) {
> +                parts = bop.getOutput().getMessageParts();
> +            } else {
> +                parts = bop.getInput().getMessageParts();
> +            }
> +            List<?> objs = (List<?>) message.getContent(List.class);                
> +            if (objs.size() < parts.size()) {
> +                throw new Fault(new org.apache.cxf.common.i18n.Message(
> +                        "The number of arguments is not equal!", BUNDLE));
> +            }
> +            for (int idx = 0; idx < parts.size(); idx++) {
> +                MessagePartInfo part = parts.get(idx);
> +                Object obj = objs.get(idx);
> +                if (!part.isElement()) {
> +                    if (part.getTypeClass() == String.class) {
> +                        xmlWriter.writeStartElement(JBIConstants.NS_JBI_WRAPPER, 
> +                                                    JBIConstants.JBI_WRAPPER_PART.getLocalPart());
> +                        xmlWriter.writeCharacters(obj.toString());
> +                        xmlWriter.writeEndElement();
> +                    } else {
> +                        part = new MessagePartInfo(part.getName(), part.getMessageInfo());
> +                        part.setElement(false);
> +                        part.setConcreteName(JBIConstants.JBI_WRAPPER_PART);
> +                        dataWriter.write(obj, part, xmlWriter);
> +                    }
> +                } else {
> +                    xmlWriter.writeStartElement(JBIConstants.NS_JBI_WRAPPER, 
> +                                                JBIConstants.JBI_WRAPPER_PART.getLocalPart());
> +                    dataWriter.write(obj, part, xmlWriter);                    
> +                    xmlWriter.writeEndElement();
> +                }
> +            }
> +            xmlWriter.writeEndElement();
> +        
> +        } catch (XMLStreamException e) {
> +            throw new Fault(new org.apache.cxf.common.i18n.Message("STAX_WRITE_EXC", BUNDLE), e);
> +        }
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/JBIWrapperOutInterceptor.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,46 @@
> +#
> +#    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.
> +#
> +NOT.IMPLEMENTED=not yet implemented
> +INVOKE.SERVICE=invoking service\t
> +CREATE.MESSAGE.EXCHANGE=create message exchange svc:\t
> +EXCHANGE.ENDPOINT=exchange endpoint:\t
> +NO.MESSAGE=no message yet
> +UNABLE.RETRIEVE.MESSAGE=unable to retrieve message
> +CONTEXT.MUST.BE=context must be of type JBIOutputStreamMessageContext
> +RECEIVED.MESSAGE=received message:\t
> +ACTIVE.JBI.SERVER.TRANSPORT=activating JBI server transport
> +BUILDING.DOCUMENT=building document from bytes
> +CREATE.NORMALIZED.MESSAGE=creating NormalizedMessage
> +POST.DISPATCH=postDispatch sending out message to NWR
> +ERROR.SEND.MESSAGE=error sending Out message
> +DISPATCH.MESSAGE.ON.CALLBACK=dispatching message on callback:\t
> +ERROR.PREPARE.MESSAGE=error preparing message
> +RECEIVE.THREAD.START=JBIServerTransport message receiving thread started
> +DISPATCH.TO.SU=dispatching to CXF service unit
> +NO.SU.FOUND=no CXFServiceUnit found
> +ERROR.DISPATCH.THREAD=error running dispatch thread
> +JBI.SERVER.TRANSPORT.MESSAGE.PROCESS.THREAD.EXIT=JBIServerTransport message processing thread exitting
> +CONFIG.DELIVERY.CHANNEL=configuring DeliveryChannel:\t
> +CONFIG.SU.MANAGER=configuring ServiceUnitManager:\t
> +JBI.TRANSPORT.FACTORY.NOT.INITIALIZED=JBITransportFactory is not properly initialised
> +SU.MANAGER=CXFServiceUnitManager:\t
> +DELIVERY.CHANNEL=DeliveryChannel:\t
> +JBI.TRANSPORT.FACTORY.NOT.FULLY.INITIALIZED=JBITransport factory not fully initalised
> +CREATE.SERVER.TRANSPORT=creating JBI server transport
> +CREATE.CLIENT.TRANSPORT=creating JBI client transport
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/java/org/apache/cxf/binding/jbi/interceptor/Messages.properties
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,27 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +  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.cf
> +-->
> +<extensions xmlns="http://cxf.apache.org/bus/extension">
> +
> +    <extension class="org.apache.cxf.binding.jbi.JBIBindingFactory" deferred="true">
> +        <namespace>http://cxf.apache.org/bindings/jbi</namespace>
> +        <namespace>http://java.sun.com/xml/ns/jbi/binding/service+engine</namespace>
> +    </extension>
> +    
> +</extensions>
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/bus-extensions.xml
> ------------------------------------------------------------------------------
>     svn:mime-type = text/xml
>
> Added: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml (added)
> +++ incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,32 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +  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.
> +-->
> +<beans xmlns="http://www.springframework.org/schema/beans">
> +    
> +    <bean class="org.apache.cxf.binding.jbi.JBIBindingFactory" lazy-init="true">
> +      <property name="bus" ref="cxf"/>
> +      <property name="activationNamespaces">
> +            <set>
> +              <value>http://cxf.apache.org/bindings/jbi</value>
> +              <value>http://java.sun.com/xml/ns/jbi/binding/service+engine</value>
> +            </set>
> +        </property>
> +    </bean>
> +
> +</beans>
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/bindings/jbi/src/main/resources/META-INF/cxf/cxf-extension-jbi.xml
> ------------------------------------------------------------------------------
>     svn:mime-type = text/xml
>
> Modified: incubator/cxf/trunk/rt/bindings/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/pom.xml?view=diff&rev=530117&r1=530116&r2=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/bindings/pom.xml (original)
> +++ incubator/cxf/trunk/rt/bindings/pom.xml Wed Apr 18 11:27:39 2007
> @@ -36,6 +36,7 @@
>          <module>http</module>
>          <module>object</module>
>          <module>coloc</module>
> +        <module>jbi</module>
>      </modules>
>  
>  
>
> Modified: incubator/cxf/trunk/rt/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/pom.xml?view=diff&rev=530117&r1=530116&r2=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/pom.xml (original)
> +++ incubator/cxf/trunk/rt/pom.xml Wed Apr 18 11:27:39 2007
> @@ -43,6 +43,7 @@
>          <module>transports/http</module>
>          <module>transports/http-jetty</module>
>          <module>transports/jms</module>
> +        <module>transports/jbi</module>
>          <module>ws/policy</module>
>          <module>ws/addr</module>
>          <module>ws/rm</module>
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,3 @@
> +.classpath
> +.project
> +.settings
>
> Added: incubator/cxf/trunk/rt/transports/jbi/pom.xml
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jbi/pom.xml?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/transports/jbi/pom.xml (added)
> +++ incubator/cxf/trunk/rt/transports/jbi/pom.xml Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,77 @@
> +<!--
> +  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.
> +-->
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
> +    <modelVersion>4.0.0</modelVersion>
> +    <groupId>org.apache.cxf</groupId>
> +    <artifactId>cxf-rt-transports-jbi</artifactId>
> +    <packaging>jar</packaging>
> +    <version>2.0-incubator-RC-SNAPSHOT</version>
> +    <name>Apache CXF Runtime JBI transport</name>
> +    <url>http://cwiki.apache.org/CXF</url>
> +
> +    <parent>
> +        <groupId>org.apache.cxf</groupId>
> +        <artifactId>cxf-parent</artifactId>
> +        <version>2.0-incubator-RC-SNAPSHOT</version>
> +        <relativePath>../../../parent/pom.xml</relativePath>
> +    </parent>
> +
> +    <dependencies>
> +        <dependency>
> +            <groupId>junit</groupId>
> +            <artifactId>junit</artifactId>
> +            <scope>test</scope>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.easymock</groupId>
> +            <artifactId>easymockclassextension</artifactId>
> +            <scope>test</scope>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.cxf</groupId>
> +            <artifactId>cxf-api</artifactId>
> +            <version>${project.version}</version>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.cxf</groupId>
> +            <artifactId>cxf-rt-core</artifactId>
> +            <version>${project.version}</version>
> +        </dependency>
> +        <dependency>
> +            <groupId>org.apache.cxf</groupId>
> +            <artifactId>cxf-testutils</artifactId>
> +            <version>${project.version}</version>
> +            <scope>test</scope>
> +        </dependency>
> +
> +        <dependency>
> +            <groupId>org.apache.servicemix</groupId>
> +            <artifactId>servicemix-jbi</artifactId>
> +            <version>3.1-incubating</version>
> +          </dependency>
> +      
> +    </dependencies>
> +
> +
> +    <scm>
> +        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/cxf/trunk/rt/transports/jbi</connection>
> +        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/cxf/trunk/rt/transports/jbi</developerConnection>
> +    </scm>
> +
> +</project>
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/pom.xml
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/pom.xml
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/pom.xml
> ------------------------------------------------------------------------------
>     svn:mime-type = text/xml
>
> Added: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java (added)
> +++ incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,58 @@
> +/**
> + * 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.cxf.transport.jbi;
> +
> +import java.io.IOException;
> +import java.io.OutputStream;
> +import java.util.logging.Level;
> +import java.util.logging.Logger;
> +
> +import javax.jbi.messaging.DeliveryChannel;
> +
> +
> +
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.transport.AbstractConduit;
> +import org.apache.cxf.ws.addressing.EndpointReferenceType;
> +
> +
> +public class JBIConduit extends AbstractConduit {
> +
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIConduit.class);
> +
> +    private DeliveryChannel channel;
> +           
> +    public JBIConduit(EndpointReferenceType target, DeliveryChannel dc) {           
> +        super(target);
> +        channel = dc;
> +    }
> +
> +    protected Logger getLogger() {
> +        return LOG;
> +    }
> +    
> +    public void prepare(Message message) throws IOException {
> +        getLogger().log(Level.FINE, "JBIConduit send message");
> +                
> +        message.setContent(OutputStream.class,
> +                           new JBIConduitOutputStream(message, channel, target, this));
> +    }    
> +}
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduit.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java (added)
> +++ incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,174 @@
> +/**
> + * 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.cxf.transport.jbi;
> +
> +import java.io.ByteArrayInputStream;
> +import java.io.ByteArrayOutputStream;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.lang.reflect.Method;
> +import java.util.logging.Logger;
> +
> +import javax.jbi.messaging.DeliveryChannel;
> +import javax.jbi.messaging.InOut;
> +import javax.jbi.messaging.MessageExchange;
> +import javax.jbi.messaging.MessageExchangeFactory;
> +import javax.jbi.messaging.NormalizedMessage;
> +import javax.jws.WebService;
> +import javax.xml.namespace.QName;
> +import javax.xml.transform.Source;
> +import javax.xml.transform.stream.StreamSource;
> +
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.io.AbstractCachedOutputStream;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.message.MessageImpl;
> +import org.apache.cxf.service.model.BindingOperationInfo;
> +import org.apache.cxf.ws.addressing.EndpointReferenceType;
> +import org.apache.cxf.wsdl.EndpointReferenceUtils;
> +
> +public class JBIConduitOutputStream extends AbstractCachedOutputStream {
> +
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIConduitOutputStream.class);
> +
> +    private Message message;
> +    private boolean isOneWay;
> +    private DeliveryChannel channel;
> +    private JBIConduit conduit;
> +    private EndpointReferenceType target;
> +
> +    public JBIConduitOutputStream(Message m, DeliveryChannel channel, EndpointReferenceType target,
> +                                  JBIConduit conduit) {
> +        message = m;
> +        this.channel = channel;
> +        this.conduit = conduit;
> +        this.target = target;
> +        
> +    }
> +
> +    @Override
> +    protected void doFlush() throws IOException {
> +
> +    }
> +
> +    @Override
> +    protected void doClose() throws IOException {
> +        isOneWay = message.getExchange().isOneWay();
> +        commitOutputMessage();
> +        if (target != null) {
> +            target.getClass();
> +        }
> +    }
> +
> +    private void commitOutputMessage() throws IOException {
> +        try {
> +            Method targetMethod = (Method) message.get(Method.class.getName());
> +            Class<?> clz = targetMethod.getDeclaringClass();
> +            BindingOperationInfo bop = message.getExchange().get(BindingOperationInfo.class);
> +
> +            LOG.info(new org.apache.cxf.common.i18n.Message("INVOKE.SERVICE", LOG).toString() + clz);
> +
> +            WebService ws = clz.getAnnotation(WebService.class);
> +            assert ws != null;
> +            QName interfaceName = new QName(ws.targetNamespace(), ws.name());
> +            QName serviceName = null;
> +            if (target != null) {
> +                serviceName = EndpointReferenceUtils.getServiceName(target);
> +            } else {
> +                serviceName = message.getExchange().get(org.apache.cxf.service.Service.class).getName();
> +            }
> +          
> +            MessageExchangeFactory factory = channel.createExchangeFactoryForService(serviceName);
> +            LOG.info(new org.apache.cxf.common.i18n.Message("CREATE.MESSAGE.EXCHANGE", LOG).toString()
> +                     + serviceName);
> +            MessageExchange xchng = null;
> +            if (isOneWay) {
> +                xchng = factory.createInOnlyExchange();
> +            } else if (bop.getOutput() == null) {
> +                xchng = factory.createRobustInOnlyExchange();
> +            } else {
> +                xchng = factory.createInOutExchange();
> +            }
> +
> +            NormalizedMessage inMsg = xchng.createMessage();
> +            LOG.info(new org.apache.cxf.common.i18n.Message("EXCHANGE.ENDPOINT", LOG).toString()
> +                     + xchng.getEndpoint());
> +
> +            InputStream ins = null;
> +
> +            if (inMsg != null) {
> +                LOG.info("setup message contents on " + inMsg);
> +                inMsg.setContent(getMessageContent(message));
> +                xchng.setService(serviceName);
> +                LOG.info("service for exchange " + serviceName);
> +
> +                xchng.setInterfaceName(interfaceName);
> +
> +                xchng.setOperation(bop.getName());
> +                xchng.setMessage(inMsg, "in");
> +                LOG.info("sending message");
> +                if (!isOneWay) {
> +
> +                    channel.sendSync(xchng);
> +                    NormalizedMessage outMsg = ((InOut)xchng).getOutMessage();
> +                    
> +                    //revisit later
> +                    /*Source content = outMsg.getContent();
> +                    XMLStreamReader reader = StaxUtils.createXMLStreamReader(content);
> +                    message.setContent(XMLStreamReader.class, reader);*/
> +                    
> +                    ins = JBIMessageHelper.convertMessageToInputStream(outMsg.getContent());
> +                    if (ins == null) {
> +                        throw new IOException(new org.apache.cxf.common.i18n.Message(
> +                            "UNABLE.RETRIEVE.MESSAGE", LOG).toString());
> +                    }
> +                    Message inMessage = new MessageImpl();
> +                    message.getExchange().setInMessage(inMessage);
> +                    inMessage.setContent(InputStream.class, ins);
> +                    conduit.getMessageObserver().onMessage(inMessage);
> +                    
> +                } else {
> +                    channel.send(xchng);
> +                }
> +
> +            } else {
> +                LOG.info(new org.apache.cxf.common.i18n.Message("NO.MESSAGE", LOG).toString());
> +            }
> +
> +            
> +
> +        } catch (Exception e) {
> +            e.printStackTrace();
> +            throw new IOException(e.toString());
> +        }
> +    }
> +
> +    private Source getMessageContent(Message message2) {
> +        ByteArrayOutputStream bos = (ByteArrayOutputStream)getOut();
> +        return new StreamSource(new ByteArrayInputStream(bos.toByteArray()));
> +        
> +    }
> +
> +    @Override
> +    protected void onWrite() throws IOException {
> +
> +    }
> +
> +}
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIConduitOutputStream.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java (added)
> +++ incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,130 @@
> +/**
> + * 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.cxf.transport.jbi;
> +
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.OutputStream;
> +import java.util.logging.Level;
> +import java.util.logging.Logger;
> +
> +import javax.jbi.messaging.DeliveryChannel;
> +import javax.jbi.messaging.MessageExchange;
> +import javax.jbi.messaging.NormalizedMessage;
> +import javax.xml.namespace.QName;
> +
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.message.MessageImpl;
> +import org.apache.cxf.service.model.EndpointInfo;
> +import org.apache.cxf.transport.AbstractConduit;
> +import org.apache.cxf.transport.AbstractDestination;
> +import org.apache.cxf.transport.Conduit;
> +import org.apache.cxf.transport.MessageObserver;
> +import org.apache.cxf.ws.addressing.EndpointReferenceType;
> +import org.apache.cxf.wsdl.EndpointReferenceUtils;
> +
> +public class JBIDestination extends AbstractDestination {
> +    
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIDestination.class);
> +    
> +    private final DeliveryChannel channel;
> +    
> +    public JBIDestination(EndpointInfo info,
> +                          DeliveryChannel dc) {
> +        super(getTargetReference(info, null), info);
> +        this.channel = dc;
> +    }
> +    
> +    protected Logger getLogger() {
> +        return LOG;
> +    }
> +    
> +    /**
> +     * @param inMessage the incoming message
> +     * @return the inbuilt backchannel
> +     */
> +    protected Conduit getInbuiltBackChannel(Message inMessage) {
> +        return new BackChannelConduit(EndpointReferenceUtils.getAnonymousEndpointReference(),
> +                                      inMessage);
> +    }
> +    
> +    // this should deal with the cxf message 
> +    protected class BackChannelConduit extends AbstractConduit {
> +        
> +        protected Message inMessage;
> +        protected JBIDestination jbiDestination;
> +                
> +        BackChannelConduit(EndpointReferenceType ref, Message message) {
> +            super(ref);
> +            inMessage = message;
> +        }
> +        
> +        /**
> +         * Register a message observer for incoming messages.
> +         * 
> +         * @param observer the observer to notify on receipt of incoming
> +         */
> +        public void setMessageObserver(MessageObserver observer) {
> +            // shouldn't be called for a back channel conduit
> +        }
> +
> +        /**
> +         * Send an outbound message, assumed to contain all the name-value
> +         * mappings of the corresponding input message (if any). 
> +         * 
> +         * @param message the message to be sent.
> +         */
> +        public void prepare(Message message) throws IOException {
> +            // setup the message to be send back
> +            message.put(MessageExchange.class, inMessage.get(MessageExchange.class));
> +            message.setContent(OutputStream.class,
> +                               new JBIDestinationOutputStream(inMessage, channel));
> +        }        
> +
> +        protected Logger getLogger() {
> +            return LOG;
> +        }
> +    }
> +
> +    public void dispatch(MessageExchange exchange) throws IOException {
> +        QName opName = exchange.getOperation(); 
> +        getLogger().fine("dispatch method: " + opName);
> +        
> +        NormalizedMessage nm = exchange.getMessage("in");
> +        try {
> +            final InputStream in = JBIMessageHelper.convertMessageToInputStream(nm.getContent());
> +            //get the message to be interceptor
> +            MessageImpl inMessage = new MessageImpl();
> +            inMessage.put(MessageExchange.class, exchange);
> +            inMessage.setContent(InputStream.class, in);
> +                                           
> +            //dispatch to correct destination in case of multiple endpoint
> +            inMessage.setDestination(this);
> +            getMessageObserver().onMessage(inMessage);
> +            
> +        } catch (Exception ex) {
> +            getLogger().log(Level.SEVERE, new org.apache.cxf.common.i18n.Message(
> +                "ERROR.PREPARE.MESSAGE", getLogger()).toString(), ex);
> +            throw new IOException(ex.getMessage());
> +        }
> +
> +    }
> +}
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestination.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java (added)
> +++ incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,113 @@
> +/**
> + * 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.cxf.transport.jbi;
> +
> +import java.io.ByteArrayInputStream;
> +import java.io.ByteArrayOutputStream;
> +import java.io.IOException;
> +import java.util.logging.Level;
> +import java.util.logging.Logger;
> +
> +import javax.jbi.messaging.DeliveryChannel;
> +import javax.jbi.messaging.Fault;
> +import javax.jbi.messaging.MessageExchange;
> +import javax.jbi.messaging.NormalizedMessage;
> +import javax.xml.parsers.DocumentBuilder;
> +import javax.xml.parsers.DocumentBuilderFactory;
> +import javax.xml.transform.dom.DOMSource;
> +
> +import org.w3c.dom.Document;
> +
> +import org.apache.cxf.common.logging.LogUtils;
> +import org.apache.cxf.io.AbstractCachedOutputStream;
> +import org.apache.cxf.message.Message;
> +
> +public class JBIDestinationOutputStream extends AbstractCachedOutputStream {
> +
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIDestinationOutputStream.class);
> +    private Message inMessage;
> +    private DeliveryChannel channel;
> +    
> +    public JBIDestinationOutputStream(Message m, 
> +                               DeliveryChannel dc) {
> +        super();
> +        inMessage = m;
> +        channel = dc;
> +    }
> +    
> +    @Override
> +    protected void doFlush() throws IOException {
> +        // so far do nothing
> +    }
> +
> +    @Override
> +    protected void doClose() throws IOException {
> +        commitOutputMessage();
> +    }
> +
> +    @Override
> +    protected void onWrite() throws IOException {
> +        // so far do nothing
> +    }
> +
> +    private void commitOutputMessage() throws IOException {
> +        try { 
> +            if (inMessage.getExchange().isOneWay()) {
> +                return;
> +            } else {
> +                
> +                ByteArrayOutputStream baos = (ByteArrayOutputStream)getOut();
> +                ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
> +                LOG.finest(new org.apache.cxf.common.i18n.Message(
> +                    "BUILDING.DOCUMENT", LOG).toString());
> +                DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
> +                docBuilderFactory.setNamespaceAware(true);
> +                DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
> +                Document doc = builder.parse(bais);
> +            
> +                MessageExchange xchng = inMessage.get(MessageExchange.class);
> +                LOG.fine(new org.apache.cxf.common.i18n.Message(
> +                    "CREATE.NORMALIZED.MESSAGE", LOG).toString());
> +                if (inMessage.getExchange().getOutFaultMessage() != null) {
> +                    org.apache.cxf.interceptor.Fault f = (org.apache.cxf.interceptor.Fault) 
> +                            inMessage.getContent(Exception.class);
> +                    if (f.hasDetails()) {
> +                        Fault fault = xchng.createFault();
> +                        fault.setContent(new DOMSource(doc));
> +                        xchng.setFault(fault);
> +                    } else {
> +                        xchng.setError(f);
> +                    }
> +                } else {
> +                    NormalizedMessage msg = xchng.createMessage();
> +                    msg.setContent(new DOMSource(doc));
> +                    xchng.setMessage(msg, "out");
> +                }
> +                LOG.fine(new org.apache.cxf.common.i18n.Message(
> +                    "POST.DISPATCH", LOG).toString());
> +                channel.send(xchng);
> +            }
> +        } catch (Exception ex) { 
> +            LOG.log(Level.SEVERE, new org.apache.cxf.common.i18n.Message(
> +                "ERROR.SEND.MESSAGE", LOG).toString(), ex);
> +        }
> +    }
> +    
> +}
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIDestinationOutputStream.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
> Added: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java
> URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java?view=auto&rev=530117
> ==============================================================================
> --- incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java (added)
> +++ incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java Wed Apr 18 11:27:39 2007
> @@ -0,0 +1,62 @@
> +/**
> + * 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.cxf.transport.jbi;
> +
> +import java.io.ByteArrayInputStream;
> +import java.io.ByteArrayOutputStream;
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.util.logging.Logger;
> +
> +import javax.xml.transform.Source;
> +import javax.xml.transform.Transformer;
> +import javax.xml.transform.TransformerConfigurationException;
> +import javax.xml.transform.TransformerException;
> +import javax.xml.transform.TransformerFactory;
> +import javax.xml.transform.stream.StreamResult;
> +
> +import org.apache.cxf.common.i18n.Message;
> +import org.apache.cxf.common.logging.LogUtils;
> +
> +public final class JBIMessageHelper { 
> +    
> +    private static final Logger LOG = LogUtils.getL7dLogger(JBIMessageHelper.class);
> +    
> +    private static final TransformerFactory TRANSFORMER_FACTORY 
> +        = TransformerFactory.newInstance();
> +
> +    private JBIMessageHelper() { 
> +        // complete 
> +    }
> +    
> +    
> +    public static InputStream convertMessageToInputStream(Source src) 
> +        throws IOException, TransformerConfigurationException, TransformerException { 
> +
> +        final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
> +        
> +        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
> +        StreamResult result = new StreamResult(baos);
> +        transformer.transform(src, result);
> +        LOG.finest(new Message("RECEIVED.MESSAGE", LOG) + new String(baos.toByteArray()));
> +        
> +        return new ByteArrayInputStream(baos.toByteArray());
> +    } 
> +}
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java
> ------------------------------------------------------------------------------
>     svn:keywords = Date Revision
>
> Propchange: incubator/cxf/trunk/rt/transports/jbi/src/main/java/org/apache/cxf/transport/jbi/JBIMessageHelper.java
> ------------------------------------------------------------------------------
>     svn:mime-type = text/plain
>
>