php.java.bridge
Class Util

java.lang.Object
  extended by php.java.bridge.Util

public final class Util
extends java.lang.Object

Miscellaneous functions.

Author:
jostb

Nested Class Summary
static class Util.HeaderParser
          A procedure class which can be used to capture the HTTP header strings.
static class Util.Logger
          Only for internal use.
static class Util.Process
          Starts a CGI process and returns the process handle.
static class Util.ProcessWithErrorHandler
          Starts a CGI process with an error handler attached and returns the process handle.
static class Util.Thread
          Convenience daemon thread class
 
Field Summary
static java.lang.String ASCII
          ASCII encoding
static int BACKLOG
          Backlog for TCP and unix domain connections.
static int BUF_SIZE
          The default buffer size
static java.util.Map COMMON_ENVIRONMENT
          A map containing common environment values for JDK <= 1.4: "PATH", "LD_LIBRARY_PATH", "LD_ASSUME_KERNEL", "USER", "TMP", "TEMP", "HOME", "HOMEPATH", "LANG", "TZ", "OS" They can be set with e.g.: java -DPATH="$PATH" -DHOME="$HOME" -jar JavaBridge.jar or java -DPATH="%PATH%" -jar JavaBridge.jar.
static java.lang.String[] DEFAULT_CGI_LOCATIONS
          The default CGI locations: "/usr/bin/php-cgi", "c:/php/php-cgi.exe
static java.lang.String DEFAULT_ENCODING
          DEFAULT currently UTF-8, will be changed when most OS support and use UTF-16.
static java.lang.String[] DEFAULT_EXT_DIRS
          The default extension directories.
static Util.HeaderParser DEFAULT_HEADER_PARSER
          The default CGI header parser.
static java.lang.String DEFAULT_LOG_FILE
          The default log file.
static int DEFAULT_LOG_LEVEL
          The default log level, java.log_level from php.ini overrides.
static boolean EXT_JAVA_COMPATIBILITY
          Only for internal use
static java.lang.String EXTENSION_NAME
          The name of the extension, usually "JavaBridge" or "MonoBridge"
static java.io.File HOME_DIR
          Only for internal use
static boolean IS_MONO
          Only for internal use
static java.lang.String JAVABRIDGE_BASE
          The base directory of the PHP/Java Bridge.
static java.lang.String JAVABRIDGE_LIB
          The library directory of the PHP/Java Bridge.
static boolean JAVABRIDGE_PROMISCUOUS
          Set to true, if the Java VM has been started with -Dphp.java.bridge.promiscuous=true;
static int logLevel
          The loglevel:
0: log off
1: log fatal
2: log messages/exceptions
3: log verbose
4: log debug
5: log method invocations
static java.lang.String osArch
          Only for internal use
static java.lang.String osName
          Only for internal use
static java.lang.String PHP_EXEC
          Only for internal use
static java.lang.String TCP_SOCKETNAME
          The TCP socket name.
static java.lang.String THREAD_POOL_MAX_SIZE
          The max. number of threads in the thread pool.
static java.lang.String UTF8
          UTF8 encoding
static java.lang.String VERSION
          Only for internal use
static java.lang.String VM_NAME
          The name of the VM, for example "1.4.2@http://java.sun.com/" or "1.4.2@http://gcc.gnu.org/java/".
 
Method Summary
static void appendArgs(java.lang.Object[] args, java.lang.Class[] params, java.lang.StringBuffer buf)
          Append function arguments and their types to a StringBuffer
static void appendObject(java.lang.Object obj, java.lang.StringBuffer buf)
          Append an object to a StringBuffer
static void appendParam(java.lang.Class c, java.lang.StringBuffer buf)
          Append a function parameter to a StringBuffer
static void appendParam(java.lang.Object obj, java.lang.StringBuffer buf)
          Append a function parameter to a StringBuffer
static void appendShortObject(java.lang.Object obj, java.lang.StringBuffer buf)
          Append a parameter object to a StringBuffer
static void appendTrace(java.lang.Throwable throwable, java.lang.String trace, java.lang.StringBuffer buf)
          Append a stack trace to buf.
static java.lang.String argsToString(java.lang.Object[] args, java.lang.Class[] params)
          Return function arguments and their types as a String
