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 @@ + + 4.0.0 + org.apache.yoko + process-manager + jar + 1.0-SNAPSHOT + Process Manager + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + concurrent + concurrent + 1.3.4 + + + + + + maven-antrun-plugin + + + test-compile + + + + + + + + + + + + + + + + + + run + + + + + + + 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 @@ + + 4.0.0 + org.apache.yoko + distribution + 1.0-SNAPSHOT + Apache Yoko + http://incubator.apache.org/yoko + + Apache Software Foundation + http://www.apache.org/ + + 2006 + + + scm:svn:http://svn.apache.org/repos/asf/incubator/yoko/trunk + scm:svn:https://svn.apache.org/repos/asf/incubator/yoko/trunk + http://svn.apache.org/repos/asf/incubator/yoko/trunk + + + https://issues.apache.org/jira/browse/YOKO + + + + + Developer Mailing List + yoko-dev-subscribe@incubator.apache.org + yoko-dev-unsubscribe@incubator.apache.org + yoko-dev@incubator.apache.org + http://www.mail-archive.com/yoko-dev@incubator.apache.org/ + + + Commit Mailing List + yoko-commits-subscribe@incubator.apache.org + yoko-commits-unsubscribe@incubator.apache.org + yoko-commits@incubator.apache.org + http://www.mail-archive.com/yoko-commits@incubator.apache.org/ + + + Users Mailing List + yoko-users-subscribe@incubator.apache.org + yoko-users-unsubscribe@incubator.apache.org + yoko-users@incubator.apache.org + http://www.mail-archive.com/yoko-users@incubator.apache.org/ + + + + + APACHE LICENSE Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + website + scp://minotaur.apache.org/www/incubator.apache.org/yoko/ + + + + + + + maven-site-plugin + + en + + + + + + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + dependencies + project-team + mailing-list + + issue-tracking + license + scm + + + + + + + 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 + <<>>, the figure name is + <<>>. + + 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 <<>>. A APT processor will + first try to load <<>>. 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 + <<>> 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 +~~~~~~~~ + ++-----------------------------------------------------+ + font. <> font. <<>> 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 anchors. Text beginning + with <<>>, <<>>, <<>>, <<>>, <<>>, + <<<../>>>, <<<./>>> (<<<..\\>>> and <<<.\\>>> on Windows) is recognized as + an external anchor name. + + When the construct <<\{\{\{>><<}>><<}}>> is used, the link text + may differ from the link 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>>> notation, where are two hexadecimal + digits. + + Unicode characters may be specified by their codes using the <<<\u>>> + notation, where 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. + + font. <> font. <<>> 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 @@ + + + + + + + Where did Yoko come from? + + +

+ The original source code of Yoko was contributed by IONA, + it is based on IONA's Orbacus product. +

+
+
+ + + I currently use OpenORB, but development there has stalled. + Should I switch to Yoko? + +

+ The only remaining developer of OpenORB is on the Yoko team, + and no major development effort will be directed at OpenORB. +

+

+ 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. +

+
+
+
+
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 @@ + + + + + Apache Yoko Project + http://incubator.apache.org/yoko + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${reports} + + 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 @@ + + + + + Adi Sakala + Apache Yoko - Downloads + + +

Apache Yoko Downloads

+

+ Welcome to the Apache Yoko downloads site. As the Yoko project is currently part + of the Incubator, no binary downloads are available now. +

+

+ 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. +

+ +
\ 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 @@ + + + + + Adi Sakala + Apache Yoko + + +
+

+ Welcome to Apache Yoko. The Apache Yoko project is currently in + Incubation under the Apache Incubator. +

+

+ 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. +

+ +
+ +
\ 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 @@ + + + + + + + Adi Sakala + + Apache Yoko - News + + + + +
+ +

+ This page contains latest Apache Yoko News. +

+ + + + + \ 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