if (isFileUrl(resourceLocation) || isHttpUrl(resourceLocation)) return new URL(getBaseUrl(), resourceLocation.replaceAll("&", "&"));
if (!isCid(resourceLocation) && !isHttpUrl(resourceLocation)) final String resourceName = getResourceName(resourceLocation); final InputStream is = DataSourceClassPathResolver.class.getResourceAsStream(resourceName);
/** {@inheritDoc} */ @Override public DataSource resolve(final String resourceLocation) throws IOException { final DataSource result = resolve(resourceLocation, true); if (isLenient() || result != null) { return result; } throw new IOException("The following resource was not found : " + resourceLocation); }
DataSource result = null; if (!isCid(resourceLocation)) file = getBaseDir() != null ? new File(getBaseDir(), resourceLocation) : new File(resourceLocation);
/** {@inheritDoc} */ @Override public DataSource resolve(final String resourceLocation, final boolean isLenient) throws IOException { DataSource result = null; try { if (!isCid(resourceLocation)) { final URL url = createUrl(resourceLocation); result = new URLDataSource(url); result.getInputStream(); } return result; } catch (final IOException e) { if (isLenient) { return null; } throw e; } }
@Before public void setUp() throws Exception { final DataSourceUrlResolver urlResolver = new DataSourceUrlResolver(new URL("http://www.apache.org"), false); final DataSourceClassPathResolver classPathResolver = new DataSourceClassPathResolver("/images", false); dataSourceResolvers = new DataSourceResolver[] { urlResolver, classPathResolver }; }
/** {@inheritDoc} */ @Override public DataSource resolve(final String resourceLocation, final boolean isLenient) throws IOException { for (int i = 0; i < getDataSourceResolvers().length; i++) { final DataSourceResolver dataSourceResolver = getDataSourceResolvers()[i]; final DataSource dataSource = dataSourceResolver.resolve(resourceLocation, isLenient); if (dataSource != null) { return dataSource; } } if (isLenient) { return null; } throw new IOException("The following resource was not found : " + resourceLocation); } }
@Test public void testExternalModification() throws Exception { final DataSourceCompositeResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, true); final DataSourceResolver[] arr = dataSourceResolver.getDataSourceResolvers(); // modify an element in the returned array arr[0] = null; final DataSourceResolver[] arr2 = dataSourceResolver.getDataSourceResolvers(); // assert that the external modification is not propagated to the internal array assertNotNull(arr2[0]); }
@Override public DataSource resolve(final String resourceLocation, final boolean isLenient) throws IOException { final javax.mail.util.ByteArrayDataSource ds = (javax.mail.util.ByteArrayDataSource) super.resolve(resourceLocation, isLenient); ds.setName(null); return ds; }
/** * Returns the resource name for a given resource location. * * @param resourceLocation the resource location * @return {@link #getClassPathBase()} + {@code resourceLocation} * @see #getClassPathBase() */ private String getResourceName(final String resourceLocation) { return (getClassPathBase() + resourceLocation).replaceAll("//", "/"); } }
@Test public void testResolvingFilesLenient() throws Exception { final DataSourceResolver dataSourceResolver = new DataSourceCompositeResolver(dataSourceResolvers, true); // resolve using HTTP assertTrue(toByteArray(dataSourceResolver.resolve("/images/feather-small.gif")).length > 0); // resolve using class path assertTrue(toByteArray(dataSourceResolver.resolve("/contentTypeTest.gif")).length > 0); }
@Test public void testResolvingFileLenient() throws Exception { final DataSourceResolver dataSourceResolver = new DataSourceFileResolver(new File("./src/test/resources"), true); assertTrue(toByteArray(dataSourceResolver.resolve("images/asf_logo_wide.gif")).length == IMG_SIZE); assertTrue(toByteArray(dataSourceResolver.resolve("./images/asf_logo_wide.gif")).length == IMG_SIZE); assertTrue(toByteArray(dataSourceResolver.resolve("../resources/images/asf_logo_wide.gif")).length == IMG_SIZE); assertNull(toByteArray(dataSourceResolver.resolve("/images/does-not-exist.gif"))); assertNull(dataSourceResolver.resolve("./images/does-not-exist.gif")); }
/** {@inheritDoc} */ @Override public DataSource resolve(final String resourceLocation) throws IOException { final DataSource result = resolve(resourceLocation, true); if (isLenient() || result != null) { return result; } throw new IOException("The following resource was not found : " + resourceLocation); }
/** * Returns the resource name for a given resource location. * * @param resourceLocation the resource location * @return {@link #getClassPathBase()} + {@code resourceLocation} * @see #getClassPathBase() */ private String getResourceName(final String resourceLocation) { return (getClassPathBase() + resourceLocation).replaceAll("//", "/"); } }