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