You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by dk...@apache.org on 2011/11/17 20:10:21 UTC
svn commit: r1203335 - in /aries/trunk/blueprint:
blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/
blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/
blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint...
Author: dkulp
Date: Thu Nov 17 19:10:20 2011
New Revision: 1203335
URL: http://svn.apache.org/viewvc?rev=1203335&view=rev
Log:
[ARIES-626] Part 3 - Go back to handler registry to get schemas
Added:
aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerSix.java
- copied, changed from r1203334, aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java
aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java (with props)
aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd (with props)
aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd (with props)
Modified:
aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java
aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFour.java
aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint/config.xml
aries/trunk/blueprint/blueprint-testbundleb/src/main/resources/OSGI-INF/blueprint/config.xml
Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java?rev=1203335&r1=1203334&r2=1203335&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java (original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/NamespaceHandlerRegistryImpl.java Thu Nov 17 19:10:20 2011
@@ -36,6 +36,8 @@ import java.util.Map;
import java.util.Set;
import java.util.HashSet;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
@@ -43,6 +45,9 @@ import javax.xml.transform.stream.Stream
import javax.xml.transform.Source;
import javax.xml.XMLConstants;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSResourceResolver;
+
import org.apache.aries.blueprint.NamespaceHandler;
import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
import org.apache.aries.blueprint.parser.NamespaceHandlerSet;
@@ -54,7 +59,9 @@ import org.osgi.util.tracker.ServiceTrac
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
/**
* Default implementation of the NamespaceHandlerRegistry.
@@ -229,7 +236,7 @@ public class NamespaceHandlerRegistryImp
}
}
if (schema == null) {
- List<StreamSource> schemaSources = new ArrayList<StreamSource>();
+ final List<StreamSource> schemaSources = new ArrayList<StreamSource>();
try {
schemaSources.add(new StreamSource(getClass().getResourceAsStream("/org/apache/aries/blueprint/blueprint.xsd")));
// Create a schema for all namespaces known at this point
@@ -242,7 +249,77 @@ public class NamespaceHandlerRegistryImp
schemaSources.add(new StreamSource(url.openStream(), url.toExternalForm()));
}
}
- schema = getSchemaFactory().newSchema(schemaSources.toArray(new Source[schemaSources.size()]));
+ SchemaFactory factory = getSchemaFactory();
+ factory.setResourceResolver(new LSResourceResolver() {
+ public LSInput resolveResource(String type,
+ final String namespaceURI,
+ final String publicId,
+ String systemId, String baseURI) {
+
+ URI uri = URI.create((String) namespaceURI);
+ Set<NamespaceHandler> hs = NamespaceHandlerRegistryImpl.this.handlers.get(uri);
+ if (hs == null) {
+ return null;
+ }
+ for (NamespaceHandler h : hs) {
+ final URL url = h.getSchemaLocation(namespaceURI);
+ if (url != null) {
+ try {
+ final StreamSource source
+ = new StreamSource(url.openStream(), url.toExternalForm());
+ schemaSources.add(source);
+ return new LSInput() {
+ public Reader getCharacterStream() {
+ return null;
+ }
+ public void setCharacterStream(Reader characterStream) {
+ }
+ public InputStream getByteStream() {
+ return source.getInputStream();
+ }
+ public void setByteStream(InputStream byteStream) {
+ }
+ public String getStringData() {
+ return null;
+ }
+ public void setStringData(String stringData) {
+ }
+ public String getSystemId() {
+ return url.toExternalForm();
+ }
+ public void setSystemId(String systemId) {
+ }
+ public String getPublicId() {
+ return publicId;
+ }
+ public void setPublicId(String publicId) {
+ }
+ public String getBaseURI() {
+ return null;
+ }
+ public void setBaseURI(String baseURI) {
+ }
+ public String getEncoding() {
+ return null;
+ }
+ public void setEncoding(String encoding) {
+ }
+ public boolean getCertifiedText() {
+ return false;
+ }
+ public void setCertifiedText(boolean certifiedText) {
+ }
+ };
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ return null;
+ }
+
+ });
+ schema = factory.newSchema(schemaSources.toArray(new Source[schemaSources.size()]));
// Remove schemas that are fully included
for (Iterator<Map<URI, NamespaceHandler>> iterator = schemas.keySet().iterator(); iterator.hasNext();) {
Map<URI, NamespaceHandler> key = iterator.next();
@@ -286,7 +363,6 @@ public class NamespaceHandlerRegistryImp
}
private SchemaFactory getSchemaFactory() {
- SchemaFactory schemaFactory = null;
if (schemaFactory == null) {
schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
}
Modified: aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java?rev=1203335&r1=1203334&r2=1203335&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java (original)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java Thu Nov 17 19:10:20 2011
@@ -41,10 +41,6 @@ public class NSHandlerFive implements Na
private static String ATTRIB_ID = "id";
- public static class Five {
- public Five() {
- }
- }
//process elements
public Metadata parse(Element element, ParserContext context) {
Metadata retval = null;
@@ -53,7 +49,7 @@ public class NSHandlerFive implements Na
MutableBeanMetadata bm = context.createMetadata(MutableBeanMetadata.class);
bm.setId(id);
bm.setScope("PROTOTYPE");
- bm.setClassName(Five.class.getName());
+ bm.setClassName(TestBean.class.getName());
retval = bm;
}
return retval;
@@ -69,7 +65,7 @@ public class NSHandlerFive implements Na
}
public Set<Class> getManagedClasses() {
- Class cls = Five.class;
+ Class cls = TestBean.class;
return Collections.singleton(cls);
}
Modified: aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFour.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFour.java?rev=1203335&r1=1203334&r2=1203335&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFour.java (original)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFour.java Thu Nov 17 19:10:20 2011
@@ -40,11 +40,6 @@ public class NSHandlerFour implements Na
private static String ELT_NAME = "nshandlerfour";
private static String ATTRIB_ID = "id";
-
- public static class Four {
- public Four() {
- }
- }
//process elements
public Metadata parse(Element element, ParserContext context) {
Metadata retval = null;
@@ -53,7 +48,7 @@ public class NSHandlerFour implements Na
MutableBeanMetadata bm = context.createMetadata(MutableBeanMetadata.class);
bm.setId(id);
bm.setScope("PROTOTYPE");
- bm.setClassName(Four.class.getName());
+ bm.setClassName(TestBean.class.getName());
retval = bm;
}
return retval;
@@ -65,7 +60,7 @@ public class NSHandlerFour implements Na
}
public Set<Class> getManagedClasses() {
- Class cls = Four.class;
+ Class cls = TestBean.class;
return Collections.singleton(cls);
}
Copied: aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerSix.java (from r1203334, aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java)
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerSix.java?p2=aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerSix.java&p1=aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java&r1=1203334&r2=1203335&rev=1203335&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerFive.java (original)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/NSHandlerSix.java Thu Nov 17 19:10:20 2011
@@ -35,16 +35,11 @@ import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-public class NSHandlerFive implements NamespaceHandler{
- public static String NSURI = "http://ns.handler.five";
- private static String ELT_NAME = "nshandlerfive";
+public class NSHandlerSix implements NamespaceHandler{
+ public static String NSURI = "http://ns.handler.six";
+ private static String ELT_NAME = "nshandlersix";
private static String ATTRIB_ID = "id";
-
- public static class Five {
- public Five() {
- }
- }
//process elements
public Metadata parse(Element element, ParserContext context) {
Metadata retval = null;
@@ -53,7 +48,7 @@ public class NSHandlerFive implements Na
MutableBeanMetadata bm = context.createMetadata(MutableBeanMetadata.class);
bm.setId(id);
bm.setScope("PROTOTYPE");
- bm.setClassName(Five.class.getName());
+ bm.setClassName(TestBean.class.getName());
retval = bm;
}
return retval;
@@ -63,13 +58,13 @@ public class NSHandlerFive implements Na
public URL getSchemaLocation(String namespace) {
System.out.println("Schemans: " + namespace);
if (NSURI.equals(namespace)) {
- return this.getClass().getResource("nshandlerfive.xsd");
+ return this.getClass().getResource("nshandlersix.xsd");
}
- return this.getClass().getResource("nshandlerfiveimport.xsd");
+ return this.getClass().getResource("nshandlersiximport.xsd");
}
public Set<Class> getManagedClasses() {
- Class cls = Five.class;
+ Class cls = TestBean.class;
return Collections.singleton(cls);
}
Added: aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java?rev=1203335&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java (added)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java Thu Nov 17 19:10:20 2011
@@ -0,0 +1,25 @@
+/**
+ * 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.aries.blueprint.testbundlea;
+
+public class TestBean {
+ public TestBean() {
+
+ }
+}
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/java/org/apache/aries/blueprint/testbundlea/TestBean.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint/config.xml
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint/config.xml?rev=1203335&r1=1203334&r2=1203335&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint/config.xml (original)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/OSGI-INF/blueprint/config.xml Thu Nov 17 19:10:20 2011
@@ -29,6 +29,7 @@
<bean id="NSHandlerFour" class="org.apache.aries.blueprint.testbundlea.NSHandlerFour"/>
<bean id="NSHandlerFive" class="org.apache.aries.blueprint.testbundlea.NSHandlerFive"/>
+ <bean id="NSHandlerSix" class="org.apache.aries.blueprint.testbundlea.NSHandlerSix"/>
<service interface="org.apache.aries.blueprint.NamespaceHandler" ref="NSHandlerOne">
<service-properties>
@@ -62,6 +63,16 @@
</entry>
</service-properties>
</service>
+ <service interface="org.apache.aries.blueprint.NamespaceHandler" ref="NSHandlerSix">
+ <service-properties>
+ <entry key="osgi.service.blueprint.namespace">
+ <list>
+ <value>http://ns.handler.six</value>
+ <value>http://ns.handler.six.import</value>
+ </list>
+ </entry>
+ </service-properties>
+ </service>
</blueprint>
Added: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd?rev=1203335&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd (added)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd Thu Nov 17 19:10:20 2011
@@ -0,0 +1,36 @@
+<?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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://ns.handler.six"
+ xmlns:tns="http://ns.handler.six"
+ xmlns:imp="http://ns.handler.six.import"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="qualified" >
+ <import schemaLocation="http://localhost:5432/nshandlersiximport.xsd"
+ namespace="http://ns.handler.six.import"/>
+ <element name="nshandlersix">
+ <complexType>
+ <sequence>
+ <element name="stuff" type="imp:Imported"/>
+ </sequence>
+ <attribute name="id" type="xsd:string"/>
+ <attribute ref="imp:attrib"/>
+ </complexType>
+ </element>
+</schema>
\ No newline at end of file
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersix.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd?rev=1203335&view=auto
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd (added)
+++ aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd Thu Nov 17 19:10:20 2011
@@ -0,0 +1,31 @@
+<?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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://ns.handler.six.import"
+ xmlns:tns="http://ns.handler.six.import"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="qualified" >
+
+ <complexType name="Imported">
+ <sequence>
+ <element name="stuff" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ <attribute name="attrib" type="xsd:string"/>
+</schema>
\ No newline at end of file
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: aries/trunk/blueprint/blueprint-testbundlea/src/main/resources/org/apache/aries/blueprint/testbundlea/nshandlersiximport.xsd
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: aries/trunk/blueprint/blueprint-testbundleb/src/main/resources/OSGI-INF/blueprint/config.xml
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-testbundleb/src/main/resources/OSGI-INF/blueprint/config.xml?rev=1203335&r1=1203334&r2=1203335&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-testbundleb/src/main/resources/OSGI-INF/blueprint/config.xml (original)
+++ aries/trunk/blueprint/blueprint-testbundleb/src/main/resources/OSGI-INF/blueprint/config.xml Thu Nov 17 19:10:20 2011
@@ -25,6 +25,8 @@
xmlns:fourim="http://ns.handler.four.import"
xmlns:five="http://ns.handler.five"
xmlns:fiveim="http://ns.handler.five.import"
+ xmlns:six="http://ns.handler.six"
+ xmlns:sixim="http://ns.handler.six.import"
default-availability="optional">
<!-- Default test.. no other ns interaction. -->
@@ -73,12 +75,18 @@
<stuff xmlns="">foo</stuff>
</four:stuff>
</four:nshandlerfour>
- <!-- NShandler four test, make sure the schema can be parsed - ARIES-626 Part 2 -->
+ <!-- NShandler five test, make sure the schema can be parsed - ARIES-626 Part 2 -->
<five:nshandlerfive five:id="FIVE" fiveim:attrib="foo">
<five:stuff>
<fiveim:stuff>foo</fiveim:stuff>
</five:stuff>
</five:nshandlerfive>
-
+ <!-- NShandler four test, make sure the schema can be parsed with
+ external URL to schema - ARIES-626 Part 3 -->
+ <six:nshandlersix six:id="SIX" sixim:attrib="foo">
+ <six:stuff>
+ <sixim:stuff>foo</sixim:stuff>
+ </six:stuff>
+ </six:nshandlersix>
</blueprint>