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 18:58:45 UTC
svn commit: r537264 - in
/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba:
interceptors/ runtime/ types/
Author: bravi
Date: Fri May 11 11:58:44 2007
New Revision: 537264
URL: http://svn.apache.org/viewvc?view=rev&rev=537264
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/CorbaEnumListener.java (with props)
Modified:
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/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/AbstractCorbaTypeListener.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/CorbaObjectReferenceListener.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/CorbaStructListener.java
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=537264&r1=537263&r2=537264
==============================================================================
--- 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 Fri May 11 11:58:44 2007
@@ -19,32 +19,133 @@
package org.apache.yoko.bindings.corba.interceptors;
+import java.util.Iterator;
+import java.util.List;
import java.util.logging.Logger;
+import javax.xml.namespace.QName;
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.MessageInfo;
+import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.schemas.yoko.bindings.corba.ArgType;
+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.yoko.bindings.corba.CorbaMessage;
+import org.apache.yoko.bindings.corba.CorbaStreamable;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
import org.apache.yoko.bindings.corba.runtime.CorbaStreamWriter;
+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.wsdl.CorbaConstants;
public class CorbaStreamOutEndingInterceptor extends AbstractPhaseInterceptor<Message> {
private static final Logger LOG = LogUtils.getL7dLogger(CorbaStreamOutEndingInterceptor.class);
-
+ private org.omg.CORBA.ORB orb;
+ private List<CorbaTypeMap> typeMaps;
+ private ServiceInfo service;
+
public CorbaStreamOutEndingInterceptor() {
super();
setPhase(Phase.USER_STREAM);
}
public void handleMessage(Message msg) {
- System.out.println("CorbaStreamOutEndingInterceptor... handle message...");
CorbaMessage message = (CorbaMessage) msg;
- CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
+ orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
+ Exchange exchange = message.getExchange();
+ BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
+ service = exchange.get(ServiceInfo.class);
+ typeMaps = message.getCorbaTypeMap();
+
+ if (ContextUtils.isRequestor(message)) {
+ handleOutBoundMessage(message, boi);
+ } else {
+ handleInBoundMessage(message, boi);
+ }
+
+ }
+
+ private void handleOutBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
+ OperationInfo opInfo = boi.getOperationInfo();
+ OperationType opType = boi.getExtensor(OperationType.class);
+ List<ParamType> paramTypes = opType.getParam();
+ boolean wrap = false;
+ if (boi.isUnwrappedCapable()) {
+ wrap = true;
+ }
+ CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
+ CorbaObjectHandler[] objs = writer.getCorbaObjects();
+ int count = 0;
+ for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
+ ParamType param = iter.next();
+ QName idlType = param.getIdltype();
+ QName paramName = new QName("", param.getName());
+ CorbaObjectHandler obj = null;
+ if (param.getMode().equals(ModeType.OUT)) {
+ if (!wrap) {
+ MessagePartInfo part =
+ getOutputMessagePartInfo(opInfo, param.getName());
+ if (part != null && part.isElement()) {
+ paramName = part.getElementQName();
+ }
+ }
+ obj = CorbaHandlerUtils.initializeObjectHandler(orb,
+ paramName,
+ idlType,
+ typeMaps,
+ service);
+ } else {
+ obj = objs[count++];
+ }
+ CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
+ ModeType paramMode = param.getMode();
+ if (paramMode.value().equals("in")) {
+ streamable.setMode(org.omg.CORBA.ARG_IN.value);
+ } else if (paramMode.value().equals("inout")) {
+ streamable.setMode(org.omg.CORBA.ARG_INOUT.value);
+ } else if (paramMode.value().equals("out")) {
+ streamable.setMode(org.omg.CORBA.ARG_OUT.value);
+ }
+ message.addStreamableArgument(streamable);
+ }
+
+ ArgType returnParam = opType.getReturn();
+ if (returnParam != null) {
+ QName retIdlType = returnParam.getIdltype();
+ QName retName = new QName("", returnParam.getName());
+ CorbaObjectHandler obj = CorbaHandlerUtils
+ .initializeObjectHandler(orb, retName, retIdlType, typeMaps, service);
+ CorbaStreamable streamable = message.createStreamableObject(obj, retName);
+ message.setStreamableReturn(streamable);
+ }
}
+ private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
+ }
+
+ protected MessagePartInfo getOutputMessagePartInfo(OperationInfo opInfo, String partName) {
+ MessageInfo msgInfo = opInfo.getOutput();
+ List<MessagePartInfo> parts = msgInfo.getMessageParts();
+ for (int i = 0; i < parts.size(); i++) {
+ if (parts.get(i).getName().getLocalPart().equals(partName)) {
+ return parts.get(i);
+ }
+ }
+ return null;
+ }
}
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=537264&r1=537263&r2=537264
==============================================================================
--- 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 11:58:44 2007
@@ -42,6 +42,7 @@
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.ContextUtils;
import org.apache.yoko.bindings.corba.utils.CorbaUtils;
import org.apache.yoko.wsdl.CorbaConstants;
@@ -50,27 +51,41 @@
private static final Logger LOG = LogUtils.getL7dLogger(CorbaStreamOutInterceptor.class);
+ private org.omg.CORBA.ORB orb;
+ private List<CorbaTypeMap> typeMaps;
+ private ServiceInfo service;
+
public CorbaStreamOutInterceptor() {
super();
setPhase(Phase.PRE_STREAM);
}
public void handleMessage(Message msg) {
- System.out.println("CorbaStreamOutInterceptor... handleMessage...");
CorbaMessage message = (CorbaMessage) msg;
- org.omg.CORBA.ORB orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.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();
+ service = exchange.get(ServiceInfo.class);
+ 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);
+ message.setCorbaTypeMap(typeMaps);
}
}
+
BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
+ if (ContextUtils.isRequestor(message)) {
+ handleOutBoundMessage(message, boi);
+ } else {
+ handleInBoundMessage(message, boi);
+ }
+ message.getInterceptorChain().add(new CorbaStreamOutEndingInterceptor());
+ }
+
+ private void handleOutBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
boolean wrap = false;
if (boi.isUnwrappedCapable()) {
wrap = true;
@@ -86,8 +101,11 @@
}
CorbaStreamWriter writer = new CorbaStreamWriter(orb, params, typeMaps, service, wrap);
message.setContent(XMLStreamWriter.class, writer);
+ }
- message.getInterceptorChain().add(new CorbaStreamOutEndingInterceptor());
+ private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
}
+
+
}
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=537264&r1=537263&r2=537264
==============================================================================
--- 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 11:58:44 2007
@@ -57,6 +57,7 @@
private Stack<QName> elements;
private QName paramElement;
+ private QName wrapElementName;
public CorbaStreamWriter(ORB orbRef,
List<ParamType> paramTypes,
@@ -65,7 +66,6 @@
boolean wrap) {
//ctx = new NamespaceContextImpl();
orb = orbRef;
- System.out.println("ORB: " + orb);
params = paramTypes;
typeMaps = maps;
serviceInfo = sinfo;
@@ -93,10 +93,10 @@
currentTypeListener = null;
} else {
QName name = elements.pop();
- System.out.println("End: " + name);
- currentTypeListener.processEndElement(name);
- if (name.equals(paramElement)) {
+ if ((name.equals(paramElement)) || (name.equals(wrapElementName))) {
currentTypeListener = null;
+ } else {
+ currentTypeListener.processEndElement(name);
}
}
}
@@ -113,14 +113,12 @@
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);
@@ -134,6 +132,7 @@
currentTypeListener.processStartElement(name);
}
} else {
+ wrapElementName = name;
skipWrap = false;
}
}
@@ -174,7 +173,6 @@
public void writeAttribute(java.lang.String localName,
java.lang.String value)
throws XMLStreamException {
- System.out.println("attr: " + localName + "-" + value);
}
public void writeAttribute(java.lang.String prefix,
@@ -182,14 +180,12 @@
java.lang.String localName,
java.lang.String value)
throws XMLStreamException {
- System.out.println("attr: " + prefix + "-" + namespaceURI + "-" + localName + "-" + value);
}
public void writeAttribute(java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String value)
throws XMLStreamException {
- System.out.println("attr: " + namespaceURI + "-" + localName + "-" + value);
}
public void writeNamespace(java.lang.String prefix,
@@ -243,7 +239,6 @@
public void writeCharacters(java.lang.String text)
throws XMLStreamException {
- System.out.println("current chars: " + text);
currentTypeListener.processCharacters(text);
}
Modified: 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=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java Fri May 11 11:58:44 2007
@@ -23,15 +23,13 @@
public abstract class AbstractCorbaTypeListener implements CorbaTypeListener {
- QName currentElement;
+ protected 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;
}
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java?view=auto&rev=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java Fri May 11 11:58:44 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 CorbaEnumListener extends AbstractCorbaTypeListener {
+
+ private CorbaEnumHandler value;
+
+ public CorbaEnumListener(QName enumName, QName enumIdlType, TypeCode enumTC, Object enumType) {
+ value = new CorbaEnumHandler(enumName, enumIdlType, enumTC, enumType);
+ }
+
+ public CorbaObjectHandler getCorbaObject() {
+ return value;
+ }
+
+ public void processCharacters(String text) {
+ value.setValue(text);
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.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=537264&r1=537263&r2=537264
==============================================================================
--- 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 11:58:44 2007
@@ -471,6 +471,7 @@
break;
case TCKind._tk_enum:
LOG.log(Level.INFO, "Reading enumeration type from XML reader");
+ result = new CorbaEnumListener(name, idlType, tc, type);
break;
case TCKind._tk_except:
LOG.log(Level.INFO, "Reading exception type from XML reader");
Modified: 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=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java Fri May 11 11:58:44 2007
@@ -30,7 +30,6 @@
public class CorbaObjectReferenceListener extends AbstractCorbaTypeListener {
private CorbaObjectReferenceHandler value;
- private QName currentElement;
private ORB orb;
public CorbaObjectReferenceListener(QName objName,
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=537264&r1=537263&r2=537264
==============================================================================
--- 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 Fri May 11 11:58:44 2007
@@ -61,7 +61,6 @@
}
public void processStartElement(QName name) {
- System.out.println("seq process start el: " + name);
if (currentTypeListener == null) {
currentElName = name;
currentTypeListener =
@@ -70,20 +69,21 @@
typeMaps,
orb);
value.addElement(currentTypeListener.getCorbaObject());
+ } else {
+ currentTypeListener.processStartElement(name);
}
- currentTypeListener.processStartElement(name);
}
public void processEndElement(QName name) {
- System.out.println("seq process end el: " + name);
- currentTypeListener.processEndElement(name);
+ if (currentTypeListener != null) {
+ currentTypeListener.processEndElement(name);
+ }
if (currentElName.equals(name)) {
currentTypeListener = null;
}
}
public void processCharacters(String text) {
- System.out.println("seq process chars: " + text);
currentTypeListener.processCharacters(text);
}
}
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=537264&r1=537263&r2=537264
==============================================================================
--- 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 Fri May 11 11:58:44 2007
@@ -52,7 +52,6 @@
}
public void processStartElement(QName name) {
- System.out.println("struct process start el: " + name);
//REVISIT, assume only elements not attrs
if (currentTypeListener == null) {
memberElement = name;
@@ -64,20 +63,20 @@
value.addMember(currentTypeListener.getCorbaObject());
memberCount++;
} else {
- currentTypeListener.processStartElement(name);
- }
+ currentTypeListener.processStartElement(name);
+ }
}
public void processEndElement(QName name) {
- System.out.println("struct process end el: " + name);
- currentTypeListener.processEndElement(name);
+ if (currentTypeListener != null) {
+ currentTypeListener.processEndElement(name);
+ }
if (memberElement.equals(name)) {
currentTypeListener = null;
}
}
public void processCharacters(String text) {
- System.out.println("struct process chars: " + text);
currentTypeListener.processCharacters(text);
}