You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2008/01/09 09:07:10 UTC

svn commit: r610301 - in /geronimo/yoko: branches/ sandbox/ sandbox/process-manager/ sandbox/process-manager/src/ sandbox/process-manager/src/main/ sandbox/process-manager/src/main/java/ sandbox/process-manager/src/main/java/org/ sandbox/process-manage...

Author: adc
Date: Wed Jan  9 00:07:08 2008
New Revision: 610301

URL: http://svn.apache.org/viewvc?rev=610301&view=rev
Log:
Yoko move

Added:
    geronimo/yoko/branches/
    geronimo/yoko/sandbox/
    geronimo/yoko/sandbox/process-manager/
    geronimo/yoko/sandbox/process-manager/pom.xml   (with props)
    geronimo/yoko/sandbox/process-manager/src/
    geronimo/yoko/sandbox/process-manager/src/main/
    geronimo/yoko/sandbox/process-manager/src/main/java/
    geronimo/yoko/sandbox/process-manager/src/main/java/org/
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java   (with props)
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java   (with props)
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java   (with props)
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java   (with props)
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java   (with props)
    geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java   (with props)
    geronimo/yoko/sandbox/process-manager/src/test/
    geronimo/yoko/sandbox/process-manager/src/test/java/
    geronimo/yoko/sandbox/process-manager/src/test/java/org/
    geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/
    geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/
    geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/
    geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java   (with props)
    geronimo/yoko/site/
    geronimo/yoko/site/pom.xml   (with props)
    geronimo/yoko/site/src/
    geronimo/yoko/site/src/site/
    geronimo/yoko/site/src/site/apt/
    geronimo/yoko/site/src/site/apt/format.apt
    geronimo/yoko/site/src/site/fml/
    geronimo/yoko/site/src/site/fml/faq.fml
    geronimo/yoko/site/src/site/site.xml   (with props)
    geronimo/yoko/site/src/site/xdoc/
    geronimo/yoko/site/src/site/xdoc/download.xml   (with props)
    geronimo/yoko/site/src/site/xdoc/index.xml   (with props)
    geronimo/yoko/site/src/site/xdoc/news.xml   (with props)
    geronimo/yoko/tags/

