Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.mule.util.scan
Class ClasspathScanner

    java.lang.Object
      org.mule.util.scan.ClasspathScanner

    public class ClasspathScanner

extends Object

This class can be used to scan the classpath for classtypes (or interfaces they implement) or for annotations on the classpath. The type of scanner used depends on the class type passed in. There are currently 3 types of scanner;

- `InterfaceClassScanner` - will search for all class that are assignable to the interface provided
- `ImplementationClassScanner` - will search for all classes that extend a base type
- `AnnotationsScanner` - will searhc for classes with specific annotations, this can also seach for meta annotations

This scanner uses ASM to search class byte code rather than the classes themselves making orders of magnitude better performance and uses a lot less memory. ASM seems to be the fasted of the byte code manipulation libraries i.e. JavaAssist or BCEL Note that the scanner will not scan inner or anonymous classes.

Field Summary
`static int` | `DEFAULT_FLAGS`
`static int` | `INCLUDE_ABSTRACT`
`static int` | `INCLUDE_ANONYMOUS`
`static int` | `INCLUDE_INNER`
`static int` | `INCLUDE_INTERFACE`
`protected Log` | `logger` logger used by this class

Constructor Summary
`ClasspathScanner(ClassLoader classLoader, String... basepaths)`
`ClasspathScanner(String... basepaths)`

Method Summary
`protected void` | `addClassToSet(Class c, Set<Class> set, int flags)`
`protected ClassScanner` | `getScanner(Class clazz)` Works out the correct scanner based on the class passed in Note that these could be better architected by breaking out filters into strategy objects, but for now this suits my needs
`protected boolean` | `hasFlag(int flags, int flag)`
`protected Class` | `loadClass(String name)`
`protected Set<Class>` | `processFileUrl(URL url, String basepath, Class clazz, int flags)`
`protected Set<Class>` | `processJarUrl(URL url, String basepath, Class clazz, int flags)`
`Set<Class>` | `scanFor(Class clazz)`
`Set<Class>` | `scanFor(Class clazz, int flags)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### INCLUDE_ABSTRACT

    public static final int INCLUDE_ABSTRACT

See Also:
  Constant Field Values

### INCLUDE_INTERFACE

    public static final int INCLUDE_INTERFACE

See Also:
  Constant Field Values

### INCLUDE_INNER

    public static final int INCLUDE_INNER

See Also:
  Constant Field Values

### INCLUDE_ANONYMOUS

    public static final int INCLUDE_ANONYMOUS

See Also:
  Constant Field Values

### DEFAULT_FLAGS

    public static final int DEFAULT_FLAGS

See Also:
  Constant Field Values

### logger

    protected final transient Log logger

  logger used by this class

Constructor Detail

### ClasspathScanner

    public ClasspathScanner(String... basepaths)

### ClasspathScanner

    public ClasspathScanner(ClassLoader classLoader,
                            String... basepaths)

Method Detail

### scanFor

    public Set<Class> scanFor(Class clazz)
                       throws IOException

  Throws:
    `IOException`

### scanFor

    public Set<Class> scanFor(Class clazz,
                              int flags)
                       throws IOException

  Throws:
    `IOException`

### processJarUrl

    protected Set<Class> processJarUrl(URL url,
                                       String basepath,
                                       Class clazz,
                                       int flags)
                                throws IOException

  Throws:
    `IOException`

### hasFlag

    protected boolean hasFlag(int flags,
                              int flag)

### processFileUrl

    protected Set<Class> processFileUrl(URL url,
                                        String basepath,
                                        Class clazz,
                                        int flags)
                                 throws IOException

  Throws:
    `IOException`

### addClassToSet

    protected void addClassToSet(Class c,
                                 Set<Class> set,
                                 int flags)

### loadClass

    protected Class loadClass(String name)

### getScanner

    protected ClassScanner getScanner(Class clazz)

  Works out the correct scanner based on the class passed in

  Note that these could be better architected by breaking out filters into strategy objects, but for now this suits my needs

  Parameters:
    `clazz` - the type to scan for
  Returns:
    a scanner suitable for handling the type passed in
  See Also:
    `AnnotationsScanner`, `InterfaceClassScanner`, `ImplementationClassScanner`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2010 MuleSoft, Inc.. All Rights Reserved.