1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/htmlpage/pom.xml Mon Sep 24 12:39:21 2012 +0200
1.3 @@ -0,0 +1,31 @@
1.4 +<?xml version="1.0"?>
1.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"
1.6 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
1.7 + <modelVersion>4.0.0</modelVersion>
1.8 + <parent>
1.9 + <groupId>org.apidesign</groupId>
1.10 + <artifactId>bck2brwsr</artifactId>
1.11 + <version>1.0-SNAPSHOT</version>
1.12 + </parent>
1.13 + <groupId>org.apidesign</groupId>
1.14 + <artifactId>htmlpage</artifactId>
1.15 + <version>1.0-SNAPSHOT</version>
1.16 + <name>htmlpage</name>
1.17 + <url>http://maven.apache.org</url>
1.18 + <properties>
1.19 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1.20 + </properties>
1.21 + <dependencies>
1.22 + <dependency>
1.23 + <groupId>org.testng</groupId>
1.24 + <artifactId>testng</artifactId>
1.25 + <scope>test</scope>
1.26 + <exclusions>
1.27 + <exclusion>
1.28 + <artifactId>junit</artifactId>
1.29 + <groupId>junit</groupId>
1.30 + </exclusion>
1.31 + </exclusions>
1.32 + </dependency>
1.33 + </dependencies>
1.34 +</project>
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/ProcessPage.java Mon Sep 24 12:39:21 2012 +0200
2.3 @@ -0,0 +1,61 @@
2.4 +package org.apidesign.bck2brwsr.htmlpage;
2.5 +
2.6 +import java.io.IOException;
2.7 +import java.io.InputStream;
2.8 +import java.util.Collections;
2.9 +import java.util.Map;
2.10 +import java.util.Set;
2.11 +import java.util.TreeMap;
2.12 +import javax.xml.parsers.DocumentBuilder;
2.13 +import javax.xml.parsers.DocumentBuilderFactory;
2.14 +import org.w3c.dom.Document;
2.15 +import org.w3c.dom.Element;
2.16 +import org.w3c.dom.Node;
2.17 +import org.w3c.dom.NodeList;
2.18 +
2.19 +class ProcessPage {
2.20 + private final Map<String,String> ids2Elems = new TreeMap<String, String>();
2.21 +
2.22 + public Set<String> ids() {
2.23 + return Collections.unmodifiableSet(ids2Elems.keySet());
2.24 + }
2.25 +
2.26 + public String tagNameForId(String id) {
2.27 + return ids2Elems.get(id);
2.28 + }
2.29 +
2.30 + public static ProcessPage readPage(InputStream is) throws IOException {
2.31 + DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
2.32 + f.setValidating(false);
2.33 + f.setIgnoringComments(true);
2.34 +
2.35 + Document doc = null;
2.36 + try {
2.37 + DocumentBuilder b = f.newDocumentBuilder();
2.38 + doc = b.parse(is);
2.39 + } catch (IOException ex) {
2.40 + throw ex;
2.41 + } catch (Exception e) {
2.42 + throw new IOException(e);
2.43 + }
2.44 + Element root = doc.getDocumentElement();
2.45 +
2.46 + ProcessPage pp = new ProcessPage();
2.47 + pp.seekForIds(root);
2.48 + return pp;
2.49 + }
2.50 +
2.51 + private void seekForIds(Element e) {
2.52 + String val = e.getAttribute("id");
2.53 + if (val != null && !val.isEmpty()) {
2.54 + String prev = ids2Elems.put(val, e.getTagName());
2.55 + }
2.56 + NodeList arr = e.getChildNodes();
2.57 + for (int i = 0; i < arr.getLength(); i++) {
2.58 + final Node n = arr.item(i);
2.59 + if (n instanceof Element) {
2.60 + seekForIds((Element)n);
2.61 + }
2.62 + }
2.63 + }
2.64 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/htmlpage/src/test/java/org/apidesign/bck2brwsr/htmlpage/ProcessPageTest.java Mon Sep 24 12:39:21 2012 +0200
3.3 @@ -0,0 +1,23 @@
3.4 +package org.apidesign.bck2brwsr.htmlpage;
3.5 +
3.6 +import java.io.IOException;
3.7 +import java.io.InputStream;
3.8 +import java.util.Set;
3.9 +import org.testng.annotations.Test;
3.10 +import static org.testng.Assert.*;
3.11 +
3.12 +public class ProcessPageTest {
3.13 +
3.14 +
3.15 + @Test public void findsThreeIds() throws IOException {
3.16 + InputStream is = ProcessPageTest.class.getResourceAsStream("TestPage.xhtml");
3.17 + assertNotNull(is, "Sample HTML page found");
3.18 + ProcessPage res = ProcessPage.readPage(is);
3.19 + final Set<String> ids = res.ids();
3.20 + assertEquals(ids.size(), 3, "Three ids found: " + ids);
3.21 +
3.22 + assertEquals(res.tagNameForId("pg.title"), "title");
3.23 + assertEquals(res.tagNameForId("pg.button"), "button");
3.24 + assertEquals(res.tagNameForId("pg.text"), "input");
3.25 + }
3.26 +}
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/htmlpage/src/test/resources/org/apidesign/bck2brwsr/htmlpage/TestPage.xhtml Mon Sep 24 12:39:21 2012 +0200
4.3 @@ -0,0 +1,11 @@
4.4 +<?xml version="1.0" encoding="UTF-8"?>
4.5 +<!DOCTYPE html>
4.6 +<html xmlns="http://www.w3.org/1999/xhtml">
4.7 + <head>
4.8 + <title id="pg.title">Default Title</title>
4.9 + </head>
4.10 + <body>
4.11 + New title: <input id="pg.text"/>
4.12 + <button id="pg.button">Change title!</button>
4.13 + </body>
4.14 +</html>
5.1 --- a/pom.xml Mon Sep 24 11:22:50 2012 +0200
5.2 +++ b/pom.xml Mon Sep 24 12:39:21 2012 +0200
5.3 @@ -1,5 +1,5 @@
5.4 -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5.5 - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5.6 +<?xml version="1.0" encoding="UTF-8"?>
5.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">
5.8 <modelVersion>4.0.0</modelVersion>
5.9 <groupId>org.apidesign</groupId>
5.10 <artifactId>bck2brwsr</artifactId>
5.11 @@ -8,6 +8,7 @@
5.12 <name>Back 2 Browser</name>
5.13 <modules>
5.14 <module>vm</module>
5.15 + <module>htmlpage</module>
5.16 </modules>
5.17 <licenses>
5.18 <license>
5.19 @@ -65,4 +66,4 @@
5.20 <properties>
5.21 <license>COPYING</license>
5.22 </properties>
5.23 -</project>
5.24 +</project>
5.25 \ No newline at end of file
6.1 --- a/vm/pom.xml Mon Sep 24 11:22:50 2012 +0200
6.2 +++ b/vm/pom.xml Mon Sep 24 12:39:21 2012 +0200
6.3 @@ -1,6 +1,11 @@
6.4 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6.5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
6.6 <modelVersion>4.0.0</modelVersion>
6.7 + <parent>
6.8 + <groupId>org.apidesign</groupId>
6.9 + <artifactId>bck2brwsr</artifactId>
6.10 + <version>1.0-SNAPSHOT</version>
6.11 + </parent>
6.12
6.13 <groupId>org.apidesign</groupId>
6.14 <artifactId>vm4brwsr</artifactId>
6.15 @@ -56,7 +61,6 @@
6.16 <dependency>
6.17 <groupId>org.testng</groupId>
6.18 <artifactId>testng</artifactId>
6.19 - <version>6.7</version>
6.20 <scope>test</scope>
6.21 <exclusions>
6.22 <exclusion>
6.23 @@ -68,7 +72,6 @@
6.24 <dependency>
6.25 <groupId>org.netbeans.api</groupId>
6.26 <artifactId>org-netbeans-modules-classfile</artifactId>
6.27 - <version>RELEASE72</version>
6.28 <type>jar</type>
6.29 </dependency>
6.30 </dependencies>