You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2022/11/07 00:16:29 UTC
[ws-axiom] branch master updated: Refactor DataSourceRegistry so that it can be used with Blob
This is an automated email from the ASF dual-hosted git repository.
veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push:
new 18a17eaf9 Refactor DataSourceRegistry so that it can be used with Blob
18a17eaf9 is described below
commit 18a17eaf9cf18782060cbcb40ab4aecdfea4b2fd
Author: Andreas Veithen <an...@gmail.com>
AuthorDate: Mon Nov 7 00:12:18 2022 +0000
Refactor DataSourceRegistry so that it can be used with Blob
---
testing/axiom-testsuite/pom.xml | 5 ++
.../axiom/ts/om/builder/TestCloseWithSystemId.java | 6 +-
testing/dom-testsuite/pom.xml | 5 ++
.../apache/axiom/ts/dom/builder/TestParseURI.java | 6 +-
testing/pom.xml | 1 +
testing/{ => url-registry}/pom.xml | 67 ++++++++++------------
.../axiom/net/protocol/registry/DataProvider.java} | 10 ++--
.../axiom/net/protocol/registry}/Handler.java | 12 ++--
.../net/protocol/registry/URLConnectionImpl.java} | 17 +++---
.../net/protocol/registry/URLRegistration.java} | 5 +-
.../axiom/net/protocol/registry/URLRegistry.java} | 42 ++++++++------
.../net/protocol/registry/URLRegistryTest.java} | 15 +++--
testing/xml-testsuite/pom.xml | 5 ++
.../axiom/ts/xml/ComputedMessageContent.java | 27 +--------
14 files changed, 104 insertions(+), 119 deletions(-)
diff --git a/testing/axiom-testsuite/pom.xml b/testing/axiom-testsuite/pom.xml
index c99b55b62..88147d813 100644
--- a/testing/axiom-testsuite/pom.xml
+++ b/testing/axiom-testsuite/pom.xml
@@ -69,6 +69,11 @@
<artifactId>testutils</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>url-registry</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>xml-testsuite</artifactId>
diff --git a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithSystemId.java b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithSystemId.java
index db82cb93c..df8f7cd05 100644
--- a/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithSystemId.java
+++ b/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithSystemId.java
@@ -23,12 +23,12 @@ import static com.google.common.truth.Truth.assertThat;
import javax.activation.URLDataSource;
import javax.xml.transform.stream.StreamSource;
+import org.apache.axiom.net.protocol.registry.URLRegistration;
+import org.apache.axiom.net.protocol.registry.URLRegistry;
import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.testutils.activation.InstrumentedDataSource;
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistration;
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistry;
import org.apache.axiom.ts.AxiomTestCase;
import org.apache.axiom.ts.xml.XMLSample;
@@ -41,7 +41,7 @@ public class TestCloseWithSystemId extends AxiomTestCase {
protected void runTest() throws Throwable {
InstrumentedDataSource ds =
new InstrumentedDataSource(new URLDataSource(XMLSample.SIMPLE.getUrl()));
- DataSourceRegistration registration = DataSourceRegistry.registerDataSource(ds);
+ URLRegistration registration = URLRegistry.register(ds);
try {
OMXMLParserWrapper builder =
OMXMLBuilderFactory.createOMBuilder(
diff --git a/testing/dom-testsuite/pom.xml b/testing/dom-testsuite/pom.xml
index 4a68f83a4..4d750c1f2 100644
--- a/testing/dom-testsuite/pom.xml
+++ b/testing/dom-testsuite/pom.xml
@@ -53,6 +53,11 @@
<artifactId>testutils</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>url-registry</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>xml-testsuite</artifactId>
diff --git a/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/builder/TestParseURI.java b/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/builder/TestParseURI.java
index 35489484d..5b06695ec 100644
--- a/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/builder/TestParseURI.java
+++ b/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/builder/TestParseURI.java
@@ -24,9 +24,9 @@ import javax.activation.URLDataSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.axiom.net.protocol.registry.URLRegistration;
+import org.apache.axiom.net.protocol.registry.URLRegistry;
import org.apache.axiom.testutils.activation.InstrumentedDataSource;
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistration;
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistry;
import org.apache.axiom.ts.dom.DOMTestCase;
import org.apache.axiom.ts.xml.XMLSample;
import org.w3c.dom.Document;
@@ -43,7 +43,7 @@ public class TestParseURI extends DOMTestCase {
protected void runTest() throws Throwable {
InstrumentedDataSource ds = new InstrumentedDataSource(new URLDataSource(
XMLSample.SIMPLE.getUrl()));
- DataSourceRegistration registration = DataSourceRegistry.registerDataSource(ds);
+ URLRegistration registration = URLRegistry.register(ds);
try {
DocumentBuilder builder = dbf.newDocumentBuilder();
Document document = builder.parse(registration.getURL().toExternalForm());
diff --git a/testing/pom.xml b/testing/pom.xml
index 3cbe84015..74abd2076 100644
--- a/testing/pom.xml
+++ b/testing/pom.xml
@@ -44,6 +44,7 @@
<module>xml-testsuite</module>
<module>xml-truth</module>
<module>jaxp-testsuite</module>
+ <module>url-registry</module>
</modules>
<build>
diff --git a/testing/pom.xml b/testing/url-registry/pom.xml
similarity index 51%
copy from testing/pom.xml
copy to testing/url-registry/pom.xml
index 3cbe84015..13e9c608b 100644
--- a/testing/pom.xml
+++ b/testing/url-registry/pom.xml
@@ -22,53 +22,46 @@
<parent>
<groupId>org.apache.ws.commons.axiom</groupId>
- <artifactId>axiom</artifactId>
+ <artifactId>testing</artifactId>
<version>2.0.0-SNAPSHOT</version>
</parent>
- <artifactId>testing</artifactId>
- <packaging>pom</packaging>
+ <artifactId>url-registry</artifactId>
- <name>Testing</name>
+ <url>http://ws.apache.org/axiom/</url>
- <modules>
- <module>axiom-testsuite</module>
- <module>axiom-truth</module>
- <module>dom-testsuite</module>
- <module>jaxen-testsuite</module>
- <module>multiton</module>
- <module>saaj-testsuite</module>
- <module>soap-testsuite</module>
- <module>spring-ws-testsuite</module>
- <module>testutils</module>
- <module>xml-testsuite</module>
- <module>xml-truth</module>
- <module>jaxp-testsuite</module>
- </modules>
+ <dependencies>
+ <dependency>
+ <groupId>jakarta.activation</groupId>
+ <artifactId>jakarta.activation-api</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>testutils</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
<build>
<plugins>
<plugin>
- <groupId>com.github.veithen.maven</groupId>
- <artifactId>jacoco-report-maven-plugin</artifactId>
- <configuration>
- <includeClasses>false</includeClasses>
- </configuration>
+ <groupId>com.spotify.fmt</groupId>
+ <artifactId>fmt-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
</plugin>
</plugins>
</build>
-
- <reporting>
- <plugins>
- <plugin>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- <inherited>false</inherited>
- <reportSets>
- <reportSet>
- <reports />
- </reportSet>
- </reportSets>
- </plugin>
- </plugins>
- </reporting>
</project>
diff --git a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistration.java b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/DataProvider.java
similarity index 81%
copy from testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistration.java
copy to testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/DataProvider.java
index 4e9dfabfe..e27102f3e 100644
--- a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistration.java
+++ b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/DataProvider.java
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.testutils.net.protocol.mem;
+package org.apache.axiom.net.protocol.registry;
-import java.net.URL;
+import java.io.IOException;
+import java.io.InputStream;
-public interface DataSourceRegistration {
- URL getURL();
- void unregister();
+public interface DataProvider {
+ InputStream getInputStream() throws IOException;
}
diff --git a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/Handler.java b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/Handler.java
similarity index 76%
rename from testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/Handler.java
rename to testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/Handler.java
index 1bcc6c5e0..7633f42d8 100644
--- a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/Handler.java
+++ b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/Handler.java
@@ -16,22 +16,20 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.testutils.net.protocol.mem;
+package org.apache.axiom.net.protocol.registry;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;
-import javax.activation.DataSource;
-
public final class Handler extends URLStreamHandler {
@Override
protected URLConnection openConnection(URL url) throws IOException {
- DataSource dataSource = DataSourceRegistry.lookupDataSource(url.getPath());
- if (dataSource == null) {
- throw new IOException("DataSource not found");
+ DataProvider dataProvider = URLRegistry.lookup(url.getPath());
+ if (dataProvider == null) {
+ throw new IOException("URL registration not found");
}
- return new DataSourceURLConnection(url, dataSource);
+ return new URLConnectionImpl(url, dataProvider);
}
}
diff --git a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceURLConnection.java b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLConnectionImpl.java
similarity index 72%
rename from testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceURLConnection.java
rename to testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLConnectionImpl.java
index c41e23b8f..2aac07ef6 100644
--- a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceURLConnection.java
+++ b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLConnectionImpl.java
@@ -16,29 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.testutils.net.protocol.mem;
+package org.apache.axiom.net.protocol.registry;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
-import javax.activation.DataSource;
+final class URLConnectionImpl extends URLConnection {
+ private final DataProvider dataProvider;
-final class DataSourceURLConnection extends URLConnection {
- private final DataSource dataSource;
-
- DataSourceURLConnection(URL url, DataSource dataSource) {
+ URLConnectionImpl(URL url, DataProvider dataProvider) {
super(url);
- this.dataSource = dataSource;
+ this.dataProvider = dataProvider;
}
@Override
- public void connect() throws IOException {
- }
+ public void connect() throws IOException {}
@Override
public InputStream getInputStream() throws IOException {
- return dataSource.getInputStream();
+ return dataProvider.getInputStream();
}
}
diff --git a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistration.java b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLRegistration.java
similarity index 90%
rename from testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistration.java
rename to testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLRegistration.java
index 4e9dfabfe..e9d83d1a8 100644
--- a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistration.java
+++ b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLRegistration.java
@@ -16,11 +16,12 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.testutils.net.protocol.mem;
+package org.apache.axiom.net.protocol.registry;
import java.net.URL;
-public interface DataSourceRegistration {
+public interface URLRegistration {
URL getURL();
+
void unregister();
}
diff --git a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistry.java b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLRegistry.java
similarity index 64%
rename from testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistry.java
rename to testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLRegistry.java
index 93257b34e..83cd62aef 100644
--- a/testing/testutils/src/main/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistry.java
+++ b/testing/url-registry/src/main/java/org/apache/axiom/net/protocol/registry/URLRegistry.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.testutils.net.protocol.mem;
+package org.apache.axiom.net.protocol.registry;
import java.net.MalformedURLException;
import java.net.URL;
@@ -27,50 +27,54 @@ import java.util.UUID;
import javax.activation.DataSource;
-public final class DataSourceRegistry {
+public final class URLRegistry {
private static boolean handlerRegistered;
- private static final Map<String,DataSource> dataSources = new HashMap<>();
-
- private DataSourceRegistry() {}
+ private static final Map<String, DataProvider> dataProviders = new HashMap<>();
- public synchronized static DataSourceRegistration registerDataSource(DataSource dataSource) {
+ private URLRegistry() {}
+
+ public static synchronized URLRegistration register(DataProvider dataProvider) {
if (!handlerRegistered) {
Properties systemProps = System.getProperties();
synchronized (systemProps) {
- StringBuilder pkgs = new StringBuilder(systemProps.getProperty("java.protocol.handler.pkgs", ""));
+ StringBuilder pkgs =
+ new StringBuilder(
+ systemProps.getProperty("java.protocol.handler.pkgs", ""));
if (pkgs.length() > 0) {
pkgs.append('|');
}
- pkgs.append("org.apache.axiom.testutils.net.protocol");
+ pkgs.append("org.apache.axiom.net.protocol");
systemProps.setProperty("java.protocol.handler.pkgs", pkgs.toString());
}
handlerRegistered = true;
}
final String id = UUID.randomUUID().toString();
- dataSources.put(id, dataSource);
- return new DataSourceRegistration() {
+ dataProviders.put(id, dataProvider);
+ return new URLRegistration() {
@Override
public URL getURL() {
try {
- // Note: Woodstox expects that URL schemes are between 3 and 8 characters long;
- // that's why we chose "mem" and not "ds".
- return new URL("mem", "", id);
+ return new URL("registry", "", id);
} catch (MalformedURLException ex) {
// We should never get here
throw new Error(ex);
}
}
-
+
@Override
public void unregister() {
- synchronized (DataSourceRegistry.class) {
- dataSources.remove(id);
+ synchronized (URLRegistry.class) {
+ dataProviders.remove(id);
}
}
};
}
-
- static synchronized DataSource lookupDataSource(String id) {
- return dataSources.get(id);
+
+ public static URLRegistration register(DataSource dataSource) {
+ return register(dataSource::getInputStream);
+ }
+
+ static synchronized DataProvider lookup(String id) {
+ return dataProviders.get(id);
}
}
diff --git a/testing/testutils/src/test/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistryTest.java b/testing/url-registry/src/test/java/org/apache/axiom/net/protocol/registry/URLRegistryTest.java
similarity index 73%
rename from testing/testutils/src/test/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistryTest.java
rename to testing/url-registry/src/test/java/org/apache/axiom/net/protocol/registry/URLRegistryTest.java
index 1c6234e35..463723a5d 100644
--- a/testing/testutils/src/test/java/org/apache/axiom/testutils/net/protocol/mem/DataSourceRegistryTest.java
+++ b/testing/url-registry/src/test/java/org/apache/axiom/net/protocol/registry/URLRegistryTest.java
@@ -16,27 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.testutils.net.protocol.mem;
+package org.apache.axiom.net.protocol.registry;
import java.net.URL;
import java.net.URLConnection;
-import junit.framework.TestCase;
-
import org.apache.axiom.testutils.activation.RandomDataSource;
import org.apache.axiom.testutils.io.IOTestUtils;
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistration;
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistry;
+import org.junit.Test;
-public class DataSourceRegistryTest extends TestCase {
+public class URLRegistryTest {
+ @Test
public void test() throws Exception {
RandomDataSource ds = new RandomDataSource(1000);
- DataSourceRegistration registration = DataSourceRegistry.registerDataSource(ds);
+ URLRegistration registration = URLRegistry.register(ds);
try {
// We must be able to connect to the URL after converting it to a String
URL url = new URL(registration.getURL().toString());
URLConnection connection = url.openConnection();
- IOTestUtils.compareStreams(connection.getInputStream(), "actual", ds.getInputStream(), "expected");
+ IOTestUtils.compareStreams(
+ connection.getInputStream(), "actual", ds.getInputStream(), "expected");
} finally {
registration.unregister();
}
diff --git a/testing/xml-testsuite/pom.xml b/testing/xml-testsuite/pom.xml
index f5a943f00..6561c7b2e 100644
--- a/testing/xml-testsuite/pom.xml
+++ b/testing/xml-testsuite/pom.xml
@@ -49,6 +49,11 @@
<artifactId>testutils</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>url-registry</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
diff --git a/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/ComputedMessageContent.java b/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/ComputedMessageContent.java
index f9fcb78b8..0e68dc1bb 100644
--- a/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/ComputedMessageContent.java
+++ b/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/ComputedMessageContent.java
@@ -20,14 +20,11 @@ package org.apache.axiom.ts.xml;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
-import javax.activation.DataSource;
-
-import org.apache.axiom.testutils.net.protocol.mem.DataSourceRegistry;
+import org.apache.axiom.net.protocol.registry.URLRegistry;
public abstract class ComputedMessageContent extends MessageContent {
private byte[] content;
@@ -50,27 +47,7 @@ public abstract class ComputedMessageContent extends MessageContent {
@Override
public final synchronized URL getURL() {
if (url == null) {
- url = DataSourceRegistry.registerDataSource(new DataSource() {
- @Override
- public OutputStream getOutputStream() throws IOException {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public String getName() {
- return null;
- }
-
- @Override
- public InputStream getInputStream() throws IOException {
- return ComputedMessageContent.this.getInputStream();
- }
-
- @Override
- public String getContentType() {
- return "application/octet-stream";
- }
- }).getURL();
+ url = URLRegistry.register(this::getInputStream).getURL();
}
return url;
}