summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/tags/java-M1-final/java/sca/core/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/tags/java-M1-final/java/sca/core/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryTestCase.java')
-rw-r--r--sca-java-1.x/tags/java-M1-final/java/sca/core/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryTestCase.java145
1 files changed, 145 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/java-M1-final/java/sca/core/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryTestCase.java b/sca-java-1.x/tags/java-M1-final/java/sca/core/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryTestCase.java
new file mode 100644
index 0000000000..177e4e5005
--- /dev/null
+++ b/sca-java-1.x/tags/java-M1-final/java/sca/core/src/test/java/org/apache/tuscany/core/loader/StAXLoaderRegistryTestCase.java
@@ -0,0 +1,145 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.tuscany.core.loader;
+
+import java.util.List;
+import java.util.ArrayList;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamException;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.core.loader.impl.StAXLoaderRegistryImpl;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.model.assembly.AssemblyObject;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.model.assembly.AssemblyInitializationException;
+import org.apache.tuscany.model.assembly.AssemblyVisitor;
+import org.apache.tuscany.common.resource.impl.ResourceLoaderImpl;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class StAXLoaderRegistryTestCase extends TestCase {
+ private StAXLoaderRegistryImpl registry;
+ private MockElementLoader loader;
+ private MockObject mockObject;
+ private MockReader reader;
+ private MockMonitor monitor;
+ private QName qname;
+ private ResourceLoaderImpl rl;
+ private LoaderContext loaderContext;
+
+ public void testRegistrationEvents() throws XMLStreamException, ConfigurationLoadException {
+ reader.name = qname;
+ registry.registerLoader(qname, loader);
+ assertTrue(monitor.registered.contains(qname));
+ assertEquals(1, monitor.registered.size());
+ assertTrue(monitor.unregistered.isEmpty());
+ assertTrue(monitor.loading.isEmpty());
+
+ registry.unregisterLoader(qname, loader);
+ assertTrue(monitor.registered.contains(qname));
+ assertEquals(1, monitor.registered.size());
+ assertTrue(monitor.unregistered.contains(qname));
+ assertEquals(1, monitor.unregistered.size());
+ assertTrue(monitor.loading.isEmpty());
+ }
+
+ public void testSuccessfulLoad() throws XMLStreamException, ConfigurationLoadException {
+ reader.name = qname;
+ registry.registerLoader(qname, loader);
+ assertSame(mockObject, registry.load(reader, loaderContext));
+ assertEquals(1, monitor.loading.size());
+ assertTrue(monitor.loading.contains(qname));
+ }
+
+ public void testFailedLoad() throws XMLStreamException, ConfigurationLoadException {
+ registry.registerLoader(qname, loader);
+ reader.name = new QName("foo");
+ try {
+ registry.load(reader, loaderContext);
+ fail();
+ } catch (ConfigurationLoadException e) {
+ assertEquals(1, monitor.loading.size());
+ assertTrue(monitor.loading.contains(reader.name));
+ }
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ qname = new QName("test");
+ monitor = new MockMonitor();
+ registry = new StAXLoaderRegistryImpl();
+ registry.setMonitor(monitor);
+ mockObject = new MockObject();
+ loader = new MockElementLoader();
+ reader = new MockReader();
+ rl = new ResourceLoaderImpl(getClass().getClassLoader());
+ loaderContext = new LoaderContext(rl);
+ }
+
+ public static class MockMonitor implements StAXLoaderRegistryImpl.Monitor {
+ private List<QName> registered = new ArrayList<QName>();
+ private List<QName> unregistered = new ArrayList<QName>();
+ private List<QName> loading = new ArrayList<QName>();
+
+ public void registeringLoader(QName xmlType) {
+ registered.add(xmlType);
+ }
+
+ public void unregisteringLoader(QName xmlType) {
+ unregistered.add(xmlType);
+ }
+
+ public void elementLoad(QName xmlType) {
+ loading.add(xmlType);
+ }
+ }
+
+ @SuppressWarnings({"NonStaticInnerClassInSecureContext"})
+ public class MockElementLoader<MockObject> implements StAXElementLoader {
+ public AssemblyObject load(XMLStreamReader reader, LoaderContext loaderContext) throws XMLStreamException, ConfigurationLoadException {
+ assertEquals(qname, reader.getName());
+ assertSame(rl, loaderContext.getResourceLoader());
+ return mockObject;
+ }
+ }
+
+ public static class MockObject implements AssemblyObject {
+ public void initialize(AssemblyContext modelContext) throws AssemblyInitializationException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void freeze() {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean accept(AssemblyVisitor visitor) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ private static class MockReader extends MockReaderSupport {
+ private QName name;
+
+ public QName getName() {
+ return name;
+ }
+ }
+}