package de.invesdwin.util.lang; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.List; import javax.annotation.concurrent.Immutable; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; @Immutable public final class Resources { private Resources() {} public static List<String> extractMetaInfResourceLocations(final Iterable<? extends Resource> resources) { final List<String> locationStrings = new ArrayList<String>(); for (final Resource resource : resources) { final String resourceString = resource.toString(); if (resourceString != null && Strings.contains(resourceString, "META-INF")) { locationStrings .add("/META-INF" + Strings.removeEnd(Strings.substringAfter(resourceString, "META-INF"), "]")); } } return locationStrings; } public static String resourceToPatternString(final Resource resource) { if (resource instanceof ClassPathResource) { final ClassPathResource cResource = (ClassPathResource) resource; return "classpath:" + cResource.getPath(); } else if (resource instanceof FileSystemResource) { final FileSystemResource cResource = (FileSystemResource) resource; return "file:" + cResource.getPath(); } else { try { final URI uri = resource.getURI(); if (uri != null) { return uri.toString(); } else { //fallback garbage return resource.toString(); } } catch (final IOException e) { throw new RuntimeException(e); } } } }