# HG changeset patch # User Jaroslav Tulach # Date 1461650652 -7200 # Node ID 621825e167d77502a76ad61115875db9c5eed32e # Parent e568ae8ef9afa314df04f7e7d58de19a72f3ae42 Adding sample module using knockout diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client-web/nbactions.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client-web/nbactions.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,110 @@ + + + + + run + + jar + + + package + bck2brwsr:show + + + true + + + + debug + + jar + + + package + bck2brwsr:show + + + true + NONE + maven + + + + CUSTOM-bck2brwsr-show + Run in a Browser + + package + bck2brwsr:show + + + true + NONE + + + + CUSTOM-bck2brwsr-web + Package for website + + clean + package + + + + CUSTOM-teavm-show + Run in a Browser via TeaVM + + package + bck2brwsr:show + + + teavm + + + true + + + + CUSTOM-teavm-show + Debug in a Browser via TeaVM + + package + bck2brwsr:show + + + teavm + + + true + true + + + + CUSTOM-teavm-web + Package for website via TeaVM + + clean + package + + + teavm + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client-web/pom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client-web/pom.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,299 @@ + + + 4.0.0 + + + org.apidesign.bck2brwsr + kosample-pom + 1.0-SNAPSHOT + + + org.apidesign.bck2brwsr + kosample-web + 1.0-SNAPSHOT + jar + + kosample Client for Web + + + none + org.apidesign.bck2brwsr.kosample.BrowserMain + initialize bck2brwsr --> +<script type="text/javascript" src="bck2brwsr.js"></script> +<script> + var vm = bck2brwsr('kosample.js'); + var c = vm.loadClass('org.apidesign.bck2brwsr.kosample.BrowserMain'); + c.invoke('main'); +</script> +<!-- end of initialization + + + + + org.netbeans.html + html4j-maven-plugin + ${net.java.html.version} + + + js-classes + + process-js-annotations + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + netbeans.ignore.jdk.bootclasspath + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + ${project.mainclass} + true + lib/ + false + + + + + + org.apidesign.bck2brwsr + bck2brwsr-maven-plugin + ${bck2brwsr.version} + + + + brwsr + aot + + + + + ${bck2brwsr.obfuscationlevel} + ${project.build.directory}/${project.build.finalName}-bck2brwsr/public_html/ + index.html + lib + ${project.build.directory}/kosample.js + + ${project.mainclass} + + + + + maven-assembly-plugin + 2.4 + + + distro-assembly + package + + single + + + + src/main/assembly/bck2brwsr.xml + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.9 + + + unpack + process-resources + + unpack-dependencies + + + + + zip + webpages + true + target/web/pages + */** + + + + + + + org.apidesign.bck2brwsr + kosample + ${project.version} + + + org.netbeans.html + net.java.html.boot.fx + + + + + org.apidesign.bck2brwsr + emul + ${bck2brwsr.version} + rt + + + org.netbeans.html + net.java.html.boot + ${net.java.html.version} + + + asm + org.ow2.asm + + + + + org.apidesign.bck2brwsr + emul + ${bck2brwsr.version} + bck2brwsr + provided + + + org.apidesign.bck2brwsr + ko-bck2brwsr + ${bck2brwsr.version} + bck2brwsr + provided + + + org.apidesign.bck2brwsr + kosample-js + ${project.version} + bck2brwsr + provided + jar + + + + + teavm + + 0.4.0 + false + initialize TeaVM --> +<script type="text/javascript" src="teavm.js"></script> +<script> + main(); +</script> +<!-- end of initialization + + + + + org.netbeans.html + ko4j + ${net.java.html.version} + + + + + + org.teavm + teavm-maven-plugin + ${teavm.version} + + + org.teavm + teavm-classlib + ${teavm.version} + + + + org.teavm + teavm-html4j + ${teavm.version} + + + + + generate-teavm + + compile + + process-classes + + ${project.mainclass} + ${teavm.debug} + ${teavm.debug} + ${teavm.debug} + + false + + false + + MERGED + + teavm.js + ${project.build.directory}/teavm + + + + + + + maven-assembly-plugin + 2.4 + + + distro-assembly + package + + single + + + + src/main/assembly/teavm.xml + + + + + + + org.apidesign.bck2brwsr + bck2brwsr-maven-plugin + ${bck2brwsr.version} + + + + brwsr + + + + + ${project.build.directory}/${project.build.finalName}-teavm/public_html/ + index.html + + + + + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client-web/src/main/assembly/bck2brwsr.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client-web/src/main/assembly/bck2brwsr.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,55 @@ + + + + + bck2brwsr + + zip + dir + + public_html + + + target/web/pages + / + + index.html + + + + target/web/pages + / + true + + index.html + + + + ${project.build.directory} + / + + *.js + lib/*.js + + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client-web/src/main/assembly/teavm.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client-web/src/main/assembly/teavm.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,52 @@ + + + + + teavm + + zip + dir + + public_html + + + target/web/pages + / + + index.html + + + + target/web/pages + / + true + + index.html + + + + ${project.build.directory}/teavm/ + / + false + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client-web/src/main/java/org/apidesign/bck2brwsr/kosample/BrowserMain.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client-web/src/main/java/org/apidesign/bck2brwsr/kosample/BrowserMain.java Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,27 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program 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 of the License. + * + * This program 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 this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.kosample; + +public class BrowserMain { + private BrowserMain() { + } + + public static void main(String... args) throws Exception { + Main.onPageLoad(); + } +} diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/nbactions.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/nbactions.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,51 @@ + + + + + run + + process-classes + exec:exec + + + + debug + + process-classes + exec:exec + + + true + -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} + + + + CUSTOM-Build Desktop App + Build Desktop App + + clean + package + + + desktop + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/pom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/pom.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,228 @@ + + + 4.0.0 + + + org.apidesign.bck2brwsr + kosample-pom + 1.0-SNAPSHOT + + + org.apidesign.bck2brwsr + kosample + 1.0-SNAPSHOT + bundle + + kosample General Client Code + + + all + org.apidesign.bck2brwsr.kosample.Main + ${java.home}/bin/java + -Ddebug=false + + + + + org.apache.felix + maven-bundle-plugin + 2.4.0 + true + + + org.apidesign.bck2brwsr.kosample + org.apidesign.bck2brwsr.kosample + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + ${project.mainclass} + true + lib/ + false + + + + + + maven-source-plugin + 2.2.1 + + + attach-sources + post-integration-test + + jar-no-fork + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + ${exec.java.bin} + test + + -classpath + + -javaagent:${project.build.directory}/springloaded.jar + -noverify + -Dbrowser.rootdir=${basedir}/src/main/webapp/ + -Dnetbeans.inspect.port=${netbeans.inspect.port} + ${exec.debug.arg} + ${project.mainclass} + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.10 + + + copy + package + + copy + + + + + org.springframework + springloaded + 1.2.3.RELEASE + jar + false + springloaded.jar + + + ${project.build.directory} + + + + + + maven-assembly-plugin + 2.4 + + + web-pages + package + + single + + + + src/main/assembly/webpages.xml + + + + + + + + + + org.netbeans.html + net.java.html + ${net.java.html.version} + + + org.netbeans.html + net.java.html.json + ${net.java.html.version} + + + org.netbeans.html + net.java.html.boot + ${net.java.html.version} + + + org.netbeans.html + net.java.html.sound + ${net.java.html.version} + + + org.netbeans.html + ko4j + ${net.java.html.version} + runtime + + + org.testng + testng + test + + + org.netbeans.html + net.java.html.boot.script + ${net.java.html.version} + test + jar + + + org.apidesign.bck2brwsr + kosample-js + ${project.version} + + + org.netbeans.html + net.java.html.boot.fx + ${net.java.html.version} + provided + + + + + desktop + + + org.netbeans.html + net.java.html.boot.fx + ${net.java.html.version} + runtime + + + + + + maven-assembly-plugin + 2.4 + + + distro-assembly + package + + single + + + + src/main/assembly/javafx.xml + + + + + + + + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/src/main/assembly/javafx.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/src/main/assembly/javafx.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,51 @@ + + + + + javafx + + zip + + ${project.build.finalName}-app + + + false + runtime + lib + + + + + ${project.build.directory}/${project.build.finalName}.jar + / + + + + + src/main/webapp/ + / + + pages/** + + + + \ No newline at end of file diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/src/main/assembly/webpages.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/src/main/assembly/webpages.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,36 @@ + + + + + webpages + + zip + + / + + + src/main/webapp/pages + / + false + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,79 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program 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 of the License. + * + * This program 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 this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.kosample; + +import net.java.html.json.ComputedProperty; +import net.java.html.json.Function; +import net.java.html.json.Model; +import net.java.html.json.Property; +import org.apidesign.bck2brwsr.kosample.js.Dialogs; + +/** Model annotation generates class Data with + * one message property, boolean property and read only words property + */ +@Model(className = "Data", targetId="", properties = { + @Property(name = "message", type = String.class), + @Property(name = "rotating", type = boolean.class) +}) +final class DataModel { + @ComputedProperty static java.util.List words(String message) { + String[] arr = new String[6]; + String[] words = message == null ? new String[0] : message.split(" ", 6); + for (int i = 0; i < 6; i++) { + arr[i] = words.length > i ? words[i] : "!"; + } + return java.util.Arrays.asList(arr); + } + + @Function static void turnAnimationOn(Data model) { + model.setRotating(true); + } + + @Function static void turnAnimationOff(final Data model) { + Dialogs.confirmByUser("Really turn off?", new Runnable() { + @Override + public void run() { + model.setRotating(false); + } + }); + } + + @Function static void rotate5s(final Data model) { + model.setRotating(true); + java.util.Timer timer = new java.util.Timer("Rotates a while"); + timer.schedule(new java.util.TimerTask() { + @Override + public void run() { + model.setRotating(false); + } + }, 5000); + } + + @Function static void showScreenSize(Data model) { + model.setMessage(Dialogs.screenSize()); + } + private static Data ui; + /** + * Called when the page is ready. + */ + static void onPageLoad() throws Exception { + ui = new Data(); + ui.setMessage("Hello World from HTML and Java!"); + ui.applyBindings(); + } +} diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/Main.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/Main.java Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,42 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program 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 of the License. + * + * This program 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 this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.kosample; + +import net.java.html.boot.BrowserBuilder; + +public final class Main { + private Main() { + } + + public static void main(String... args) throws Exception { + BrowserBuilder.newBrowser(). + loadPage("pages/index.html"). + loadClass(Main.class). + invoke("onPageLoad", args). + showAndWait(); + System.exit(0); + } + + /** + * Called when the page is ready. + */ + public static void onPageLoad() throws Exception { + DataModel.onPageLoad(); + } + +} diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/src/main/webapp/pages/index.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/src/main/webapp/pages/index.html Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,91 @@ + + + + + + + + + +

