OpenNMS API 1.2.3

org.opennms.core.concurrent
Class VMTaskFiber

java.lang.Object
  extended byorg.opennms.core.concurrent.VMTaskFiber
All Implemented Interfaces:
Fiber, java.lang.Runnable

public class VMTaskFiber
extends java.lang.Object
implements Fiber, java.lang.Runnable

Author:
Brian Weaver , OpenNMS

Field Summary
private  java.lang.ClassLoader m_classLoader
          The class loader used to resolve classes for the thread group.
private  java.lang.Class m_entryClass
          The entry class.
private  java.lang.reflect.Method m_entryMethod
          The entry method.
private  int m_fiberStatus
          The fiber's status.
private  java.lang.String[] m_mainArgs
          The entry arguments.
private  java.lang.String m_taskName
          The name of the VM task.
private  java.lang.ThreadGroup m_thrGroup
          The thread group for the task.
private static java.lang.String MAIN_METHOD_NAME
          The name of the entry method.
private static java.lang.String[] MAIN_PARAMETER_TYPES
          The list of classes that are passed as entry arguments.
private static java.lang.String MAIN_RETURN_TYPE
          The return type for the entry method.
private static java.lang.String THREADGROUP_NAME_PREFIX
          The name prefixed to the task name to form the name for the thread group.
 
Fields inherited from interface org.opennms.core.fiber.Fiber
RUNNING, START_PENDING, STARTING, STATUS_NAMES, STOP_PENDING, STOPPED
 
Constructor Summary
VMTaskFiber(java.lang.String taskName, java.lang.String entryClassName, java.lang.String[] entryArguments, java.net.URL[] searchPaths)
          Constructs a new Virtual Macine Task Fiber.
 
Method Summary
private static java.lang.reflect.Method findMain(java.lang.Class c)
           This method attempts to find the method with the signature public static void main(String[]) if it is part of the passed class.
 java.lang.String getName()
          Returns the name for the virtual machine task.
 int getStatus()
          Returns the current status of the fiber.
 void run()
          This method invokes the entry method on the main class.
 void start()
          Starts the current fiber running.
 void stop()
          Stops the current fiber.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAIN_METHOD_NAME

private static final java.lang.String MAIN_METHOD_NAME
The name of the entry method. This is the same as it is for the JVM, which is main.

See Also:
Constant Field Values

MAIN_PARAMETER_TYPES

private static final java.lang.String[] MAIN_PARAMETER_TYPES
The list of classes that are passed as entry arguments.


MAIN_RETURN_TYPE

private static final java.lang.String MAIN_RETURN_TYPE
The return type for the entry method.

See Also:
Constant Field Values

THREADGROUP_NAME_PREFIX

private static final java.lang.String THREADGROUP_NAME_PREFIX
The name prefixed to the task name to form the name for the thread group.

See Also:
Constant Field Values

m_taskName

private java.lang.String m_taskName
The name of the VM task.


m_thrGroup

private java.lang.ThreadGroup m_thrGroup
The thread group for the task.


m_classLoader

private java.lang.ClassLoader m_classLoader
The class loader used to resolve classes for the thread group.


m_entryClass

private java.lang.Class m_entryClass
The entry class.


m_entryMethod

private java.lang.reflect.Method m_entryMethod
The entry method.


m_mainArgs

private java.lang.String[] m_mainArgs
The entry arguments.


m_fiberStatus

private int m_fiberStatus
The fiber's status.

Constructor Detail

VMTaskFiber

public VMTaskFiber(java.lang.String taskName,
                   java.lang.String entryClassName,
                   java.lang.String[] entryArguments,
                   java.net.URL[] searchPaths)
            throws java.lang.ClassNotFoundException,
                   java.lang.NoSuchMethodException
Constructs a new Virtual Macine Task Fiber. The task has a name and is passed all the information to invoke the class' main method. When the class is loaded it is allocated a new class loader used to locate all of it's resources.

Parameters:
taskName - The name of the task
entryClassName - The name of the entry class.
entryArguments - The String array passed to main.
searchPaths - The URL's used to locate resources and classes.
Throws:
java.lang.ClassNotFoundException - Thrown if the entry class is not found.
java.lang.NoSuchMethodException - Thrown if the main is not found on the entry class.
See Also:
URLClassLoader
Method Detail

findMain

private static java.lang.reflect.Method findMain(java.lang.Class c)

This method attempts to find the method with the signature public static void main(String[]) if it is part of the passed class. The first matching method is returned to the caller.

Parameters:
c - The class to search for the main method.
Returns:
The matching method if one is found. If one is not found then a null is returned.

run

public void run()
This method invokes the entry method on the main class. The method is called after the internal thread starts up, and returns when the entry method's thread exits.

Specified by:
run in interface java.lang.Runnable

start

public void start()
Starts the current fiber running.

Specified by:
start in interface Fiber

stop

public void stop()
Stops the current fiber. Since the JVM does not provide way to kill threads, the thread group is interrupted and the status is set to STOP_PENDING. When the main thread exits then the service is considered stopped!

Specified by:
stop in interface Fiber

getStatus

public int getStatus()
Returns the current status of the fiber.

Specified by:
getStatus in interface Fiber
Returns:
The current status of the fiber.

getName

public java.lang.String getName()
Returns the name for the virtual machine task.

Specified by:
getName in interface Fiber
Returns:
The VM Task's name.

OpenNMS API 1.2.3

Generated by eevans on May 29 2005 2015.