Search in sources :

Example 1 with Serializer

use of org.reflections.serializers.Serializer in project reflections by ronmamo.

the class Reflections method collect.

/**
     * 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;
}
Also used : Vfs(org.reflections.vfs.Vfs) URL(java.net.URL) XmlSerializer(org.reflections.serializers.XmlSerializer) Serializer(org.reflections.serializers.Serializer) XmlSerializer(org.reflections.serializers.XmlSerializer)

Aggregations

URL (java.net.URL)1 Serializer (org.reflections.serializers.Serializer)1 XmlSerializer (org.reflections.serializers.XmlSerializer)1 Vfs (org.reflections.vfs.Vfs)1