static java.lang.String[] checkCgiBinary(java.lang.StringBuffer buf)
          Checks if the cgi binary buf-<os.arch>-<os.name>.sh or buf-<os.arch>-<os.name>.exe or buf-<os.arch>-<os.name> exists.
static java.lang.String checkError(java.lang.String s)
          Returns s if s contains "PHP Fatal error:";
static ThreadPool createThreadPool(java.lang.String name)
           
static java.lang.Class getClass(java.lang.Object obj)
          Return the class or the object, if obj is already a class.
static java.lang.String getClassName(java.lang.Object obj)
          Return the class name
static java.lang.ClassLoader getContextClassLoader()
           
static java.lang.String getHostAddress()
          Returns the string "127.0.0.1".
static ILogger getLogger()
           
static java.lang.String getShortClassName(java.lang.Object obj)
          Return the short class name
static java.lang.String getShortName(java.lang.Class clazz)
          Return the short class name
static java.lang.String[] hashToStringArray(java.util.Map h)
          Create a string array from a hashtable.
static void logDebug(java.lang.String msg)
          Display a debug message
static void logError(java.lang.String msg)
          Display an error or an exception
static void logFatal(java.lang.String msg)
          Display a fatal error
static void logMessage(java.lang.String msg)
          Display a message
static void parseBody(byte[] buf, java.io.InputStream natIn, java.io.OutputStream out, Util.HeaderParser parser)
          Discards all header fields from a HTTP connection and write the body to the OutputStream
static void println(int level, java.lang.String msg)
          print a message on a given log level
static void printStackTrace(java.lang.Throwable t)
          Display a stack trace if logLevel >= 1
static void setDefaultFileLogger()
          Set the default logger.
static void setLogger(ILogger logger)
          Set a new logger.
static java.lang.String stringValueOf(java.lang.Object object)
          This procedure should be used whenever object may be a dynamic proxy: String.valueOf(object) returns null, if object is a proxy and returns null.
static byte[] toBytes(java.lang.String s)
          Locale-independent getBytes(), uses ASCII encoding
static void warn(java.lang.String msg)
          Display a warning if logLevel >= 1
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_CGI_LOCATIONS

public static final java.lang.String[] DEFAULT_CGI_LOCATIONS
The default CGI locations: "/usr/bin/php-cgi", "c:/php/php-cgi.exe


DEFAULT_HEADER_PARSER

public static final Util.HeaderParser DEFAULT_HEADER_PARSER
The default CGI header parser. The default implementation discards everything.


ASCII

public static final java.lang.String ASCII
ASCII encoding

See Also:
Constant Field Values

UTF8

public static final java.lang.String UTF8
UTF8 encoding

See Also:
Constant Field Values

DEFAULT_ENCODING

public static final java.lang.String DEFAULT_ENCODING
DEFAULT currently UTF-8, will be changed when most OS support and use UTF-16.

See Also:
Constant Field Values

BUF_SIZE

public static final int BUF_SIZE
The default buffer size

See Also:
Constant Field Values

DEFAULT_EXT_DIRS

public static final java.lang.String[] DEFAULT_EXT_DIRS
The default extension directories. If one of the directories "/usr/share/java/ext", "/usr/java/packages/lib/ext" contains java libraries, the bridge loads these libraries automatically. Useful if you have non-pure java libraries (=libraries which use the Java Native Interface to load native dll's or shared libraries).


TCP_SOCKETNAME

public static java.lang.String TCP_SOCKETNAME
The TCP socket name. Default is 9267.

See Also:
property php.java.bridge.tcp_socketname

EXTENSION_NAME

public static java.lang.String EXTENSION_NAME
The name of the extension, usually "JavaBridge" or "MonoBridge"


THREAD_POOL_MAX_SIZE

public static java.lang.String THREAD_POOL_MAX_SIZE
The max. number of threads in the thread pool. Default is 20.

See Also:
property php.java.bridge.threads

DEFAULT_LOG_LEVEL

public static int DEFAULT_LOG_LEVEL
The default log level, java.log_level from php.ini overrides. Default is 3, if started via java -jar JavaBridge.jar or 2, if started as a sub-process of Apache/IIS.

See Also:
property php.java.bridge.default_log_level

BACKLOG

public static final int BACKLOG
Backlog for TCP and unix domain connections.

See Also:
Constant Field Values

VM_NAME

public static java.lang.String VM_NAME
The name of the VM, for example "1.4.2@http://java.sun.com/" or "1.4.2@http://gcc.gnu.org/java/".


JAVABRIDGE_PROMISCUOUS

public static boolean JAVABRIDGE_PROMISCUOUS
Set to true, if the Java VM has been started with -Dphp.java.bridge.promiscuous=true;


DEFAULT_LOG_FILE

public static java.lang.String DEFAULT_LOG_FILE
The default log file. Default is stderr, if started as a sub-process of Apache/IIS or EXTENSION_NAME.log, if started via java -jar JavaBridge.jar.

See Also:
property php.java.bridge.default_log_file

JAVABRIDGE_BASE

public static java.lang.String JAVABRIDGE_BASE
The base directory of the PHP/Java Bridge. Usually /usr/php/modules/ or $HOME


JAVABRIDGE_LIB

public static java.lang.String JAVABRIDGE_LIB
The library directory of the PHP/Java Bridge. Usually /usr/php/modules/lib or $HOME/lib


VERSION

public static java.lang.String VERSION
Only for internal use


osArch

public static java.lang.String osArch
Only for internal use


osName

public static java.lang.String osName
Only for internal use


IS_MONO

public static boolean IS_MONO
Only for internal use


PHP_EXEC

public static java.lang.String PHP_EXEC
Only for internal use


EXT_JAVA_COMPATIBILITY

public static boolean EXT_JAVA_COMPATIBILITY
Only for internal use


HOME_DIR

public static java.io.File HOME_DIR
Only for internal use


logLevel

public static int logLevel
The loglevel:
0: log off
1: log fatal
2: log messages/exceptions
3: log verbose
4: log debug
5: log method invocations


COMMON_ENVIRONMENT

public static final java.util.Map COMMON_ENVIRONMENT
A map containing common environment values for JDK <= 1.4: "PATH", "LD_LIBRARY_PATH", "LD_ASSUME_KERNEL", "USER", "TMP", "TEMP", "HOME", "HOMEPATH", "LANG", "TZ", "OS" They can be set with e.g.: java -DPATH="$PATH" -DHOME="$HOME" -jar JavaBridge.jar or java -DPATH="%PATH%" -jar JavaBridge.jar.

Method Detail

println

public static void println(int level,
                           java.lang.String msg)
print a message on a given log level

Parameters:
level - The log level
msg - The message

warn

public static void warn(java.lang.String msg)
Display a warning if logLevel >= 1

Parameters:
msg - The warn message

printStackTrace

public static void printStackTrace(java.lang.Throwable t)
Display a stack trace if logLevel >= 1

Parameters:
t - The Throwable

logDebug

public static void logDebug(java.lang.String msg)
Display a debug message

Parameters:
msg - The message

logFatal

public static void logFatal(java.lang.String msg)
Display a fatal error

Parameters:
msg - The error

logError

public static void logError(java.lang.String msg)
Display an error or an exception

Parameters:
msg - The error or the exception

logMessage

public static void logMessage(java.lang.String msg)
Display a message

Parameters:
msg - The message

getClassName

public static java.lang.String getClassName(java.lang.Object obj)
Return the class name

Parameters:
obj - The object
Returns:
The class name

getShortClassName

public static java.lang.String getShortClassName(java.lang.Object obj)
Return the short class name

Parameters:
obj - The object
Returns:
The class name

getShortName

public static java.lang.String getShortName(java.lang.Class clazz)
Return the short class name

Parameters:
clazz - The class
Returns:
The class name

getClass

public static java.lang.Class getClass(java.lang.Object obj)
Return the class or the object, if obj is already a class.

Parameters:
obj - The object
Returns:
Either obj or the class of obj.

appendObject

public static void appendObject(java.lang.Object obj,
                                java.lang.StringBuffer buf)
Append an object to a StringBuffer

Parameters:
obj - The object
buf - The StringBuffer

appendTrace

public static void appendTrace(java.lang.Throwable throwable,
                               java.lang.String trace,
                               java.lang.StringBuffer buf)
Append a stack trace to buf.

Parameters:
throwable - The throwable object
trace - The trace from PHP
buf - The current buffer.

appendShortObject

public static void appendShortObject(java.lang.Object obj,
                                     java.lang.StringBuffer buf)
Append a parameter object to a StringBuffer

Parameters:
obj - The object
buf - The StringBuffer

appendParam

public static void appendParam(java.lang.Class c,
                               java.lang.StringBuffer buf)
Append a function parameter to a StringBuffer

Parameters:
c - The parameter
buf - The StringBuffer

appendParam

public static void appendParam(java.lang.Object obj,
                               java.lang.StringBuffer buf)
Append a function parameter to a StringBuffer

Parameters:
obj - The parameter object
buf - The StringBuffer

argsToString

public static java.lang.String argsToString(java.lang.Object[] args,
                                            java.lang.Class[] params)
Return function arguments and their types as a String

Parameters:
args - The args
params - The associated types
Returns:
A new string

appendArgs

public static void appendArgs(java.lang.Object[] args,
                              java.lang.Class[] params,
                              java.lang.StringBuffer buf)
Append function arguments and their types to a StringBuffer

Parameters:
args - The args
params - The associated types
buf - The StringBuffer

toBytes

public static byte[] toBytes(java.lang.String s)
Locale-independent getBytes(), uses ASCII encoding

Parameters:
s - The String
Returns:
The ASCII encoded bytes

hashToStringArray

public static java.lang.String[] hashToStringArray(java.util.Map h)
                                            throws java.lang.NullPointerException
Create a string array from a hashtable.

Parameters:
h - The hashtable
Returns:
The String
Throws:
java.lang.NullPointerException

parseBody

public static void parseBody(byte[] buf,
                             java.io.InputStream natIn,
                             java.io.OutputStream out,
                             Util.HeaderParser parser)
                      throws java.io.UnsupportedEncodingException,
                             java.io.IOException
Discards all header fields from a HTTP connection and write the body to the OutputStream

Parameters:
buf - A buffer, for example new byte[BUF_SIZE]
natIn - The InputStream
out - The OutputStream
Throws:
java.io.UnsupportedEncodingException
java.io.IOException

setDefaultFileLogger

public static void setDefaultFileLogger()
Set the default logger.


setLogger

public static void setLogger(ILogger logger)
Set a new logger. Example:

public class MyServlet extends PhpJavaServlet {
  public static final String LOG_HOST="192.168.5.99";
  public void init(ServletConfig config) throws ServletException {
    super.init(config);
    Util.setLogger(new php.java.bridge.ChainsawLogger() {public void configure(String host, int port) throws Exception {super.configure(LOG_HOST, port);}});
  }
}

Parameters:
logger - The logger to set.

getLogger

public static ILogger getLogger()
Returns:
Returns the logger.

getHostAddress

public static java.lang.String getHostAddress()
Returns the string "127.0.0.1". If the system property "php.java.bridge.promiscuous" is "true", the real host address is returned.

Returns:
The host address as a string.

checkCgiBinary

public static java.lang.String[] checkCgiBinary(java.lang.StringBuffer buf)
Checks if the cgi binary buf-<os.arch>-<os.name>.sh or buf-<os.arch>-<os.name>.exe or buf-<os.arch>-<os.name> exists.

Parameters:
buf - The base name, e.g.: /opt/tomcat/webapps/JavaBridge/WEB-INF/cgi/php-cgi
Returns:
The full name or null.

checkError

public static java.lang.String checkError(java.lang.String s)
Returns s if s contains "PHP Fatal error:";

Parameters:
s - The error string
Returns:
The fatal error or null

getContextClassLoader

public static java.lang.ClassLoader getContextClassLoader()
Returns:
The thread context class loader.

stringValueOf

public static java.lang.String stringValueOf(java.lang.Object object)
This procedure should be used whenever object may be a dynamic proxy: String.valueOf(object) returns null, if object is a proxy and returns null.

Parameters:
object - The object or dynamic proxy

createThreadPool

public static ThreadPool createThreadPool(java.lang.String name)