You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2009/03/06 04:28:19 UTC
svn commit: r750759 - in /cxf/trunk:
api/src/main/java/org/apache/cxf/databinding/ common/
common/common/src/main/java/org/apache/cxf/staxutils/
common/wstx-msv-validation/ common/wstx-msv-validation/src/
common/wstx-msv-validation/src/main/ common/wst...
Author: bimargulies
Date: Fri Mar 6 03:28:16 2009
New Revision: 750759
URL: http://svn.apache.org/viewvc?rev=750759&view=rev
Log:
A rather large raft of changes moving in the direction of Aegis schema validation via Woodstox and msv. Not Turned On Yet!
Added:
cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java (with props)
cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java (with props)
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java (with props)
cxf/trunk/common/wstx-msv-validation/
cxf/trunk/common/wstx-msv-validation/pom.xml (with props)
cxf/trunk/common/wstx-msv-validation/src/
cxf/trunk/common/wstx-msv-validation/src/main/
cxf/trunk/common/wstx-msv-validation/src/main/java/
cxf/trunk/common/wstx-msv-validation/src/main/java/org/
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java (with props)
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java (with props)
cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java (with props)
cxf/trunk/common/wstx-msv-validation/src/main/resources/
cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/
cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/
cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml (with props)
cxf/trunk/common/wstx-msv-validation/src/test/
cxf/trunk/common/wstx-msv-validation/src/test/java/
cxf/trunk/common/wstx-msv-validation/src/test/java/org/
cxf/trunk/common/wstx-msv-validation/src/test/java/org/apache/
cxf/trunk/common/wstx-msv-validation/src/test/java/org/apache/cxf/
cxf/trunk/common/wstx-msv-validation/src/test/java/org/apache/cxf/wstx_msv_validation/
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java (with props)
cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml (with props)
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java
cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
cxf/trunk/common/pom.xml
cxf/trunk/parent/pom.xml
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/databinding/AbstractDataBinding.java Fri Mar 6 03:28:16 2009
@@ -25,6 +25,7 @@
import java.util.Map;
import java.util.Set;
+import javax.annotation.Resource;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLStreamException;
import javax.xml.transform.dom.DOMSource;
@@ -33,6 +34,7 @@
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import org.apache.cxf.Bus;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.common.xmlschema.SchemaCollection;
import org.apache.cxf.helpers.DOMUtils;
@@ -53,10 +55,24 @@
protected int mtomThreshold;
-
+ private Bus bus;
private Collection<DOMSource> schemas;
private Map<String, String> namespaceMap;
private boolean hackAroundEmptyNamespaceIssue;
+
+ protected Bus getBus() {
+ return bus;
+ }
+
+ /**
+ * This call is used to set the bus. It should only be called once.
+ * @param bus
+ */
+ @Resource(name = "cxf")
+ public void setBus(Bus bus) {
+ assert this.bus == null || this.bus == bus;
+ this.bus = bus;
+ }
public Collection<DOMSource> getSchemas() {
return schemas;
Added: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java (added)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java Fri Mar 6 03:28:16 2009
@@ -0,0 +1,55 @@
+/**
+ * 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.cxf.databinding;
+
+import java.util.Collection;
+
+import javax.xml.validation.Schema;
+
+import org.apache.cxf.message.Attachment;
+
+/**
+ * Non-parameterized base interface for DataReader<T>
+ */
+public interface BaseDataReader {
+ String FAULT = DataReader.class.getName() + "Fault";
+ String ENDPOINT = DataReader.class.getName() + "Endpoint";
+ /**
+ * Supply a schema to validate the input. Bindings silently ignore this parameter if they
+ * do not support schema validation, or the particular form of validation implied by
+ * a particular form of Schema.
+ * @param s
+ */
+ void setSchema(Schema s);
+ /**
+ * Attach a collection of attachments to a binding. This permits a binding to process the contents
+ * of one or more attachments as part of reading from this reader.
+ * @param attachments attachments.
+ */
+ void setAttachments(Collection<Attachment> attachments);
+ /**
+ * Set an arbitrary property on the reader.
+ * {@link #FAULT} and {@link #ENDPOINT} specify two common properties: the Fault object being read
+ * and the {@link org.apache.cxf.endpoint.Endpoint}.
+ * @param prop Name of the property.
+ * @param value Value of the property.
+ */
+ void setProperty(String prop, Object value);
+}
Propchange: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/BaseDataReader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java Fri Mar 6 03:28:16 2009
@@ -19,12 +19,7 @@
package org.apache.cxf.databinding;
-import java.util.Collection;
-
import javax.xml.namespace.QName;
-import javax.xml.validation.Schema;
-
-import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
/**
@@ -32,10 +27,7 @@
* from a source of type T.
* @param <T> The type of the source. Each data binding defines the set of source types that it supports.
*/
-public interface DataReader<T> {
- String FAULT = DataReader.class.getName() + "Fault";
- String ENDPOINT = DataReader.class.getName() + "Endpoint";
-
+public interface DataReader<T> extends BaseDataReader {
/**
* Read an object from the input.
* @param input input source object.
@@ -64,25 +56,4 @@
* @return item read.
*/
Object read(QName elementQName, T input, Class type);
- /**
- * Supply a schema to validate the input. Bindings silently ignore this parameter if they
- * do not support schema validation, or the particular form of validation implied by
- * a particular form of Schema.
- * @param s
- */
- void setSchema(Schema s);
- /**
- * Attach a collection of attachments to a binding. This permits a binding to process the contents
- * of one or more attachments as part of reading from this reader.
- * @param attachments attachments.
- */
- void setAttachments(Collection<Attachment> attachments);
- /**
- * Set an arbitrary property on the reader.
- * {@link #FAULT} and {@link #ENDPOINT} specify two common properties: the Fault object being read
- * and the {@link org.apache.cxf.endpoint.Endpoint}.
- * @param prop Name of the property.
- * @param value Value of the property.
- */
- void setProperty(String prop, Object value);
}
Added: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java (added)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java Fri Mar 6 03:28:16 2009
@@ -0,0 +1,35 @@
+/**
+ * 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.cxf.databinding;
+
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+
+/**
+ * If a DataReader<T> implements this interface, it prefers to be supplied with schema
+ * for validation via an XmlSchemaCollection instead of via a packaged Schema object.
+ */
+public interface DataReaderValidation2 {
+ /**
+ *
+ * @param schema
+ */
+ void setSchema(XmlSchemaCollection schema);
+
+}
Propchange: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReaderValidation2.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java Fri Mar 6 03:28:16 2009
@@ -95,7 +95,14 @@
private StaxUtils() {
}
-
+
+ /**
+ * CXF works with multiple STaX parsers. When we can't find any other way to work
+ * against the different parsers, this can be used to condition code. Note: if you've got
+ * Woodstox in the class path without being the default provider, this will return
+ * the wrong answer.
+ * @return true if Woodstox is in the classpath.
+ */
public static boolean isWoodstox() {
try {
ClassLoaderUtils.loadClass("org.codehaus.stax2.XMLStreamReader2", StaxUtils.class);
@@ -104,7 +111,7 @@
}
return true;
}
-
+
/**
* Return a cached, namespace-aware, factory.
* @return
Added: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java (added)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java Fri Mar 6 03:28:16 2009
@@ -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.cxf.staxutils;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+
+/**
+ * This interface defines a bus service for Stax validation.
+ * Initially, this is purely with Woodstox4 and msv.
+ */
+public interface StaxValidationManager {
+ /**
+ * Install the schemas onto the reader for validation.
+ * @param reader
+ * @param schemas
+ * @throws XMLStreamException
+ */
+ void setupValidation(XMLStreamReader reader, XmlSchemaCollection schemas) throws XMLStreamException;
+
+}
Propchange: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxValidationManager.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: cxf/trunk/common/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/pom.xml?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/common/pom.xml (original)
+++ cxf/trunk/common/pom.xml Fri Mar 6 03:28:16 2009
@@ -36,6 +36,7 @@
<module>xsd</module>
<module>schemas</module>
<module>xjc</module>
+ <module>wstx-msv-validation</module>
</modules>
Added: cxf/trunk/common/wstx-msv-validation/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/pom.xml?rev=750759&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/pom.xml (added)
+++ cxf/trunk/common/wstx-msv-validation/pom.xml Fri Mar 6 03:28:16 2009
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-wstx-msv-validation</artifactId>
+ <packaging>jar</packaging>
+ <version>2.2-SNAPSHOT</version>
+ <name>Apache CXF Woodstox/MSV Schema Validation</name>
+ <url>http://cxf.apache.org</url>
+ <parent>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-parent</artifactId>
+ <version>2.2-SNAPSHOT</version>
+ <relativePath>../../parent/pom.xml</relativePath>
+ </parent>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-common-utilities</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-annotation_1.0_spec</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>woodstox-core-asl</artifactId>
+ <version>4.0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>msv</groupId>
+ <artifactId>relaxngDatatype</artifactId>
+ <version>20050913</version>
+ </dependency>
+ <dependency>
+ <groupId>msv</groupId>
+ <artifactId>isorelax</artifactId>
+ <version>20050913</version>
+ </dependency>
+ <dependency>
+ <groupId>msv</groupId>
+ <artifactId>msv</artifactId>
+ <version>20050913</version>
+ </dependency>
+ <dependency>
+ <groupId>msv</groupId>
+ <artifactId>xsdlib</artifactId>
+ <version>20050913</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ws.commons.schema</groupId>
+ <artifactId>XmlSchema</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${stax.impl.groupId}</groupId>
+ <artifactId>${stax.impl.artifactId}</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/cxf/trunk/common/wstx-msv-validation</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/cxf/trunk/common/wstx-msv-validation</developerConnection>
+ </scm>
+</project>
Propchange: cxf/trunk/common/wstx-msv-validation/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/pom.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/common/wstx-msv-validation/pom.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java Fri Mar 6 03:28:16 2009
@@ -0,0 +1,102 @@
+/**
+ * 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.cxf.wstx_msv_validation;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+
+import org.xml.sax.InputSource;
+
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.apache.ws.commons.schema.XmlSchemaSerializer;
+import org.apache.ws.commons.schema.XmlSchemaSerializer.XmlSchemaSerializerException;
+import org.codehaus.stax2.XMLStreamReader2;
+import org.codehaus.stax2.validation.XMLValidationSchema;
+
+/**
+ * This class touches stax2 API, so it is kept separate to allow graceful
+ * fallback.
+ */
+class Stax2ValidationUtils {
+
+ /** {@inheritDoc}
+ * @throws XMLStreamException */
+ public void setupValidation(XMLStreamReader reader,
+ XmlSchemaCollection schemas) throws XMLStreamException {
+ XMLStreamReader2 reader2 = (XMLStreamReader2)reader;
+ XMLValidationSchema vs = getValidator(schemas);
+ reader2.validateAgainst(vs);
+
+
+ }
+
+ private Reader getSchemaAsStream(DOMSource source) {
+ StringWriter writer = new StringWriter();
+ StreamResult result = new StreamResult(writer);
+ try {
+ TransformerFactory.newInstance().newTransformer().transform(source, result);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return new StringReader(writer.toString());
+ }
+
+ /**
+ * Create woodstox validator for a schema set.
+ * @param schemas
+ * @return
+ * @throws XMLStreamException
+ */
+ private XMLValidationSchema getValidator(XmlSchemaCollection schemas) throws XMLStreamException {
+ List<InputSource> sources = new ArrayList<InputSource>();
+ XmlSchemaSerializer serializer = new XmlSchemaSerializer();
+ for (XmlSchema sch : schemas.getXmlSchemas()) {
+ Document[] serialized;
+ try {
+ serialized = serializer.serializeSchema(sch, false);
+ } catch (XmlSchemaSerializerException e) {
+ throw new RuntimeException(e);
+ }
+ DOMSource domSource = new DOMSource(serialized[0]);
+ Reader schemaReader = getSchemaAsStream(domSource);
+ InputSource inputSource = new InputSource(schemaReader);
+ inputSource.setSystemId(sch.getSourceURI());
+ sources.add(inputSource);
+ }
+
+ W3CMultiSchemaFactory factory = new W3CMultiSchemaFactory();
+ XMLValidationSchema vs;
+ vs = factory.loadSchemas(sources.toArray(new InputSource[sources.size()]));
+ return vs;
+ }
+
+}
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/Stax2ValidationUtils.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java Fri Mar 6 03:28:16 2009
@@ -0,0 +1,98 @@
+/**
+ * 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.
+ */
+/*
+ * Code in this file derives from source code in Woodstox which
+ * carries a ASL 2.0 license.
+ */
+
+package org.apache.cxf.wstx_msv_validation;
+
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.stream.XMLStreamException;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+
+import com.ctc.wstx.msv.BaseSchemaFactory;
+import com.ctc.wstx.msv.W3CSchema;
+import com.sun.msv.grammar.xmlschema.XMLSchemaGrammar;
+import com.sun.msv.reader.xmlschema.MultiSchemaReader;
+import com.sun.msv.reader.xmlschema.XMLSchemaReader;
+
+import org.codehaus.stax2.validation.XMLValidationSchema;
+
+final class MyGrammarController extends com.sun.msv.reader.util.IgnoreController {
+ private String mErrorMsg;
+
+ public MyGrammarController() {
+ }
+
+ // public void warning(Locator[] locs, String errorMessage) { }
+
+ public void error(Locator[] locs, String msg, Exception nestedException) {
+ if (getMErrorMsg() == null) {
+ setMErrorMsg(msg);
+ } else {
+ setMErrorMsg(getMErrorMsg() + "; " + msg);
+ }
+ }
+
+ public void setMErrorMsg(String mErrorMsg) {
+ this.mErrorMsg = mErrorMsg;
+ }
+
+ public String getMErrorMsg() {
+ return mErrorMsg;
+ }
+}
+
+/**
+ *
+ */
+public class W3CMultiSchemaFactory extends BaseSchemaFactory {
+
+ private MultiSchemaReader multiSchemaReader;
+ private SAXParserFactory parserFactory;
+ private XMLSchemaReader xmlSchemaReader;
+ private MyGrammarController ctrl = new MyGrammarController();
+
+ public W3CMultiSchemaFactory() {
+ super(XMLValidationSchema.SCHEMA_ID_RELAXNG);
+ }
+
+ public XMLValidationSchema loadSchemas(InputSource[] sources) throws XMLStreamException {
+ parserFactory = getSaxFactory();
+ xmlSchemaReader = new XMLSchemaReader(ctrl, parserFactory);
+ multiSchemaReader = new MultiSchemaReader(xmlSchemaReader);
+ for (InputSource source : sources) {
+ multiSchemaReader.parse(source);
+ }
+
+ XMLSchemaGrammar grammar = multiSchemaReader.getResult();
+ if (grammar == null) {
+ throw new XMLStreamException("Failed to load schemas: " + ctrl.getMErrorMsg());
+ }
+ return new W3CSchema(grammar);
+ }
+
+ @Override
+ protected XMLValidationSchema loadSchema(InputSource src, Object sysRef) throws XMLStreamException {
+ throw new XMLStreamException("W3CMultiSchemaFactory does not support the provider API.");
+ }
+}
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/W3CMultiSchemaFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java Fri Mar 6 03:28:16 2009
@@ -0,0 +1,67 @@
+/**
+ * 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.cxf.wstx_msv_validation;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.staxutils.StaxValidationManager;
+
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+
+/**
+ *
+ */
+public class WoodstoxValidationImpl implements StaxValidationManager {
+
+ private Bus bus;
+ private Stax2ValidationUtils utils;
+
+ @Resource
+ public void setBus(Bus b) {
+ bus = b;
+ }
+
+ @PostConstruct
+ public void register() {
+
+ try {
+ utils = new Stax2ValidationUtils();
+ } catch (Exception e) {
+ /* If the dependencies are missing ... */
+ return;
+ }
+
+ if (null != bus) {
+ bus.setExtension(this, StaxValidationManager.class);
+ }
+ }
+
+
+ /** {@inheritDoc}
+ * @throws XMLStreamException */
+ public void setupValidation(XMLStreamReader reader,
+ XmlSchemaCollection schemas) throws XMLStreamException {
+ utils.setupValidation(reader, schemas);
+ }
+}
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/java/org/apache/cxf/wstx_msv_validation/WoodstoxValidationImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml?rev=750759&view=auto
==============================================================================
--- cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml (added)
+++ cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml Fri Mar 6 03:28:16 2009
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<extensions xmlns="http://cxf.apache.org/bus/extension">
+ <extension class="org.apache.cxf.wstx_msv_validation.WoodstoxValidationImpl"
+ interface="org.apache.cxf.staxutils.StaxValidationManager"/>
+</extensions>
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/common/wstx-msv-validation/src/main/resources/META-INF/cxf/bus-extensions.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: cxf/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/parent/pom.xml?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/parent/pom.xml (original)
+++ cxf/trunk/parent/pom.xml Fri Mar 6 03:28:16 2009
@@ -1064,7 +1064,6 @@
<stax.impl.version>4.0.2</stax.impl.version>
</properties>
</profile>
-
<profile>
<id>axis2-saaj</id>
<properties>
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java Fri Mar 6 03:28:16 2009
@@ -31,6 +31,7 @@
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.databinding.DataReader;
+import org.apache.cxf.databinding.DataReaderValidation2;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
@@ -103,6 +104,13 @@
//all serviceInfos have the same schemas
Schema schema = EndpointReferenceUtils.getSchema(service.getServiceInfos().get(0));
reader.setSchema(schema);
+ /* This might be a reader that wants to grab the schema from the
+ * service info.
+ */
+ if (reader instanceof DataReaderValidation2) {
+ ((DataReaderValidation2)reader).setSchema(service.getServiceInfos().get(0)
+ .getXmlSchemaCollection().getXmlSchemaCollection());
+ }
}
}
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java Fri Mar 6 03:28:16 2009
@@ -147,7 +147,7 @@
public <T> DataReader<T> createReader(Class<T> cls) {
ensureInitialized();
if (cls.equals(XMLStreamReader.class)) {
- return (DataReader<T>)new XMLStreamDataReader(this);
+ return (DataReader<T>)new XMLStreamDataReader(this, getBus());
} else if (cls.equals(Node.class)) {
return (DataReader<T>)new ElementDataReader(this);
} else {
Modified: cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java (original)
+++ cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java Fri Mar 6 03:28:16 2009
@@ -24,19 +24,26 @@
import javax.xml.stream.XMLStreamReader;
import javax.xml.validation.Schema;
+import org.apache.cxf.Bus;
import org.apache.cxf.aegis.AegisXMLStreamDataReader;
import org.apache.cxf.aegis.type.Type;
import org.apache.cxf.databinding.DataReader;
+import org.apache.cxf.databinding.DataReaderValidation2;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.staxutils.StaxValidationManager;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
-public class XMLStreamDataReader implements DataReader<XMLStreamReader> {
+public class XMLStreamDataReader implements DataReader<XMLStreamReader>, DataReaderValidation2 {
private AegisDatabinding databinding;
private AegisXMLStreamDataReader reader;
-
- public XMLStreamDataReader(AegisDatabinding databinding) {
+ private Bus bus;
+ private XmlSchemaCollection schemas;
+
+ public XMLStreamDataReader(AegisDatabinding databinding, Bus bus) {
+ this.bus = bus;
this.databinding = databinding;
reader = new AegisXMLStreamDataReader(databinding.getAegisContext());
}
@@ -44,6 +51,12 @@
public Object read(MessagePartInfo part, XMLStreamReader input) {
Type type = databinding.getType(part);
try {
+ if (schemas != null) {
+ StaxValidationManager mgr = bus.getExtension(StaxValidationManager.class);
+ if (mgr != null) {
+ mgr.setupValidation(input, schemas);
+ }
+ }
return reader.read(input, type);
} catch (Exception e) {
throw new Fault(e);
@@ -74,4 +87,7 @@
reader.setSchema(s);
}
+ public void setSchema(XmlSchemaCollection validationSchemas) {
+ this.schemas = validationSchemas;
+ }
}
Added: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java?rev=750759&view=auto
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java (added)
+++ cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java Fri Mar 6 03:28:16 2009
@@ -0,0 +1,53 @@
+/**
+ * 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.cxf.aegis.integration;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.aegis.AbstractAegisTest;
+import org.apache.cxf.aegis.services.ArrayService;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.message.Message;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class SchemaValidationTest extends AbstractAegisTest {
+
+ private ArrayService arrayService;
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ setEnableJDOM(true);
+ arrayService = new ArrayService();
+ Server server = createService(ArrayService.class,
+ arrayService, "Array", new QName("urn:Array", "Array"));
+ server.getEndpoint().getService().put(Message.SCHEMA_VALIDATION_ENABLED, Boolean.TRUE);
+ }
+
+ @Test
+ public void testInvalidArray() throws Exception {
+ invoke("Array", "/org/apache/cxf/aegis/integration/invalidArrayMessage.xml");
+ }
+}
Propchange: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/integration/SchemaValidationTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml?rev=750759&view=auto
==============================================================================
--- cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml (added)
+++ cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml Fri Mar 6 03:28:16 2009
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <soap-env:Body xmlns:jns0='urn:Array' >
+ <jns0:submitW3CArray>
+ <jns0:whoops/>
+ <jns0:before>before items</jns0:before>
+ <jns0:anything>
+ <jns0:anyType><walrus xmlns='uri:iam'>tusks</walrus></jns0:anyType>
+ <jns0:anyType><penguin xmlns='uri:linux'>emperor</penguin></jns0:anyType>
+ <jns0:anyType><moon xmlns='uri:planets'>blue</moon></jns0:anyType>
+ </jns0:anything>
+ <jns0:after>after items</jns0:after>
+ </jns0:submitW3CArray>
+ </soap-env:Body>
+</soap-env:Envelope>
Propchange: cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/rt/databinding/aegis/src/test/resources/org/apache/cxf/aegis/integration/invalidArrayMessage.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java?rev=750759&r1=750758&r2=750759&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java (original)
+++ cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ServerFactoryBean.java Fri Mar 6 03:28:16 2009
@@ -264,7 +264,7 @@
* Sets the bean implementing the service. If this is set a
* <code>BeanInvoker</code> is created for the provided bean.
*
- * @param serviceBean an instantiated implementaiton object
+ * @param serviceBean an instantiated implementation object
*/
public void setServiceBean(Object serviceBean) {
this.serviceBean = serviceBean;