You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2009/06/18 13:14:40 UTC
svn commit: r786017 - in /activemq/sandbox/activemq-flow/activemq-broker/src:
main/java/org/apache/activemq/apollo/jaxb/
test/java/org/apache/activemq/apollo/jaxb/
test/resources/org/apache/activemq/apollo/jaxb/
Author: dejanb
Date: Thu Jun 18 11:14:40 2009
New Revision: 786017
URL: http://svn.apache.org/viewvc?rev=786017&view=rev
Log:
jaxb - improving uri handling
Added:
activemq/sandbox/activemq-flow/activemq-broker/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml
Modified:
activemq/sandbox/activemq-flow/activemq-broker/src/main/java/org/apache/activemq/apollo/jaxb/JAXBBrokerFactory.java
activemq/sandbox/activemq-flow/activemq-broker/src/test/java/org/apache/activemq/apollo/jaxb/JAXBConfigTest.java
Modified: activemq/sandbox/activemq-flow/activemq-broker/src/main/java/org/apache/activemq/apollo/jaxb/JAXBBrokerFactory.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-broker/src/main/java/org/apache/activemq/apollo/jaxb/JAXBBrokerFactory.java?rev=786017&r1=786016&r2=786017&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-broker/src/main/java/org/apache/activemq/apollo/jaxb/JAXBBrokerFactory.java (original)
+++ activemq/sandbox/activemq-flow/activemq-broker/src/main/java/org/apache/activemq/apollo/jaxb/JAXBBrokerFactory.java Thu Jun 18 11:14:40 2009
@@ -16,14 +16,16 @@
*/
package org.apache.activemq.apollo.jaxb;
+import java.io.IOException;
import java.net.URI;
import java.net.URL;
import javax.xml.bind.JAXBContext;
+import javax.xml.bind.UnmarshalException;
import javax.xml.bind.Unmarshaller;
-import org.apache.activemq.apollo.broker.BrokerFactory;
import org.apache.activemq.apollo.broker.Broker;
+import org.apache.activemq.apollo.broker.BrokerFactory;
import org.apache.activemq.util.URISupport;
public class JAXBBrokerFactory implements BrokerFactory.Handler {
@@ -36,15 +38,21 @@
brokerURI = URISupport.stripScheme(brokerURI);
String scheme = brokerURI.getScheme();
if( scheme==null || "file".equals(scheme) ) {
- configURL = URISupport.changeScheme(brokerURI, "file").toURL();
+ configURL = URISupport.changeScheme(URISupport.stripScheme(brokerURI), "file").toURL();
} else if( "classpath".equals(scheme) ) {
configURL = Thread.currentThread().getContextClassLoader().getResource(brokerURI.getSchemeSpecificPart());
} else {
configURL = URISupport.changeScheme(brokerURI, scheme).toURL();
- }
-
- BrokerXml xml = (BrokerXml) unmarshaller.unmarshal(configURL);
- return xml.createMessageBroker();
+ }
+ if (configURL == null) {
+ throw new IOException("Cannot create broker from non-existent URI: " + brokerURI);
+ }
+ try {
+ BrokerXml xml = (BrokerXml) unmarshaller.unmarshal(configURL);
+ return xml.createMessageBroker();
+ } catch (UnmarshalException e) {
+ throw new IOException("Cannot create broker from URI: " + brokerURI + ", reason: " + e.getCause());
+ }
}
Modified: activemq/sandbox/activemq-flow/activemq-broker/src/test/java/org/apache/activemq/apollo/jaxb/JAXBConfigTest.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-broker/src/test/java/org/apache/activemq/apollo/jaxb/JAXBConfigTest.java?rev=786017&r1=786016&r2=786017&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-broker/src/test/java/org/apache/activemq/apollo/jaxb/JAXBConfigTest.java (original)
+++ activemq/sandbox/activemq-flow/activemq-broker/src/test/java/org/apache/activemq/apollo/jaxb/JAXBConfigTest.java Thu Jun 18 11:14:40 2009
@@ -17,6 +17,7 @@
package org.apache.activemq.apollo.jaxb;
+import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
@@ -57,6 +58,44 @@
assertTrue( broker.getDefaultVirtualHost().getDatabase().getStore() instanceof MemoryStore );
}
+
+ public void testUris() throws Exception {
+ boolean failed = false;
+ // non-existent classpath
+ try {
+ URI uri = new URI("jaxb:classpath:org/apache/activemq/apollo/jaxb/" + getName()+"-fail.xml");
+ BrokerFactory.createBroker(uri);
+ } catch (IOException e) {
+ failed = true;
+ }
+ if (!failed) {
+ fail("Creating broker from non-existing url does not throw an exception!");
+ }
+ failed = false;
+ //non-existent file
+ try {
+ URI uri = new URI("jaxb:file:/org/apache/activemq/apollo/jaxb/" + getName()+"-fail.xml");
+ BrokerFactory.createBroker(uri);
+ } catch (IOException e) {
+ failed = true;
+ }
+ if (!failed) {
+ fail("Creating broker from non-existing url does not throw an exception!");
+ }
+ //non-existent url
+ try {
+ URI uri = new URI("jaxb:http://localhost/" + getName()+".xml");
+ BrokerFactory.createBroker(uri);
+ } catch (IOException e) {
+ failed = true;
+ }
+ if (!failed) {
+ fail("Creating broker from non-existing url does not throw an exception!");
+ }
+ // regular file
+ URI uri = new URI("jaxb:" + Thread.currentThread().getContextClassLoader().getResource("org/apache/activemq/apollo/jaxb/" + getName() + ".xml"));
+ BrokerFactory.createBroker(uri);
+ }
protected Broker createBroker() throws Exception {
URI uri = new URI("jaxb:classpath:org/apache/activemq/apollo/jaxb/" + getName()+".xml");
Added: activemq/sandbox/activemq-flow/activemq-broker/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-broker/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml?rev=786017&view=auto
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-broker/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml (added)
+++ activemq/sandbox/activemq-flow/activemq-broker/src/test/resources/org/apache/activemq/apollo/jaxb/testUris.xml Thu Jun 18 11:14:40 2009
@@ -0,0 +1,19 @@
+<?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.
+-->
+<broker xmlns="http://activemq.apache.org/schema/activemq/apollo">
+</broker>
\ No newline at end of file