123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- /*
- * 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.
- */
-
- /* $Id$ */
-
- package org.apache.fop.apps.io;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.URI;
-
- import org.junit.Test;
-
- import static org.junit.Assert.assertArrayEquals;
- import static org.junit.Assert.assertEquals;
- import static org.mockito.Mockito.mock;
- import static org.mockito.Mockito.never;
- import static org.mockito.Mockito.times;
- import static org.mockito.Mockito.verify;
-
- import org.apache.xmlgraphics.io.Resource;
- import org.apache.xmlgraphics.io.ResourceResolver;
- import org.apache.xmlgraphics.io.TempResourceResolver;
-
- public class ResourceResolverFactoryTestCase {
-
- private static final byte[] DATA = new byte[]{(byte) 0, (byte) 1, (byte) 2};
-
- private void writeDataTo(File f) throws IOException {
- writeDataTo(new FileOutputStream(f));
- }
-
- private void writeDataTo(OutputStream os) throws IOException {
- os.write(DATA);
- os.close();
- }
-
- private void checkStream(InputStream inputStream) throws IOException {
- byte[] actual = new byte[DATA.length];
- for (int i = 0; i < DATA.length; i++) {
- actual[i] = (byte) inputStream.read();
- }
- assertEquals(-1, inputStream.read());
- assertArrayEquals(DATA, actual);
- }
-
- @Test
- public void testDefaultResourceResolverGetResource() throws Exception {
- ResourceResolver sut = ResourceResolverFactory.createDefaultResourceResolver();
- File inputFile = File.createTempFile("prefix", "suffix");
- InputStream is = null;
- try {
- writeDataTo(inputFile);
- is = sut.getResource(inputFile.toURI());
- checkStream(is);
- } finally {
- if (is != null) {
- is.close();
- }
- inputFile.delete();
- }
- }
-
- @Test
- public void testDefaultResourceResolverGetOutput() throws Exception {
- ResourceResolver sut = ResourceResolverFactory.createDefaultResourceResolver();
- File outputFile = File.createTempFile("prefix", "suffix");
- outputFile.deleteOnExit();
- writeDataTo(sut.getOutputStream(outputFile.toURI()));
- InputStream is = new FileInputStream(outputFile);
- try {
- checkStream(is);
- } finally {
- is.close();
- }
- }
-
- private static class TestCreateTempAwareResourceResolverHelper implements ResourceResolver {
-
- final TempResourceResolver tempResourceResolver = mock(TempResourceResolver.class);
-
- final ResourceResolver defaultResourceResolver = mock(ResourceResolver.class);
-
- final ResourceResolver sut = ResourceResolverFactory.createTempAwareResourceResolver(
- tempResourceResolver, defaultResourceResolver);
-
- public Resource getResource(URI uri) throws IOException {
- return sut.getResource(uri);
- }
- public OutputStream getOutputStream(URI uri) throws IOException {
- return sut.getOutputStream(uri);
- }
- }
-
- @Test
- public void testCreateTempAwareResourceResolverForTmpResource() throws Exception {
- URI uri = URI.create("tmp:///id");
- TestCreateTempAwareResourceResolverHelper helper = new TestCreateTempAwareResourceResolverHelper();
- helper.getResource(uri);
- verify(helper.tempResourceResolver, times(1)).getResource(uri.getPath());
- verify(helper.defaultResourceResolver, never()).getResource(uri);
- }
-
- @Test
- public void testCreateTempAwareResourceResolverForRegularResource() throws Exception {
- URI uri = URI.create("file:///path/to/file");
- TestCreateTempAwareResourceResolverHelper helper = new TestCreateTempAwareResourceResolverHelper();
- helper.getResource(uri);
- verify(helper.tempResourceResolver, never()).getResource(uri.getPath());
- verify(helper.defaultResourceResolver, times(1)).getResource(uri);
- }
-
- @Test
- public void testCreateTempAwareResourceResolverForTmpOuput() throws Exception {
- URI uri = URI.create("tmp:///id");
- TestCreateTempAwareResourceResolverHelper helper = new TestCreateTempAwareResourceResolverHelper();
- helper.getOutputStream(uri);
- verify(helper.tempResourceResolver, times(1)).getOutputStream(uri.getPath());
- verify(helper.defaultResourceResolver, never()).getOutputStream(uri);
- }
-
- @Test
- public void testCreateTempAwareResourceResolverForRegularOutput() throws Exception {
- URI uri = URI.create("file:///path/to/file");
- TestCreateTempAwareResourceResolverHelper helper = new TestCreateTempAwareResourceResolverHelper();
- helper.getOutputStream(uri);
- verify(helper.tempResourceResolver, never()).getOutputStream(uri.getPath());
- verify(helper.defaultResourceResolver, times(1)).getOutputStream(uri);
- }
-
- @Test
- public void testCreateSchemaAwareResourceResolverForDefaultResource() throws Exception {
- URI uri = URI.create("file:///path/to/file");
- TestCreateSchemaAwareResourceResolverBuilderHelper helper
- = new TestCreateSchemaAwareResourceResolverBuilderHelper();
- helper.getResource(uri);
- verify(helper.registedResourceResolver, never()).getResource(uri);
- verify(helper.defaultResourceResolver, times(1)).getResource(uri);
- }
-
- @Test
- public void testCreateSchemaAwareResourceResolverForRegisteredResource() throws Exception {
- URI uri = URI.create(TestCreateSchemaAwareResourceResolverBuilderHelper.SCHEMA + ":///path");
- TestCreateSchemaAwareResourceResolverBuilderHelper helper
- = new TestCreateSchemaAwareResourceResolverBuilderHelper();
- helper.getResource(uri);
- verify(helper.registedResourceResolver, times(1)).getResource(uri);
- verify(helper.defaultResourceResolver, never()).getResource(uri);
- }
-
- @Test
- public void testCreateSchemaAwareResourceResolverForDefaultOutput() throws Exception {
- URI uri = URI.create("file:///path/to/file");
- TestCreateSchemaAwareResourceResolverBuilderHelper helper
- = new TestCreateSchemaAwareResourceResolverBuilderHelper();
- helper.getOutputStream(uri);
- verify(helper.registedResourceResolver, never()).getOutputStream(uri);
- verify(helper.defaultResourceResolver, times(1)).getOutputStream(uri);
- }
-
- @Test
- public void testCreateSchemaAwareResourceResolverForRegisteredOutput() throws Exception {
- URI uri = URI.create(TestCreateSchemaAwareResourceResolverBuilderHelper.SCHEMA + ":///path");
- TestCreateSchemaAwareResourceResolverBuilderHelper helper
- = new TestCreateSchemaAwareResourceResolverBuilderHelper();
- helper.getOutputStream(uri);
- verify(helper.registedResourceResolver, times(1)).getOutputStream(uri);
- verify(helper.defaultResourceResolver, never()).getOutputStream(uri);
- }
-
- private static class TestCreateSchemaAwareResourceResolverBuilderHelper implements ResourceResolver {
-
- private static final String SCHEMA = "protocol";
-
- final ResourceResolver registedResourceResolver = mock(ResourceResolver.class);
-
- final ResourceResolver defaultResourceResolver = mock(ResourceResolver.class);
-
- final ResourceResolver sut;
-
- TestCreateSchemaAwareResourceResolverBuilderHelper() {
- ResourceResolverFactory.SchemeAwareResourceResolverBuilder builder
- = ResourceResolverFactory.createSchemeAwareResourceResolverBuilder(
- defaultResourceResolver);
- builder.registerResourceResolverForScheme(SCHEMA, registedResourceResolver);
- sut = builder.build();
-
- }
-
- public Resource getResource(URI uri) throws IOException {
- return sut.getResource(uri);
- }
- public OutputStream getOutputStream(URI uri) throws IOException {
- return sut.getOutputStream(uri);
- }
- }
-
- }
|