You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by dm...@apache.org on 2007/05/25 11:12:29 UTC
svn commit: r541617 - in /incubator/yoko/branches/perf: ./
src/main/java/org/apache/yoko/bindings/corba/runtime/
src/main/java/org/apache/yoko/bindings/corba/types/
src/test/java/org/apache/yoko/bindings/corba/
Author: dmiddlem
Date: Fri May 25 04:12:27 2007
New Revision: 541617
URL: http://svn.apache.org/viewvc?view=rev&rev=541617
Log:
Commit for YOKO-366:
* Adding support for Object References/EPRs
Added:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java (with props)
Modified:
incubator/yoko/branches/perf/pom.xml
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReferenceTest.java
Modified: incubator/yoko/branches/perf/pom.xml
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/pom.xml?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/pom.xml (original)
+++ incubator/yoko/branches/perf/pom.xml Fri May 25 04:12:27 2007
@@ -240,7 +240,7 @@
<wsdl>${basedir}/target/generated/src/test/resources/wsdl/type_test/type_test_corba_inc.wsdl</wsdl>
<corbabinding>true</corbabinding>
<extraargs>
- <extraarg>-o</extraarg>
+ <extraarg>-w</extraarg>
<extraarg>type_test_corba.wsdl</extraarg>
<extraarg>-b</extraarg>
<extraarg>TypeTestCORBABinding</extraarg>
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java Fri May 25 04:12:27 2007
@@ -18,12 +18,16 @@
*/
package org.apache.yoko.bindings.corba.runtime;
+import java.util.List;
+
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.yoko.bindings.corba.types.CorbaTypeEventProducer;
@@ -108,12 +112,23 @@
}
public int getAttributeCount() {
- // TODO Auto-generated method stub
+ List<Attribute> attrs = eventProducer.getAttributes();
+ if (attrs != null) {
+ return attrs.size();
+ }
return 0;
}
public String getAttributeLocalName(int arg0) {
- // TODO Auto-generated method stub
+ List<Attribute> attrs = eventProducer.getAttributes();
+ if (attrs == null) {
+ return null;
+ }
+
+ Attribute a = attrs.get(arg0);
+ if (a != null) {
+ return a.getName().getLocalPart();
+ }
return null;
}
@@ -123,6 +138,15 @@
}
public String getAttributeNamespace(int arg0) {
+ List<Attribute> attrs = eventProducer.getAttributes();
+ if (attrs == null) {
+ return null;
+ }
+
+ Attribute a = attrs.get(arg0);
+ if (a != null) {
+ return a.getName().getNamespaceURI();
+ }
// TODO Auto-generated method stub
return null;
}
@@ -138,7 +162,15 @@
}
public String getAttributeValue(int arg0) {
- // TODO Auto-generated method stub
+ List<Attribute> attrs = eventProducer.getAttributes();
+ if (attrs == null) {
+ return null;
+ }
+
+ Attribute a = attrs.get(arg0);
+ if (a != null) {
+ return a.getValue();
+ }
return null;
}
@@ -200,12 +232,23 @@
}
public int getNamespaceCount() {
- // TODO Auto-generated method stub
+ List<Namespace> namespaces = eventProducer.getNamespaces();
+ if (namespaces != null) {
+ return namespaces.size();
+ }
return 0;
}
public String getNamespacePrefix(int arg0) {
- // TODO Auto-generated method stub
+ List<Namespace> namespaces = eventProducer.getNamespaces();
+ if (namespaces == null) {
+ return null;
+ }
+
+ Namespace ns = namespaces.get(arg0);
+ if (ns != null) {
+ return ns.getPrefix();
+ }
return null;
}
@@ -215,7 +258,15 @@
}
public String getNamespaceURI(int arg0) {
- // TODO Auto-generated method stub
+ List<Namespace> namespaces = eventProducer.getNamespaces();
+ if (namespaces == null) {
+ return null;
+ }
+
+ Namespace ns = namespaces.get(arg0);
+ if (ns != null) {
+ return ns.getNamespaceURI();
+ }
return null;
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java Fri May 25 04:12:27 2007
@@ -1,8 +1,11 @@
package org.apache.yoko.bindings.corba.types;
import java.util.Iterator;
+import java.util.List;
import javax.xml.namespace.QName;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
@@ -47,5 +50,21 @@
throw new RuntimeException("hasNext reported in error as there is no next event");
}
return event;
+ }
+
+ public List<Attribute> getAttributes() {
+ List<Attribute> attributes = null;
+ if (currentEventProducer != null) {
+ attributes = currentEventProducer.getAttributes();
+ }
+ return attributes;
+ }
+
+ public List<Namespace> getNamespaces() {
+ List<Namespace> namespaces = null;
+ if (currentEventProducer != null) {
+ namespaces = currentEventProducer.getNamespaces();
+ }
+ return namespaces;
}
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java Fri May 25 04:12:27 2007
@@ -19,9 +19,12 @@
package org.apache.yoko.bindings.corba.types;
import java.util.Iterator;
+import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.cxf.service.model.ServiceInfo;
@@ -38,6 +41,7 @@
protected CorbaTypeMap typeMap;
protected QName name;
protected Iterator<CorbaObjectHandler> iterator;
+ protected Iterator<CorbaTypeEventProducer> producers;
protected ServiceInfo serviceInfo;
protected ORB orb;
@@ -67,10 +71,13 @@
state++;
} else if (currentEventProducer != null && currentEventProducer.hasNext()) {
event = currentEventProducer.next();
- } else if (iterator.hasNext()) {
+ } else if (iterator != null && iterator.hasNext()) {
CorbaObjectHandler obj = iterator.next();
currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
event = currentEventProducer.next();
+ } else if (producers != null && producers.hasNext()) {
+ currentEventProducer = producers.next();
+ event = currentEventProducer.next();
} else {
// all done with content, move past state 0
event = states[++state];
@@ -78,5 +85,21 @@
currentEventProducer = null;
}
return event;
+ }
+
+ public List<Attribute> getAttributes() {
+ List<Attribute> attributes = null;
+ if (currentEventProducer != null) {
+ attributes = currentEventProducer.getAttributes();
+ }
+ return attributes;
+ }
+
+ public List<Namespace> getNamespaces() {
+ List<Namespace> namespaces = null;
+ if (currentEventProducer != null) {
+ namespaces = currentEventProducer.getNamespaces();
+ }
+ return namespaces;
}
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java Fri May 25 04:12:27 2007
@@ -18,8 +18,12 @@
*/
package org.apache.yoko.bindings.corba.types;
+import java.util.List;
+
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.cxf.service.model.ServiceInfo;
@@ -55,4 +59,11 @@
return state < states.length;
}
+ public List<Attribute> getAttributes() {
+ return null;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return null;
+ }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java Fri May 25 04:12:27 2007
@@ -18,8 +18,12 @@
*/
package org.apache.yoko.bindings.corba.types;
+import java.util.List;
+
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.cxf.service.model.ServiceInfo;
@@ -55,4 +59,11 @@
return state < states.length;
}
+ public List<Attribute> getAttributes() {
+ return null;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return null;
+ }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java Fri May 25 04:12:27 2007
@@ -575,7 +575,7 @@
break;
case TCKind._tk_objref:
LOG.log(Level.INFO, "Reading object reference from XML reader");
- //result = new CorbaObjectReferenceEventProducer(handler, serviceInfo, orb);
+ result = new CorbaObjectReferenceEventProducer(handler, serviceInfo, orb);
break;
default:
throw new CorbaBindingException("Unsupported complex type "
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java?view=auto&rev=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java Fri May 25 04:12:27 2007
@@ -0,0 +1,316 @@
+/**
+ * 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.yoko.bindings.corba.types;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.Binding;
+import javax.wsdl.Definition;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLEventFactory;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
+
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.wsdl11.WSDLServiceBuilder;
+import org.apache.yoko.bindings.corba.utils.CorbaObjectReferenceHelper;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+
+import org.omg.CORBA.ORB;
+
+public class CorbaObjectReferenceEventProducer extends AbstractStartEndEventProducer {
+
+ static final String WSDLI_NAMESPACE_URI = "http://www.w3.org/2006/01/wsdl-instance";
+ static final String XSI_NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema-instance";
+ static final QName WSA_ADDRESS = new QName(CorbaObjectReferenceHelper.ADDRESSING_NAMESPACE_URI,
+ "Address");
+ List<Attribute> refAttrs;
+
+ public CorbaObjectReferenceEventProducer(CorbaObjectHandler h, ServiceInfo service, ORB orbRef) {
+ CorbaObjectReferenceHandler handler = (CorbaObjectReferenceHandler) h;
+ name = CorbaUtils.processQName(handler.getName(), service);
+ orb = orbRef;
+ serviceInfo = service;
+ refAttrs = null;
+
+ if (handler.getReference() == null) {
+ XMLEventFactory factory = XMLEventFactory.newInstance();
+
+ refAttrs = new ArrayList<Attribute>();
+ refAttrs.add(factory.createAttribute(new QName(XSI_NAMESPACE_URI, "nil", "xsi"), "true"));
+
+ return;
+ }
+
+ List<CorbaTypeEventProducer> objRefProducers = new ArrayList<CorbaTypeEventProducer>();
+
+ String address = orb.object_to_string(handler.getReference());
+ objRefProducers.add(new CorbaAddressEventProducer(address));
+
+ Definition wsdlDef = (Definition)serviceInfo.getProperty(WSDLServiceBuilder.WSDL_DEFINITION);
+
+ // Get the TypeImpl of the object reference so that we can determine the binding
+ // needed for this object reference
+ org.apache.schemas.yoko.bindings.corba.Object objType =
+ (org.apache.schemas.yoko.bindings.corba.Object)handler.getType();
+ QName bindingName = objType.getBinding();
+ Binding wsdlBinding = null;
+ if (bindingName != null) {
+ wsdlBinding = getObjectReferenceBinding(wsdlDef, bindingName);
+ }
+
+ if (wsdlBinding != null) {
+ QName serviceName = CorbaObjectReferenceHelper.getServiceName(wsdlBinding, wsdlDef);
+ String endpointName = CorbaObjectReferenceHelper.getEndpointName(wsdlBinding, wsdlDef);
+ QName interfaceName = wsdlBinding.getPortType().getQName();
+
+ // Create the meta data producer and add is child producers.
+ CorbaMetaDataEventProducer metaProducer =
+ new CorbaMetaDataEventProducer(CorbaObjectReferenceHelper.getWSDLLocation(wsdlDef),
+ new CorbaServiceNameEventProducer(serviceName, endpointName),
+ new CorbaInterfaceNameEventProducer(interfaceName));
+
+ objRefProducers.add(metaProducer);
+ }
+
+ producers = objRefProducers.iterator();
+ }
+
+ public List<Attribute> getAttributes() {
+ if (currentEventProducer != null) {
+ return currentEventProducer.getAttributes();
+ }
+ return refAttrs;
+ }
+
+ protected Binding getObjectReferenceBinding(Definition wsdlDef, QName bindingName) {
+ Binding wsdlBinding = null;
+ if (bindingName != null) {
+ wsdlBinding = wsdlDef.getBinding(bindingName);
+ }
+
+ // If the binding name does not have a namespace associated with it, then we'll need to
+ // get the list of all bindings and compare their local parts against our name.
+ if (wsdlBinding == null && bindingName.getNamespaceURI().equals("")
+ && !bindingName.getLocalPart().equals("")) {
+ Map bindings = wsdlDef.getBindings();
+ Collection bindingsCollection = bindings.values();
+ for (Iterator i = bindingsCollection.iterator(); i.hasNext();) {
+ Binding b = (Binding)i.next();
+ if (b.getQName().getLocalPart().equals(bindingName.getLocalPart())) {
+ wsdlBinding = b;
+ break;
+ }
+ }
+ }
+
+ return wsdlBinding;
+ }
+
+ // An event producer to handle the production of the Address XML data.
+ class CorbaAddressEventProducer implements CorbaTypeEventProducer {
+ int state;
+
+ int[] states = {XMLStreamReader.START_ELEMENT,
+ XMLStreamReader.CHARACTERS,
+ XMLStreamReader.END_ELEMENT};
+ final String address;
+
+ public CorbaAddressEventProducer(String value) {
+ address = value;
+ }
+
+ public String getLocalName() {
+ return WSA_ADDRESS.getLocalPart();
+ }
+
+ public String getText() {
+ return address;
+ }
+
+ public int next() {
+ return states[state++];
+ }
+
+ public QName getName() {
+ return WSA_ADDRESS;
+ }
+
+ public boolean hasNext() {
+ return state < states.length;
+ }
+
+ public List<Attribute> getAttributes() {
+ return null;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return null;
+ }
+ }
+
+ // An event producer to handle the production of the Metadata XML data. This producer will rely
+ // on two additional producers to handle the production of sub-events.
+ class CorbaMetaDataEventProducer extends AbstractStartEndEventProducer {
+
+ CorbaServiceNameEventProducer svcProducer;
+ CorbaInterfaceNameEventProducer intfProducer;
+ List<Attribute> metaAttrs;
+
+ public CorbaMetaDataEventProducer(String location,
+ CorbaServiceNameEventProducer svc,
+ CorbaInterfaceNameEventProducer intf) {
+ name = new QName(CorbaObjectReferenceHelper.ADDRESSING_NAMESPACE_URI, "Metadata");
+
+ List<CorbaTypeEventProducer> metaDataProducers = new ArrayList<CorbaTypeEventProducer>();
+ metaDataProducers.add(svc);
+ metaDataProducers.add(intf);
+
+ producers = metaDataProducers.iterator();
+
+ XMLEventFactory factory = XMLEventFactory.newInstance();
+
+ metaAttrs = new ArrayList<Attribute>();
+ metaAttrs.add(factory.createAttribute(
+ new QName(WSDLI_NAMESPACE_URI, "wsdlLocation", "objrefns1"), location));
+
+ }
+
+ public List<Attribute> getAttributes() {
+ if (currentEventProducer != null) {
+ return currentEventProducer.getAttributes();
+ } else {
+ return metaAttrs;
+ }
+ }
+
+ }
+
+ // An event producer to handle the production of the ServiceName XML data.
+ class CorbaServiceNameEventProducer implements CorbaTypeEventProducer {
+ int state;
+ int[] states = {XMLStreamReader.START_ELEMENT,
+ XMLStreamReader.CHARACTERS,
+ XMLStreamReader.END_ELEMENT};
+ QName serviceName;
+ QName name;
+
+ List<Attribute> attributes;
+ List<Namespace> namespaces;
+
+ public CorbaServiceNameEventProducer(QName svc, String ep) {
+ serviceName = svc;
+
+ name = new QName(CorbaObjectReferenceHelper.ADDRESSING_NAMESPACE_URI + "/wsdl",
+ "ServiceName");
+
+ XMLEventFactory factory = XMLEventFactory.newInstance();
+
+ attributes = new ArrayList<Attribute>();
+ attributes.add(factory.createAttribute("EndpointName", ep));
+
+ namespaces = new ArrayList<Namespace>();
+ namespaces.add(factory.createNamespace("objrefns2", svc.getNamespaceURI()));
+ }
+
+ public String getLocalName() {
+ return name.getLocalPart();
+ }
+
+ public String getText() {
+ return namespaces.get(0).getPrefix() + ":" + serviceName.getLocalPart();
+ }
+
+ public int next() {
+ return states[state++];
+ }
+
+ public boolean hasNext() {
+ return state < states.length;
+ }
+
+ public QName getName() {
+ return name;
+ }
+
+ public List<Attribute> getAttributes() {
+ return attributes;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return namespaces;
+ }
+ }
+
+ // An event producer to handle the production of the InterfaceName XML data.
+ class CorbaInterfaceNameEventProducer implements CorbaTypeEventProducer {
+ int state;
+ int[] states = {XMLStreamReader.START_ELEMENT,
+ XMLStreamReader.CHARACTERS,
+ XMLStreamReader.END_ELEMENT};
+ QName interfaceName;
+ QName name;
+ List<Namespace> namespaces;
+
+ public CorbaInterfaceNameEventProducer(QName intf) {
+ interfaceName = intf;
+
+ name = new QName(CorbaObjectReferenceHelper.ADDRESSING_NAMESPACE_URI + "/wsdl",
+ "InterfaceName");
+
+ XMLEventFactory factory = XMLEventFactory.newInstance();
+ namespaces = new ArrayList<Namespace>();
+ namespaces.add(factory.createNamespace("objrefns2", intf.getNamespaceURI()));
+ }
+
+ public String getLocalName() {
+ return name.getLocalPart();
+ }
+
+ public String getText() {
+ return namespaces.get(0).getPrefix() + ":" + interfaceName.getLocalPart();
+ }
+
+ public int next() {
+ return states[state++];
+ }
+
+ public boolean hasNext() {
+ return state < states.length;
+ }
+
+ public QName getName() {
+ return name;
+ }
+
+ public List<Attribute> getAttributes() {
+ return null;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return namespaces;
+ }
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceEventProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java Fri May 25 04:12:27 2007
@@ -18,8 +18,12 @@
*/
package org.apache.yoko.bindings.corba.types;
+import java.util.List;
+
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.cxf.service.model.ServiceInfo;
@@ -53,5 +57,13 @@
public boolean hasNext() {
return state < states.length;
+ }
+
+ public List<Attribute> getAttributes() {
+ return null;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return null;
}
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java Fri May 25 04:12:27 2007
@@ -18,8 +18,13 @@
*/
package org.apache.yoko.bindings.corba.types;
+import java.util.List;
+
import javax.xml.namespace.QName;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
+
public interface CorbaTypeEventProducer {
boolean hasNext();
@@ -43,5 +48,14 @@
* text of current content
*/
String getText();
-
+
+ /*
+ * return any attributes for the current type
+ */
+ List<Attribute> getAttributes();
+
+ /*
+ * return any namespace for the current type
+ */
+ List<Namespace> getNamespaces();
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java Fri May 25 04:12:27 2007
@@ -19,8 +19,11 @@
package org.apache.yoko.bindings.corba.types;
import java.util.Iterator;
+import java.util.List;
import javax.xml.namespace.QName;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
import org.apache.cxf.service.model.ServiceInfo;
@@ -78,4 +81,11 @@
return event;
}
+ public List<Attribute> getAttributes() {
+ return null;
+ }
+
+ public List<Namespace> getNamespaces() {
+ return null;
+ }
}
Modified: incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReferenceTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReferenceTest.java?view=diff&rev=541617&r1=541616&r2=541617
==============================================================================
--- incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReferenceTest.java (original)
+++ incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReferenceTest.java Fri May 25 04:12:27 2007
@@ -161,14 +161,7 @@
int startVal = testObj.testObjectValue();
- // We keep on having to set the request context with the endpoints address. This
- // was not the case before and should be looked at further
- Map<String, Object> requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ref.getAddress().getValue());
testObj.testObjectValueUpdate(updateVal);
-
- requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ref.getAddress().getValue());
int endVal = testObj.testObjectValue();
assertTrue(endVal == updateVal);
@@ -177,23 +170,20 @@
public void testDefaultObjectReturn() throws Exception {
System.out.println("Testing default object reference as a return value...");
EndpointReferenceType ref = client.testDefaultObjectReturn();
- TestObject testObj = createObjectFromEndpointReferenceType(ref);
- int updateVal = 246;
+ assertNotNull(ref.getAddress().getValue());
- int startVal = testObj.testObjectValue();
+ QName interfaceName = EndpointReferenceUtils.getInterfaceName(ref);
+ assertNull(interfaceName);
- // We keep on having to set the request context with the endpoints address. This
- // was not the case before and should be looked at further
- Map<String, Object> requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ref.getAddress().getValue());
- testObj.testObjectValueUpdate(updateVal);
+ String wsdlLocation = EndpointReferenceUtils.getWSDLLocation(ref);
+ assertNull(wsdlLocation);
- requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, ref.getAddress().getValue());
- int endVal = testObj.testObjectValue();
+ QName serviceName = EndpointReferenceUtils.getServiceName(ref);
+ assertNull(serviceName);
- assertTrue(endVal == updateVal);
+ String portName = EndpointReferenceUtils.getPortName(ref);
+ assertNull(portName);
}
public void testNilObjectParam() {
@@ -201,7 +191,7 @@
boolean result = client.testNilObjectParam(null);
assertTrue(result);
}
-
+
public void testNilObjectReturn() {
System.out.println("Testing nil object reference as a return value...");
EndpointReferenceType result = client.testNilObjectReturn();
@@ -307,6 +297,7 @@
try {
testObj = createObjectFromEndpointReferenceType(param);
} catch (Exception ex) {
+ ex.printStackTrace();
return false;
}
@@ -318,14 +309,7 @@
int updateVal = 123;
int startVal = testObj.testObjectValue();
- // We keep on having to set the request context with the endpoints address. This
- // was not the case before and should be looked at further
- Map<String, Object> requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, param.getAddress().getValue());
testObj.testObjectValueUpdate(updateVal);
-
- requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, param.getAddress().getValue());
int endVal = testObj.testObjectValue();
return (endVal == updateVal);
@@ -336,34 +320,24 @@
public boolean testDefaultObjectParam(EndpointReferenceType param) {
TestObject testObj = null;
- try {
- testObj = createObjectFromEndpointReferenceType(param);
- } catch (Exception ex) {
- return false;
- }
- if (testObj == null) {
+ if (param.getAddress().getValue() == null) {
return false;
}
- try {
- int updateVal = 456;
- int startVal = testObj.testObjectValue();
-
- // We keep on having to set the request context with the endpoints address. This
- // was not the case before and should be looked at further
- Map<String, Object> requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, param.getAddress().getValue());
- testObj.testObjectValueUpdate(updateVal);
+ QName interfaceName = EndpointReferenceUtils.getInterfaceName(param);
+ String wsdlLocation = EndpointReferenceUtils.getWSDLLocation(param);
+ QName serviceName = EndpointReferenceUtils.getServiceName(param);
+ String portName = EndpointReferenceUtils.getPortName(param);
- requestContext = ((BindingProvider)testObj).getRequestContext();
- requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, param.getAddress().getValue());
- int endVal = testObj.testObjectValue();
-
- return (endVal == updateVal);
- } catch(Exception ex) {
+ if (interfaceName != null ||
+ wsdlLocation != null ||
+ serviceName != null ||
+ portName != null) {
return false;
}
+
+ return true;
}
public EndpointReferenceType testCustomObjectReturn() {