Package com.github.jmkgreen.morphia.ext.entityscanner

Source Code of com.github.jmkgreen.morphia.ext.entityscanner.EntityScanner

/**
*
*/
package com.github.jmkgreen.morphia.ext.entityscanner;

import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import org.reflections.Reflections;
import org.reflections.scanners.TypeAnnotationsScanner;
import org.reflections.scanners.TypesScanner;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
import org.scannotation.ClasspathUrlFinder;

import com.github.jmkgreen.morphia.Morphia;
import com.github.jmkgreen.morphia.annotations.Entity;
import com.github.jmkgreen.morphia.utils.Assert;
import com.google.common.base.Predicates;

/**
* @author us@thomas-daily.de
*/
public class EntityScanner {

    /**
     * @param m
     */
    public EntityScanner(final Morphia m) {
        this(m, null);

    }

    /**
     * @param m
     * @param predicate
     */
    public EntityScanner(final Morphia m,
                         com.google.common.base.Predicate<String> predicate) {
        if (predicate == null) {
            predicate = Predicates.alwaysTrue();
        }
        Assert.parametersNotNull("m, predicate", m, predicate);
        final ConfigurationBuilder conf = new ConfigurationBuilder();
        conf.setScanners(new TypesScanner(), new TypeAnnotationsScanner());

        final Set<URL> s = new HashSet<URL>();
        s.addAll(ClasspathHelper.forJavaClassPath());
        s.addAll(Arrays.asList(ClasspathUrlFinder.findClassPaths()));
        conf.setUrls(new ArrayList(s));

        conf.filterInputsBy(predicate);

        final Reflections r = new Reflections(conf);

        final Set<Class<?>> entities = r.getTypesAnnotatedWith(Entity.class);
        for (final Class<?> c : entities) {
            m.map(c);
        }
    }
}
TOP

Related Classes of com.github.jmkgreen.morphia.ext.entityscanner.EntityScanner

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.