src/main/java/de/vandermeer/execs/cf/CF.java
protected final Map<Class<?>, URI> searchJar(Class<?> clazz, URI location){
		Map<Class<?>, URI> ret = new HashMap<>();

		try{
			JarURLConnection conn = (JarURLConnection)location.toURL().openConnection();
			JarFile jarFile = conn.getJarFile();

			for(Enumeration<JarEntry> e = jarFile.entries(); e.hasMoreElements();){
				JarEntry entry = e.nextElement();
				String entryname = entry.getName();
				if(this.processed.contains(entryname)){
					continue;
				}
				this.processed.add(entryname);

				if(!entry.isDirectory() && entryname.endsWith(".class")){
					String classname = entryname.substring(0, entryname.length()-6);
					if(classname.startsWith("/")){
						classname = classname.substring(1);
					}
					classname = classname.replace('/','.');
					if(!StringUtils.startsWithAny(classname, this.excludedNames)){
						try{
							Class<?> c = Class.forName(classname);
							if(clazz.isAssignableFrom(c) && !clazz.getName().equals(classname)){
								ret.put(c, location);
							}
						}
						catch(Exception exception){
							errors.add(exception);
						}
						catch(Error error){
							errors.add(error);
						}
					}
				}
			}
		}
		catch(IOException ignore){
			errors.add(ignore);
		}

		return ret;
	}
protected final Map<Class<?>, URI> searchJar(Class<?> clazz, URI location){
		Map<Class<?>, URI> ret = new HashMap<>();

		try{
			JarURLConnection conn = (JarURLConnection)location.toURL().openConnection();
			JarFile jarFile = conn.getJarFile();

			for(Enumeration<JarEntry> e = jarFile.entries(); e.hasMoreElements();){
				JarEntry entry = e.nextElement();
				String entryname = entry.getName();
				if(this.processed.contains(entryname)){
					continue;
				}
				this.processed.add(entryname);

				if(!entry.isDirectory() && entryname.endsWith(".class")){
					String classname = entryname.substring(0, entryname.length()-6);
					if(classname.startsWith("/")){
						classname = classname.substring(1);
					}
					classname = classname.replace('/','.');
					if(!StringUtils.startsWithAny(classname, this.excludedNames)){
						try{
							Class<?> c = Class.forName(classname);
							if(clazz.isAssignableFrom(c) && !clazz.getName().equals(classname)){
								ret.put(c, location);
							}
						}
						catch(Exception exception){
							errors.add(exception);
						}
						catch(Error error){
							errors.add(error);
						}
					}
				}
			}
		}
		catch(IOException ignore){
			errors.add(ignore);
		}

		return ret;
	}
protected final Map < Class < ? > , URI > searchJar ( Class < ? > clazz , URI location ) { Map < Class < ? > , URI > ret = new HashMap <> ( ) ; try { JarURLConnection conn = ( JarURLConnection ) location . toURL ( ) . openConnection ( ) ; JarFile jarFile = conn . getJarFile ( ) ; for ( Enumeration < JarEntry > e = jarFile . entries ( ) ; e . hasMoreElements ( ) ; ) { JarEntry entry = e . nextElement ( ) ; String entryname = entry . getName ( ) ; if ( this . processed . contains ( entryname ) ) { continue ; } this . processed . add ( entryname ) ; if ( ! entry . isDirectory ( ) && entryname . endsWith ( ".class" ) ) { String classname = entryname . substring ( 0 , entryname . length ( ) - 6 ) ; if ( classname . startsWith ( "/" ) ) { classname = classname . substring ( 1 ) ; } classname = classname . replace ( ' ' , ' ' ) ; if ( ! StringUtils . startsWithAny ( classname , this . excludedNames ) ) { try { Class < ? > c = Class . forName ( classname ) ; if ( clazz . isAssignableFrom ( c ) && ! clazz . getName ( ) . equals ( classname ) ) { ret . put ( c , location ) ; } } catch ( Exception exception ) { errors . add ( exception ) ; } catch ( Error error ) { errors . add ( error ) ; } } } } } catch ( IOException ignore ) { errors . add ( ignore ) ; } return ret ; }
Returns all known subclasses found in a given location
@param clazz class name to look for
@param location a URI location for return map
@return a map with found classes, empty if none found
Returns all known subclasses found in a given location