Added: geronimo/yoko/sandbox/process-manager/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/pom.xml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/pom.xml (added)
+++ geronimo/yoko/sandbox/process-manager/pom.xml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,54 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.yoko</groupId>
+  <artifactId>process-manager</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>Process Manager</name>
+  <url>http://maven.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>concurrent</groupId>
+      <artifactId>concurrent</artifactId>
+      <version>1.3.4</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>test-compile</phase>
+            <configuration>
+              <tasks>
+                <java classname="sun.rmi.rmic.Main" fork="true">
+                  <arg value="-d"/>
+                  <arg value="target/classes"/>
+                  <arg value="-classpath"/>
+                  <arg value="target/classes"/>
+                  <arg value="org.apache.yoko.processmanager.ProcessManager"/>
+                  <arg value="org.apache.yoko.processmanager.internal.ProcessAgentImpl"/>
+                  <classpath>
+                    <pathelement path="${java.home}/../lib/tools.jar"/>
+                  </classpath>
+                </java>
+              </tasks>
+            </configuration>
+                
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: geronimo/yoko/sandbox/process-manager/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/yoko/sandbox/process-manager/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,125 @@
+package org.apache.yoko.processmanager;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.rmi.RemoteException;
+import java.rmi.registry.Registry;
+import java.util.Properties;
+
+import org.apache.yoko.processmanager.internal.ProcessAgent;
+import org.apache.yoko.processmanager.internal.ProcessAgentImpl;
+import org.apache.yoko.processmanager.internal.Util;
+
+import EDU.oswego.cs.dl.util.concurrent.CountDown;
+
+public class JavaProcess {
+
+	private String name;
+	private Properties systemProperties;
+	private ProcessAgent processAgent;
+	private ProcessManager manager;
+	
+	CountDown processExited = new CountDown(1);
+	CountDown processStarted = new CountDown(1);
+	
+	public JavaProcess(String name, ProcessManager manager) {
+		this.name = name;
+		this.manager = manager;
+		manager.registerProcess(this);
+	}
+
+	/**
+	 * Sets the system properties for this process. Must be called before launch().
+	 * @param properties
+	 */
+	public void setSystemProperties(Properties properties) {
+		this.systemProperties = properties;
+	}
+	
+	/**
+	 * Starts the process. 
+	 *
+	 */
+	public void launch() {
+		launch(5000);
+	}
+	
+	public void launch(int timeoutMillis) {
+        final String[] javaArgs = {name, "localhost", 
+                Integer.toString(Registry.REGISTRY_PORT), manager.getName()};
+        if(systemProperties == null) {
+        	systemProperties = new Properties();
+        }
+        try {
+        	Process proc = Util.execJava(ProcessAgentImpl.class.getName(), systemProperties, javaArgs);
+            Util.redirectStream(proc.getInputStream(), System.out, name+":out");
+            Util.redirectStream(proc.getErrorStream(), System.err, name+":err");
+            waitForProcessStartup(timeoutMillis);
+        }
+        catch(IOException e) {
+        	throw new Error(e);
+        }
+		
+	}
+	
+	/**
+	 * Invokes a static method within the process. The static method cannot return a Throwable.
+	 * @param className
+	 * @param method
+	 * @param args
+	 * @return
+	 * @throws InvocationTargetException
+	 */
+	public Object invokeStatic(String className, String method, Object[] args) throws InvocationTargetException {
+		Object result = null;
+		try {
+		result = processAgent.invokeStatic(className, method, args);
+		}
+		catch(Exception e) {
+			throw new Error(e);
+		}
+
+		if(result instanceof Throwable) {
+			if(result instanceof InvocationTargetException) {
+				throw (InvocationTargetException) result;
+			}	
+			throw new Error((Throwable) result);
+		}		
+		return result;
+	}
+	
+	protected void setAgent(ProcessAgent agent) {
+		this.processAgent = agent;
+	}
+	
+	public String getName() { return name; }
+	
+	/**
+	 * Terminates the process with the given exit code. Waits for the process to terminate.
+	 * @param exitCode
+	 */
+	public void exit(int exitCode) { 
+		try {
+			processAgent.exit(exitCode);
+		}
+		catch(RemoteException e) {
+			throw new Error(e);
+		}
+		try {
+			processExited.acquire();
+		} catch (InterruptedException e) {
+			throw new Error(e);
+		}
+	}
+	
+	private void waitForProcessStartup(int maxWaitMillis) {
+		try {
+			processStarted.acquire();
+		} catch (InterruptedException e) {
+			throw new Error(e);
+		}
+		if(processAgent == null) {
+			throw new Error("Failed to start client process");
+		}
+	}
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/JavaProcess.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,67 @@
+package org.apache.yoko.processmanager;
+
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.yoko.processmanager.internal.ProcessAgent;
+import org.apache.yoko.processmanager.internal.ProcessManagerRemoteIF;
+
+public class ProcessManager extends UnicastRemoteObject implements ProcessManagerRemoteIF {
+	
+	private Registry rmiRegistry;
+	private Map javaProcesses;
+	private String name = "ProcessManager";
+	public ProcessManager(int registryPort) throws RemoteException {
+		javaProcesses = new HashMap();
+		try {
+			rmiRegistry = LocateRegistry.createRegistry(registryPort);
+		} catch (RemoteException e) {
+			try {
+				rmiRegistry = LocateRegistry.getRegistry(registryPort);
+			}
+			catch(RemoteException e2) {
+				throw new Error(e2);
+			}
+		}
+		try {
+			rmiRegistry.rebind(name, this);
+		} catch (Throwable e) {
+			e.printStackTrace();
+			throw new Error(e);
+		}
+	}
+	
+	public void registerProcess(JavaProcess process) {
+		javaProcesses.put(process.getName(), process);
+	}
+	
+	public void agentReady(ProcessAgent agent) throws RemoteException {
+		JavaProcess process = (JavaProcess) javaProcesses.get(agent.getName());
+		if(process == null) {
+			throw new Error("Unexpected: agentReady from unregistered agent");
+		}
+		else {
+			process.setAgent(agent);
+			process.processStarted.release();
+		}
+	}
+	
+	public String getName() { return name; }
+
+	public void agentExited(ProcessAgent agent) throws RemoteException {
+		JavaProcess process = (JavaProcess) javaProcesses.get(agent.getName());
+		if(process == null) {
+			throw new Error("Unexpected: agentExited from unregistered agent");
+		}
+		else {
+			process.setAgent(agent);
+			process.processExited.release();
+		}
+	}
+	
+	public void isAlive() {}
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/ProcessManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,10 @@
+package org.apache.yoko.processmanager.internal;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+public interface ProcessAgent extends Remote {
+	public String getName() throws RemoteException;
+	public Object invokeStatic(String className, String methodName, Object[] args) throws RemoteException;
+	public void exit(int exitCode) throws RemoteException;
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgent.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,91 @@
+package org.apache.yoko.processmanager.internal;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
+
+import EDU.oswego.cs.dl.util.concurrent.CountDown;
+
+public class ProcessAgentImpl extends UnicastRemoteObject implements ProcessAgent {
+
+	private String name;
+	private ProcessManagerRemoteIF processManager;
+	protected ProcessAgentImpl() throws RemoteException {
+		super();
+	}
+	
+	private CountDown shutdownCountDown = new CountDown(1);
+	private int exitCode = 0;
+	public String getName() { return name; }
+	private void init(String name, ProcessManagerRemoteIF processManager) {
+		this.name = name;
+		this.processManager = processManager;
+		try {
+			processManager.agentReady(this);
+		} catch (RemoteException e) {
+			e.printStackTrace();
+			System.exit(1);
+		}
+	}
+
+    /** this is the main routine run in test agents */
+    public static void main(String[] args) throws Exception {
+        String agentName = args[0];
+        String registryHost = args[1];
+        int registryPort = Integer.parseInt(args[2]);
+        String processManagerName = args[3];
+        
+        Registry reg = LocateRegistry.getRegistry(registryHost, registryPort);
+        
+        ProcessAgentImpl agent = new ProcessAgentImpl();
+        ProcessManagerRemoteIF manager = (ProcessManagerRemoteIF) reg.lookup(processManagerName);
+        agent.init(agentName,manager);
+        agent.waitForShutdown();
+        agent.processManager.agentExited(agent);
+        System.exit(agent.exitCode);
+    }
+
+	private void waitForShutdown() {
+		try {
+			while(true) {
+				if(shutdownCountDown.attempt(1000)) {
+					break;
+				}
+				// Throw RemoteException if processManager is gone.
+				processManager.isAlive();
+			}
+		} 
+		catch(RemoteException e) {
+			// Parent process died, exit thread.
+			System.exit(1);
+		}
+		catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public void exit(int exitCode) throws RemoteException {
+		this.exitCode = exitCode;
+		shutdownCountDown.release();
+	}
+	public Object invokeStatic(String className, String methodName, Object[] args) {
+		try {
+			Class[] parameters = new Class[args.length];
+			for(int i = 0; i < parameters.length; i++) {
+				parameters[i] = args[i].getClass();
+			}
+			Class cl = Class.forName(className);
+			Method method = cl.getMethod(methodName, parameters);
+			return method.invoke(null, args);			
+		}
+		catch(InvocationTargetException e) {
+			return e;
+		}
+		catch(Exception e) {
+			throw new Error(e);
+		}
+	}
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,10 @@
+package org.apache.yoko.processmanager.internal;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+public interface ProcessManagerRemoteIF extends Remote {
+	void agentReady(ProcessAgent agent) throws RemoteException;
+	void isAlive() throws RemoteException;
+	void agentExited(ProcessAgent agent) throws RemoteException;
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/ProcessManagerRemoteIF.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,102 @@
+package org.apache.yoko.processmanager.internal;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Properties;
+
+public class Util {
+	// Forks a new java process.
+	public static Process execJava(String className, Properties props,
+			String[] javaArgs) throws IOException {
+		// Get path to java binary
+		File javaHome = new File(System.getProperty("java.home"));
+		File javaBin = new File(new File(javaHome, "bin"), "java");
+
+		// Get current class path
+		URLClassLoader cl = (URLClassLoader) Util.class.getClassLoader();
+		URL[] classPathUrls = cl.getURLs();
+
+		// Construct list of arguments
+		List binArgs = new ArrayList();
+
+		// First argument is the java binary to run
+		binArgs.add(javaBin.getPath());
+
+		// Add the classpath to argument list
+		binArgs.add("-classpath");
+		String classPath = ""
+				+ new File(classPathUrls[0].getPath().replaceAll("%20", " "));
+		for (int i = 1; i < classPathUrls.length; i++) {
+			classPath += File.pathSeparator
+					+ new File(classPathUrls[i].getPath()
+							.replaceAll("%20", " "));
+		}
+		classPath += "";
+		binArgs.add(classPath);
+
+		// Add properties to argument list
+		Enumeration en = props.keys();
+		while (en.hasMoreElements()) {
+			String key = (String) en.nextElement();
+			binArgs.add("-D" + key + "=" + props.getProperty(key));
+		}
+
+		// Add class containing main method to arg list
+		binArgs.add(className);
+
+		// Add java arguments
+		for (int i = 0; i < javaArgs.length; i++) {
+			binArgs.add(javaArgs[i]);
+		}
+
+		// Convert arg list to array
+		String[] argArray = new String[binArgs.size()];
+		for (int i = 0; i < argArray.length; i++) {
+			argArray[i] = (String) binArgs.get(i);
+		}
+
+		/*for (int i = 0; i < argArray.length; i++) {
+			System.out.print(argArray[i] + " ");
+		}
+		System.out.println(); */
+
+		// Fork process
+		return Runtime.getRuntime().exec(argArray);
+	}
+
+	public static void redirectStream(final InputStream in,
+			final OutputStream out, final String streamName) {
+		Thread stdoutTransferThread = new Thread() {
+			public void run() {
+				PrintWriter pw = new PrintWriter(new OutputStreamWriter(out),
+						true);
+				try {
+					BufferedReader reader = new BufferedReader(
+							new InputStreamReader(in));
+					String line;
+					while ((line = reader.readLine()) != null) {
+						pw.print("[");
+						pw.print(streamName);
+						pw.print("] ");
+						pw.println(line);
+					}
+				} catch (Throwable e) {
+					e.printStackTrace();
+					// throw new Error(e);
+				}
+			}
+		};
+		stdoutTransferThread.start();
+	}
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/main/java/org/apache/yoko/processmanager/internal/Util.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java (added)
+++ geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java Wed Jan  9 00:07:08 2008
@@ -0,0 +1,69 @@
+package org.apache.yoko.processmanager;
+
+import java.lang.reflect.InvocationTargetException;
+import java.rmi.registry.Registry;
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+public class ProcessManagerTest extends TestCase {
+	JavaProcess proc1, proc2;
+	ProcessManager processManager;
+	public void setUp() throws Exception {
+		processManager = new ProcessManager(Registry.REGISTRY_PORT);
+		proc1 = new JavaProcess("proc1", processManager);
+		proc2 = new JavaProcess("proc2", processManager);		
+	}
+	
+	public void testMultipleProcesses() {
+		proc1.launch();
+		proc2.launch();
+		proc1.exit(0);
+		proc2.exit(0);
+	}
+	
+	public void testInvokeStatic() throws Exception {
+		proc1.launch();
+		// Invoke a static method in proc1
+		Integer integer = (Integer) proc1.invokeStatic(this.getClass().getName(), "sampleStatic", new Object[] {"arg1", new Integer(2) });
+		assertTrue(integer.intValue() == 3);
+		proc1.exit(0);
+		
+	}
+	public void testSystemProperties() throws Exception {
+		Properties props = new Properties();
+		props.put("TestProperty", "TestValue");
+		proc1.setSystemProperties(props);
+		proc1.launch();
+		// Verify that the system property is available in proc1.
+		Boolean propAvailable = (Boolean) proc1.invokeStatic(getClass().getName(), "testPropertyAvailable", new Object[] {"TestProperty", "TestValue" });
+		assertTrue(propAvailable.booleanValue());
+		proc1.exit(0);
+	}
+	
+	public void testFailing() throws Exception {
+		proc1.launch();
+		try {
+			proc1.invokeStatic(this.getClass().getName(), "sampleStaticFail", new Object[0]);
+			fail("expected sampleStaticFail to throw an InvocationTargetException");
+		}
+		catch(InvocationTargetException e) {}
+	}
+	
+	public static Boolean testPropertyAvailable(String property, String value) {
+		return new Boolean(value.equals(System.getProperty(property)));
+	}
+	
+	public static Integer sampleStatic(String arg1, Integer arg2) {
+		assertTrue(arg1.equals("arg1"));
+		assertTrue(arg2.intValue() == 2);
+		return new Integer(3);
+	}
+	
+	public static void sampleStaticFail() {
+		throw new Error("This test fails");
+	}
+	
+	public void tearDown() {
+	}
+}

Propchange: geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Date Revision Id Author"

Propchange: geronimo/yoko/sandbox/process-manager/src/test/java/org/apache/yoko/processmanager/ProcessManagerTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/yoko/site/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/pom.xml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/pom.xml (added)
+++ geronimo/yoko/site/pom.xml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,93 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.yoko</groupId>
+  <artifactId>distribution</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <name>Apache Yoko</name>
+  <url>http://incubator.apache.org/yoko</url>
+    <organization>
+        <name>Apache Software Foundation</name>
+        <url>http://www.apache.org/</url>
+    </organization>
+    <inceptionYear>2006</inceptionYear>
+    
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/yoko/trunk</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/yoko/trunk</developerConnection>
+        <url>http://svn.apache.org/repos/asf/incubator/yoko/trunk</url>
+    </scm>
+    <issueManagement>
+        <url> https://issues.apache.org/jira/browse/YOKO</url>
+    </issueManagement>    
+    <mailingLists>
+
+        <mailingList>
+            <name>Developer Mailing List</name>
+            <subscribe>yoko-dev-subscribe@incubator.apache.org</subscribe>
+            <unsubscribe>yoko-dev-unsubscribe@incubator.apache.org</unsubscribe>
+            <post>yoko-dev@incubator.apache.org</post>
+            <archive>http://www.mail-archive.com/yoko-dev@incubator.apache.org/</archive>
+        </mailingList>
+        <mailingList>
+            <name>Commit Mailing List</name>
+            <subscribe>yoko-commits-subscribe@incubator.apache.org</subscribe>
+            <unsubscribe>yoko-commits-unsubscribe@incubator.apache.org</unsubscribe>
+            <post>yoko-commits@incubator.apache.org</post>
+            <archive>http://www.mail-archive.com/yoko-commits@incubator.apache.org/</archive>
+        </mailingList>
+        <mailingList>
+            <name>Users Mailing List</name>
+            <subscribe>yoko-users-subscribe@incubator.apache.org</subscribe>
+            <unsubscribe>yoko-users-unsubscribe@incubator.apache.org</unsubscribe>
+            <post>yoko-users@incubator.apache.org</post>
+            <archive>http://www.mail-archive.com/yoko-users@incubator.apache.org/</archive>
+        </mailingList>        
+    </mailingLists>
+    <licenses>
+        <license>
+            <name>APACHE LICENSE Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+  
+  <distributionManagement>
+    <site>
+      <id>website</id>
+      <url>scp://minotaur.apache.org/www/incubator.apache.org/yoko/</url>
+    </site>
+  </distributionManagement>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-site-plugin</artifactId>
+        <configuration>
+          <locales>en</locales>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+    
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+            <reportSets>
+                <reportSet>
+                    <reports>
+                        <report>dependencies</report>
+                        <report>project-team</report>
+                        <report>mailing-list</report>
+                        <!-- report>cim</report -->
+                        <report>issue-tracking</report>
+                        <report>license</report>
+                        <report>scm</report>
+                    </reports>
+                </reportSet>
+            </reportSets>        
+      </plugin>
+    </plugins>
+  </reporting>  
+</project>

Propchange: geronimo/yoko/site/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/site/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/yoko/site/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/yoko/site/src/site/apt/format.apt
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/src/site/apt/format.apt?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/src/site/apt/format.apt (added)
+++ geronimo/yoko/site/src/site/apt/format.apt Wed Jan  9 00:07:08 2008
@@ -0,0 +1,596 @@
+
+The APT format
+~~~~~~~~~~~~~~
+
+  In the following section, boxes containing text in typewriter-like font are
+  examples of APT source.
+
+* Document structure
+~~~~~~~~~~~~~~~~~~~~
+
+  A short APT document is contained in a single text file. A longer document
+  may be contained in a ordered list of text files. For instance, first text
+  file contains section 1, second text file contains section 2, and so on.
+
+      [Note:] Splitting the APT document in several text files on a section
+              boundary is not mandatory. The split may occur anywhere.
+              However doing so is recommended because a text file containing a
+              section is by itself a valid APT document.
+
+  A file contains a sequence of paragraphs and ``displays'' (non paragraphs
+  such as tables) separated by open lines.
+
+  A paragraph is simply a sequence of consecutive text lines.
+
++------------------------------------------------------------------------+
+  First line of first paragraph.
+  Second line of first paragraph.
+  Third line of first paragraph.
+  
+  Line 1 of paragraph 2 (separated from first paragraph by an open line).
+  Line 2 of paragraph 2.
++------------------------------------------------------------------------+
+
+  The indentation of the first line of a paragraph is the main method used by
+  an APT processor to recognize the type of the paragraph. For example, a
+  section title must not be indented at all.
+
+  A ``plain'' paragraph must be indented by a certain amount of space. For
+  example, a plain paragraph which is not contained in a list may be indented
+  by two spaces.
+
++-------------------------------------------------+
+My section title (not indented).
+
+  My paragraph first line (indented by 2 spaces).
++-------------------------------------------------+
+
+  Indentation is not rigid. Any amount of space will do. You don't even need
+  to use a consistent indentation all over your document. What really matters
+  for an APT processor is whether the paragraph is not indented at all or,
+  when inside a list, whether a paragraph is more or less indented than the
+  first item of the list (more about this later).
+
++-------------------------------------------------------+
+    First paragraph has its first line indented by four
+spaces. Then the author did even bother to indent the
+other lines of the paragraph.
+
+  Second paragraph contains several lines which are all 
+  indented by two spaces. This style is much nicer than 
+  the one used for the previous paragraph.
++-------------------------------------------------------+
+
+  Note that tabs are expanded with a tab width set to 8.
+
+* Document elements
+~~~~~~~~~~~~~~~~~~~
+
+** Block level elements
+~~~~~~~~~~~~~~~~~~~~~~~
+
+*** Title
+~~~~~~~~~~
+
+  A title is optional. If used, it must appear as the first block of the
+  document.
+
++----------------------------------------------------------------------------+
+				    ------
+				    Title
+				    ------
+				    Author
+				    ------
+				     Date
++----------------------------------------------------------------------------+
+
+  A title block is indented (centering it is nicer). It begins with a line
+  containing at least 3 dashes (<<<--->>>).
+
+  After the first <<<--->>> line, one or several consecutive lines of text
+  (implicit line break after each line) specify the title of the document.
+
+  This text may immediately be followed by another <<<--->>> line and one or
+  several consecutive lines of text which specifies the author of the
+  document.
+
+  The author sub-block may optionaly be followed by a date sub-block using the
+  same syntax.
+
+  The following example is used for a document with an title and a date but
+  with no declared author.
+
++----------------------------------------------------------------------------+
+				    ------
+				    Title
+				    ------
+				    ------
+				     Date
+				    ------
++----------------------------------------------------------------------------+
+
+  The last line is ignored. It is just there to make the block nicer.
+
+*** Paragraph
+~~~~~~~~~~~~~
+
+  Paragraphs other than the title block may appear before the first section.
+
++----------------------+
+  Paragraph 1, line 1.
+  Paragraph 1, line 2.
+
+  Paragraph 2, line 1.
+  Paragraph 2, line 2.
++----------------------+
+
+  Paragraphs are indented. They have already been described in the {{document
+  structure}} section.
+
+*** Section
+~~~~~~~~~~~
+
+  Sections are created by inserting section titles into the document. Simple
+  documents need not contain sections.
+
++-----------------------------------+
+Section title
+
+* Sub-section title
+
+** Sub-sub-section title
+
+*** Sub-sub-sub-section title
+
+**** Sub-sub-sub-sub-section title
++-----------------------------------+
+
+  Section titles are not indented. A sub-section title begins with one
+  asterisk (<<<*>>>), a sub-sub-section title begins with two asterisks
+  (<<<**>>>), and so forth up to four sub-section levels.
+
+*** List
+~~~~~~~~
+
++---------------------------------------+
+      * List item 1.
+
+      * List item 2.
+
+	Paragraph contained in list item 2.
+
+	    * Sub-list item 1.
+
+	    * Sub-list item 2.
+
+      * List item 3.
++---------------------------------------+
+
+  List items are indented and begin with a asterisk (<<<*>>>). 
+
+  Plain paragraphs more indented than the first list item are nested in that
+  list. Displays such as tables (not indented) are always nested in the
+  current list.
+
+  To nest a list inside a list, indent its first item more than its parent
+  list. To end a list, add a paragraph or list item less indented than the
+  current list.
+
+  Section titles always end a list. Displays cannot end a list but the
+  <<<[]>>> pseudo-element may be used to force the end of a list.
+
++------------------------------------+
+      * List item 3.
+        Force end of list:
+
+      []
+
+--------------------------------------------
+Verbatim text not contained in list item 3
+--------------------------------------------
++------------------------------------+
+
+  In the previous example, without the <<<[]>>>, the verbatim text (not
+  indented as all displays) would have been contained in list item 3.
+
+  A single <<<[]>>> may be used to end several nested lists at the same
+  time. The indentation of <<<[]>>> may be used to specify exactly which
+  lists should be ended. Example:
+
++------------------------------------+
+      * List item 1.
+
+      * List item 2.
+
+	    * Sub-list item 1.
+
+	    * Sub-list item 2.
+
+	    []
+
+-------------------------------------------------------------------
+Verbatim text contained in list item 2, but not in sub-list item 2
+-------------------------------------------------------------------
++------------------------------------+
+
+  There are three kind of lists, the bulleted lists we have already described,
+  the numbered lists and the definition lists.
+
++-----------------------------------------+
+      [[1]] Numbered item 1.
+
+                [[A]] Numbered item A.
+
+                [[B]] Numbered item B.
+
+      [[2]] Numbered item 2.
++-----------------------------------------+
+
+  A numbered list item begins with a label beetween two square brackets. The
+  label of the first item establishes the numbering scheme for the whole list:
+
+      [<<<[[1\]\]>>>] Decimal numbering: 1, 2, 3, 4, etc.
+
+      [<<<[[a\]\]>>>] Lower-alpha numbering: a, b, c, d, etc.
+
+      [<<<[[A\]\]>>>] Upper-alpha numbering: A, B, C, D, etc.
+
+      [<<<[[i\]\]>>>] Lower-roman numbering: i, ii, iii, iv, etc.
+
+      [<<<[[I\]\]>>>] Upper-roman numbering: I, II, III, IV, etc.
+
+  The labels of the items other than the first one are ignored. It is
+  recommended to take the time to type the correct label for each item in
+  order to keep the APT source document readable.
+
++-------------------------------------------+
+      [Defined term 1] of definition list 2.
+
+      [Defined term 2] of definition list 2.
++-------------------------------------------+
+
+  A definition list item begins with a defined term: text between square
+  brackets.
+
+*** Verbatim text
+~~~~~~~~~~~~~~~~~
+
++----------------------------------------+
+----------------------------------------
+Verbatim 
+	 text,
+		preformatted,
+				escaped.
+----------------------------------------
++----------------------------------------+
+
+  A verbatim block is not indented. It begins with a non indented line
+  containing at least 3 dashes (<<<--->>>). It ends with a similar line.
+
+  <<<+-->>> instead of <<<--->>> draws a box around verbatim text.
+
+  Like in HTML, verbatim text is preformatted. Unlike HTML, verbatim text is
+  escaped: inside a verbatim display, markup is not interpreted by the APT
+  processor.
+
+*** Figure
+~~~~~~~~~~
+
++---------------------------+
+[Figure name] Figure caption
++---------------------------+
+
+  A figure block is not indented. It begins with the figure name between
+  square brackets. The figure name is optionally followed by some text: the
+  figure caption.
+
+  The figure name is the pathname of the file containing the figure but
+  without an extension. Example: if your figure is contained in
+  <<</home/joe/docs/mylogo.jpeg>>>, the figure name is
+  <<</home/joe/docs/mylogo>>>.
+
+  If the figure name comes from a relative pathname (recommended practice)
+  rather than from an absolute pathname, this relative pathname is taken to be
+  relative to the directory of the current APT document (a la HTML)
+  rather than relative to the current working directory.
+
+  Why not leave the file extension in the figure name? This is better
+  explained by an example. You need to convert an APT document to PostScript
+  and your figure name is <<</home/joe/docs/mylogo>>>. A APT processor will
+  first try to load <<</home/joe/docs/mylogo.eps>>>. When the desired format
+  is not found, a APT processor tries to convert one of the existing
+  formats. In our example, the APT processor tries to convert
+  <<</home/joe/docs/mylogo.jpeg>>> to encapsulated PostScript.
+
+*** Table
+~~~~~~~~~
+
+  A table block is not indented. It begins with a non indented line containing
+  an asterisk and at least 2 dashes (<<<*-->>>). It ends with a
+  similar line.
+
+  The first line is not only used to recognize a table but also to specify
+  column justification. In the following example, 
+
+      * the second asterisk (<<<*>>>) is used to specify that column 1 is
+        centered,
+
+      * the plus sign (<<<+>>>) specifies that column 2 is left aligned, 
+
+      * the colon (<<<:>>>) specifies that column 3 is right aligned.
+
+      []
+
++---------------------------------------------+
+*----------*--------------+----------------:
+| Centered | Left-aligned | Right-aligned  |
+| cell 1,1 | cell 1,2     | cell 1,3       |
+*----------*--------------+----------------:
+| cell 2,1 | cell 2,2     | cell 2,3       |
+*----------*--------------+----------------:
+Table caption
++---------------------------------------------+
+
+  Rows are separated by a non indented line beginning with <<<*-->>>.
+
+  An optional table caption (non indented text) may immediately follow the
+  table.
+
+  Rows may contain single line or multiple line cells. Each line of cell text
+  is separated from the adjacent cell by the pipe character (<<<|>>>).
+  (<<<|>>> may be used in the cell text if quoted: <<<\\|>>>.)
+
+  The last <<<|>>> is only used to make the table nicer.  The first <<<|>>> is
+  not only used to make the table nicer, but also to specify that a grid is to
+  be drawn around table cells.
+
+  The following example shows a simple table with no grid and no caption.
+
++---------------+
+*-----*------*
+ cell | cell
+*-----*------*
+ cell | cell
+*-----*------*
++---------------+
+
+*** Horizontal rule
+~~~~~~~~~~~~~~~~~~~
+
++---------------------+
+=====================
++---------------------+
+
+  A non indented line containing at least 3 equal signs (<<<===>>>).
+
+*** Page break
+~~~~~~~~~~~~~~
+
++---+
+^L
++---+
+
+  A non indented line containing a single form feed character (Control-L).
+
+** Text level elements
+~~~~~~~~~~~~~~~~~~~~~~
+
+*** Font
+~~~~~~~~
+
++-----------------------------------------------------+
+  <Italic> font. <<Bold>> font. <<<Monospaced>>> font.
++-----------------------------------------------------+
+
+  Text between \< and > must be rendered in italic. Text between \<\< and >>
+  must be rendered in bold. Text between \<\<\< and >>> must be rendered using
+  a monospaced, typewriter-like font.
+
+  Font elements may appear anywhere except inside other font elements.
+
+  It is not recommended to use font elements inside titles, section titles,
+  links and defined terms because a APT processor automatically applies
+  appropriate font styles to these elements.
+
+*** Anchor and link
+~~~~~~~~~~~~~~~~~~~
+
++-----------------------------------------------------------------+
+  {Anchor}. Link to {{anchor}}. Link to {{http://www.pixware.fr}}. 
+  Link to {{{anchor}showing alternate text}}.
+  Link to {{{http://www.pixware.fr}Pixware home page}}.
++-----------------------------------------------------------------+
+
+  Text between curly braces (<<<\{}>>>) specifies an anchor. Text between
+  double curly braces (<<<\{\{}}>>>) specifies a link.
+
+  It is an error to create a link element that does not refer to an anchor of
+  the same name. The name of an anchor/link is its text with all non
+  alphanumeric characters stripped.
+
+  This rule does not apply to links to <external> anchors. Text beginning
+  with <<<http:/>>>, <<<https:/>>>, <<<ftp:/>>>, <<<file:/>>>, <<<mailto:>>>,
+  <<<../>>>, <<<./>>> (<<<..\\>>> and <<<.\\>>> on Windows) is recognized as
+  an external anchor name.
+
+  When the construct <<\{\{\{>><name><<}>><text><<}}>> is used, the link text
+  <text> may differ from the link name <name>.
+
+  Anchor/link elements may appear anywhere except inside other anchor/link
+  elements.
+
+  Section titles are implicitly defined anchors.
+
+*** Line break
+~~~~~~~~~~~~~~
+
++-------------+
+  Force line\
+  break.
++-------------+
+
+  A backslash character (<<<\\>>>) followed by a newline character.
+
+  Line breaks must not be used inside titles and tables (which are line
+  oriented blocks with implicit line breaks).
+
+*** Non breaking space
+~~~~~~~~~~~~~~~~~~~~~~
+
++----------------------+
+  Non\ breaking\ space.
++----------------------+
+
+  A backslash character (<<<\\>>>) followed by a space character.
+
+*** Special character
+~~~~~~~~~~~~~~~~~~~~~
+
++---------------------------------------------------------------------------+
+  Escaped special characters: \~, \=, \-, \+, \*, \[, \], \<, \>, \{, \}, \\.
++---------------------------------------------------------------------------+
+
+  In certain contexts, these characters have a special meaning and therefore
+  must be escaped if needed as is. They are escaped by adding a backslash in
+  front of them. The backslash may itself be escaped by adding another
+  backslash in front of it.
+
+  Note that an asterisk, for example, needs to be escaped only if its begins a
+  paragraph. (<<<*>>> has no special meaning in the middle of a paragraph.)
+
++--------------------------------------+
+  Copyright symbol: \251, \xA9, \u00a9.
++--------------------------------------+
+
+  Latin-1 characters (whatever is the encoding of the APT document) may be
+  specified by their codes using a backslash followed by one to three octal
+  digits or by using the <<<\x>>><NN> notation, where <NN> are two hexadecimal
+  digits.
+
+  Unicode characters may be specified by their codes using the <<<\u>>><NNNN>
+  notation, where <NNNN> are four hexadecimal digits.
+
+*** Comment
+~~~~~~~~~~~
+
++---------------+
+~~Commented out.
++---------------+
+
+  Text found after two tildes (<<<\~~>>>) is ignored up to the end of line.
+
+  A line of <<<~>>> is often used to ``underline'' section titles in order to
+  make them stand out of other paragraphs.
+
+
+* The APT format at a glance
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+------------------------------------------------------------------------------
+				    ------
+				    Title
+				    ------
+				    Author
+				    ------
+				     Date
+
+  Paragraph 1, line 1.
+  Paragraph 1, line 2.
+
+  Paragraph 2, line 1.
+  Paragraph 2, line 2.
+
+Section title
+
+* Sub-section title
+
+** Sub-sub-section title
+
+*** Sub-sub-sub-section title
+
+**** Sub-sub-sub-sub-section title
+
+      * List item 1.
+
+      * List item 2.
+
+	Paragraph contained in list item 2.
+
+	    * Sub-list item 1.
+
+	    * Sub-list item 2.
+
+      * List item 3.
+        Force end of list:
+
+      []
+
++------------------------------------------+
+Verbatim text not contained in list item 3
++------------------------------------------+
+
+      [[1]] Numbered item 1.
+
+                [[A]] Numbered item A.
+
+                [[B]] Numbered item B.
+
+      [[2]] Numbered item 2.
+
+  List numbering schemes: [[1]], [[a]], [[A]], [[i]], [[I]].
+
+      [Defined term 1] of definition list.
+
+      [Defined term 2] of definition list.
+
++-------------------------------+
+Verbatim text
+			in a box	
++-------------------------------+
+
+  --- instead of +-- suppresses the box around verbatim text.
+
+[Figure name] Figure caption
+
+*----------*--------------+----------------:
+| Centered | Left-aligned | Right-aligned  |
+| cell 1,1 | cell 1,2     | cell 1,3       |
+*----------*--------------+----------------:
+| cell 2,1 | cell 2,2     | cell 2,3       |
+*----------*--------------+----------------:
+Table caption
+
+  No grid, no caption:
+
+*-----*------*
+ cell | cell
+*-----*------*
+ cell | cell
+*-----*------*
+
+  Horizontal line:
+
+=======================================================================
+
+^L
+  New page.
+
+  <Italic> font. <<Bold>> font. <<<Monospaced>>> font.
+
+  {Anchor}. Link to {{anchor}}. Link to {{http://www.pixware.fr}}. 
+  Link to {{{anchor}showing alternate text}}.
+  Link to {{{http://www.pixware.fr}Pixware home page}}.
+
+  Force line\
+  break.
+
+  Non\ breaking\ space.
+
+  Escaped special characters: \~, \=, \-, \+, \*, \[, \], \<, \>, \{, \}, \\.
+
+  Copyright symbol: \251, \xA9, \u00a9.
+
+~~Commented out.
+
+------------------------------------------------------------------------------
+

Added: geronimo/yoko/site/src/site/fml/faq.fml
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/src/site/fml/faq.fml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/src/site/fml/faq.fml (added)
+++ geronimo/yoko/site/src/site/fml/faq.fml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<faqs id="General FAQ">
+  <part id="General">
+    <faq id="where">
+      <question>
+        Where did Yoko come from?
+      </question>
+      <answer>
+        <p>
+          The original source code of Yoko was contributed by IONA,
+          it is based on IONA's Orbacus product.
+        </p>
+      </answer>
+    </faq>
+    <faq id="openorb">
+      <question>
+        I currently use OpenORB, but development there has stalled.
+        Should I switch to Yoko?</question>
+      <answer>
+        <p>
+          The only remaining developer of OpenORB is on the Yoko team,
+          and no major development effort will be directed at OpenORB.
+        </p>
+        <p>
+          Yoko does not currently implement all the features that OpenORB has.
+          Most notably, many of the services that OpenORB implements
+          (Notification, Trading, etc.) are currently not available in Yoko.
+          If any missing feature prevents you from migrating, please file
+          a feature request in Yoko's issue tracker.
+        </p>
+      </answer>
+    </faq>
+  </part>
+</faqs>

Added: geronimo/yoko/site/src/site/site.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/src/site/site.xml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/src/site/site.xml (added)
+++ geronimo/yoko/site/src/site/site.xml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<project name="Apache Yoko Project">
+  <bannerLeft>
+    <name>Apache Yoko Project</name>
+    <href>http://incubator.apache.org/yoko</href>
+  </bannerLeft>
+  <body>
+    <links>
+      <item name="Apache" href="http://www.apache.org/" />
+      <item name="Maven" href="http://maven.apache.org/maven2/"/>
+    </links>
+
+    <menu name="Yoko">
+        <item name="Overview" href="/index.html" />
+        <item name="News" href="news.html" />
+        <item name="Documentation" href="/documentation.html" />
+        <item name="FAQ" href="/faq.html" />
+        <item name="Wiki" href="http://wiki.apache.org/incubator-yoko" />
+        <item name="Download" href="/download.html" />
+    </menu>
+    <menu name="Community">
+        <!-- item name="Getting Involved" href="/getinvolved.html" / -->
+        <item name="Committers" href="/team-list.html" />
+        <item name="SVN Code Repository" href="/source-repository.html" />
+        <item name="Mailing Lists" href="/mail-lists.html" />
+        <item name="Bugs" href="/issue-tracking.html" />
+    </menu>
+    <menu name="Related Projects">
+        <item name="CXF" href="http://cwiki.apache.org/CXF/" />
+        <item name="Celtix" href="http://celtix.objectweb.org/" />
+        <item name="Geronimo" href="http://geronimo.apache.org/" />
+        <item name="OpenEJB" href="http://incubator.apache.org/openejb" />
+        <item name="OpenORB" href="http://openorb.sourceforge.net/" />
+    </menu>   
+    
+    ${reports}
+  </body>
+</project>

Propchange: geronimo/yoko/site/src/site/site.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/site/src/site/site.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/yoko/site/src/site/site.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/yoko/site/src/site/xdoc/download.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/src/site/xdoc/download.xml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/src/site/xdoc/download.xml (added)
+++ geronimo/yoko/site/src/site/xdoc/download.xml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<document url="download.xml">
+    <properties>
+        <author email="asakala@iona.com">Adi Sakala</author>
+        <title>Apache Yoko - Downloads</title>
+    </properties>
+    <body>
+        <h2>Apache Yoko Downloads</h2>
+        <p>
+            Welcome to the Apache Yoko downloads site. As the Yoko project is currently part
+            of the Incubator, no binary downloads are available now.
+        </p>
+        <p>
+            If you want to obtain the Yoko runtime and tools, you should check out the source from the
+            SVN repository and build it locally on your machine.
+        </p>
+    </body>
+</document>
\ No newline at end of file

Propchange: geronimo/yoko/site/src/site/xdoc/download.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/site/src/site/xdoc/download.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/yoko/site/src/site/xdoc/download.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/yoko/site/src/site/xdoc/index.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/src/site/xdoc/index.xml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/src/site/xdoc/index.xml (added)
+++ geronimo/yoko/site/src/site/xdoc/index.xml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<document url="index.xml">
+    <properties>
+        <author email="asakala@iona.com">Adi Sakala</author>
+        <title>Apache Yoko</title>
+    </properties>
+    <body>
+        <section name="Apache Yoko">
+            <p>
+                Welcome to Apache Yoko. The Apache Yoko project is currently in 
+                Incubation under the Apache Incubator.
+            </p>
+            <p>
+                The Yoko project is a robust and high performance CORBA server 
+                which is usable from inside any JVM.
+                The project will then expose the transport via a dynamic API 
+                that is XMLSchema based and can be bound to JAX-B, XMLBeans, 
+                Apache Geronimo, Tuscany or any implementation. 
+                As a side benefit the XMLSchema API will also be able to support 
+                other transports and binding through configuration.
+            </p>
+
+        </section>     
+    </body>
+</document>
\ No newline at end of file

Propchange: geronimo/yoko/site/src/site/xdoc/index.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/site/src/site/xdoc/index.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/yoko/site/src/site/xdoc/index.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/yoko/site/src/site/xdoc/news.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/site/src/site/xdoc/news.xml?rev=610301&view=auto
==============================================================================
--- geronimo/yoko/site/src/site/xdoc/news.xml (added)
+++ geronimo/yoko/site/src/site/xdoc/news.xml Wed Jan  9 00:07:08 2008
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright (c) 2005 The Apache Software Foundation or its licensors, as applicable.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ -->
+<document url="news.xml">
+
+    <properties>
+
+        <author email="asakala@iona.com">Adi Sakala</author>
+
+        <title>Apache Yoko - News</title>
+    </properties>   
+    
+    <body>
+
+    <section name="Yoko News" />
+    
+    <p>
+      This page contains latest Apache Yoko News.
+    </p>
+
+    </body>
+
+
+</document>
\ No newline at end of file

Propchange: geronimo/yoko/site/src/site/xdoc/news.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/yoko/site/src/site/xdoc/news.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/yoko/site/src/site/xdoc/news.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml