Package com.bj58.argo.convention

Source Code of com.bj58.argo.convention.GroupConventionFactory

package com.bj58.argo.convention;

import com.bj58.argo.internal.DefaultGroupConvention;
import com.google.common.base.Throwables;

import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;

/**
* 获得GroupConvention的工厂
*/
public class GroupConventionFactory {

 
  public static GroupConvention getGroupConvention() {

        String className = GroupConvention.annotatedGroupConventionBinder;

        Class<?> clazz = null;
        GroupConvention groupConvention;
        try {
            clazz = GroupConventionFactory.class.getClassLoader().loadClass(className);
            groupConvention = GroupConvention.class.cast(clazz);
        } catch (Exception e) {
            groupConvention = null;
        }

        if (groupConvention != null)
            return groupConvention;

        if (clazz == null || clazz.getAnnotation(GroupConventionAnnotation.class) == null)
            clazz = DefaultGroupConvention.class;

    GroupConventionAnnotation conventionAnnotation = clazz.getAnnotation(GroupConventionAnnotation.class);


        ClassLoader cl = Thread.currentThread().getContextClassLoader();

        URL url = cl.getResource(".");

        File folder = null;
        try {
            folder = new File(url.toURI());
        } catch (URISyntaxException e) {
            Throwables.propagate(e);
        }

    return new DefaultGroupConvention(conventionAnnotation, folder);

  }
}
TOP

Related Classes of com.bj58.argo.convention.GroupConventionFactory

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.