X Tutup
Skip to content
This repository was archived by the owner on Jan 30, 2019. It is now read-only.

Commit fe9528d

Browse files
author
jglick
committed
Making Validator use current JAXP APIs rather than old Sun parser.jar, and entering 2.0 DTDs for resolver.
svn path=/trunk/; revision=67
1 parent 5f61fc6 commit fe9528d

File tree

2 files changed

+36
-59
lines changed

2 files changed

+36
-59
lines changed

jhMaster/JavaHelp/demos/GNUmakefile

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,10 @@
4848
SUBDIRS = hs apidoc object jhdemo idedemo searchdemo merge newmerge browser newbrowser lib bin
4949

5050
DTDPATH = ../doc/public-spec/dtd
51-
ifeq ($(XMLHOME),)
52-
XMLHOME = /java/re/jaxp/1.0.1_001/archive/fcs/binaries
53-
endif
5451

5552
HS_FILES := $(shell find hs object merge newmerge searchdemo ../doc -name 'SCCS*' -prune -o -name '*.hs' -print)
5653
JHM_FILES := $(shell find hs object merge newmerge searchdemo ../doc -name 'SCCS*' -prune -o -name '*.jhm' -print)
5754
XML_FILES := $(shell find hs object merge newmerge searchdemo ../doc -name 'SCCS*' -prune -o -name '*.xml' -print)
58-
JAXP_FILES := $(shell ls $(XMLHOME)/*.jar)
5955

6056
#all: validate
6157
all:
@@ -76,13 +72,10 @@ clean:
7672

7773
# Validate
7874

79-
validate: jaxp_jars Validator.class $(XML_FILES) $(HS_FILES) $(JHM_FILES)
80-
export CLASSPATH; CLASSPATH=$(CLASSPATH):parser.jar:$(DTDPATH):. ; \
75+
validate: Validator.class $(XML_FILES) $(HS_FILES) $(JHM_FILES)
76+
export CLASSPATH; CLASSPATH=$(CLASSPATH):$(DTDPATH):. ; \
8177
java Validator $(XML_FILES) $(HS_FILES) $(JHM_FILES)
8278

8379
%.class: %.java
84-
export CLASSPATH; CLASSPATH=$(CLASSPATH):parser.jar ; \
80+
export CLASSPATH; CLASSPATH=$(CLASSPATH) ; \
8581
javac $<
86-
87-
jaxp_jars: $(JAXP_FILES)
88-
cp -f $(JAXP_FILES) ./

jhMaster/JavaHelp/demos/Validator.java

Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -39,41 +39,30 @@
3939
*/
4040

4141
import java.io.File;
42-
import com.sun.xml.parser.Resolver;
43-
import com.sun.xml.parser.ValidatingParser;
44-
import com.sun.xml.parser.Parser;
42+
import java.io.IOException;
43+
import java.util.HashMap;
44+
import java.util.Map;
45+
import javax.xml.parsers.SAXParser;
46+
import javax.xml.parsers.SAXParserFactory;
4547
import org.xml.sax.InputSource;
4648
import org.xml.sax.SAXException;
4749
import org.xml.sax.SAXParseException;
48-
import org.xml.sax.HandlerBase;
50+
import org.xml.sax.helpers.DefaultHandler;
4951

5052
public class Validator
5153
{
52-
private static String hsID = "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN";
53-
private static String hsDTD = "helpset_1_0.dtd";
5454

55-
private static String tocID = "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN";
56-
private static String tocDTD = "toc_1_0.dtd";
57-
58-
private static String indexID = "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN";
59-
private static String indexDTD = "index_1_0.dtd";
60-
61-
private static String mapID = "-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN";
62-
private static String mapDTD = "map_1_0.dtd";
63-
64-
private static void updateResolver(Resolver r,
65-
String pid,
66-
String dtd) {
67-
r.registerCatalogEntry(pid, dtd, null);
68-
69-
if (false)
70-
try {
71-
java.net.URL u = ClassLoader.getSystemResource(dtd);
72-
String sid = u.toExternalForm();
73-
r.registerCatalogEntry(pid, sid);
74-
} catch (Exception e) {
75-
System.err.println("caught "+e);
76-
}
55+
private static final Map ID_TO_DTD = new HashMap();
56+
static {
57+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN", "helpset_1_0.dtd");
58+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN", "toc_1_0.dtd");
59+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN", "index_1_0.dtd");
60+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN", "map_1_0.dtd");
61+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 2.0//EN", "helpset_2_0.dtd");
62+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 2.0//EN", "toc_2_0.dtd");
63+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp Index Version 2.0//EN", "index_2_0.dtd");
64+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp Map Version 2.0//EN", "map_2_0.dtd");
65+
ID_TO_DTD.put("-//Sun Microsystems Inc.//DTD JavaHelp Favorites Version 2.0//EN", "favorites_2_0.dtd");
7766
}
7867

7968
//
@@ -83,33 +72,23 @@ private static void updateResolver(Resolver r,
8372
public static void main (String argv [])
8473
{
8574
InputSource input;
86-
Resolver resolver;
8775

8876
if (argv.length < 1) {
8977
System.err.println ("Usage: cmd filename ...");
9078
System.exit (1);
9179
}
9280

9381
try {
94-
// register some publicIDs
95-
resolver = new Resolver();
96-
97-
updateResolver(resolver, hsID, hsDTD);
98-
updateResolver(resolver, tocID, tocDTD);
99-
updateResolver(resolver, indexID, indexDTD);
100-
updateResolver(resolver, mapID, mapDTD);
101-
10282
// create a parser
103-
Parser p = new ValidatingParser();
104-
p.setEntityResolver(resolver);
105-
p.setErrorHandler(new MyHandler());
83+
84+
SAXParserFactory factory = SAXParserFactory.newInstance();
85+
factory.setValidating(true);
86+
SAXParser p = factory.newSAXParser();
10687

10788
for (int i=0; i<argv.length; i++) {
108-
// turn the filename into an input source and parse
109-
input = resolver.createInputSource(new File (argv [i]));
11089
try {
11190
System.err.println("Parsing "+argv[i]+"...");
112-
p.parse(input);
91+
p.parse(new File(argv[i]), new MyHandler());
11392
} catch (SAXParseException err) {
11493
System.out.println ("** Parsing error"
11594
+ ", line " + err.getLineNumber ()
@@ -130,13 +109,8 @@ public static void main (String argv [])
130109

131110
System.exit (0);
132111
}
133-
}
134-
// An error handler
135112

136-
class MyHandler extends HandlerBase {
137-
public MyHandler() {
138-
super();
139-
}
113+
private static class MyHandler extends DefaultHandler {
140114

141115
public void error(SAXParseException err) throws SAXException {
142116
System.out.println ("** Parsing error"
@@ -159,5 +133,15 @@ public void warning(SAXParseException err) throws SAXException {
159133
System.out.println(" " + err.getMessage ());
160134
super.warning(err);
161135
}
136+
137+
public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException {
138+
String dtd = (String) ID_TO_DTD.get(publicId);
139+
if (dtd != null) {
140+
return new InputSource(Validator.class.getResourceAsStream(dtd));
141+
} else {
142+
return null;
143+
}
144+
}
162145
}
163146

147+
}

0 commit comments

Comments
 (0)
X Tutup