You are viewing a plain text version of this content. The canonical link for it is here.
Posted to woden-dev@ws.apache.org by jk...@apache.org on 2007/01/26 12:18:51 UTC
svn commit: r500223 - in
/incubator/woden/trunk/java/src/org/apache/woden/internal:
OMWSDLReader.java resolver/OMSchemaResolverAdapter.java
resolver/SchemaResolverAdapter.java schema/SchemaConstants.java
Author: jkaputin
Date: Fri Jan 26 03:18:47 2007
New Revision: 500223
URL: http://svn.apache.org/viewvc?view=rev&rev=500223
Log:
WODEN-10 Added support for fragid in schemaLocation
to the Woden OM implementation. Testcase SchemaId-1G
now passes for the OM implementation.
Added:
incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/OMSchemaResolverAdapter.java
Modified:
incubator/woden/trunk/java/src/org/apache/woden/internal/OMWSDLReader.java
incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/SchemaResolverAdapter.java
incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java
Modified: incubator/woden/trunk/java/src/org/apache/woden/internal/OMWSDLReader.java
URL: http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/OMWSDLReader.java?view=diff&rev=500223&r1=500222&r2=500223
==============================================================================
--- incubator/woden/trunk/java/src/org/apache/woden/internal/OMWSDLReader.java (original)
+++ incubator/woden/trunk/java/src/org/apache/woden/internal/OMWSDLReader.java Fri Jan 26 03:18:47 2007
@@ -34,7 +34,7 @@
import org.apache.woden.WSDLException;
import org.apache.woden.WSDLSource;
import org.apache.woden.XMLElement;
-import org.apache.woden.internal.resolver.SchemaResolverAdapter;
+import org.apache.woden.internal.resolver.OMSchemaResolverAdapter;
import org.apache.woden.internal.schema.ImportedSchemaImpl;
import org.apache.woden.internal.schema.InlinedSchemaImpl;
import org.apache.woden.internal.schema.SchemaConstants;
@@ -230,7 +230,7 @@
XmlSchemaCollection xsc = new XmlSchemaCollection();
// Plug in the selected woden URI Resolver
- xsc.setSchemaResolver(new SchemaResolverAdapter(getURIResolver(), importEl));
+ xsc.setSchemaResolver(new OMSchemaResolverAdapter(getURIResolver(), importEl));
schemaDef = xsc.read(schemaSource, null);
fImportedSchemas.put(schemaURL, schemaDef);
@@ -281,7 +281,7 @@
xsc.setNamespaceContext(namespaces);
// Plug in the selected woden URI Resolver
- xsc.setSchemaResolver(new SchemaResolverAdapter(getURIResolver(), schemaElement));
+ xsc.setSchemaResolver(new OMSchemaResolverAdapter(getURIResolver(), schemaElement));
schemaDef = xsc.read(schemaSource, null);
}
Added: incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/OMSchemaResolverAdapter.java
URL: http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/OMSchemaResolverAdapter.java?view=auto&rev=500223
==============================================================================
--- incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/OMSchemaResolverAdapter.java (added)
+++ incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/OMSchemaResolverAdapter.java Fri Jan 26 03:18:47 2007
@@ -0,0 +1,82 @@
+/**
+ * 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.woden.internal.resolver;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.woden.XMLElement;
+import org.apache.woden.internal.schema.SchemaConstants;
+import org.apache.woden.resolver.URIResolver;
+
+/**
+ * Class that adds OM specific behaviour to the SchemaResolverAdapter class.
+ *
+ * TODO consider some approach other than inheritance as part of a broader consideration
+ * of resolving imports and fragids.
+ *
+ * @author John Kaputin (jkaputin@apache.org)
+ *
+ */
+
+public class OMSchemaResolverAdapter extends SchemaResolverAdapter {
+
+ public OMSchemaResolverAdapter(URIResolver actualResolver, XMLElement schemaElement) {
+ super(actualResolver, schemaElement);
+ }
+
+ protected InputStream resolveFragId(String fragId) {
+
+ String id = fragId.substring(1);
+
+ OMElement contextEl = (OMElement)fContextElement.getSource();
+ OMElement typesEl = (OMElement)contextEl.getParent();
+ Iterator inlineSchemas = typesEl.
+ getChildrenWithName(SchemaConstants.Q_ELEM_XSD_2001);
+ OMElement identifiedSchema = null;
+ String schemaId;
+ while(inlineSchemas.hasNext()) {
+ OMElement schema = (OMElement)inlineSchemas.next();
+ schemaId = schema.getAttributeValue(SchemaConstants.Q_ATTR_ID);
+ if(schemaId != null && schemaId.equals(id)) {
+ identifiedSchema = schema;
+ break;
+ }
+ }
+
+ if(identifiedSchema == null) {
+ //the fragid does not identify any element
+ //TODO suitable error message
+ return null;
+ }
+
+ String schemaString = null;
+ try {
+ schemaString = identifiedSchema.toStringWithConsume();
+ } catch (XMLStreamException e) {
+ // TODO this conforms to parent, but needs an error message via ErrorReporter and maybe it should be handled differently?
+ throw new RuntimeException(e);
+ }
+ byte[] schemaBytes = schemaString.getBytes();
+ InputStream iStream = new ByteArrayInputStream(schemaBytes);
+ return iStream;
+ }
+}
Modified: incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/SchemaResolverAdapter.java
URL: http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/SchemaResolverAdapter.java?view=diff&rev=500223&r1=500222&r2=500223
==============================================================================
--- incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/SchemaResolverAdapter.java (original)
+++ incubator/woden/trunk/java/src/org/apache/woden/internal/resolver/SchemaResolverAdapter.java Fri Jan 26 03:18:47 2007
@@ -31,7 +31,7 @@
* @author Graham Turrell
*
*/
-public class SchemaResolverAdapter implements org.apache.ws.commons.schema.resolver.URIResolver {
+public abstract class SchemaResolverAdapter implements org.apache.ws.commons.schema.resolver.URIResolver {
private org.apache.woden.resolver.URIResolver fActualResolver;
protected XMLElement fContextElement;
@@ -125,14 +125,9 @@
/*
* Helper method to resolve fragid to a schema element, represented as a byte stream.
- * This will be XML parser-specific, so the default behaviour here is to do nothing
- * and implementations should override this method if necessary.
- *
- * TODO if *both* DOM and OM impls need to do something, make this method an abstract declaration.
+ * This will be XML parser-specific, so implementations should override this method.
*/
- protected InputStream resolveFragId(String fradId) {
- return null;
- }
+ protected abstract InputStream resolveFragId(String fradId);
/* based on ws commons DefaultURIResolver.resolveEntity(...)
*
Modified: incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java
URL: http://svn.apache.org/viewvc/incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java?view=diff&rev=500223&r1=500222&r2=500223
==============================================================================
--- incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java (original)
+++ incubator/woden/trunk/java/src/org/apache/woden/internal/schema/SchemaConstants.java Fri Jan 26 03:18:47 2007
@@ -45,6 +45,9 @@
public static final String NS_URI_XSD_2001 =
"http://www.w3.org/2001/XMLSchema";
+ //Schema attribute qnames
+ public static final QName Q_ATTR_ID = new QName(ATTR_ID);
+
//<xs:schema> qnames
public static final QName Q_ELEM_XSD_1999 =
new QName(NS_URI_XSD_1999, ELEM_SCHEMA);
---------------------------------------------------------------------
To unsubscribe, e-mail: woden-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: woden-dev-help@ws.apache.org