diff options
Diffstat (limited to 'tests/test-extensions/net/sourceforge/jnlp/tools')
3 files changed, 243 insertions, 0 deletions
diff --git a/tests/test-extensions/net/sourceforge/jnlp/tools/AsyncJavaws.java b/tests/test-extensions/net/sourceforge/jnlp/tools/AsyncJavaws.java new file mode 100644 index 0000000..8c37263 --- /dev/null +++ b/tests/test-extensions/net/sourceforge/jnlp/tools/AsyncJavaws.java @@ -0,0 +1,88 @@ +/* AsyncJavaws.java + Copyright (C) 2012 Red Hat, Inc. + + This file is part of IcedTea. + + IcedTea is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 2. + + IcedTea is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with IcedTea; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from + or based on this library. If you modify this library, you may extend + this exception to your version of the library, but you are not + obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + */ +package net.sourceforge.jnlp.tools; + +import java.util.List; +import net.sourceforge.jnlp.ContentReaderListener; +import net.sourceforge.jnlp.ProcessResult; +import net.sourceforge.jnlp.ServerAccess; +import org.junit.Assert; + +/** + * You can see ClipboardContext reproducers as examples + * + */ +public class AsyncJavaws implements Runnable { + + private final boolean headless; + private final String url; + private ProcessResult result; + private ContentReaderListener contentReaderListener; + private ContentReaderListener errorReaderListener; + private final List<String> argList; + private final ServerAccess server; + + public AsyncJavaws(ServerAccess server, String url, List<String> argList, boolean headless, ContentReaderListener contentReaderListener, ContentReaderListener errorReaderListener) { + this.url = url; + this.headless = headless; + this.contentReaderListener = contentReaderListener; + this.errorReaderListener = errorReaderListener; + this.argList = argList; + this.server = server; + Assert.assertNotNull(server); + } + + @Override + public void run() { + try { + if (headless) { + result = server.executeJavawsHeadless(argList, url, contentReaderListener, errorReaderListener, null); + } else { + result = server.executeJavaws(argList, url, contentReaderListener, errorReaderListener); + } + } catch (Exception ex) { + if (result == null) { + result = new ProcessResult("", ex.getMessage(), null, true, 1, ex); + } + throw new RuntimeException(ex); + } + } + + public ProcessResult getResult() { + return result; + } +} diff --git a/tests/test-extensions/net/sourceforge/jnlp/tools/ClipboardHelpers.java b/tests/test-extensions/net/sourceforge/jnlp/tools/ClipboardHelpers.java new file mode 100644 index 0000000..4a15c11 --- /dev/null +++ b/tests/test-extensions/net/sourceforge/jnlp/tools/ClipboardHelpers.java @@ -0,0 +1,64 @@ +/* ClipboardHelpers.java + Copyright (C) 2012 Red Hat, Inc. + + This file is part of IcedTea. + + IcedTea is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 2. + + IcedTea is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with IcedTea; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from + or based on this library. If you modify this library, you may extend + this exception to your version of the library, but you are not + obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + */ +package net.sourceforge.jnlp.tools; + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.IOException; + +public class ClipboardHelpers { + + public static void putToClipboard(String str) { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Clipboard clipboard = toolkit.getSystemClipboard(); + StringSelection strSel = new StringSelection(str); + clipboard.setContents(strSel, null); + } + + public static String pasteFromClipboard() throws UnsupportedFlavorException, IOException { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Clipboard clipboard = toolkit.getSystemClipboard(); + Transferable clipData = clipboard.getContents(clipboard); + String s = (String) (clipData.getTransferData( + DataFlavor.stringFlavor)); + return s; + } +} diff --git a/tests/test-extensions/net/sourceforge/jnlp/tools/WaitingForStringProcess.java b/tests/test-extensions/net/sourceforge/jnlp/tools/WaitingForStringProcess.java new file mode 100644 index 0000000..52bbcfb --- /dev/null +++ b/tests/test-extensions/net/sourceforge/jnlp/tools/WaitingForStringProcess.java @@ -0,0 +1,91 @@ +package net.sourceforge.jnlp.tools; + + +import java.util.List; +import net.sourceforge.jnlp.ContentReaderListener; +import net.sourceforge.jnlp.ServerAccess; +import org.junit.Assert; + +/** + * You can see ClipboardContext reproducers as examples + * + */ + +public class WaitingForStringProcess implements ContentReaderListener, Runnable { + private final boolean headless; + private final String url; + private StringBuilder output = new StringBuilder(); + private StringBuilder err = new StringBuilder(); + private AsyncJavaws aj; + ContentReaderListener errListener = new ContentReaderListener() { + @Override + public void charReaded(char ch) { + err.append(ch); + } + + @Override + public void lineReaded(String s) { + } + }; + private final String waitingFor; + private boolean canRun = true; + private final ServerAccess server; + private final List<String> otherArgs; + + public WaitingForStringProcess(ServerAccess server, String url, List<String> otherArgs, boolean headless, String waitingFor) { + this.url = url; + this.headless = headless; + this.waitingFor = waitingFor; + Assert.assertNotNull(waitingFor); + Assert.assertNotNull(url); + this.server = server; + this.otherArgs = otherArgs; + Assert.assertNotNull(server); + } + + @Override + public void charReaded(char ch) { + output.append(ch); + } + + @Override + public void lineReaded(String s) { + if (s.contains(waitingFor)) { + canRun = false; + } + } + + @Override + public void run() { + aj = new AsyncJavaws(server, url, otherArgs, headless, this, errListener); + ServerAccess.logOutputReprint("Starting thread with " + url + " and waiting for result or string " + waitingFor); + new Thread(aj).start(); + while (canRun && aj.getResult() == null) { + try { + Thread.sleep(100); + } catch (InterruptedException ex) { + ServerAccess.logErrorReprint("iteration interrupted"); + throw new RuntimeException(ex); + } + } + if (aj.getResult() != null) { + ServerAccess.logOutputReprint("Waiting done. Result have been delivered"); + } + if (!canRun) { + ServerAccess.logOutputReprint("Waiting done. String " + waitingFor + " delivered"); + } + } + + public String getErr() { + return err.toString(); + } + + public String getOutput() { + return output.toString(); + } + + public AsyncJavaws getAj() { + return aj; + } + +} |