/** * @return true if name should be included. */ private static boolean isIncluded(String name, List<String> included, List<String> excluded) { boolean result; // // If no includes nor excludes were specified, return true. // if (included.isEmpty() && excluded.isEmpty()) { result = true; } else { boolean isIncluded = PackageUtils.find(name, included); boolean isExcluded = PackageUtils.find(name, excluded); if (isIncluded && !isExcluded) { result = true; } else if (isExcluded) { result = false; } else { result = included.isEmpty(); } } return result; }
findClassesInDirPackage(makeFullClassName(packageName, file.getName()), included, excluded, Utils.log(PACKAGE_UTILS, 4, "Found class " + className + ", seeing it if it's included or excluded"); includeOrExcludeClass(packageName, className, included, excluded, classes);
private static boolean matchTestClasspath(URL url, String lastFragment, boolean recursive) { String[] classpathFragments= getTestClasspath(); if(null == classpathFragments) { return true; } String fileName= ""; try { fileName= URLDecoder.decode(url.getFile(), UTF_8); } catch(UnsupportedEncodingException ueex) { // ignore. should never happen } for(String classpathFrag: classpathFragments) { String path= classpathFrag + lastFragment; int idx= fileName.indexOf(path); if((idx == -1) || (idx > 0 && fileName.charAt(idx-1) != '/')) { continue; } if(fileName.endsWith(classpathFrag + lastFragment) || (recursive && fileName.charAt(idx + path.length()) == '/')) { return true; } } return false; }
private static void includeOrExcludeClass(String packageName, String className, List<String> included, List<String> excluded, List<String> classes) { if (isIncluded(packageName, included, excluded)) { Utils.log(PACKAGE_UTILS, 4, "... Including class " + className); classes.add(makeFullClassName(packageName, className)); } else { Utils.log(PACKAGE_UTILS, 4, "... Excluding class " + className); } }
if (! matchTestClasspath(url, packageDirName, recursive)) { continue; findClassesInDirPackage(packageOnly, included, excluded, URLDecoder.decode(url.getFile(), UTF_8), recursive, vResult); } else if ("jar".equals(protocol)) { String className = name.substring(packageName.length() + 1, name.length() - 6); Utils.log(PACKAGE_UTILS, 4, "Found class " + className + ", seeing it if it's included or excluded"); includeOrExcludeClass(packageName, className, included, excluded, vResult); Object[] paramsObj = {}; URL fileUrl = (URL) thisMethod.invoke(connection, paramsObj); findClassesInDirPackage(packageOnly, included, excluded, URLDecoder.decode(fileUrl.getFile(), UTF_8), recursive, vResult); } catch (Exception ex) {
private List<XmlClass> initializeXmlClasses() { List<XmlClass> result= Lists.newArrayList(); try { String[] classes = PackageUtils.findClassesInPackage(m_name, m_include, m_exclude); int index = 0; for(String className: classes) { result.add(new XmlClass(className, index++, false /* don't load classes */)); } } catch(IOException ioex) { Utils.log("XmlPackage", 1, ioex.getMessage()); } return result; }
if (!matchTestClasspath(url, packageDirName, recursive)) { continue; findClassesInDirPackage( packageOnly, included, 4, "Found class " + className + ", seeing it if it's included or excluded"); includeOrExcludeClass(packageName, className, included, excluded, vResult); Object[] paramsObj = {}; URL fileUrl = (URL) thisMethod.invoke(connection, paramsObj); findClassesInDirPackage( packageOnly, included,
private static void includeOrExcludeClass( String packageName, String className, List<String> included, List<String> excluded, List<String> classes) { if (isIncluded(packageName, included, excluded)) { Utils.log(PACKAGE_UTILS, 4, "... Including class " + className); classes.add(makeFullClassName(packageName, className)); } else { Utils.log(PACKAGE_UTILS, 4, "... Excluding class " + className); } }
private List<XmlClass> initializeXmlClasses() { List<XmlClass> result = Lists.newArrayList(); try { String[] classes = PackageUtils.findClassesInPackage(m_name, m_include, m_exclude); int index = 0; for (String className : classes) { result.add(new XmlClass(className, index++, false /* don't load classes */)); } } catch (IOException ioex) { Utils.log("XmlPackage", 1, ioex.getMessage()); } return result; }
findClassesInDirPackage( makeFullClassName(packageName, file.getName()), included, excluded, 4, "Found class " + className + ", seeing it if it's included or excluded"); includeOrExcludeClass(packageName, className, included, excluded, classes);
private static Class<?>[] findClassesInPackage(String packageName) throws IOException { String[] classes = PackageUtils.findClassesInPackage(packageName, new ArrayList<>(), new ArrayList<>()); List<Class<?>> loadedClasses = new ArrayList<>(); for (String clazz : classes) { loadedClasses.add(ClassHelper.forName(clazz)); } return loadedClasses.toArray(new Class<?>[0]); } }
private static boolean matchTestClasspath(URL url, String lastFragment, boolean recursive) { String[] classpathFragments = getTestClasspath(); if (null == classpathFragments) { return true; } String fileName = ""; try { fileName = URLDecoder.decode(url.getFile(), UTF_8); } catch (UnsupportedEncodingException ueex) { // ignore. should never happen } for (String classpathFrag : classpathFragments) { String path = classpathFrag + lastFragment; int idx = fileName.indexOf(path); if ((idx == -1) || (idx > 0 && fileName.charAt(idx - 1) != '/')) { continue; } if (fileName.endsWith(classpathFrag + lastFragment) || (recursive && fileName.charAt(idx + path.length()) == '/')) { return true; } } return false; }
/** @return true if name should be included. */ private static boolean isIncluded(String name, List<String> included, List<String> excluded) { boolean result; // // If no includes nor excludes were specified, return true. // if (included.isEmpty() && excluded.isEmpty()) { result = true; } else { boolean isIncluded = PackageUtils.find(name, included); boolean isExcluded = PackageUtils.find(name, excluded); if (isIncluded && !isExcluded) { result = true; } else if (isExcluded) { result = false; } else { result = included.isEmpty(); } } return result; }