Bringing new advances in default branch to ios as well ios
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 01 Aug 2013 17:36:01 +0200
branchios
changeset 221e639cac7a037
parent 211 c22d75b6d02b
parent 220 e15f602dabc0
child 228 0f34c04bec7d
Bringing new advances in default branch to ios as well
ko-archetype/pom.xml
     1.1 --- a/.hgtags	Fri Jul 26 13:45:41 2013 +0200
     1.2 +++ b/.hgtags	Thu Aug 01 17:36:01 2013 +0200
     1.3 @@ -3,3 +3,4 @@
     1.4  309dcf0774ffd5880edccdbec330c90d88f6f4e1 release-0.3
     1.5  93433764b44e705adb784e52a49beab849c94073 release-0.3.1
     1.6  5c5fc5ee2d6396f792114bd8567e17e1e6c4d360 fxlauncher
     1.7 +24612fed24b589c313c416a4e86df9cc4a2ecde5 release-0.4
     2.1 --- a/boot-fx/pom.xml	Fri Jul 26 13:45:41 2013 +0200
     2.2 +++ b/boot-fx/pom.xml	Thu Aug 01 17:36:01 2013 +0200
     2.3 @@ -1,21 +1,30 @@
     2.4  <?xml version="1.0"?>
     2.5 -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     2.6 -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     2.7 +<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/xsd/maven-4.0.0.xsd">
     2.8    <modelVersion>4.0.0</modelVersion>
     2.9    <parent>
    2.10      <groupId>org.apidesign</groupId>
    2.11      <artifactId>html</artifactId>
    2.12 -    <version>0.4-SNAPSHOT</version>
    2.13 +    <version>0.5-SNAPSHOT</version>
    2.14    </parent>
    2.15    <groupId>org.apidesign.html</groupId>
    2.16    <artifactId>boot-fx</artifactId>
    2.17 -  <version>0.4-SNAPSHOT</version>
    2.18 +  <version>0.5-SNAPSHOT</version>
    2.19    <name>FX WebView Bootstrap</name>
    2.20    <url>http://maven.apache.org</url>
    2.21    <properties>
    2.22 -    <jfxrt.jar>${java.home}/lib/jfxrt.jar</jfxrt.jar>
    2.23      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    2.24    </properties>
    2.25 +  <build>
    2.26 +      <plugins>
    2.27 +          <plugin>
    2.28 +              <groupId>org.apache.maven.plugins</groupId>
    2.29 +              <artifactId>maven-javadoc-plugin</artifactId>
    2.30 +              <configuration>
    2.31 +                  <skip>false</skip>
    2.32 +              </configuration>
    2.33 +          </plugin>
    2.34 +      </plugins>
    2.35 +  </build>
    2.36    <dependencies>
    2.37      <dependency>
    2.38          <groupId>com.oracle</groupId>
     3.1 --- a/boot-fx/src/main/java/org/apidesign/html/boot/fx/FXPresenter.java	Fri Jul 26 13:45:41 2013 +0200
     3.2 +++ b/boot-fx/src/main/java/org/apidesign/html/boot/fx/FXPresenter.java	Thu Aug 01 17:36:01 2013 +0200
     3.3 @@ -21,6 +21,7 @@
     3.4  package org.apidesign.html.boot.fx;
     3.5  
     3.6  import java.io.BufferedReader;
     3.7 +import java.io.File;
     3.8  import java.io.Reader;
     3.9  import java.lang.reflect.Method;
    3.10  import java.net.URL;
    3.11 @@ -51,12 +52,15 @@
    3.12  import javafx.scene.web.WebView;
    3.13  import javafx.stage.Modality;
    3.14  import javafx.stage.Stage;
    3.15 +import net.java.html.boot.BrowserBuilder;
    3.16  import netscape.javascript.JSObject;
    3.17  import org.apidesign.html.boot.spi.Fn;
    3.18  import org.openide.util.Exceptions;
    3.19  import org.openide.util.lookup.ServiceProvider;
    3.20  
    3.21 -/**
    3.22 +/** This is an implementation class, use {@link BrowserBuilder} API. Just
    3.23 + * include this JAR on classpath and the {@link BrowserBuilder} API will find
    3.24 + * this implementation automatically.
    3.25   *
    3.26   * @author Jaroslav Tulach <jtulach@netbeans.org>
    3.27   */
    3.28 @@ -64,11 +68,18 @@
    3.29  public final class FXPresenter implements Fn.Presenter {
    3.30      static {
    3.31          try {
    3.32 -            Method m = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
    3.33 -            m.setAccessible(true);
    3.34 -            URL l = new URL("file://" + System.getProperty("java.home") + "/lib/jfxrt.jar");
    3.35 -//            LOG.log(Level.INFO, "url : {0}", l);
    3.36 -            m.invoke(ClassLoader.getSystemClassLoader(), l);
    3.37 +            try {
    3.38 +                Class<?> c = Class.forName("javafx.application.Platform");
    3.39 +                // OK, on classpath
    3.40 +            } catch (ClassNotFoundException classNotFoundException) {
    3.41 +                Method m = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
    3.42 +                m.setAccessible(true);
    3.43 +                File f = new File(System.getProperty("java.home"), "lib/jfxrt.jar");
    3.44 +                if (f.exists()) {
    3.45 +                    URL l = f.toURI().toURL();
    3.46 +                    m.invoke(ClassLoader.getSystemClassLoader(), l);
    3.47 +                }
    3.48 +            }
    3.49          } catch (Exception ex) {
    3.50              throw new LinkageError("Can't add jfxrt.jar on the classpath", ex);
    3.51          }
    3.52 @@ -146,6 +157,10 @@
    3.53          }
    3.54      }
    3.55  
    3.56 +    /** This is an implementation class, use {@link BrowserBuilder} API. Just
    3.57 +     * include this JAR on classpath and the {@link BrowserBuilder} API will find
    3.58 +     * this implementation automatically.
    3.59 +     */
    3.60      public static class FXBrwsr extends Application {
    3.61          private static FXBrwsr INSTANCE;
    3.62          private static final CountDownLatch FINISHED = new CountDownLatch(1);
     4.1 --- a/boot/pom.xml	Fri Jul 26 13:45:41 2013 +0200
     4.2 +++ b/boot/pom.xml	Thu Aug 01 17:36:01 2013 +0200
     4.3 @@ -1,15 +1,14 @@
     4.4  <?xml version="1.0"?>
     4.5 -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     4.6 -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     4.7 +<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/xsd/maven-4.0.0.xsd">
     4.8    <modelVersion>4.0.0</modelVersion>
     4.9    <parent>
    4.10      <groupId>org.apidesign</groupId>
    4.11      <artifactId>html</artifactId>
    4.12 -    <version>0.4-SNAPSHOT</version>
    4.13 +    <version>0.5-SNAPSHOT</version>
    4.14    </parent>
    4.15    <groupId>org.apidesign.html</groupId>
    4.16    <artifactId>net.java.html.boot</artifactId>
    4.17 -  <version>0.4-SNAPSHOT</version>
    4.18 +  <version>0.5-SNAPSHOT</version>
    4.19    <name>Browser Bootstrap</name>
    4.20    <url>http://maven.apache.org</url>
    4.21    <properties>
     5.1 --- a/boot/src/test/java/org/apidesign/html/boot/impl/FnTest.java	Fri Jul 26 13:45:41 2013 +0200
     5.2 +++ b/boot/src/test/java/org/apidesign/html/boot/impl/FnTest.java	Thu Aug 01 17:36:01 2013 +0200
     5.3 @@ -88,7 +88,7 @@
     5.4                              Invocable inv = (Invocable)eng;
     5.5                              try {
     5.6                                  Object ret = inv.invokeMethod(val, "call", all.toArray());
     5.7 -                                return ret == val ? null : ret;
     5.8 +                                return val.equals(ret) ? null : ret;
     5.9                              } catch (ScriptException ex) {
    5.10                                  throw ex;
    5.11                              }
     6.1 --- a/boot/src/test/java/org/apidesign/html/boot/impl/JsClassLoaderTest.java	Fri Jul 26 13:45:41 2013 +0200
     6.2 +++ b/boot/src/test/java/org/apidesign/html/boot/impl/JsClassLoaderTest.java	Thu Aug 01 17:36:01 2013 +0200
     6.3 @@ -80,7 +80,7 @@
     6.4                              Invocable inv = (Invocable)eng;
     6.5                              try {
     6.6                                  Object ret = inv.invokeMethod(val, "call", all.toArray());
     6.7 -                                return ret == val ? null : ret;
     6.8 +                                return val.equals(ret) ? null : ret;
     6.9                              } catch (Exception ex) {
    6.10                                  throw ex;
    6.11                              }
     7.1 --- a/context/pom.xml	Fri Jul 26 13:45:41 2013 +0200
     7.2 +++ b/context/pom.xml	Thu Aug 01 17:36:01 2013 +0200
     7.3 @@ -1,15 +1,14 @@
     7.4  <?xml version="1.0"?>
     7.5 -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     7.6 -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     7.7 +<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/xsd/maven-4.0.0.xsd">
     7.8    <modelVersion>4.0.0</modelVersion>
     7.9    <parent>
    7.10      <groupId>org.apidesign</groupId>
    7.11      <artifactId>html</artifactId>
    7.12 -    <version>0.4-SNAPSHOT</version>
    7.13 +    <version>0.5-SNAPSHOT</version>
    7.14    </parent>
    7.15    <groupId>org.apidesign.html</groupId>
    7.16    <artifactId>net.java.html</artifactId>
    7.17 -  <version>0.4-SNAPSHOT</version>
    7.18 +  <version>0.5-SNAPSHOT</version>
    7.19    <name>HTML Context</name>
    7.20    <url>http://maven.apache.org</url>
    7.21    <properties>
     8.1 --- a/geo/pom.xml	Fri Jul 26 13:45:41 2013 +0200
     8.2 +++ b/geo/pom.xml	Thu Aug 01 17:36:01 2013 +0200
     8.3 @@ -1,15 +1,14 @@
     8.4  <?xml version="1.0"?>
     8.5 -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
     8.6 -    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     8.7 +<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/xsd/maven-4.0.0.xsd">
     8.8    <modelVersion>4.0.0</modelVersion>
     8.9    <parent>
    8.10      <groupId>org.apidesign</groupId>
    8.11      <artifactId>html</artifactId>
    8.12 -    <version>0.4-SNAPSHOT</version>
    8.13 +    <version>0.5-SNAPSHOT</version>
    8.14    </parent>
    8.15    <groupId>org.apidesign.html</groupId>
    8.16    <artifactId>net.java.html.geo</artifactId>
    8.17 -  <version>0.4-SNAPSHOT</version>
    8.18 +  <version>0.5-SNAPSHOT</version>
    8.19    <name>Geolocation API</name>
    8.20    <url>http://maven.apache.org</url>
    8.21    <properties>
    8.22 @@ -40,7 +39,7 @@
    8.23      <dependency>
    8.24        <groupId>org.apidesign.html</groupId>
    8.25        <artifactId>net.java.html.boot</artifactId>
    8.26 -      <version>0.4-SNAPSHOT</version>
    8.27 +      <version>0.5-SNAPSHOT</version>
    8.28        <type>jar</type>
    8.29      </dependency>
    8.30    </dependencies>
     9.1 --- a/geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java	Fri Jul 26 13:45:41 2013 +0200
     9.2 +++ b/geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java	Thu Aug 01 17:36:01 2013 +0200
     9.3 @@ -22,6 +22,7 @@
     9.4  
     9.5  import java.io.IOException;
     9.6  import java.io.Writer;
     9.7 +import java.util.List;
     9.8  import java.util.Locale;
     9.9  import java.util.Set;
    9.10  import java.util.logging.Level;
    9.11 @@ -38,6 +39,7 @@
    9.12  import javax.lang.model.element.Modifier;
    9.13  import javax.lang.model.element.PackageElement;
    9.14  import javax.lang.model.element.TypeElement;
    9.15 +import javax.lang.model.element.VariableElement;
    9.16  import javax.lang.model.type.TypeMirror;
    9.17  import javax.tools.Diagnostic;
    9.18  import javax.tools.JavaFileObject;
    9.19 @@ -85,8 +87,9 @@
    9.20              return false;
    9.21          }
    9.22          TypeMirror positionClass = processingEnv.getElementUtils().getTypeElement(Position.class.getName()).asType();
    9.23 -        if (me.getParameters().size() != 1 || !me.getParameters().get(0).asType().equals(positionClass)) {
    9.24 -            error("Method annotated by @OnLocation needs to have one net.java.html.geo.Position argument!", e);
    9.25 +        final List<? extends VariableElement> params = me.getParameters();
    9.26 +        if (params.size() < 1 || !params.get(0).asType().equals(positionClass)) {
    9.27 +            error("Method annotated by @OnLocation first argument must be net.java.html.geo.Position!", e);
    9.28              return false;
    9.29          }
    9.30          String className = ol.className();
    9.31 @@ -104,17 +107,32 @@
    9.32          final String pkg = pe.getQualifiedName().toString();
    9.33          final String fqn = pkg + "." + className;
    9.34          final boolean isStatic = me.getModifiers().contains(Modifier.STATIC);
    9.35 +        String sep;
    9.36          try {
    9.37              JavaFileObject fo = processingEnv.getFiler().createSourceFile(fqn, e);
    9.38              Writer w = fo.openWriter();
    9.39              w.append("package ").append(pkg).append(";\n");
    9.40              w.append("class ").append(className).append(" extends net.java.html.geo.Position.Handle {\n");
    9.41 -            w.append("  private ").append(te.getSimpleName()).append(" i;\n");
    9.42 +            if (!isStatic) {
    9.43 +                w.append("  private final ").append(te.getSimpleName()).append(" $i;\n");
    9.44 +            }
    9.45 +            for (int i = 1; i < params.size(); i++) {
    9.46 +                final VariableElement p = params.get(i);
    9.47 +                w.append("  private final ").append(p.asType().toString()).append(" ").append(p.getSimpleName()).append(";\n");
    9.48 +            }
    9.49              w.append("  private ").append(className).append("(boolean oneTime");
    9.50              w.append(", ").append(te.getSimpleName()).append(" i");
    9.51 +            for (int i = 1; i < params.size(); i++) {
    9.52 +                final VariableElement p = params.get(i);
    9.53 +                w.append(", ").append(p.asType().toString()).append(" ").append(p.getSimpleName());
    9.54 +            }
    9.55              w.append(") {\n    super(oneTime);\n");
    9.56              if (!isStatic) {
    9.57 -                w.append("    this.i = i;\n");
    9.58 +                w.append("    this.$i = i;\n");
    9.59 +            }
    9.60 +            for (int i = 1; i < params.size(); i++) {
    9.61 +                final VariableElement p = params.get(i);
    9.62 +                w.append("  this.").append(p.getSimpleName()).append(" = ").append(p.getSimpleName()).append(";\n");
    9.63              }
    9.64              w.append("}\n");
    9.65              w.append("  static net.java.html.geo.Position.Handle createQuery(");
    9.66 @@ -122,15 +140,39 @@
    9.67              if (!isStatic) {
    9.68                  w.append(te.getSimpleName()).append(" instance");
    9.69                  inst = "instance";
    9.70 +                sep = ", ";
    9.71              } else {
    9.72                  inst = "null";
    9.73 +                sep = "";
    9.74              }
    9.75 -            w.append(") { return new ").append(className).append("(true, ").append(inst).append("); }\n");
    9.76 +            for (int i = 1; i < params.size(); i++) {
    9.77 +                final VariableElement p = params.get(i);
    9.78 +                w.append(sep).append(p.asType().toString()).append(" ").append(p.getSimpleName());
    9.79 +                sep = ", ";
    9.80 +            }
    9.81 +            w.append(") { return new ").append(className).append("(true, ").append(inst);
    9.82 +            for (int i = 1; i < params.size(); i++) {
    9.83 +                final VariableElement p = params.get(i);
    9.84 +                w.append(", ").append(p.getSimpleName());
    9.85 +            }
    9.86 +            w.append("); }\n");
    9.87              w.append("  static net.java.html.geo.Position.Handle createWatch(");
    9.88              if (!isStatic) {
    9.89                  w.append(te.getSimpleName()).append(" instance");
    9.90 +                sep = ", ";
    9.91 +            } else {
    9.92 +                sep = "";
    9.93              }
    9.94 -            w.append(") { return new ").append(className).append("(false, ").append(inst).append("); }\n");
    9.95 +            for (int i = 1; i < params.size(); i++) {
    9.96 +                final VariableElement p = params.get(i);
    9.97 +                w.append(sep).append(p.asType().toString()).append(" ").append(p.getSimpleName());
    9.98 +            }
    9.99 +            w.append(") { return new ").append(className).append("(false, ").append(inst);
   9.100 +            for (int i = 1; i < params.size(); i++) {
   9.101 +                final VariableElement p = params.get(i);
   9.102 +                w.append(", ").append(p.getSimpleName());
   9.103 +            }
   9.104 +            w.append("); }\n");
   9.105              w.append("  @Override protected void onError(Exception t) throws Throwable {\n");
   9.106              if (ol.onError().isEmpty()) {
   9.107                  w.append("    t.printStackTrace();");
   9.108 @@ -141,18 +183,28 @@
   9.109                  if (isStatic) {
   9.110                      w.append("    ").append(te.getSimpleName()).append(".");
   9.111                  } else {
   9.112 -                    w.append("    i.");
   9.113 +                    w.append("    $i.");
   9.114                  }
   9.115 -                w.append(ol.onError()).append("(t);\n");
   9.116 +                w.append(ol.onError()).append("(t");
   9.117 +                for (int i = 1; i < params.size(); i++) {
   9.118 +                    final VariableElement p = params.get(i);
   9.119 +                    w.append(", ").append(p.getSimpleName());
   9.120 +                }
   9.121 +                w.append(");\n");
   9.122              }
   9.123              w.append("  }\n");
   9.124              w.append("  @Override protected void onLocation(net.java.html.geo.Position p) throws Throwable {\n");
   9.125              if (isStatic) {
   9.126                  w.append("    ").append(te.getSimpleName()).append(".");
   9.127              } else {
   9.128 -                w.append("    i.");
   9.129 +                w.append("    $i.");
   9.130              }
   9.131 -            w.append(me.getSimpleName()).append("(p);\n");
   9.132 +            w.append(me.getSimpleName()).append("(p");
   9.133 +            for (int i = 1; i < params.size(); i++) {
   9.134 +                final VariableElement p = params.get(i);
   9.135 +                w.append(", ").append(p.getSimpleName());
   9.136 +            }
   9.137 +            w.append(");\n");
   9.138              w.append("  }\n");
   9.139              w.append("}\n");
   9.140              w.close();
   9.141 @@ -165,9 +217,9 @@
   9.142          return true;
   9.143      }
   9.144  
   9.145 -    private boolean findOnError(Element errElem, TypeElement te, String name, boolean onlyStatic) {
   9.146 +    private boolean findOnError(ExecutableElement errElem, TypeElement te, String name, boolean onlyStatic) {
   9.147          String err = null;
   9.148 -        for (Element e : te.getEnclosedElements()) {
   9.149 +        METHODS: for (Element e : te.getEnclosedElements()) {
   9.150              if (e.getKind() != ElementKind.METHOD) {
   9.151                  continue;
   9.152              }
   9.153 @@ -175,19 +227,35 @@
   9.154                  continue;
   9.155              }
   9.156              if (onlyStatic && !e.getModifiers().contains(Modifier.STATIC)) {
   9.157 -                errElem = e;
   9.158 +                errElem = (ExecutableElement) e;
   9.159                  err = "Would have to be static";
   9.160                  continue;
   9.161              }
   9.162              ExecutableElement ee = (ExecutableElement) e;
   9.163              TypeMirror excType = processingEnv.getElementUtils().getTypeElement(Exception.class.getName()).asType();
   9.164 -            if (ee.getParameters().size() != 1 || 
   9.165 +            final List<? extends VariableElement> params = ee.getParameters(); 
   9.166 +            if (params.size() < 1 || 
   9.167                  !processingEnv.getTypeUtils().isAssignable(excType, ee.getParameters().get(0).asType())
   9.168              ) {
   9.169 -                errElem = e;
   9.170 -                err = "Error method needs to take one Exception argument";
   9.171 +                errElem = (ExecutableElement) e;
   9.172 +                err = "Error method first argument needs to be Exception";
   9.173                  continue;
   9.174              }
   9.175 +            final List<? extends Element> origParams = errElem.getParameters();
   9.176 +            if (params.size() != origParams.size()) {
   9.177 +                errElem = (ExecutableElement) e;
   9.178 +                err = "Error method must have the same parameters as @OnLocation one";
   9.179 +                continue;
   9.180 +            }
   9.181 +            for (int i = 1; i < origParams.size(); i++) {
   9.182 +                final TypeMirror t1 = params.get(i).asType();
   9.183 +                final TypeMirror t2 = origParams.get(i).asType();
   9.184 +                if (!processingEnv.getTypeUtils().isSameType(t1, t2)) {
   9.185 +                    errElem = (ExecutableElement) e;
   9.186 +                    err = "Error method must have the same parameters as @OnLocation one";
   9.187 +                    continue METHODS;
   9.188 +                }
   9.189 +            }
   9.190              return true;
   9.191          }
   9.192          if (err == null) {
    10.1 --- a/geo/src/test/java/net/java/html/geo/OnLocationTest.java	Fri Jul 26 13:45:41 2013 +0200
    10.2 +++ b/geo/src/test/java/net/java/html/geo/OnLocationTest.java	Thu Aug 01 17:36:01 2013 +0200
    10.3 @@ -104,4 +104,12 @@
    10.4          if (h.isSupported()) h.start();
    10.5          h.stop();
    10.6      }
    10.7 +    
    10.8 +    @OnLocation(onError = "errParam") void withParam(Position pos, int param) {
    10.9 +        instCnt = param;
   10.10 +    }
   10.11 +    
   10.12 +    void errParam(Exception ex, int param) {
   10.13 +        instCnt = param;
   10.14 +    }
   10.15  }
    11.1 --- a/geo/src/test/java/org/apidesign/html/geo/impl/GeoProcessorTest.java	Fri Jul 26 13:45:41 2013 +0200
    11.2 +++ b/geo/src/test/java/org/apidesign/html/geo/impl/GeoProcessorTest.java	Thu Aug 01 17:36:01 2013 +0200
    11.3 @@ -40,7 +40,7 @@
    11.4              + "}\n"
    11.5          );
    11.6          res.assertErrors();
    11.7 -        res.assertError("one net.java.html.geo.Position argument");
    11.8 +        res.assertError("first argument must be net.java.html.geo.Position");
    11.9      }
   11.10      
   11.11      @Test public void onLocationMethodCannotBePrivate() throws IOException {
   11.12 @@ -86,7 +86,7 @@
   11.13              + "}\n"
   11.14          );
   11.15          res.assertErrors();
   11.16 -        res.assertError("take one Exception arg");
   11.17 +        res.assertError("Error method first argument needs to be Exception");
   11.18      }
   11.19      
   11.20  }
    12.1 --- a/json-tck/pom.xml	Fri Jul 26 13:45:41 2013 +0200
    12.2 +++ b/json-tck/pom.xml	Thu Aug 01 17:36:01 2013 +0200
    12.3 @@ -4,11 +4,11 @@
    12.4    <parent>
    12.5      <groupId>org.apidesign</groupId>
    12.6      <artifactId>html</artifactId>
    12.7 -    <version>0.4-SNAPSHOT</version>
    12.8 +    <version>0.5-SNAPSHOT</version>
    12.9    </parent>
   12.10    <groupId>org.apidesign.html</groupId>
   12.11    <artifactId>net.java.html.json.tck</artifactId>
   12.12 -  <version>0.4-SNAPSHOT</version>
   12.13 +  <version>0.5-SNAPSHOT</version>
   12.14    <name>TCK for JSON Model</name>
   12.15    <url>http://maven.apache.org</url>
   12.16    <properties>
   12.17 @@ -31,7 +31,7 @@
   12.18      <dependency>
   12.19        <groupId>org.apidesign.html</groupId>
   12.20        <artifactId>net.java.html.json</artifactId>
   12.21 -      <version>0.4-SNAPSHOT</version>
   12.22 +      <version>0.5-SNAPSHOT</version>
   12.23        <type>jar</type>
   12.24      </dependency>
   12.25      <dependency>
    13.1 --- a/json/pom.xml	Fri Jul 26 13:45:41 2013 +0200
    13.2 +++ b/json/pom.xml	Thu Aug 01 17:36:01 2013 +0200
    13.3 @@ -4,11 +4,11 @@
    13.4    <parent>
    13.5      <groupId>org.apidesign</groupId>
    13.6      <artifactId>html</artifactId>
    13.7 -    <version>0.4-SNAPSHOT</version>
    13.8 +    <version>0.5-SNAPSHOT</version>
    13.9    </parent>
   13.10    <groupId>org.apidesign.html</groupId>
   13.11    <artifactId>net.java.html.json</artifactId>
   13.12 -  <version>0.4-SNAPSHOT</version>
   13.13 +  <version>0.5-SNAPSHOT</version>
   13.14    <name>JSON Model in Java</name>
   13.15    <url>http://maven.apache.org</url>
   13.16    <properties>
    14.1 --- a/json/src/main/java/net/java/html/json/package.html	Fri Jul 26 13:45:41 2013 +0200
    14.2 +++ b/json/src/main/java/net/java/html/json/package.html	Thu Aug 01 17:36:01 2013 +0200
    14.3 @@ -61,7 +61,7 @@
    14.4  &lt;dependency&gt;
    14.5    &lt;groupId&gt;org.glassfish.jersey.media&lt;/groupId&gt;
    14.6    &lt;artifactId&gt;html-json&lt;/artifactId&gt;
    14.7 -  &lt;version&gt;2.1-SNAPSHOT&lt;/version&gt;
    14.8 +  &lt;version&gt;2.1&lt;/version&gt;
    14.9    &lt;scope&gt;runtime&lt;/scope&gt;
   14.10  &lt;/dependency&gt;
   14.11      </pre>
    15.1 --- a/ko-archetype-test/pom.xml	Fri Jul 26 13:45:41 2013 +0200
    15.2 +++ b/ko-archetype-test/pom.xml	Thu Aug 01 17:36:01 2013 +0200
    15.3 @@ -4,11 +4,11 @@
    15.4      <parent>
    15.5          <groupId>org.apidesign</groupId>
    15.6          <artifactId>html</artifactId>
    15.7 -        <version>0.4-SNAPSHOT</version>
    15.8 +        <version>0.5-SNAPSHOT</version>
    15.9      </parent>
   15.10      <groupId>org.apidesign.html</groupId>
   15.11      <artifactId>ko-archetype-test</artifactId>
   15.12 -    <version>0.4-SNAPSHOT</version>
   15.13 +    <version>0.5-SNAPSHOT</version>
   15.14      <name>Knockout 4 Java Archetype Test</name>
   15.15      <url>http://maven.apache.org</url>
   15.16      <description>Verifies the Knockout &amp; net.java.html.json archetype behaves properly.</description>
   15.17 @@ -19,7 +19,7 @@
   15.18          <dependency>
   15.19              <groupId>${project.groupId}</groupId>
   15.20              <artifactId>knockout4j-archetype</artifactId>
   15.21 -            <version>0.4-SNAPSHOT</version>
   15.22 +            <version>0.5-SNAPSHOT</version>
   15.23          </dependency>
   15.24          <dependency>
   15.25              <groupId>org.testng</groupId>
    16.1 --- a/ko-archetype/pom.xml	Fri Jul 26 13:45:41 2013 +0200
    16.2 +++ b/ko-archetype/pom.xml	Thu Aug 01 17:36:01 2013 +0200
    16.3 @@ -4,11 +4,11 @@
    16.4    <parent>
    16.5      <artifactId>html</artifactId>
    16.6      <groupId>org.apidesign</groupId>
    16.7 -    <version>0.4-SNAPSHOT</version>
    16.8 +    <version>0.5-SNAPSHOT</version>
    16.9    </parent>
   16.10    <groupId>org.apidesign.html</groupId>
   16.11    <artifactId>knockout4j-archetype</artifactId>
   16.12 -  <version>0.4-SNAPSHOT</version>
   16.13 +  <version>0.5-SNAPSHOT</version>
   16.14    <packaging>jar</packaging>
   16.15    <name>Knockout 4 Java Maven Archetype</name>
   16.16    <description>
    17.1 --- a/ko-fx/pom.xml	Fri Jul 26 13:45:41 2013 +0200
    17.2 +++ b/ko-fx/pom.xml	Thu Aug 01 17:36:01 2013 +0200
    17.3 @@ -4,15 +4,14 @@
    17.4    <parent>
    17.5      <groupId>org.apidesign</groupId>
    17.6      <artifactId>html</artifactId>
    17.7 -    <version>0.4-SNAPSHOT</version>
    17.8 +    <version>0.5-SNAPSHOT</version>
    17.9    </parent>
   17.10    <groupId>org.apidesign.html</groupId>
   17.11    <artifactId>ko-fx</artifactId>
   17.12 -  <version>0.4-SNAPSHOT</version>
   17.13 +  <version>0.5-SNAPSHOT</version>
   17.14    <name>Knockout.fx</name>
   17.15    <url>http://maven.apache.org</url>
   17.16    <properties>
   17.17 -    <jfxrt.jar>${java.home}/lib/jfxrt.jar</jfxrt.jar>
   17.18      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   17.19    </properties>
   17.20    <build>
    18.1 --- a/pom.xml	Fri Jul 26 13:45:41 2013 +0200
    18.2 +++ b/pom.xml	Thu Aug 01 17:36:01 2013 +0200
    18.3 @@ -3,7 +3,7 @@
    18.4    <modelVersion>4.0.0</modelVersion>
    18.5    <groupId>org.apidesign</groupId>
    18.6    <artifactId>html</artifactId>
    18.7 -  <version>0.4-SNAPSHOT</version>
    18.8 +  <version>0.5-SNAPSHOT</version>
    18.9    <packaging>pom</packaging>
   18.10    <name>HTML APIs via Java</name>
   18.11    <parent> 
   18.12 @@ -39,9 +39,9 @@
   18.13        <url>http://apidesign.org</url>
   18.14    </organization>
   18.15    <scm>
   18.16 -      <connection>scm:hg:https://hg.java.net/hg/html~html4j</connection>
   18.17 -      <developerConnection>scm:hg:https://hg.java.net/hg/html~html4j</developerConnection>
   18.18 -      <url>https://hg.java.net/hg/html~html4j</url>
   18.19 +      <connection>scm:hg:https://hg.apidesign.org/hg/html~html4j</connection>
   18.20 +      <developerConnection>scm:hg:https://hg.apidesign.org/hg/html~html4j</developerConnection>
   18.21 +      <url>https://hg.apidesign.org/hg/html~html4j</url>
   18.22        <tag>default</tag>
   18.23    </scm>
   18.24    <repositories>
   18.25 @@ -256,4 +256,28 @@
   18.26          </dependency>
   18.27        </dependencies>
   18.28    </dependencyManagement>
   18.29 +  <profiles>
   18.30 +      <profile>
   18.31 +          <id>jdk8</id>
   18.32 +          <activation>
   18.33 +              <file>
   18.34 +                  <exists>${java.home}/lib/ext/jfxrt.jar</exists>
   18.35 +              </file>
   18.36 +          </activation>
   18.37 +          <properties>
   18.38 +            <jfxrt.jar>${java.home}/lib/ext/jfxrt.jar</jfxrt.jar>
   18.39 +          </properties>
   18.40 +      </profile>
   18.41 +      <profile>
   18.42 +          <id>jdk7</id>
   18.43 +          <activation>
   18.44 +              <file>
   18.45 +                  <exists>${java.home}/lib/jfxrt.jar</exists>
   18.46 +              </file>
   18.47 +          </activation>
   18.48 +          <properties>
   18.49 +            <jfxrt.jar>${java.home}/lib/jfxrt.jar</jfxrt.jar>
   18.50 +          </properties>
   18.51 +      </profile>
   18.52 +  </profiles>
   18.53  </project>
   18.54 \ No newline at end of file