Java 类org.reflections.vfs.Vfs 实例源码
项目:java-random
文件:IgnoringUrlType.java
@Override
public Vfs.Dir createDir(URL url) throws Exception {
return new Vfs.Dir() {
@Override
public String getPath() {
return "";
}
@Override
public Iterable<Vfs.File> getFiles() {
return new ArrayList<Vfs.File>();
}
@Override
public void close() {
//do nothing
}
};
}
项目:polyguice
文件:ReflectionsHelper.java
private static Vfs.Dir emptyVfsDir(final URL url) {
return new Vfs.Dir() {
@Override
public String getPath() {
return url.toExternalForm();
}
@Override
public Iterable<Vfs.File> getFiles() {
return Collections.emptyList();
}
@Override
public void close() {
}
};
}
项目:Auto-Spark
文件:EmptyFileUrlTypes.java
@Override
public Vfs.Dir createDir(URL url) throws Exception {
return new Vfs.Dir() {
@Override
public String getPath() {
return url.toExternalForm();
}
@Override
public Iterable<Vfs.File> getFiles() {
return Collections.emptyList();
}
@Override
public void close() {
}
};
}
项目:motech
文件:JndiUrlType.java
@Override
public Vfs.Dir createDir(URL url) {
try {
File tmpFile = File.createTempFile("vfs-jndi-bundle", ".jar");
// we need to load this resource from the server context using the server ClassLoader
// we use reflections to call the service exposed by the server
BundleContext bundleContext = FrameworkUtil.getBundle(JndiUrlType.class).getBundleContext();
Object jndiService = OSGiServiceUtils.findService(bundleContext, JNDI_SERVICE);
// copy to the resource to the temp file
MethodUtils.invokeMethod(jndiService, WRITE_TO_FILE_METHOD,
new Object[] {url.toString(), tmpFile.getAbsolutePath()});
return new TmpDir(tmpFile);
} catch (IOException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
throw new IllegalArgumentException("Unable to create mvn url for " + url, e);
}
}
项目:deeplearning4j
文件:ReflectionsHelper.java
private static Vfs.Dir emptyVfsDir(final URL url) {
return new Vfs.Dir() {
@Override
public String getPath() {
return url.toExternalForm();
}
@Override
public Iterable<Vfs.File> getFiles() {
return Collections.emptyList();
}
@Override
public void close() {
}
};
}
项目:reflections
文件:VfsTest.java
@Test
public void vfsFromDirWithJarInName() throws MalformedURLException {
String tmpFolder = System.getProperty("java.io.tmpdir");
tmpFolder = tmpFolder.endsWith(File.separator) ? tmpFolder : tmpFolder + File.separator;
String dirWithJarInName = tmpFolder + "tony.jarvis";
File newDir = new File(dirWithJarInName);
newDir.mkdir();
try {
Vfs.Dir dir = Vfs.fromURL(new URL(format("file:{0}", dirWithJarInName)));
assertEquals(dirWithJarInName, dir.getPath());
assertEquals(SystemDir.class, dir.getClass());
} finally {
newDir.delete();
}
}
项目:reflections
文件:VfsTest.java
@Test
public void vfsFromDirWithinAJarUrl() throws MalformedURLException {
URL directoryInJarUrl = ClasspathHelper.forClass(String.class);
assertTrue(directoryInJarUrl.toString().startsWith("jar:file:"));
assertTrue(directoryInJarUrl.toString().contains(".jar!"));
String directoryInJarPath = directoryInJarUrl.toExternalForm().replaceFirst("jar:", "");
int start = directoryInJarPath.indexOf(":") + 1;
int end = directoryInJarPath.indexOf(".jar!") + 4;
String expectedJarFile = directoryInJarPath.substring(start, end);
Vfs.Dir dir = Vfs.fromURL(new URL(directoryInJarPath));
assertEquals(ZipDir.class, dir.getClass());
assertEquals(expectedJarFile, dir.getPath());
}
项目:reflections
文件:VfsTest.java
private void testVfsDir(URL url) {
System.out.println("testVfsDir(" + url + ")");
assertNotNull(url);
Vfs.Dir dir = Vfs.fromURL(url);
assertNotNull(dir);
Iterable<Vfs.File> files = dir.getFiles();
Vfs.File first = files.iterator().next();
assertNotNull(first);
first.getName();
try {
first.openInputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
dir.close();
}
项目:reflections
文件:VfsTest.java
@Test
public void jarInputStream() {
JavassistAdapter javassistAdapter = new JavassistAdapter();
for (URL jar : ClasspathHelper.forClassLoader()) {
try {
for (Vfs.File file : Iterables.limit(new JarInputDir(jar).getFiles(), 5)) {
if (file.getName().endsWith(".class")) {
String className = javassistAdapter.getClassName(javassistAdapter.getOrCreateClassObject(file));
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
项目:DataVec
文件:DataVecSubTypesScanner.java
@Override
public Object scan(Vfs.File file, Object classObject) {
if (classObject == null) {
try {
classObject = configuration.getMetadataAdapter().getOfCreateClassObject(file);
} catch (Exception e) {
throw new ReflectionsException("could not create class object from file " + file.getRelativePath());
}
}
scan(classObject);
return classObject;
}
项目:FinanceAnalytics
文件:OpenGammaFudgeContext.java
@Override
public Dir createDir(URL url) throws Exception {
File file = Vfs.getFile(url);
if (file == null || file.exists() == false) {
s_logger.warn("URL could not be resolved to a file: " + url);
return new EmptyDir(file);
} else {
return new SystemDir(file);
}
}
项目:motech
文件:MvnUrlType.java
@Override
public Vfs.Dir createDir(URL url) {
try (InputStream in = url.openStream()) {
//copy to a temporary file
File tmpFile = File.createTempFile("vfs-mvn-bundle", ".jar");
try (OutputStream out = new FileOutputStream(tmpFile)) {
IOUtils.copy(in, out);
}
// return a dir implementation which removes the file when its done
return new TmpDir(tmpFile);
} catch (IOException e) {
throw new IllegalArgumentException("Unable to create mvn url for " + url, e);
}
}
项目:deeplearning4j
文件:DL4JSubTypesScanner.java
@Override
public Object scan(Vfs.File file, Object classObject) {
if (classObject == null) {
try {
classObject = configuration.getMetadataAdapter().getOfCreateClassObject(file);
} catch (Exception e) {
throw new ReflectionsException("could not create class object from file " + file.getRelativePath());
}
}
scan(classObject);
return classObject;
}
项目:reflections
文件:Reflections.java
protected void scan(URL url) {
Vfs.Dir dir = Vfs.fromURL(url);
try {
for (final Vfs.File file : dir.getFiles()) {
// scan if inputs filter accepts file relative path or fqn
Predicate<String> inputsFilter = configuration.getInputsFilter();
String path = file.getRelativePath();
String fqn = path.replace('/', '.');
if (inputsFilter == null || inputsFilter.apply(path) || inputsFilter.apply(fqn)) {
Object classObject = null;
for (Scanner scanner : configuration.getScanners()) {
try {
if (scanner.acceptsInput(path) || scanner.acceptsInput(fqn)) {
classObject = scanner.scan(file, classObject);
}
} catch (Exception e) {
if (log != null) {
// SLF4J will filter out Throwables from the format string arguments.
log.debug("could not scan file {} in url {} with scanner {}", file.getRelativePath(), url.toExternalForm(), scanner.getClass().getSimpleName(), e);
}
}
}
}
}
} finally {
dir.close();
}
}
项目:reflections
文件:Reflections.java
/**
* collect saved Reflections resources from all urls that contains the given packagePrefix and matches the given resourceNameFilter
* and de-serializes them using the default serializer {@link org.reflections.serializers.XmlSerializer} or using the optionally supplied optionalSerializer
* <p>
* it is preferred to use a designated resource prefix (for example META-INF/reflections but not just META-INF),
* so that relevant urls could be found much faster
* @param optionalSerializer - optionally supply one serializer instance. if not specified or null, {@link org.reflections.serializers.XmlSerializer} will be used
*/
public static Reflections collect(final String packagePrefix, final Predicate<String> resourceNameFilter, @Nullable Serializer... optionalSerializer) {
Serializer serializer = optionalSerializer != null && optionalSerializer.length == 1 ? optionalSerializer[0] : new XmlSerializer();
Collection<URL> urls = ClasspathHelper.forPackage(packagePrefix);
if (urls.isEmpty()) return null;
long start = System.currentTimeMillis();
final Reflections reflections = new Reflections();
Iterable<Vfs.File> files = Vfs.findFiles(urls, packagePrefix, resourceNameFilter);
for (final Vfs.File file : files) {
InputStream inputStream = null;
try {
inputStream = file.openInputStream();
reflections.merge(serializer.read(inputStream));
} catch (IOException e) {
throw new ReflectionsException("could not merge " + file, e);
} finally {
close(inputStream);
}
}
if (log != null) {
Store store = reflections.getStore();
int keys = 0;
int values = 0;
for (String index : store.keySet()) {
keys += store.get(index).keySet().size();
values += store.get(index).size();
}
log.info(format("Reflections took %d ms to collect %d url%s, producing %d keys and %d values [%s]",
System.currentTimeMillis() - start, urls.size(), urls.size() > 1 ? "s" : "", keys, values, Joiner.on(", ").join(urls)));
}
return reflections;
}
项目:reflections
文件:TypesScanner.java
@Override
public Object scan(Vfs.File file, Object classObject) {
classObject = super.scan(file, classObject);
String className = getMetadataAdapter().getClassName(classObject);
getStore().put(className, className);
return classObject;
}
项目:reflections
文件:AbstractScanner.java
public Object scan(Vfs.File file, Object classObject) {
if (classObject == null) {
try {
classObject = configuration.getMetadataAdapter().getOrCreateClassObject(file);
} catch (Exception e) {
throw new ReflectionsException("could not create class object from file " + file.getRelativePath(), e);
}
}
scan(classObject);
return classObject;
}
项目:reflections
文件:JavassistAdapter.java
public ClassFile getOrCreateClassObject(final Vfs.File file) {
InputStream inputStream = null;
try {
inputStream = file.openInputStream();
DataInputStream dis = new DataInputStream(new BufferedInputStream(inputStream));
return new ClassFile(dis);
} catch (IOException e) {
throw new ReflectionsException("could not create class file from " + file.getName(), e);
} finally {
Utils.close(inputStream);
}
}
项目:reflections
文件:VfsTest.java
@Test
public void findFilesFromEmptyMatch() throws MalformedURLException {
final URL jar = getSomeJar();
final Iterable<Vfs.File> files = Vfs.findFiles(java.util.Arrays.asList(jar), Predicates.<Vfs.File>alwaysTrue());
assertNotNull(files);
assertTrue(files.iterator().hasNext());
}
项目:logicobjects
文件:EclipsePluginConfigurator.java
/**
* Prepares an Eclipse plugin to be used with LOGICOBJECTS
* @param plugin
*/
public static void configure(Plugin plugin) {
//enabling javassist to work correctly in Eclipse
ClassPool classPool = ClassPool.getDefault();
classPool.appendClassPath(new LoaderClassPath(plugin.getClass().getClassLoader()));
LogicObjects.getDefault().getContext().getLogicObjectFactory().setClassPool(classPool);
Vfs.addDefaultURLTypes(new BundleUrlType(plugin.getBundle())); //enabling the Reflections filters to work in Eclipse
String pathLogicFiles = null;
URL urlPlugin = ClasspathHelper.forClass(plugin.getClass());
/**
* adding all the classes in the plugin to the search path
* This line has to be after the call to Vfs.addDefaultURLTypes(...)
*/
LogicObjects.getDefault().getContext().addSearchUrl(urlPlugin);
try {
pathLogicFiles = FileLocator.toFileURL(urlPlugin).getPath();
} catch (IOException e) {
throw new RuntimeException(e);
}
/**
* move to the directory where the plugin is deployed
* This code uses the bootstrap engine since this engine will not trigger the loading of Logtalk
* After we have moved to the location of the plugin files we can load logtalk afterwards
*/
//LogicEngine.getBootstrapEngine().cd(pathLogicFiles); TODO verify that this is not needed anymore (it should work without this since all the logic files are copied to a tmp directory)
}
项目:kafka-0.11.0.0-src-with-comment
文件:ReflectionsUtil.java
public static void registerUrlTypes() {
final List<UrlType> urlTypes = new LinkedList<>();
urlTypes.add(new EmptyUrlType(ENDINGS));
urlTypes.addAll(Arrays.asList(Vfs.DefaultUrlTypes.values()));
Vfs.setDefaultURLTypes(urlTypes);
}
项目:java-random
文件:ReflectionsInitializer.java
public static void init() {
Vfs.addDefaultURLTypes(new JnilibIgnoringUrlType());
}
项目:FinanceAnalytics
文件:OpenGammaFudgeContext.java
private static FudgeContext constructContext() {
FudgeContext fudgeContext = new FudgeContext();
ExtendedFudgeBuilderFactory.init(fudgeContext.getObjectDictionary());
InnerClassFudgeBuilderFactory.init(fudgeContext.getObjectDictionary());
// hack to handle non-existent classpath directory entries
List<UrlType> urlTypes = Lists.newArrayList(Vfs.getDefaultUrlTypes());
urlTypes.add(0, new OGFileUrlType());
Vfs.setDefaultURLTypes(urlTypes);
// init annotation reflector, which needs this class loader
Set<ClassLoader> loaders = new HashSet<>();
loaders.add(OpenGammaFudgeContext.class.getClassLoader());
try {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader != null) {
loaders.add(loader);
}
} catch (Exception ex) {
// ignore
}
int availableProcessors = Runtime.getRuntime().availableProcessors();
ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("Reflections-scan-%d").build();
ExecutorService executorService = Executors.newFixedThreadPool(availableProcessors, factory);
try {
Configuration config = new ConfigurationBuilder()
.setUrls(ClasspathHelper.forManifest(ClasspathHelper.forJavaClassPath()))
.setScanners(new TypeAnnotationsScanner(), new FieldAnnotationsScanner(), new SubTypesScanner(false))
.filterInputsBy(FilterBuilder.parse(AnnotationReflector.DEFAULT_ANNOTATION_REFLECTOR_FILTER))
.addClassLoaders(loaders)
.setExecutorService(executorService);
AnnotationReflector.initDefaultReflector(new AnnotationReflector(config));
AnnotationReflector reflector = AnnotationReflector.getDefaultReflector();
fudgeContext.getObjectDictionary().addAllAnnotatedBuilders(reflector);
fudgeContext.getTypeDictionary().addAllAnnotatedSecondaryTypes(reflector);
} finally {
executorService.shutdown();
}
FudgeTypeDictionary td = fudgeContext.getTypeDictionary();
td.registerClassRename("com.opengamma.util.timeseries.zoneddatetime.ArrayZonedDateTimeDoubleTimeSeries", ImmutableZonedDateTimeDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.timeseries.zoneddatetime.ArrayZonedDateTimeDoubleTimeSeries", ImmutableZonedDateTimeDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.util.timeseries.zoneddatetime.ListZonedDateTimeDoubleTimeSeries", ImmutableZonedDateTimeDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.timeseries.zoneddatetime.ListZonedDateTimeDoubleTimeSeries", ImmutableZonedDateTimeDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.util.timeseries.localdate.ArrayLocalDateDoubleTimeSeries", ImmutableLocalDateDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.timeseries.localdate.ArrayLocalDateDoubleTimeSeries", ImmutableLocalDateDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.util.timeseries.localdate.ListLocalDateDoubleTimeSeries", ImmutableLocalDateDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.timeseries.localdate.ListLocalDateDoubleTimeSeries", ImmutableLocalDateDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.util.timeseries.localdate.MapLocalDateDoubleTimeSeries", ImmutableLocalDateDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.timeseries.localdate.MapLocalDateDoubleTimeSeries", ImmutableLocalDateDoubleTimeSeries.class);
td.registerClassRename("com.opengamma.id.Identifier", ExternalId.class);
td.registerClassRename("com.opengamma.id.IdentifierBundleWithDates", ExternalIdBundleWithDates.class);
td.registerClassRename("com.opengamma.id.IdentifierBundle", ExternalIdBundle.class);
td.registerClassRename("com.opengamma.id.IdentifierWithDates", ExternalIdWithDates.class);
td.registerClassRename("com.opengamma.id.ObjectIdentifier", ObjectId.class);
td.registerClassRename("com.opengamma.id.UniqueIdentifier", UniqueId.class);
return fudgeContext;
}
项目:FinanceAnalytics
文件:OpenGammaFudgeContext.java
@Override
public Iterable<Vfs.File> getFiles() {
return Collections.emptyList(); // just return no files
}
项目:Auto-Spark
文件:AutoSpark.java
private void init() {
final List<Vfs.UrlType> urlTypes = new ArrayList<>();
urlTypes.add(new EmptyFileUrlTypes(excludedFileExtensions));
urlTypes.addAll(Arrays.asList(Vfs.DefaultUrlTypes.values()));
Vfs.setDefaultURLTypes(urlTypes);
}
项目:motech
文件:TmpDir.java
@Override
public Iterable<Vfs.File> getFiles() {
return zipDir.getFiles();
}
项目:motech
文件:DoubleEncodedDirUrlType.java
@Override
public Vfs.Dir createDir(URL url) {
return new SystemDir(FileUtils.toFile(fixURL(url)));
}
项目:jsmart-web
文件:FilterControl.java
private void initResources(FilterConfig config) {
try {
if (CONFIG.getContent().getAssetsUrl() != null) {
LOGGER.log(Level.INFO, "Using external assets, please provide the jsmart assets content at ["
+ CONFIG.getContent().getAssetsUrl() + "]");
}
ServletContext context = config.getServletContext();
Set<String> libs = context.getResourcePaths(LIB_FILE_PATH);
if (libs == null || libs.isEmpty()) {
LOGGER.log(Level.SEVERE, "Could not find the JSmart library JAR file. Empty [" + LIB_FILE_PATH + "] resource folder.");
return;
}
String libFilePath = null;
for (String lib : libs) {
Matcher matcher = JAR_FILE_PATTERN.matcher(lib);
if (matcher.find()) {
libFilePath = matcher.group();
break;
}
}
if (libFilePath == null) {
LOGGER.log(Level.SEVERE, "Could not find the JSmart library JAR file inside [" + LIB_FILE_PATH + "]");
return;
}
Resources jsonResources = EXPRESSIONS.GSON.fromJson(convertResourceToString(FILTER_RESOURCES), Resources.class);
File libFile = new File(context.getRealPath(libFilePath));
Dir content = Vfs.fromURL(libFile.toURI().toURL());
Iterator<Vfs.File> files = content.getFiles().iterator();
while (files.hasNext()) {
Vfs.File file = files.next();
// Copy index.jsp and replace content to redirect to welcome-url case configured
if (file.getRelativePath().startsWith(INDEX_JSP)) {
if (CONFIG.getContent().getWelcomeUrl() != null) {
StringWriter writer = new StringWriter();
IOUtils.copy(file.openInputStream(), writer);
String index = writer.toString().replace("{0}", CONFIG.getContent().getWelcomeUrl());
copyFileResource(new ByteArrayInputStream(index.getBytes(ENCODING)), file.getRelativePath(), context);
}
}
// Do not copy anything if assets-url was provided
if (CONFIG.getContent().getAssetsUrl() != null) {
continue;
}
// Copy js, css and font resources to specific location
for (String resource : jsonResources.getResources()) {
String resourcePath = resource.replace("*", "");
if (file.getRelativePath().startsWith(resourcePath)) {
initDirResources(context.getRealPath(PATH_SEPARATOR), file.getRelativePath());
copyFileResource(file.openInputStream(), file.getRelativePath(), context);
break;
}
}
}
} catch (Exception ex) {
LOGGER.log(Level.SEVERE, ex.getMessage());
}
}
项目:reflections
文件:ResourcesScanner.java
@Override public Object scan(Vfs.File file, Object classObject) {
getStore().put(file.getName(), file.getRelativePath());
return classObject;
}
项目:reflections
文件:JavaReflectionAdapter.java
public Class getOrCreateClassObject(Vfs.File file) throws Exception {
return getOrCreateClassObject(file, null);
}
项目:reflections
文件:JavaReflectionAdapter.java
public Class getOrCreateClassObject(Vfs.File file, @Nullable ClassLoader... loaders) throws Exception {
String name = file.getRelativePath().replace("/", ".").replace(".class", "");
return forName(name, loaders);
}
项目:polyguice
文件:ReflectionsHelper.java
/**
* Registers unrecognized URLs with reflections.
* Reflections use of Vfs doesn't recognize the above URLs such as .jnilib and logs warns when it sees them. By registering those file endings, we suppress the warns.
*/
public static void registerUrlTypes() {
final List<Vfs.UrlType> urlTypes = Lists.newArrayList();
// include a list of file extensions / filenames to be recognized
urlTypes.add(new EmptyIfFileEndingsUrlType(".jnilib"));
urlTypes.addAll(Arrays.asList(Vfs.DefaultUrlTypes.values()));
Vfs.setDefaultURLTypes(urlTypes);
}
项目:deeplearning4j
文件:ReflectionsHelper.java
/**
* OSX contains file:// resources on the classpath including .mar and .jnilib files.
*
* Reflections use of Vfs doesn't recognize these URLs and logs warns when it sees them. By registering those file endings, we suppress the warns.
*/
public static void registerUrlTypes() {
final List<Vfs.UrlType> urlTypes = Lists.newArrayList();
// include a list of file extensions / filenames to be recognized
urlTypes.add(new EmptyIfFileEndingsUrlType(".mar", ".jnilib", ".so", ".dll"));
urlTypes.addAll(Arrays.asList(Vfs.DefaultUrlTypes.values()));
Vfs.setDefaultURLTypes(urlTypes);
}
项目:polyguice
文件:ReflectionsHelper.java
public Vfs.Dir createDir(final URL url) throws Exception {
return emptyVfsDir(url);
}
项目:deeplearning4j
文件:ReflectionsHelper.java
public Vfs.Dir createDir(final URL url) throws Exception {
return emptyVfsDir(url);
}
项目:reflections
文件:Scanner.java
Object scan(Vfs.File file, @Nullable Object classObject);
项目:reflections
文件:MetadataAdapter.java
C getOrCreateClassObject(Vfs.File file) throws Exception;
项目:reflections
文件:VfsTest.java
public Iterable<Vfs.File> getFiles() {return zipDir.getFiles();}