nokogiri 1.11.0.rc4-java → 1.11.5-java

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +12 -12
  4. data/LICENSE.md +1 -1
  5. data/README.md +168 -91
  6. data/dependencies.yml +12 -12
  7. data/ext/java/nokogiri/EncodingHandler.java +76 -89
  8. data/ext/java/nokogiri/HtmlDocument.java +135 -144
  9. data/ext/java/nokogiri/HtmlElementDescription.java +102 -117
  10. data/ext/java/nokogiri/HtmlEntityLookup.java +33 -60
  11. data/ext/java/nokogiri/HtmlSaxParserContext.java +218 -222
  12. data/ext/java/nokogiri/HtmlSaxPushParser.java +162 -169
  13. data/ext/java/nokogiri/NokogiriService.java +595 -556
  14. data/ext/java/nokogiri/XmlAttr.java +118 -126
  15. data/ext/java/nokogiri/XmlAttributeDecl.java +95 -106
  16. data/ext/java/nokogiri/XmlCdata.java +35 -58
  17. data/ext/java/nokogiri/XmlComment.java +46 -67
  18. data/ext/java/nokogiri/XmlDocument.java +645 -572
  19. data/ext/java/nokogiri/XmlDocumentFragment.java +125 -137
  20. data/ext/java/nokogiri/XmlDtd.java +448 -414
  21. data/ext/java/nokogiri/XmlElement.java +23 -48
  22. data/ext/java/nokogiri/XmlElementContent.java +343 -316
  23. data/ext/java/nokogiri/XmlElementDecl.java +124 -125
  24. data/ext/java/nokogiri/XmlEntityDecl.java +119 -127
  25. data/ext/java/nokogiri/XmlEntityReference.java +49 -72
  26. data/ext/java/nokogiri/XmlNamespace.java +175 -175
  27. data/ext/java/nokogiri/XmlNode.java +1843 -1620
  28. data/ext/java/nokogiri/XmlNodeSet.java +361 -331
  29. data/ext/java/nokogiri/XmlProcessingInstruction.java +47 -69
  30. data/ext/java/nokogiri/XmlReader.java +513 -450
  31. data/ext/java/nokogiri/XmlRelaxng.java +85 -104
  32. data/ext/java/nokogiri/XmlSaxParserContext.java +328 -315
  33. data/ext/java/nokogiri/XmlSaxPushParser.java +227 -220
  34. data/ext/java/nokogiri/XmlSchema.java +328 -295
  35. data/ext/java/nokogiri/XmlSyntaxError.java +113 -115
  36. data/ext/java/nokogiri/XmlText.java +55 -76
  37. data/ext/java/nokogiri/XmlXpathContext.java +240 -238
  38. data/ext/java/nokogiri/XsltStylesheet.java +280 -269
  39. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  40. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +201 -202
  41. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +17 -10
  42. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +43 -16
  43. data/ext/java/nokogiri/internals/NokogiriDomParser.java +63 -80
  44. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  45. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +27 -52
  46. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -286
  47. data/ext/java/nokogiri/internals/NokogiriHelpers.java +736 -652
  48. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +184 -173
  49. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +81 -98
  50. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +64 -79
  51. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +84 -99
  52. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +48 -65
  53. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +116 -131
  54. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -56
  55. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +23 -46
  56. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +55 -72
  57. data/ext/java/nokogiri/internals/ParserContext.java +206 -211
  58. data/ext/java/nokogiri/internals/ReaderNode.java +478 -403
  59. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -739
  60. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +31 -54
  61. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  62. data/ext/java/nokogiri/internals/XmlDeclHandler.java +3 -34
  63. data/ext/java/nokogiri/internals/XmlDomParserContext.java +206 -207
  64. data/ext/java/nokogiri/internals/XmlSaxParser.java +22 -47
  65. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +71 -68
  66. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +137 -118
  67. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +27 -21
  68. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +74 -61
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +230 -205
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +572 -547
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +17 -10
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +17 -10
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +323 -302
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +232 -219
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +22 -15
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +23 -16
  77. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +23 -16
  78. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +22 -15
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +575 -545
  80. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +141 -120
  81. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +39 -38
  82. data/ext/java/nokogiri/internals/c14n/Constants.java +13 -10
  83. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +279 -247
  84. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +66 -53
  85. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +44 -37
  86. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +135 -120
  87. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +59 -48
  88. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +384 -334
  89. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +25 -24
  90. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +151 -140
  91. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +456 -423
  92. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1466 -1500
  93. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +626 -574
  94. data/ext/nokogiri/depend +34 -474
  95. data/ext/nokogiri/extconf.rb +270 -183
  96. data/ext/nokogiri/html_document.c +10 -15
  97. data/ext/nokogiri/html_element_description.c +84 -71
  98. data/ext/nokogiri/html_entity_lookup.c +21 -16
  99. data/ext/nokogiri/html_sax_parser_context.c +67 -64
  100. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  101. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  102. data/ext/nokogiri/nokogiri.c +190 -60
  103. data/ext/nokogiri/test_global_handlers.c +40 -0
  104. data/ext/nokogiri/xml_attr.c +15 -15
  105. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  106. data/ext/nokogiri/xml_cdata.c +13 -18
  107. data/ext/nokogiri/xml_comment.c +19 -26
  108. data/ext/nokogiri/xml_document.c +246 -188
  109. data/ext/nokogiri/xml_document_fragment.c +13 -15
  110. data/ext/nokogiri/xml_dtd.c +54 -48
  111. data/ext/nokogiri/xml_element_content.c +30 -27
  112. data/ext/nokogiri/xml_element_decl.c +22 -22
  113. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  114. data/ext/nokogiri/xml_entity_decl.c +32 -30
  115. data/ext/nokogiri/xml_entity_reference.c +16 -18
  116. data/ext/nokogiri/xml_namespace.c +56 -49
  117. data/ext/nokogiri/xml_node.c +371 -320
  118. data/ext/nokogiri/xml_node_set.c +168 -156
  119. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  120. data/ext/nokogiri/xml_reader.c +191 -157
  121. data/ext/nokogiri/xml_relax_ng.c +29 -23
  122. data/ext/nokogiri/xml_sax_parser.c +117 -112
  123. data/ext/nokogiri/xml_sax_parser_context.c +101 -84
  124. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  125. data/ext/nokogiri/xml_schema.c +48 -42
  126. data/ext/nokogiri/xml_syntax_error.c +42 -21
  127. data/ext/nokogiri/xml_text.c +13 -17
  128. data/ext/nokogiri/xml_xpath_context.c +134 -127
  129. data/ext/nokogiri/xslt_stylesheet.c +157 -157
  130. data/lib/nokogiri.rb +2 -6
  131. data/lib/nokogiri/css/parser.rb +1 -1
  132. data/lib/nokogiri/extension.rb +26 -0
  133. data/lib/nokogiri/html/document_fragment.rb +15 -15
  134. data/lib/nokogiri/nokogiri.jar +0 -0
  135. data/lib/nokogiri/version/constant.rb +1 -1
  136. data/lib/nokogiri/version/info.rb +32 -8
  137. data/lib/nokogiri/xml/document.rb +74 -28
  138. data/lib/nokogiri/xml/node.rb +39 -42
  139. data/lib/nokogiri/xml/reader.rb +2 -9
  140. data/lib/nokogiri/xml/xpath.rb +1 -3
  141. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  142. metadata +62 -127
  143. data/ext/nokogiri/xml_io.c +0 -63
  144. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
