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/11 16:54:02 UTC
svn commit: r537233 - in
/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba:
interceptors/ runtime/ types/
Author: bravi
Date: Fri May 11 09:54:00 2007
New Revision: 537233
URL: http://svn.apache.org/viewvc?view=rev&rev=537233
Log:
[YOKO-366] - Updates to the perf branch for initial performance framework.
Added:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties (with props)
Modified:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.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/CorbaHandlerUtils.java
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java?view=diff&rev=537233&r1=537232&r2=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java Fri May 11 09:54:00 2007
@@ -19,17 +19,32 @@
package org.apache.yoko.bindings.corba.interceptors;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import java.util.logging.Logger;
import javax.xml.stream.XMLStreamWriter;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.schemas.yoko.bindings.corba.ModeType;
+import org.apache.schemas.yoko.bindings.corba.OperationType;
+import org.apache.schemas.yoko.bindings.corba.ParamType;
+import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
import org.apache.yoko.bindings.corba.CorbaMessage;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
import org.apache.yoko.bindings.corba.runtime.CorbaStreamWriter;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+
+import org.apache.yoko.wsdl.CorbaConstants;
public class CorbaStreamOutInterceptor extends AbstractPhaseInterceptor<Message> {
@@ -37,14 +52,39 @@
public CorbaStreamOutInterceptor() {
super();
- setPhase(Phase.SETUP);
+ setPhase(Phase.PRE_STREAM);
}
public void handleMessage(Message msg) {
System.out.println("CorbaStreamOutInterceptor... handleMessage...");
CorbaMessage message = (CorbaMessage) msg;
-
- CorbaStreamWriter writer = new CorbaStreamWriter();
+ org.omg.CORBA.ORB orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
+ Exchange exchange = message.getExchange();
+ ServiceInfo service = exchange.get(ServiceInfo.class);
+ List<CorbaTypeMap> typeMaps = message.getCorbaTypeMap();
+ if (typeMaps == null) {
+ typeMaps = new ArrayList<CorbaTypeMap>();
+ List<TypeMappingType> corbaTypes =
+ service.getDescription().getExtensors(TypeMappingType.class);
+ if (corbaTypes != null) {
+ CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
+ }
+ }
+ BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
+ boolean wrap = false;
+ if (boi.isUnwrappedCapable()) {
+ wrap = true;
+ }
+ OperationType opType = boi.getExtensor(OperationType.class);
+ List<ParamType> paramTypes = opType.getParam();
+ List<ParamType> params = new ArrayList<ParamType>();
+ for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
+ ParamType param = iter.next();
+ if (!param.getMode().equals(ModeType.OUT)) {
+ params.add(param);
+ }
+ }
+ CorbaStreamWriter writer = new CorbaStreamWriter(orb, params, typeMaps, service, wrap);
message.setContent(XMLStreamWriter.class, writer);
message.getInterceptorChain().add(new CorbaStreamOutEndingInterceptor());
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=537233&r1=537232&r2=537233
==============================================================================
--- 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 Fri May 11 09:54:00 2007
@@ -19,47 +19,123 @@
package org.apache.yoko.bindings.corba.runtime;
+import java.util.List;
+import java.util.Stack;
+import java.util.logging.Logger;
+
import javax.xml.namespace.NamespaceContext;
import javax.xml.namespace.QName;
-
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.schemas.yoko.bindings.corba.ParamType;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.apache.yoko.bindings.corba.types.CorbaHandlerUtils;
+import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
+import org.apache.yoko.bindings.corba.types.CorbaTypeListener;
+
+import org.omg.CORBA.ORB;
+
public class CorbaStreamWriter implements XMLStreamWriter {
- QName currentElement;
- String defaultNS = "";
- String currentChars;
+ private static final Logger LOG = LogUtils.getL7dLogger(CorbaStreamWriter.class);
- public CorbaStreamWriter() {
+ private String defaultNS = "";
+ private boolean skipWrap;
+ private ServiceInfo serviceInfo;
+ private List<CorbaTypeMap> typeMaps;
+ private List<ParamType> params;
+ private int paramCounter;
+ private ORB orb;
+ private CorbaTypeListener[] listeners;
+ private CorbaTypeListener currentTypeListener;
+
+ private Stack<QName> elements;
+ private QName paramElement;
+
+ public CorbaStreamWriter(ORB orbRef,
+ List<ParamType> paramTypes,
+ List<CorbaTypeMap> maps,
+ ServiceInfo sinfo,
+ boolean wrap) {
//ctx = new NamespaceContextImpl();
+ orb = orbRef;
+ System.out.println("ORB: " + orb);
+ params = paramTypes;
+ typeMaps = maps;
+ serviceInfo = sinfo;
+ skipWrap = wrap;
+ listeners = new CorbaTypeListener[paramTypes.size()];
+ elements = new Stack<QName>();
+ }
+
+ public CorbaObjectHandler[] getCorbaObjects() {
+ //REVISIT, we can make the CorbaTypeListener & CorbaObjectHandler the same object.
+ CorbaObjectHandler[] handlers = new CorbaObjectHandler[listeners.length];
+ for (int i = 0; i < listeners.length; i++) {
+ handlers[i] = listeners[i].getCorbaObject();
+ }
+ return handlers;
}
public void writeStartElement(String namespaceURI, String localName)
throws XMLStreamException {
- currentElement = new QName(namespaceURI, localName);
- System.out.println("Start : " + currentElement);
+ writeStartElement(null, localName, namespaceURI);
}
public void writeEndElement() throws XMLStreamException {
- System.out.println("End: " + currentElement);
- currentElement = null;
+ if (elements.empty()) {
+ currentTypeListener = null;
+ } else {
+ QName name = elements.pop();
+ System.out.println("End: " + name);
+ currentTypeListener.processEndElement(name);
+ if (name.equals(paramElement)) {
+ currentTypeListener = null;
+ }
+ }
}
public void writeStartElement(java.lang.String localName)
throws XMLStreamException {
- currentElement = new QName(defaultNS, localName);
- System.out.println("Check the start Element: " + currentElement);
+ writeStartElement(null, localName, defaultNS);
}
public void writeStartElement(java.lang.String prefix,
java.lang.String localName,
java.lang.String namespaceURI)
- throws XMLStreamException {
- setPrefix(prefix, namespaceURI);
- currentElement = new QName(namespaceURI, localName, prefix);
- System.out.println("Check the start Element: " + currentElement);
+ throws XMLStreamException {
+ if (prefix != null) {
+ setPrefix(prefix, namespaceURI);
+ }
+ System.out.println("Check the start Element: " + localName);
+ QName name = new QName(namespaceURI, localName, prefix);
+ elements.push(name);
+ if (!skipWrap) {
+ if (currentTypeListener == null) {
+ paramElement = name;
+ ParamType param = params.get(paramCounter);
+ System.out.println("Param: " + param.getName() + "-" + param.getIdltype());
+ QName idlType = param.getIdltype();
+ if (localName.equals(param.getName())) {
+ currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMaps, orb);
+ listeners[paramCounter] = currentTypeListener;
+ paramCounter++;
+ } else {
+ throw new XMLStreamException("Expected element not found: " + param.getName()
+ + " (Found " + localName + ")");
+ }
+ } else {
+ currentTypeListener.processStartElement(name);
+ }
+ } else {
+ skipWrap = false;
+ }
}
public void writeEmptyElement(java.lang.String namespaceURI,
@@ -167,8 +243,8 @@
public void writeCharacters(java.lang.String text)
throws XMLStreamException {
- currentChars = text;
- System.out.println("current chars: " + currentChars);
+ System.out.println("current chars: " + text);
+ currentTypeListener.processCharacters(text);
}
public void writeCharacters(char[] text,
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java?view=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java Fri May 11 09:54:00 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 javax.xml.namespace.QName;
+
+public abstract class AbstractCorbaTypeListener implements CorbaTypeListener {
+
+ QName currentElement;
+
+ public void processStartElement(QName name) {
+ currentElement = name;
+ System.out.println("process StartElement: " + currentElement);
+ }
+
+ public void processEndElement(QName name) {
+ System.out.println("process EndElement: " + name);
+ currentElement = null;
+ }
+
+ public abstract void processCharacters(String text);
+
+ public abstract CorbaObjectHandler getCorbaObject();
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=537233&r1=537232&r2=537233
==============================================================================
--- 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 11 09:54:00 2007
@@ -20,9 +20,12 @@
import java.util.Iterator;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.xml.namespace.QName;
+import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.schemas.yoko.bindings.corba.Alias;
@@ -57,6 +60,8 @@
public class CorbaHandlerUtils {
+ private static final Logger LOG = LogUtils.getL7dLogger(CorbaHandlerUtils.class);
+
public static CorbaObjectHandler createTypeHandler(ORB orb,
QName name,
QName idlType,
@@ -431,5 +436,72 @@
el = (XmlSchemaElement) schemaType;
}
return el;
+ }
+
+ public static CorbaTypeListener getTypeListener(QName name,
+ QName idlType,
+ List<CorbaTypeMap> typeMaps,
+ ORB orb)
+ throws CorbaBindingException {
+ TypeCode tc = CorbaUtils.getTypeCode(orb, idlType, typeMaps);
+ try {
+ while (tc.kind().value() == TCKind._tk_alias) {
+ Alias alias = (Alias) CorbaUtils.getCorbaType(idlType, typeMaps);
+ if (alias == null) {
+ throw new CorbaBindingException("Couldn't find corba alias type: " + idlType);
+ }
+ tc = tc.content_type();
+ idlType = alias.getBasetype();
+ }
+ } catch (Throwable ex) {
+ throw new CorbaBindingException(ex);
+ }
+ CorbaTypeListener result = null;
+ if (CorbaUtils.isPrimitiveIdlType(idlType)) {
+ LOG.log(Level.INFO, "Reading primitive type from XML reader");
+ result = new CorbaPrimitiveListener(name, idlType, tc, null);
+ } else {
+ CorbaTypeImpl type = CorbaUtils.getCorbaType(idlType, typeMaps);
+ switch (tc.kind().value()) {
+ case TCKind._tk_any:
+ LOG.log(Level.INFO, "Reading any type from XML reader");
+ break;
+ case TCKind._tk_array:
+ LOG.log(Level.INFO, "Reading array type from XML reader");
+ break;
+ case TCKind._tk_enum:
+ LOG.log(Level.INFO, "Reading enumeration type from XML reader");
+ break;
+ case TCKind._tk_except:
+ LOG.log(Level.INFO, "Reading exception type from XML reader");
+ break;
+ case TCKind._tk_fixed:
+ LOG.log(Level.INFO, "Reading fixed type from XML reader");
+ break;
+ case TCKind._tk_sequence:
+ LOG.log(Level.INFO, "Reading sequence type from XML reader");
+ result = new CorbaSequenceListener(name, idlType, tc, type, typeMaps, orb);
+ break;
+ 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");
+ break;
+ case TCKind._tk_struct:
+ LOG.log(Level.INFO, "Reading struct type from XML reader");
+ result = new CorbaStructListener(name, idlType, tc, type, typeMaps, orb);
+ break;
+ case TCKind._tk_union:
+ LOG.log(Level.INFO, "Reading union type from XML reader");
+ break;
+ case TCKind._tk_objref:
+ LOG.log(Level.INFO, "Reading object reference from XML reader");
+ result = new CorbaObjectReferenceListener(name, idlType, tc, type, orb);
+ break;
+ default:
+ throw new CorbaBindingException("Unsupported complex type " + idlType);
+ }
+ }
+ return result;
}
}
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java?view=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java Fri May 11 09:54:00 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.yoko.bindings.corba.types;
+
+import javax.xml.namespace.QName;
+
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+
+
+public class CorbaObjectReferenceListener extends AbstractCorbaTypeListener {
+
+ private CorbaObjectReferenceHandler value;
+ private QName currentElement;
+ private ORB orb;
+
+ public CorbaObjectReferenceListener(QName objName,
+ QName objIdlType,
+ TypeCode objTC,
+ Object objType,
+ ORB orbRef) {
+ orb = orbRef;
+ value = new CorbaObjectReferenceHandler(objName, objIdlType, objTC, objType);
+ value.setReference(null);
+ }
+
+ public CorbaObjectHandler getCorbaObject() {
+ return value;
+ }
+
+ public void processCharacters(String text) {
+ //REVISIT, just checking the address for now.
+ if ((currentElement != null) && (currentElement.getLocalPart().equals("Address"))) {
+ org.omg.CORBA.Object ref = CorbaUtils.importObjectReference(orb, text);
+ value.setReference(ref);
+ }
+ }
+
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java?view=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java Fri May 11 09:54:00 2007
@@ -0,0 +1,40 @@
+/**
+ * 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.omg.CORBA.TypeCode;
+
+public class CorbaPrimitiveListener extends AbstractCorbaTypeListener {
+
+ private CorbaPrimitiveHandler value;
+
+ public CorbaPrimitiveListener(QName primName, QName primIdlType, TypeCode primTC, Object primType) {
+ value = new CorbaPrimitiveHandler(primName, primIdlType, primTC, primType);
+ }
+
+ public CorbaObjectHandler getCorbaObject() {
+ return value;
+ }
+
+ public void processCharacters(String text) {
+ value.setValueFromData(text);
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: 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=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java Fri May 11 09:54:00 2007
@@ -0,0 +1,89 @@
+/**
+ * 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.List;
+import javax.xml.namespace.QName;
+
+import org.apache.schemas.yoko.bindings.corba.Anonsequence;
+import org.apache.schemas.yoko.bindings.corba.Sequence;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+
+public class CorbaSequenceListener implements CorbaTypeListener {
+
+ private CorbaSequenceHandler value;
+ private QName seqElementType;
+ private QName currentElName;
+ private CorbaTypeListener currentTypeListener;
+ private ORB orb;
+ private List<CorbaTypeMap> typeMaps;
+
+ public CorbaSequenceListener(QName seqName,
+ QName seqIdlType,
+ TypeCode seqTC,
+ Object seqType,
+ List<CorbaTypeMap> maps,
+ ORB orbRef) {
+ value = new CorbaSequenceHandler(seqName, seqIdlType, seqTC, seqType);
+ orb = orbRef;
+ typeMaps = maps;
+ if (seqType instanceof Anonsequence) {
+ Anonsequence anonSeqType = (Anonsequence) seqType;
+ seqElementType = anonSeqType.getElemtype();
+ } else {
+ Sequence type = (Sequence) seqType;
+ seqElementType = type.getElemtype();
+ }
+ }
+
+ public CorbaObjectHandler getCorbaObject() {
+ return value;
+ }
+
+ public void processStartElement(QName name) {
+ System.out.println("seq process start el: " + name);
+ if (currentTypeListener == null) {
+ currentElName = name;
+ currentTypeListener =
+ CorbaHandlerUtils.getTypeListener(name,
+ seqElementType,
+ typeMaps,
+ orb);
+ value.addElement(currentTypeListener.getCorbaObject());
+ }
+ currentTypeListener.processStartElement(name);
+ }
+
+ public void processEndElement(QName name) {
+ System.out.println("seq process end el: " + name);
+ currentTypeListener.processEndElement(name);
+ if (currentElName.equals(name)) {
+ currentTypeListener = null;
+ }
+ }
+
+ public void processCharacters(String text) {
+ System.out.println("seq process chars: " + text);
+ currentTypeListener.processCharacters(text);
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: 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=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java Fri May 11 09:54:00 2007
@@ -0,0 +1,88 @@
+/**
+ * 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.List;
+import javax.xml.namespace.QName;
+
+import org.apache.schemas.yoko.bindings.corba.MemberType;
+import org.apache.schemas.yoko.bindings.corba.Struct;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+
+public class CorbaStructListener implements CorbaTypeListener {
+
+ private CorbaStructHandler value;
+ private int memberCount;
+ private List<MemberType> structMembers;
+ private CorbaTypeListener currentTypeListener;
+ private QName memberElement;
+ private List<CorbaTypeMap> typeMaps;
+ private ORB orb;
+
+ public CorbaStructListener(QName structName,
+ QName structIdlType,
+ TypeCode structTC,
+ Object structType,
+ List<CorbaTypeMap> maps,
+ ORB orbRef) {
+ value = new CorbaStructHandler(structName, structIdlType, structTC, structType);
+ orb = orbRef;
+ typeMaps = maps;
+ structMembers = ((Struct) structType).getMember();
+ }
+
+ public void processStartElement(QName name) {
+ System.out.println("struct process start el: " + name);
+ //REVISIT, assume only elements not attrs
+ if (currentTypeListener == null) {
+ memberElement = name;
+ currentTypeListener =
+ CorbaHandlerUtils.getTypeListener(name,
+ structMembers.get(memberCount).getIdltype(),
+ typeMaps,
+ orb);
+ value.addMember(currentTypeListener.getCorbaObject());
+ memberCount++;
+ } else {
+ currentTypeListener.processStartElement(name);
+ }
+ }
+
+ public void processEndElement(QName name) {
+ System.out.println("struct process end el: " + name);
+ currentTypeListener.processEndElement(name);
+ if (memberElement.equals(name)) {
+ currentTypeListener = null;
+ }
+ }
+
+ public void processCharacters(String text) {
+ System.out.println("struct process chars: " + text);
+ currentTypeListener.processCharacters(text);
+ }
+
+ public CorbaObjectHandler getCorbaObject() {
+ return value;
+ }
+
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java?view=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java Fri May 11 09:54:00 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.yoko.bindings.corba.types;
+
+import javax.xml.namespace.QName;
+
+public interface CorbaTypeListener {
+
+ void processStartElement(QName name);
+ void processEndElement(QName name);
+ void processCharacters(String text);
+ CorbaObjectHandler getCorbaObject();
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties?view=auto&rev=537233
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties Fri May 11 09:54:00 2007
@@ -0,0 +1,21 @@
+#
+#
+# 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.
+#
+#
+// TODO: Add messages here for exceptions
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/Messages.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain