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 br...@apache.org on 2007/05/24 19:02:18 UTC
svn commit: r541389 - in
/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba:
interceptors/ runtime/ types/
Author: bravi
Date: Thu May 24 12:02:15 2007
New Revision: 541389
URL: http://svn.apache.org/viewvc?view=rev&rev=541389
Log:
[YOKO-366] - Adding support for array types.
Added:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java (with props)
Modified:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayHandler.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/CorbaEnumHandler.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionHandler.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/CorbaFixedHandler.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/CorbaObjectHandler.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceHandler.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveHandler.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/CorbaSequenceEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceHandler.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructHandler.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionHandler.java
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java Thu May 24 12:02:15 2007
@@ -55,6 +55,7 @@
import org.apache.yoko.bindings.corba.types.ParameterEventProducer;
import org.apache.yoko.bindings.corba.types.WrappedParameterSequenceEventProducer;
import org.apache.yoko.bindings.corba.utils.ContextUtils;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.omg.CORBA.Any;
import org.omg.CORBA.NVList;
@@ -258,6 +259,7 @@
paramName = part.getElementQName();
}
}
+ paramName = CorbaUtils.processQName(paramName, service);
CorbaObjectHandler obj =
CorbaHandlerUtils.initializeObjectHandler(orb, paramName, paramIdlType, map, service);
streamables[i] = corbaMsg.createStreamableObject(obj, paramName);
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java Thu May 24 12:02:15 2007
@@ -50,6 +50,7 @@
import org.apache.yoko.bindings.corba.types.CorbaHandlerUtils;
import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
import org.apache.yoko.bindings.corba.utils.ContextUtils;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.apache.yoko.wsdl.CorbaConstants;
public class CorbaStreamOutEndingInterceptor extends AbstractPhaseInterceptor<Message> {
@@ -106,12 +107,14 @@
paramName = part.getElementQName();
}
}
+ paramName = CorbaUtils.processQName(paramName, service);
obj = CorbaHandlerUtils.initializeObjectHandler(orb,
paramName,
idlType,
typeMap,
service);
} else {
+ paramName = CorbaUtils.processQName(paramName, service);
obj = objs[count++];
}
CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
@@ -126,7 +129,8 @@
ArgType returnParam = opType.getReturn();
if (returnParam != null) {
- QName retName = outMsgInfo.getMessagePartQName(returnParam.getName());
+ QName retName =
+ CorbaUtils.processQName(outMsgInfo.getMessagePartQName(returnParam.getName()), service);
QName retIdlType = returnParam.getIdltype();
CorbaObjectHandler obj = CorbaHandlerUtils
.initializeObjectHandler(orb, retName, retIdlType, typeMap, service);
@@ -149,7 +153,8 @@
ArgType returnParam = opType.getReturn();
if (returnParam != null) {
MessageInfo msgOutInfo = opInfo.getOutput();
- QName retName = msgOutInfo.getMessagePartQName(returnParam.getName());
+ QName retName =
+ CorbaUtils.processQName(msgOutInfo.getMessagePartQName(returnParam.getName()), service);
CorbaObjectHandler obj = objs[count++];
CorbaStreamable streamable = message.createStreamableObject(obj, retName);
message.setStreamableReturn(streamable);
@@ -167,12 +172,14 @@
paramName = part.getElementQName();
}
}
+ paramName = CorbaUtils.processQName(paramName, service);
obj = CorbaHandlerUtils.initializeObjectHandler(orb,
paramName,
idlType,
typeMap,
service);
} else {
+ paramName = CorbaUtils.processQName(paramName, service);
obj = objs[count++];
}
CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java Thu May 24 12:02:15 2007
@@ -20,6 +20,7 @@
import java.lang.reflect.Constructor;
import java.math.BigInteger;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
@@ -392,7 +393,6 @@
public void readSequence(CorbaObjectHandler obj) throws CorbaBindingException {
CorbaSequenceHandler sequenceObj = (CorbaSequenceHandler)obj;
List<CorbaObjectHandler> seqElements = sequenceObj.getElements();
-
int length = stream.read_ulong();
long bound = 0;
if (obj.getType() instanceof Anonsequence) {
@@ -402,17 +402,23 @@
Sequence seqType = (Sequence) obj.getType();
bound = seqType.getBound();
}
- if (bound == 0) {
- seqElements.clear();
+ List<CorbaObjectHandler> elements = new ArrayList<CorbaObjectHandler>(length);
+ if (bound == 0) {
+ sequenceObj.clear();
// No predefined elements means an unbounded sequence. Use the template element
// to construct each object that is in the input stream.
CorbaObjectHandler template = sequenceObj.getTemplateElement();
-
for (int i = 0; i < length; ++i) {
- CorbaObjectHandler seqElement = initializeCorbaObjectHandler(template);
+ CorbaObjectHandler seqElement;
+ if (template != null) {
+ seqElement = initializeCorbaObjectHandler(template);
+ } else {
+ seqElement = seqElements.get(i);
+ }
read(seqElement);
- seqElements.add(seqElement);
+ elements.add(seqElement);
}
+ sequenceObj.setElements(elements);
} else {
// We have a bounded sequence and the object should already be pre-built
for (int i = 0; i < length; ++i) {
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java Thu May 24 12:02:15 2007
@@ -260,7 +260,7 @@
int start,
int len)
throws XMLStreamException {
- throw new XMLStreamException("Not yet implemented");
+ currentTypeListener.processCharacters(new String(text));
}
public java.lang.String getPrefix(java.lang.String uri)
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java Thu May 24 12:02:15 2007
@@ -50,6 +50,10 @@
public Any getValue() {
return value;
}
+
+ public void clear() {
+ value = null;
+ }
public void setValue(Any v) throws CorbaBindingException {
value = v;
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java?view=auto&rev=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java Thu May 24 12:02:15 2007
@@ -0,0 +1,41 @@
+/**
+ * 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 org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+
+public class CorbaArrayEventProducer extends AbstractStartEndEventProducer {
+
+ public CorbaArrayEventProducer(CorbaObjectHandler h,
+ CorbaTypeMap tm,
+ ServiceInfo service,
+ ORB orbRef) {
+ CorbaArrayHandler handler = (CorbaArrayHandler) h;
+ name = handler.getName();
+ iterator = handler.getElements().iterator();
+ typeMap = tm;
+ serviceInfo = service;
+ orb = orbRef;
+ }
+
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayHandler.java Thu May 24 12:02:15 2007
@@ -47,5 +47,11 @@
public CorbaObjectHandler getElement(int index) {
return elements.get(index);
- }
+ }
+
+ public void clear() {
+ for (int i = 0; i < elements.size(); i++) {
+ elements.get(i).clear();
+ }
+ }
}
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java?view=auto&rev=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java Thu May 24 12:02:15 2007
@@ -0,0 +1,82 @@
+/**
+ * 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 javax.xml.namespace.QName;
+
+import org.apache.schemas.yoko.bindings.corba.Anonarray;
+import org.apache.schemas.yoko.bindings.corba.Array;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+
+public class CorbaArrayListener extends AbstractCorbaTypeListener {
+
+ private CorbaArrayHandler value;
+ private QName arrayElementType;
+ private QName currentElName;
+ private CorbaTypeListener currentTypeListener;
+ private ORB orb;
+ private CorbaTypeMap typeMap;
+
+ public CorbaArrayListener(CorbaObjectHandler handler,
+ CorbaTypeMap map,
+ ORB orbRef) {
+ super(handler);
+ value = (CorbaArrayHandler) handler;
+ orb = orbRef;
+ typeMap = map;
+ Object arrayType = handler.getType();
+ if (arrayType instanceof Anonarray) {
+ Anonarray anonType = (Anonarray) arrayType;
+ arrayElementType = anonType.getElemtype();
+ } else {
+ Array type = (Array) arrayType;
+ arrayElementType = type.getElemtype();
+ }
+ }
+
+ public void processStartElement(QName name) {
+ if (currentTypeListener == null) {
+ currentElName = name;
+ currentTypeListener =
+ CorbaHandlerUtils.getTypeListener(name,
+ arrayElementType,
+ typeMap,
+ orb);
+ value.addElement(currentTypeListener.getCorbaObject());
+ } else {
+ currentTypeListener.processStartElement(name);
+ }
+ }
+
+ public void processEndElement(QName name) {
+ if (currentTypeListener != null) {
+ currentTypeListener.processEndElement(name);
+ if (currentElName.equals(name)) {
+ currentTypeListener = null;
+ }
+ }
+ }
+
+ public void processCharacters(String text) {
+ currentTypeListener.processCharacters(text);
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=541389&r1=541388&r2=541389
==============================================================================
--- 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 Thu May 24 12:02:15 2007
@@ -22,7 +22,6 @@
import javax.xml.stream.XMLStreamReader;
import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.utils.CorbaUtils;
public class CorbaEnumEventProducer implements CorbaTypeEventProducer {
@@ -33,7 +32,7 @@
public CorbaEnumEventProducer(CorbaObjectHandler h, ServiceInfo service) {
handler = (CorbaEnumHandler) h;
- name = CorbaUtils.processQName(handler.getName(), service);
+ name = handler.getName();
}
public String getLocalName() {
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumHandler.java Thu May 24 12:02:15 2007
@@ -57,4 +57,8 @@
public long getIndex() {
return index;
}
+
+ public void clear() {
+ value = null;
+ }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionHandler.java Thu May 24 12:02:15 2007
@@ -72,6 +72,12 @@
public void setId(String eid) {
id = eid;
}
+
+ public void clear() {
+ for (int i = 0; i < members.size(); i++) {
+ members.get(i).clear();
+ }
+ }
// TODO: Can we add the features that exist in the main package here?
}
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=541389&r1=541388&r2=541389
==============================================================================
--- 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 Thu May 24 12:02:15 2007
@@ -22,7 +22,6 @@
import javax.xml.stream.XMLStreamReader;
import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.utils.CorbaUtils;
public class CorbaFixedEventProducer implements CorbaTypeEventProducer {
@@ -33,7 +32,7 @@
public CorbaFixedEventProducer(CorbaObjectHandler h, ServiceInfo service) {
handler = (CorbaFixedHandler) h;
- name = CorbaUtils.processQName(handler.getName(), service);
+ name = handler.getName();
}
public String getLocalName() {
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedHandler.java Thu May 24 12:02:15 2007
@@ -72,4 +72,8 @@
public void setValueFromData(String data) {
value = new BigDecimal(data);
}
+
+ public void clear() {
+ value = 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=541389&r1=541388&r2=541389
==============================================================================
--- 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 Thu May 24 12:02:15 2007
@@ -49,7 +49,6 @@
import org.apache.ws.commons.schema.XmlSchemaType;
import org.apache.yoko.bindings.corba.CorbaBindingException;
-//import org.apache.yoko.bindings.corba.CorbaStreamable;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.apache.yoko.wsdl.CorbaTypeImpl;
@@ -474,6 +473,8 @@
break;
case TCKind._tk_array:
LOG.log(Level.INFO, "Reading array type from XML reader");
+ handler = new CorbaArrayHandler(name, idlType, tc, type);
+ result = new CorbaArrayListener(handler, typeMap, orb);
break;
case TCKind._tk_enum:
LOG.log(Level.INFO, "Reading enumeration type from XML reader");
@@ -498,7 +499,7 @@
case TCKind._tk_string:
case TCKind._tk_wstring:
// These will be the case if we have anonymous strings
- LOG.log(Level.INFO, "Reading anonymous string from XML reader");
+ LOG.log(Level.INFO, "Reading anonymous string from XML reader");
break;
case TCKind._tk_struct:
LOG.log(Level.INFO, "Reading struct type from XML reader");
@@ -538,6 +539,7 @@
break;
case TCKind._tk_array:
LOG.log(Level.INFO, "Reading array type from XML reader");
+ result = new CorbaArrayEventProducer(handler, typeMap, serviceInfo, orb);
break;
case TCKind._tk_enum:
LOG.log(Level.INFO, "Reading enumeration type from XML reader");
@@ -553,11 +555,7 @@
break;
case TCKind._tk_sequence:
LOG.log(Level.INFO, "Reading sequence type from XML reader");
- if (isPrimitiveIDLTypeSequence(handler)) {
- result = new CorbaPrimitiveSequenceEventProducer(handler, typeMap, serviceInfo, orb);
- } else {
- result = new CorbaSequenceEventProducer(handler, typeMap, serviceInfo, orb);
- }
+ result = new CorbaSequenceEventProducer(handler, typeMap, serviceInfo, orb);
break;
case TCKind._tk_string:
case TCKind._tk_wstring:
@@ -587,7 +585,7 @@
return result;
}
- private static boolean isPrimitiveIDLTypeSequence(CorbaObjectHandler handler) {
+ public static boolean isPrimitiveIDLTypeSequence(CorbaObjectHandler handler) {
CorbaTypeImpl seqType = handler.getType();
QName seqElementType;
if (seqType instanceof Anonsequence) {
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectHandler.java Thu May 24 12:02:15 2007
@@ -76,4 +76,7 @@
public boolean isAnonymousType() {
return isAnon;
}
+
+ public void clear() {
+ }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceHandler.java Thu May 24 12:02:15 2007
@@ -39,4 +39,8 @@
public void setReference(org.omg.CORBA.Object ref) {
value = ref;
}
-}
\ No newline at end of file
+
+ public void clear() {
+ value = null;
+ }
+}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveHandler.java Thu May 24 12:02:15 2007
@@ -143,4 +143,8 @@
value = data;
}
}
+
+ public void clear() {
+ value = null;
+ }
}
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=541389&r1=541388&r2=541389
==============================================================================
--- 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 Thu May 24 12:02:15 2007
@@ -22,7 +22,6 @@
import javax.xml.stream.XMLStreamReader;
import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.utils.CorbaUtils;
public class CorbaPrimitiveTypeEventProducer implements CorbaTypeEventProducer {
@@ -33,7 +32,7 @@
public CorbaPrimitiveTypeEventProducer(CorbaObjectHandler h, ServiceInfo service) {
handler = (CorbaPrimitiveHandler) h;
- name = CorbaUtils.processQName(handler.getName(), service);
+ name = handler.getName();
}
public String getLocalName() {
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java Thu May 24 12:02:15 2007
@@ -21,20 +21,17 @@
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
-import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.omg.CORBA.ORB;
public class CorbaSequenceEventProducer extends AbstractStartEndEventProducer {
- boolean isPrimitiveIdlType;
-
public CorbaSequenceEventProducer(CorbaObjectHandler h,
CorbaTypeMap tm,
ServiceInfo service,
ORB orbRef) {
CorbaSequenceHandler handler = (CorbaSequenceHandler) h;
- name = CorbaUtils.processQName(handler.getName(), service);
+ name = handler.getName();
iterator = handler.getElements().iterator();
typeMap = tm;
serviceInfo = service;
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceHandler.java Thu May 24 12:02:15 2007
@@ -59,4 +59,14 @@
public void setTemplateElement(CorbaObjectHandler el) {
templateElement = el;
}
+
+ public void setElements(List<CorbaObjectHandler> els) {
+ elements = els;
+ }
+
+ public void clear() {
+ for (int i = 0; i < elements.size(); i++) {
+ elements.get(i).clear();
+ }
+ }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java Thu May 24 12:02:15 2007
@@ -24,8 +24,12 @@
import org.apache.schemas.yoko.bindings.corba.Sequence;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
+import org.apache.yoko.wsdl.W3CConstants;
import org.omg.CORBA.ORB;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
public class CorbaSequenceListener extends AbstractCorbaTypeListener {
@@ -35,6 +39,7 @@
private CorbaTypeListener currentTypeListener;
private ORB orb;
private CorbaTypeMap typeMap;
+ private CorbaTypeImpl seqType;
public CorbaSequenceListener(CorbaObjectHandler handler,
CorbaTypeMap map,
@@ -43,7 +48,7 @@
value = (CorbaSequenceHandler) handler;
orb = orbRef;
typeMap = map;
- Object seqType = handler.getType();
+ seqType = handler.getType();
if (seqType instanceof Anonsequence) {
Anonsequence anonSeqType = (Anonsequence) seqType;
seqElementType = anonSeqType.getElemtype();
@@ -79,13 +84,29 @@
public void processCharacters(String text) {
if (currentTypeListener == null) {
// primitive sequence
- CorbaTypeListener primitiveListener =
- CorbaHandlerUtils.getTypeListener(value.getName(),
- seqElementType,
- typeMap,
- orb);
- value.addElement(primitiveListener.getCorbaObject());
- primitiveListener.processCharacters(text);
+ boolean readOctets = seqType.getType().equals(W3CConstants.NT_SCHEMA_BASE64)
+ || seqType.getType().equals(W3CConstants.NT_SCHEMA_HBIN);
+ if (readOctets) {
+ QName valueQName = new QName("value");
+ TypeCode valueTC = orb.get_primitive_tc(TCKind.from_int(TCKind._tk_octet));
+ byte[] bytes = text.getBytes();
+ for (int i = 0; i < bytes.length; i++) {
+ CorbaPrimitiveHandler handler = new CorbaPrimitiveHandler(valueQName,
+ seqElementType,
+ valueTC,
+ null);
+ handler.setValue(new Byte(bytes[i]));
+ value.addElement(handler);
+ }
+ } else {
+ CorbaTypeListener primitiveListener =
+ CorbaHandlerUtils.getTypeListener(value.getName(),
+ seqElementType,
+ typeMap,
+ orb);
+ value.addElement(primitiveListener.getCorbaObject());
+ primitiveListener.processCharacters(text);
+ }
} else {
currentTypeListener.processCharacters(text);
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java Thu May 24 12:02:15 2007
@@ -20,7 +20,6 @@
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.yoko.bindings.corba.CorbaTypeMap;
-import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.omg.CORBA.ORB;
@@ -31,10 +30,37 @@
ServiceInfo service,
ORB orbRef) {
CorbaStructHandler handler = (CorbaStructHandler) h;
- name = CorbaUtils.processQName(handler.getName(), service);
+ name = handler.getName();
iterator = handler.members.iterator();
typeMap = tm;
serviceInfo = service;
orb = orbRef;
+ }
+
+ public int next() {
+ int event = states[state];
+ if (event != 0) {
+ state++;
+ } else if (currentEventProducer != null && currentEventProducer.hasNext()) {
+ event = currentEventProducer.next();
+ } else if (iterator.hasNext()) {
+ CorbaObjectHandler obj = iterator.next();
+ //Special case for primitive sequence inside struct
+ if ((obj instanceof CorbaSequenceHandler)
+ && (CorbaHandlerUtils.isPrimitiveIDLTypeSequence(obj))) {
+ currentEventProducer =
+ new CorbaPrimitiveSequenceEventProducer(obj, typeMap, serviceInfo, orb);
+ } else {
+ currentEventProducer =
+ CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
+ }
+ event = currentEventProducer.next();
+ } else {
+ // all done with content, move past state 0
+ event = states[++state];
+ state++;
+ currentEventProducer = null;
+ }
+ return event;
}
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructHandler.java Thu May 24 12:02:15 2007
@@ -59,4 +59,10 @@
return member;
}
+
+ public void clear() {
+ for (int i = 0; i < members.size(); i++) {
+ members.get(i).clear();
+ }
+ }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java Thu May 24 12:02:15 2007
@@ -61,7 +61,7 @@
}
currentTypeListener =
CorbaHandlerUtils.getTypeListener(elName,
- structMembers.get(memberCount).getIdltype(),
+ member.getIdltype(),
typeMap,
orb);
value.addMember(currentTypeListener.getCorbaObject());
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionHandler.java?view=diff&rev=541389&r1=541388&r2=541389
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionHandler.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionHandler.java Thu May 24 12:02:15 2007
@@ -204,4 +204,13 @@
}
return label;
}
+
+ public void clear() {
+ if (discriminator != null) {
+ discriminator.clear();
+ }
+ if (value != null) {
+ value.clear();
+ }
+ }
}