@@ -4,17 +4,24 @@ import org.xml.sax.ErrorHandler;
4
4
  import org.xml.sax.SAXException;
5
5
  import org.xml.sax.SAXParseException;
6
6
 
7
- public class IgnoreSchemaErrorsErrorHandler implements ErrorHandler {
7
+ public class IgnoreSchemaErrorsErrorHandler implements ErrorHandler
8
+ {
8
9
 
9
- @Override
10
- public void warning(SAXParseException exception) throws SAXException {
11
- }
10
+ @Override
11
+ public void
12
+ warning(SAXParseException exception) throws SAXException
13
+ {
14
+ }
12
15
 
13
- @Override
14
- public void error(SAXParseException exception) throws SAXException {
15
- }
16
+ @Override
17
+ public void
18
+ error(SAXParseException exception) throws SAXException
19
+ {
20
+ }
16
21
 
17
- @Override
18
- public void fatalError(SAXParseException exception) throws SAXException {
19
- }
22
+ @Override
23
+ public void
24
+ fatalError(SAXParseException exception) throws SAXException
25
+ {
26
+ }
20
27
  }
@@ -23,7 +23,8 @@ import nokogiri.XmlSaxPushParser;
23
23
  *
24
24
  * @author John Shahid <jvshahid@gmail.com>
25
25
  */
26
- public class NokogiriBlockingQueueInputStream extends InputStream {
26
+ public class NokogiriBlockingQueueInputStream extends InputStream
27
+ {
27
28
  private final LinkedBlockingQueue<Task> queue;
28
29
  protected Task currentTask;
29
30
  protected ByteArrayInputStream currentStream;
@@ -32,10 +33,13 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
32
33
 
33
34
  public static final ByteArrayInputStream END = new ByteArrayInputStream(new byte[0]);
34
35
 
35
- private static class Task extends FutureTask<Void> {
36
+ private static class Task extends FutureTask<Void>
37
+ {
36
38
  private final ByteArrayInputStream stream;
37
39
 
38
- public Task(ByteArrayInputStream stream) {
40
+ public
41
+ Task(ByteArrayInputStream stream)
42
+ {
39
43
  super(new Callable<Void>() {
40
44
  @Override
41
45
  public Void call() throws Exception {
@@ -46,28 +50,38 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
46
50
  this.stream = stream;
47
51
  }
48
52
 
49
- public ByteArrayInputStream getStream() {
53
+ public ByteArrayInputStream
54
+ getStream()
55
+ {
50
56
  return stream;
51
57
  }
52
58
 
53
59
  @Override
54
- public void run() {
60
+ public void
61
+ run()
62
+ {
55
63
  // don't do anything
56
64
  }
57
65
 
58
66
  @Override
59
- public boolean runAndReset() {
67
+ public boolean
68
+ runAndReset()
69
+ {
60
70
  // don't do anything
61
71
  return true;
62
72
  }
63
73
 
64
74
  @Override
65
- public void set(Void v) {
75
+ public void
76
+ set(Void v)
77
+ {
66
78
  super.set(v);
67
79
  }
68
80
  }
69
81
 
70
- public NokogiriBlockingQueueInputStream() {
82
+ public
83
+ NokogiriBlockingQueueInputStream()
84
+ {
71
85
  queue = new LinkedBlockingQueue<Task>();
72
86
  }
73
87
 
@@ -77,7 +91,9 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
77
91
  * that the read method will block indefinitely.
78
92
  */
79
93
  @Override
80
- public synchronized void close() {
94
+ public synchronized void
95
+ close()
96
+ {
81
97
  closed = true;
82
98
  List<Task> tasks = new LinkedList<Task>();
83
99
  queue.drainTo(tasks);
@@ -98,9 +114,12 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
98
114
  *
99
115
  * @return
100
116
  */
101
- public synchronized Future<Void> addChunk(ByteArrayInputStream stream) throws ClosedStreamException {
102
- if (closed)
117
+ public synchronized Future<Void>
118
+ addChunk(ByteArrayInputStream stream) throws ClosedStreamException
119
+ {
120
+ if (closed) {
103
121
  throw new ClosedStreamException("Cannot add a chunk to a closed stream");
122
+ }
104
123
  Task task = new Task(stream);
105
124
  queue.add(task);
106
125
  return task;
@@ -112,10 +131,13 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
112
131
  * @see java.io.InputStream#read()
113
132
  */
114
133
  @Override
115
- public int read() throws IOException {
134
+ public int
135
+ read() throws IOException
136
+ {
116
137
  if (currentTask == null || currentStream.available() == 0)
117
- if (getNextTask() == -1)
138
+ if (getNextTask() == -1) {
118
139
  return -1;
140
+ }
119
141
  return currentStream.read();
120
142
  }
121
143
 
@@ -125,7 +147,9 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
125
147
  * @see java.io.InputStream#read(byte[], int, int)
126
148
  */
127
149
  @Override
128
- public int read(byte[] bytes, int off, int len) {
150
+ public int
151
+ read(byte[] bytes, int off, int len)
152
+ {
129
153
  if (currentTask == null || currentStream.available() == 0) {
130
154
  if (getNextTask() == -1) {
131
155
  currentTask.set(null);
@@ -135,11 +159,14 @@ public class NokogiriBlockingQueueInputStream extends InputStream {
135
159
  return currentStream.read(bytes, off, len);
136
160
  }
137
161
 
138
- protected int getNextTask() {
162
+ protected int
163
+ getNextTask()
164
+ {
139
165
  while (true) {
140
166
  try {
141
- if (currentTask != null)
167
+ if (currentTask != null) {
142
168
  currentTask.set(null);
169
+ }
143
170
  currentTask = queue.take();
144
171
  currentStream = currentTask.getStream();
145
172
  return currentStream.available() == 0 ? -1 : currentStream.available();
@@ -1,35 +1,3 @@
1
- /**
2
- * (The MIT License)
3
- *
4
- * Copyright (c) 2008 - 2011:
5
- *
6
- * * {Aaron Patterson}[http://tenderlovemaking.com]
7
- * * {Mike Dalessio}[http://mike.daless.io]
8
- * * {Charles Nutter}[http://blog.headius.com]
9
- * * {Sergio Arbeo}[http://www.serabe.com]
10
- * * {Patrick Mahoney}[http://polycrystal.org]
11
- * * {Yoko Harada}[http://yokolet.blogspot.com]
12
- *
13
- * Permission is hereby granted, free of charge, to any person obtaining
14
- * a copy of this software and associated documentation files (the
15
- * 'Software'), to deal in the Software without restriction, including
16
- * without limitation the rights to use, copy, modify, merge, publish,
17
- * distribute, sublicense, and/or sell copies of the Software, and to
18
- * permit persons to whom the Software is furnished to do so, subject to
19
- * the following conditions:
20
- *
21
- * The above copyright notice and this permission notice shall be
22
- * included in all copies or substantial portions of the Software.
23
- *
24
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
33
1
  package nokogiri.internals;
34
2
 
35
3
  import java.io.IOException;
@@ -53,64 +21,79 @@ import org.xml.sax.SAXException;
53
21
  *
54
22
  * @author Patrick Mahoney <pat@polycrystal.org>
55
23
  */
56
- public class NokogiriDomParser extends DOMParser {
57
- protected DOMParser dtd;
58
- protected boolean xInclude;
59
- protected XMLParserConfiguration config;
24
+ public class NokogiriDomParser extends DOMParser
25
+ {
26
+ protected DOMParser dtd;
27
+ protected boolean xInclude;
28
+ protected XMLParserConfiguration config;
60
29
 
61
- public NokogiriDomParser(XMLParserConfiguration config) {
62
- super(config);
63
- this.config = config;
64
- initialize();
65
- }
30
+ public
31
+ NokogiriDomParser(XMLParserConfiguration config)
32
+ {
33
+ super(config);
34
+ this.config = config;
35
+ initialize();
36
+ }
37
+
38
+ public
39
+ NokogiriDomParser(ParserContext.Options options)
40
+ {
41
+ xInclude = options.xInclude;
42
+ initialize();
43
+ }
66
44
 
67
- public NokogiriDomParser(ParserContext.Options options) {
68
- xInclude = options.xInclude;
69
- initialize();
45
+ protected void
46
+ initialize()
47
+ {
48
+ if (config == null) {
49
+ if (xInclude) {
50
+ config = new XIncludeParserConfiguration();
51
+ } else {
52
+ config = getXMLParserConfiguration();
53
+ }
70
54
  }
71
55
 
72
- protected void initialize() {
73
- if (config == null) {
74
- if (xInclude) {
75
- config = new XIncludeParserConfiguration();
76
- } else {
77
- config = getXMLParserConfiguration();
78
- }
79
- }
56
+ DTDConfiguration dtdConfig = new DTDConfiguration();
57
+ dtd = new DOMParser(dtdConfig);
80
58
 
81
- DTDConfiguration dtdConfig = new DTDConfiguration();
82
- dtd = new DOMParser(dtdConfig);
59
+ config.setDTDHandler(dtdConfig);
60
+ config.setDTDContentModelHandler(dtdConfig);
61
+ }
83
62
 
84
- config.setDTDHandler(dtdConfig);
85
- config.setDTDContentModelHandler(dtdConfig);
63
+ @Override
64
+ public void
65
+ parse(InputSource source) throws SAXException, IOException
66
+ {
67
+ dtd.reset();
68
+ if (xInclude) {
69
+ setEntityResolver(new NokogiriXInlcudeEntityResolver(source));
70
+ }
71
+ super.parse(source);
72
+ Document doc = getDocument();
73
+ if (doc == null) {
74
+ throw new RuntimeException("null document");
86
75
  }
87
76
 
88
- @Override
89
- public void parse(InputSource source) throws SAXException, IOException {
90
- dtd.reset();
91
- if (xInclude) {
92
- setEntityResolver(new NokogiriXInlcudeEntityResolver(source));
93
- }
94
- super.parse(source);
95
- Document doc = getDocument();
96
- if (doc == null)
97
- throw new RuntimeException("null document");
77
+ doc.setUserData(XmlDocument.DTD_RAW_DOCUMENT, dtd.getDocument(), null);
78
+ }
98
79
 
99
- doc.setUserData(XmlDocument.DTD_RAW_DOCUMENT, dtd.getDocument(), null);
80
+ private static class NokogiriXInlcudeEntityResolver implements org.xml.sax.EntityResolver
81
+ {
82
+ InputSource source;
83
+ private
84
+ NokogiriXInlcudeEntityResolver(InputSource source)
85
+ {
86
+ this.source = source;
100
87
  }
101
88
 
102
- private static class NokogiriXInlcudeEntityResolver implements org.xml.sax.EntityResolver {
103
- InputSource source;
104
- private NokogiriXInlcudeEntityResolver(InputSource source) {
105
- this.source = source;
106
- }
107
-
108
- @Override
109
- public InputSource resolveEntity(String publicId, String systemId)
110
- throws SAXException, IOException {
111
- if (systemId != null) source.setSystemId(systemId);
112
- if (publicId != null) source.setPublicId(publicId);
113
- return source;
114
- }
89
+ @Override
90
+ public InputSource
91
+ resolveEntity(String publicId, String systemId)
92
+ throws SAXException, IOException
93
+ {
94
+ if (systemId != null) { source.setSystemId(systemId); }
95
+ if (publicId != null) { source.setPublicId(publicId); }
96
+ return source;
115
97
  }
98
+ }
116
99
  }
@@ -18,104 +18,123 @@ import org.xml.sax.ext.EntityResolver2;
18
18
  * entity resolution that uses relative paths must be translated
19
19
  * to be relative to the current directory of the Ruby runtime.
20
20
  */
21
- public class NokogiriEntityResolver implements EntityResolver2 {
22
- protected final Ruby runtime;
23
- private final NokogiriErrorHandler handler;
24
- private final Options options;
21
+ public class NokogiriEntityResolver implements EntityResolver2
22
+ {
23
+ protected final Ruby runtime;
24
+ private final NokogiriErrorHandler handler;
25
+ private final Options options;
25
26
 
26
- public NokogiriEntityResolver(Ruby runtime, NokogiriErrorHandler handler, Options options) {
27
- super();
28
- this.runtime = runtime;
29
- this.handler = handler;
30
- this.options = options;
31
- }
27
+ public
28
+ NokogiriEntityResolver(Ruby runtime, NokogiriErrorHandler handler, Options options)
29
+ {
30
+ super();
31
+ this.runtime = runtime;
32
+ this.handler = handler;
33
+ this.options = options;
34
+ }
32
35
 
33
- @Override
34
- public InputSource getExternalSubset(String name, String baseURI)
35
- throws SAXException, IOException {
36
- return null;
37
- }
36
+ @Override
37
+ public InputSource
38
+ getExternalSubset(String name, String baseURI)
39
+ throws SAXException, IOException
40
+ {
41
+ return null;
42
+ }
38
43
 
39
- @Override
40
- public InputSource resolveEntity(String publicId, String systemId)
41
- throws SAXException, IOException {
42
- return resolveEntity(runtime, null, publicId, null, systemId);
43
- }
44
+ @Override
45
+ public InputSource
46
+ resolveEntity(String publicId, String systemId)
47
+ throws SAXException, IOException
48
+ {
49
+ return resolveEntity(runtime, null, publicId, null, systemId);
50
+ }
44
51
 
45
- @Override
46
- public InputSource resolveEntity(String name,
47
- String publicId,
48
- String baseURI,
49
- String systemId)
50
- throws SAXException, IOException {
51
- return resolveEntity(runtime, name, publicId, baseURI, systemId);
52
- }
52
+ @Override
53
+ public InputSource
54
+ resolveEntity(String name,
55
+ String publicId,
56
+ String baseURI,
57
+ String systemId)
58
+ throws SAXException, IOException
59
+ {
60
+ return resolveEntity(runtime, name, publicId, baseURI, systemId);
61
+ }
53
62
 
54
- private static File join(String parent, String child) {
55
- if (new File(parent).isFile()) {
56
- parent = new File(parent).getParent();
57
- }
58
- return new File(parent, child);
63
+ private static File
64
+ join(String parent, String child)
65
+ {
66
+ if (new File(parent).isFile()) {
67
+ parent = new File(parent).getParent();
59
68
  }
69
+ return new File(parent, child);
70
+ }
60
71
 
61
- private static InputSource emptyInputSource(InputSource source) {
62
- source.setByteStream(new ByteArrayInputStream(new byte[0]));
63
- return source;
64
- }
72
+ private static InputSource
73
+ emptyInputSource(InputSource source)
74
+ {
75
+ source.setByteStream(new ByteArrayInputStream(new byte[0]));
76
+ return source;
77
+ }
65
78
 
66
- private boolean shouldLoadDtd() {
67
- return options.dtdLoad || options.dtdValid;
68
- }
79
+ private boolean
80
+ shouldLoadDtd()
81
+ {
82
+ return options.dtdLoad || options.dtdValid;
83
+ }
69
84
 
70
- private void addError(String errorMessage) {
71
- if (handler != null) handler.errors.add(new Exception(errorMessage));
72
- }
85
+ private void
86
+ addError(String errorMessage)
87
+ {
88
+ if (handler != null) { handler.errors.add(new Exception(errorMessage)); }
89
+ }
73
90
 
74
- /**
75
- * Create a file base input source taking into account the current
76
- * directory of <code>runtime</code>.
77
- * @throws SAXException
78
- */
79
- protected InputSource resolveEntity(Ruby runtime, String name, String publicId, String baseURI, String systemId)
80
- throws IOException, SAXException {
81
- InputSource s = new InputSource();
82
- if (name.equals("[dtd]") && !shouldLoadDtd()) {
83
- return emptyInputSource(s);
84
- } else if (!name.equals("[dtd]") && !options.noEnt) {
85
- return emptyInputSource(s);
86
- }
87
- String adjustedSystemId;
88
- URI uri = URI.create(systemId);
89
- if (options.noNet && uri.getHost() != null) {
90
- addError("Attempt to load network entity " + systemId);
91
- return emptyInputSource(s);
92
- }
93
- // if this is a url or absolute file name then use it
94
- if (uri.isAbsolute() && !uri.isOpaque()) {
95
- adjustedSystemId = uri.toURL().toString();
96
- } else if (new File(uri.getPath()).isAbsolute()) {
97
- adjustedSystemId = uri.getPath();
98
- } else if (baseURI != null) {
99
- URI baseuri = URI.create(baseURI);
100
- if (options.noNet && baseuri.getHost() != null) {
101
- addError("Attempt to load network entity " + systemId);
102
- return emptyInputSource(s);
103
- }
104
- if (baseuri.getHost() == null) {
105
- // this is a local file
106
- adjustedSystemId = join(baseuri.getPath(), uri.getPath()).getCanonicalPath();
107
- } else {
108
- // this is a url, then resolve uri using baseuri
109
- adjustedSystemId = baseuri.resolve(systemId).toURL().toString();
110
- }
111
- } else {
112
- // baseURI is null we have to use the current working directory to resolve the entity
113
- String pwd = runtime.getCurrentDirectory();
114
- adjustedSystemId = join(pwd, uri.getPath()).getCanonicalPath();
115
- }
116
- s.setSystemId(adjustedSystemId);
117
- s.setPublicId(publicId);
118
- return s;
91
+ /**
92
+ * Create a file base input source taking into account the current
93
+ * directory of <code>runtime</code>.
94
+ * @throws SAXException
95
+ */
96
+ protected InputSource
97
+ resolveEntity(Ruby runtime, String name, String publicId, String baseURI, String systemId)
98
+ throws IOException, SAXException
99
+ {
100
+ InputSource s = new InputSource();
101
+ if (name.equals("[dtd]") && !shouldLoadDtd()) {
102
+ return emptyInputSource(s);
103
+ } else if (!name.equals("[dtd]") && !options.noEnt) {
104
+ return emptyInputSource(s);
105
+ }
106
+ String adjustedSystemId;
107
+ URI uri = URI.create(systemId);
108
+ if (options.noNet && uri.getHost() != null) {
109
+ addError("Attempt to load network entity " + systemId);
110
+ return emptyInputSource(s);
111
+ }
112
+ // if this is a url or absolute file name then use it
113
+ if (uri.isAbsolute() && !uri.isOpaque()) {
114
+ adjustedSystemId = uri.toURL().toString();
115
+ } else if (new File(uri.getPath()).isAbsolute()) {
116
+ adjustedSystemId = uri.getPath();
117
+ } else if (baseURI != null) {
118
+ URI baseuri = URI.create(baseURI);
119
+ if (options.noNet && baseuri.getHost() != null) {
120
+ addError("Attempt to load network entity " + systemId);
121
+ return emptyInputSource(s);
122
+ }
123
+ if (baseuri.getHost() == null) {
124
+ // this is a local file
125
+ adjustedSystemId = join(baseuri.getPath(), uri.getPath()).getCanonicalPath();
126
+ } else {
127
+ // this is a url, then resolve uri using baseuri
128
+ adjustedSystemId = baseuri.resolve(systemId).toURL().toString();
129
+ }
130
+ } else {
131
+ // baseURI is null we have to use the current working directory to resolve the entity
132
+ String pwd = runtime.getCurrentDirectory();
133
+ adjustedSystemId = join(pwd, uri.getPath()).getCanonicalPath();
119
134
  }
135
+ s.setSystemId(adjustedSystemId);
136
+ s.setPublicId(publicId);
137
+ return s;
138
+ }
120
139
 
121
140
  }