You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2007/12/14 18:42:21 UTC
svn commit: r604243 - in /incubator/cxf/branches/2.0.x-fixes: ./
rt/core/src/main/java/org/apache/cxf/interceptor/
rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/
systests/src/test/java/org/apache/cxf/systest/aegis/ testutils/src/m...
Author: dkulp
Date: Fri Dec 14 09:42:20 2007
New Revision: 604243
URL: http://svn.apache.org/viewvc?rev=604243&view=rev
Log:
Merged revisions 604238 via svnmerge from
https://svn.apache.org/repos/asf/incubator/cxf/trunk
........
r604238 | dkulp | 2007-12-14 12:30:07 -0500 (Fri, 14 Dec 2007) | 2 lines
[CXF-1251] Fix issues with Aegis and wrapped parts with minOccurs=0
........
Modified:
incubator/cxf/branches/2.0.x-fixes/ (props changed)
incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java
incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java
incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsService.java
incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsServiceImpl.java
incubator/cxf/branches/2.0.x-fixes/testutils/src/main/resources/wsdl/locator.wsdl
Propchange: incubator/cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java Fri Dec 14 09:42:20 2007
@@ -38,7 +38,6 @@
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageContentsList;
import org.apache.cxf.phase.Phase;
-import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingMessageInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.EndpointInfo;
@@ -210,15 +209,10 @@
QName rname = xmlReader.getName();
while (part != null
&& !rname.equals(part.getConcreteName())) {
- String bindingType =
- message.getExchange().get(Service.class).getDataBinding().getClass().getName();
if (part.getXmlSchema() instanceof XmlSchemaElement) {
- if (bindingType.endsWith("AegisDatabinding")) {
- parameters.add(dr.read(part, xmlReader));
- } else {
- //should check minOccurs=0
- parameters.put(part, null);
- }
+ //TODO - should check minOccurs=0 and throw validation exception
+ //thing if the part needs to be here
+ parameters.put(part, null);
}
if (itr.hasNext()) {
Modified: incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java Fri Dec 14 09:42:20 2007
@@ -254,10 +254,13 @@
Type type = getParameterType(s, serviceTM, part, partType);
- if (type.isAbstract()) {
- part.setTypeQName(type.getSchemaType());
- } else {
- part.setElementQName(type.getSchemaType());
+ if (part.getXmlSchema() == null) {
+ //schema hasn't been filled in yet
+ if (type.isAbstract()) {
+ part.setTypeQName(type.getSchemaType());
+ } else {
+ part.setElementQName(type.getSchemaType());
+ }
}
part2Type.put(part, type);
@@ -275,12 +278,14 @@
SchemaCollection col = s.getXmlSchemaCollection();
for (Iterator itr = container.getMessageParts().iterator(); itr.hasNext();) {
MessagePartInfo part = (MessagePartInfo)itr.next();
- if (part.isElement()) {
- XmlSchemaAnnotated tp = col.getElementByQName(part.getElementQName());
- part.setXmlSchema(tp);
- } else {
- XmlSchemaAnnotated tp = col.getTypeByQName(part.getTypeQName());
- part.setXmlSchema(tp);
+ if (part.getXmlSchema() == null) {
+ if (part.isElement()) {
+ XmlSchemaAnnotated tp = col.getElementByQName(part.getElementQName());
+ part.setXmlSchema(tp);
+ } else {
+ XmlSchemaAnnotated tp = col.getTypeByQName(part.getTypeQName());
+ part.setXmlSchema(tp);
+ }
}
}
}
Modified: incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataWriter.java Fri Dec 14 09:42:20 2007
@@ -40,6 +40,7 @@
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.ws.commons.schema.XmlSchemaElement;
public class XMLStreamDataWriter implements DataWriter<XMLStreamWriter> {
@@ -90,14 +91,21 @@
type = TypeUtil.getWriteType(context, obj, type);
try {
+ if (obj == null) {
+ if (part.getXmlSchema() instanceof XmlSchemaElement
+ && ((XmlSchemaElement)part.getXmlSchema()).getMinOccurs() == 0) {
+ //skip writing minOccurs=0 stuff if obj is null
+ return;
+ } else if (type.isNillable() && type.isWriteOuter()) {
+ ElementWriter writer = new ElementWriter(output);
+ MessageWriter w2 = writer.getElementWriter(part.getConcreteName());
+ w2.writeXsiNil();
+ w2.close();
+ return;
+ }
+ }
ElementWriter writer = new ElementWriter(output);
MessageWriter w2 = writer.getElementWriter(part.getConcreteName());
- if (type.isNillable() && type.isWriteOuter() && obj == null) {
- w2.writeXsiNil();
- w2.close();
- return;
- }
-
type.writeObject(obj, w2, context);
w2.close();
} catch (DatabindingException e) {
Modified: incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/AegisClientServerTest.java Fri Dec 14 09:42:20 2007
@@ -44,7 +44,7 @@
@BeforeClass
public static void startServers() throws Exception {
- assertTrue("server did not launch correctly", launchServer(AegisServer.class));
+ assertTrue("server did not launch correctly", launchServer(AegisServer.class, true));
}
@Test
@@ -142,9 +142,13 @@
proxyFactory.setServiceClass(SportsService.class);
proxyFactory.setWsdlLocation("http://localhost:9002/jaxwsAndAegisSports?wsdl");
SportsService service = (SportsService) proxyFactory.create();
+
Collection<Team> teams = service.getTeams();
assertEquals(1, teams.size());
assertEquals("Patriots", teams.iterator().next().getName());
-
+
+ //CXF-1251
+ String s = service.testForMinOccurs0("A", null, "b");
+ assertEquals("Anullb", s);
}
}
Modified: incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsService.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsService.java?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsService.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsService.java Fri Dec 14 09:42:20 2007
@@ -27,4 +27,6 @@
@WebService(targetNamespace = "http://cxf.apache.org/systest/aegis/sports")
public interface SportsService {
Collection<Team> getTeams() throws WebServiceException;
+
+ String testForMinOccurs0(String a, Integer b, String c);
}
Modified: incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsServiceImpl.java?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsServiceImpl.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/aegis/SportsServiceImpl.java Fri Dec 14 09:42:20 2007
@@ -36,5 +36,9 @@
teams.add(new Team("Patriots", "New England"));
return teams;
}
+
+ public String testForMinOccurs0(String a, Integer b, String c) {
+ return a + b + c;
+ }
}
Modified: incubator/cxf/branches/2.0.x-fixes/testutils/src/main/resources/wsdl/locator.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/testutils/src/main/resources/wsdl/locator.wsdl?rev=604243&r1=604242&r2=604243&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/testutils/src/main/resources/wsdl/locator.wsdl (original)
+++ incubator/cxf/branches/2.0.x-fixes/testutils/src/main/resources/wsdl/locator.wsdl Fri Dec 14 09:42:20 2007
@@ -56,13 +56,7 @@
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##any"
processContents="lax"/>
</xs:sequence>
- <!--
- Until anyAttribute is supported, explicitly include the
- wsdlLocation attribute definition.
-
- <xs:anyAttribute namespace="##other" processContents="lax"/>
--->
- <xs:attribute name="wsdlLocation" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="MessageID" type="tns:AttributedURIType"/>
<xs:element name="RelatesTo" type="tns:RelatesToType"/>