Words Demo

+ +
+ + + + + +
+ + + +
+ + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/client/src/test/java/org/apidesign/bck2brwsr/kosample/DataModelTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/client/src/test/java/org/apidesign/bck2brwsr/kosample/DataModelTest.java Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,33 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program 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 of the License. + * + * This program 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 this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.kosample; + +import static org.testng.Assert.*; +import org.testng.annotations.Test; + +public class DataModelTest { + @Test public void testUIModelWithoutUI() { + Data model = new Data(); + model.setMessage("Hello World!"); + + java.util.List arr = model.getWords(); + assertEquals(arr.size(), 6, "Six words always"); + assertEquals("Hello", arr.get(0), "Hello is the first word"); + assertEquals("World!", arr.get(1), "World is the second word"); + } +} diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/js/pom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/js/pom.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,92 @@ + + + 4.0.0 + + org.apidesign.bck2brwsr + kosample-pom + 1.0-SNAPSHOT + + + org.apidesign.bck2brwsr + kosample-js + 1.0-SNAPSHOT + bundle + + kosample JavaScript Libraries + + + none + + + + + org.apache.felix + maven-bundle-plugin + 2.4.0 + true + + + org.apidesign.bck2brwsr.kosample.js + org.apidesign.bck2brwsr.kosample.js + + + + + org.netbeans.html + html4j-maven-plugin + ${net.java.html.version} + + + js-classes + + process-js-annotations + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + + org.apidesign.bck2brwsr + bck2brwsr-maven-plugin + ${bck2brwsr.version} + + + + library + + + + + NONE + + + + + + + org.netbeans.html + net.java.html.boot + ${net.java.html.version} + + + org.testng + testng + test + + + org.netbeans.html + net.java.html.boot.script + ${net.java.html.version} + test + jar + + + diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,57 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program 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 of the License. + * + * This program 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 this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.kosample.js; + +import net.java.html.js.JavaScriptBody; + +/** Use {@link JavaScriptBody} annotation on methods to + * directly interact with JavaScript. See + * http://bits.netbeans.org/html+java/1.2/net/java/html/js/package-summary.html + * to understand how. + */ +public final class Dialogs { + private Dialogs() { + } + + /** Shows confirmation dialog to the user. + * + * @param msg the message + * @param callback called back when the use accepts (can be null) + */ + @JavaScriptBody( + args = { "msg", "callback" }, + javacall = true, + body = "if (confirm(msg)) {\n" + + " callback.@java.lang.Runnable::run()();\n" + + "}\n" + ) + public static native void confirmByUser(String msg, Runnable callback); + + @JavaScriptBody( + args = {}, body = + "var w = window,\n" + + " d = document,\n" + + " e = d.documentElement,\n" + + " g = d.getElementsByTagName('body')[0],\n" + + " x = w.innerWidth || e.clientWidth || g.clientWidth,\n" + + " y = w.innerHeight|| e.clientHeight|| g.clientHeight;\n" + + "\n" + + "return 'Screen size is ' + x + ' times ' + y;\n" + ) + public static native String screenSize(); +} diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/js/src/test/java/org/apidesign/bck2brwsr/kosample/js/JsInteractionTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/js/src/test/java/org/apidesign/bck2brwsr/kosample/js/JsInteractionTest.java Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,57 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program 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 of the License. + * + * This program 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 this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.kosample.js; + +import java.io.Closeable; +import net.java.html.boot.script.Scripts; +import org.netbeans.html.boot.spi.Fn; +import static org.testng.Assert.assertEquals; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +/** Tests for behavior of @JavaScriptBody methods. Set your JavaScript + * environment up (for example define alert or use some + * emulation library like env.js), register script presenter + * and then you can call methods that deal with JavaScript in your tests. + */ +public class JsInteractionTest { + private Closeable jsEngine; + @BeforeMethod public void initializeJSEngine() throws Exception { + jsEngine = Fn.activate(Scripts.createPresenter()); + } + + @AfterMethod public void shutdownJSEngine() throws Exception { + jsEngine.close(); + } + @Test public void testCallbackFromJavaScript() throws Exception { + class R implements Runnable { + int called; + + @Override + public void run() { + called++; + } + } + R callback = new R(); + + Dialogs.confirmByUser("Hello", callback); + + assertEquals(callback.called, 1, "One immediate callback"); + } +} diff -r e568ae8ef9af -r 621825e167d7 ko/kosample/pom.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/kosample/pom.xml Tue Apr 26 08:04:12 2016 +0200 @@ -0,0 +1,59 @@ + + + 4.0.0 + + ko + org.apidesign.bck2brwsr + 1.0-SNAPSHOT + + + org.apidesign.bck2brwsr + kosample-pom + 1.0-SNAPSHOT + pom + + kosample + + client + client-web + js + + + ${project.version} + FULL + 2.13 + UTF-8 + + + + + org.testng + testng + test + 6.8.8 + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.3.1 + + + enforce-versions + + enforce + + + + + + + + + + + + diff -r e568ae8ef9af -r 621825e167d7 ko/pom.xml --- a/ko/pom.xml Tue Apr 26 07:59:10 2016 +0200 +++ b/ko/pom.xml Tue Apr 26 08:04:12 2016 +0200 @@ -14,5 +14,6 @@ bck2brwsr fx + kosample