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/11/14 23:18:03 UTC
svn commit: r595094 - in /incubator/cxf/branches/2.0.x-fixes: ./
common/common/src/main/java/org/apache/cxf/common/xmlschema/
rt/core/src/main/java/org/apache/cxf/service/
rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/
Author: dkulp
Date: Wed Nov 14 14:18:00 2007
New Revision: 595094
URL: http://svn.apache.org/viewvc?rev=595094&view=rev
Log:
Merged revisions 594504 via svnmerge from
https://svn.apache.org/repos/asf/incubator/cxf/trunk
........
r594504 | bimargulies | 2007-11-13 07:12:06 -0500 (Tue, 13 Nov 2007) | 11 lines
Fix some cases in RSFB where it added global XmlSchema items to the
schema collection's 'table of all items' but not to the specific lists
of elements or types. Add utility functions to make this harder to
mess up. PMD comes when I can think it through. Add a visitor to
validate all the cross-references in the service model and the end of
the construction process. This overlapa a dkulp thing that I noticed
belatedly, we'll have to sort out whose to keep. This one logs all its
complaints, of which it sadly has a number.
........
Added:
incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/InvalidXmlSchemaReferenceException.java
- copied unchanged from r594504, incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/xmlschema/InvalidXmlSchemaReferenceException.java
incubator/cxf/branches/2.0.x-fixes/rt/core/src/main/java/org/apache/cxf/service/ServiceModelSchemaValidator.java
- copied unchanged from r594504, incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/ServiceModelSchemaValidator.java
Modified:
incubator/cxf/branches/2.0.x-fixes/ (props changed)
incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java
incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
Propchange: incubator/cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java?rev=595094&r1=595093&r2=595094&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java Wed Nov 14 14:18:00 2007
@@ -157,4 +157,47 @@
StringReader reader = new StringReader(tinyXmlSchemaDocument.toString());
return schemaCollection.read(reader, new ValidationEventHandler() { });
}
+
+ /**
+ * Validate that a qualified name points to some namespace in the schema.
+ * @param qname
+ */
+ public void validateQNameNamespace(QName qname) {
+ // astonishingly, xmlSchemaCollection has no accessor by target URL.
+ for (XmlSchema schema : schemaCollection.getXmlSchemas()) {
+ if (schema.getTargetNamespace().equals(qname.getNamespaceURI())) {
+ return;
+ }
+ }
+ throw new InvalidXmlSchemaReferenceException(qname + " refers to unknown namespace.");
+ }
+
+ public void validateElementName(QName referrer, QName elementQName) {
+ XmlSchemaElement element = schemaCollection.getElementByQName(elementQName);
+ if (element == null) {
+ throw new InvalidXmlSchemaReferenceException(referrer
+ + " references "
+ + elementQName);
+ }
+ }
+
+ public void validateTypeName(QName referrer, QName typeQName) {
+ XmlSchemaType type = schemaCollection.getTypeByQName(typeQName);
+ if (type == null) {
+ throw new InvalidXmlSchemaReferenceException(referrer
+ + " references "
+ + typeQName);
+ }
+ }
+
+ public static void addGlobalElementToSchema(XmlSchema schema, XmlSchemaElement element) {
+ schema.getItems().add(element);
+ // believe it or not, it is up to us to do both of these adds!
+ schema.getElements().add(element.getQName(), element);
+ }
+
+ public static void addGlobalTypeToSchema(XmlSchema schema, XmlSchemaType type) {
+ schema.getItems().add(type);
+ schema.addType(type);
+ }
}
Modified: incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=595094&r1=595093&r2=595094&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Wed Nov 14 14:18:00 2007
@@ -59,6 +59,7 @@
import org.apache.cxf.jaxb.JAXBDataBinding;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.ServiceImpl;
+import org.apache.cxf.service.ServiceModelSchemaValidator;
import org.apache.cxf.service.invoker.ApplicationScopePolicy;
import org.apache.cxf.service.invoker.FactoryInvoker;
import org.apache.cxf.service.invoker.Invoker;
@@ -320,6 +321,12 @@
}
}
}
+ ServiceModelSchemaValidator validator = new ServiceModelSchemaValidator(serviceInfo);
+ validator.walk();
+ String validationComplaints = validator.getComplaints();
+ if (!"".equals(validationComplaints)) {
+ LOG.info(validationComplaints);
+ }
}
@@ -632,7 +639,7 @@
el.setQName(mpi.getElementQName());
el.setName(mpi.getElementQName().getLocalPart());
if (!isExistSchemaElement(schema, mpi.getElementQName())) {
- schema.getItems().add(el);
+ SchemaCollection.addGlobalElementToSchema(schema, el);
}
el.setMinOccurs(1);
el.setMaxOccurs(0);
@@ -741,8 +748,7 @@
el.setNillable(true);
if (!isExistSchemaElement(schema, qname)) {
- schema.getItems().add(el);
- schema.getElements().add(qname, el);
+ SchemaCollection.addGlobalElementToSchema(schema, el);
} else {
el = getExistingSchemaElement(schema, qname);
}
@@ -828,7 +834,7 @@
XmlSchemaElement el = new XmlSchemaElement();
el.setQName(wrapperName);
el.setName(wrapperName.getLocalPart());
- schema.getItems().add(el);
+ SchemaCollection.addGlobalElementToSchema(schema, el);
wrappedMessage.getMessageParts().get(0).setXmlSchema(el);
@@ -836,9 +842,8 @@
if (!isAnonymousWrapperTypes()) {
ct.setName(wrapperName.getLocalPart());
- el.setSchemaTypeName(wrapperName);
- schema.addType(ct);
- schema.getItems().add(ct);
+ el.setSchemaTypeName(wrapperName);
+ SchemaCollection.addGlobalTypeToSchema(schema, ct);
}
el.setSchemaType(ct);
@@ -1079,6 +1084,7 @@
}
if (part.getElementQName() == null) {
part.setElementQName(inMsg.getName());
+//Benson checkForElement(op.getInterface().getService(), part);
} else if (!part.getElementQName().equals(op.getInput().getName())) {
op.getInput().setName(part.getElementQName());
}