smile-xml 1.0.3-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/lib/smile-xml.jar +0 -0
  2. data/lib/xml/libxml.rb +1 -0
  3. data/lib/xml.rb +5 -0
  4. data/src/main/java/smile/xml/AttrJ.java +165 -0
  5. data/src/main/java/smile/xml/AttributesJ.java +219 -0
  6. data/src/main/java/smile/xml/BaseJ.java +60 -0
  7. data/src/main/java/smile/xml/DocumentJ.java +435 -0
  8. data/src/main/java/smile/xml/EncodingJ.java +94 -0
  9. data/src/main/java/smile/xml/ErrorJ.java +155 -0
  10. data/src/main/java/smile/xml/NamespaceJ.java +132 -0
  11. data/src/main/java/smile/xml/NamespacesJ.java +158 -0
  12. data/src/main/java/smile/xml/NodeJ.java +1040 -0
  13. data/src/main/java/smile/xml/NodeSetJ.java +90 -0
  14. data/src/main/java/smile/xml/ParserContextJ.java +44 -0
  15. data/src/main/java/smile/xml/ParserJ.java +196 -0
  16. data/src/main/java/smile/xml/ParserOptionsJ.java +58 -0
  17. data/src/main/java/smile/xml/ReaderJ.java +34 -0
  18. data/src/main/java/smile/xml/SchemaJ.java +66 -0
  19. data/src/main/java/smile/xml/SmileXML.java +65 -0
  20. data/src/main/java/smile/xml/XmlJ.java +58 -0
  21. data/src/main/java/smile/xml/sax/CallbackHandler.java +113 -0
  22. data/src/main/java/smile/xml/sax/SaxParserCallbacksJ.java +71 -0
  23. data/src/main/java/smile/xml/sax/SaxParserJ.java +153 -0
  24. data/src/main/java/smile/xml/util/UtilJ.java +447 -0
  25. data/src/main/java/smile/xml/xpath/CustomNamespaceContext.java +59 -0
  26. data/src/main/java/smile/xml/xpath/XPathContextJ.java +154 -0
  27. data/src/main/java/smile/xml/xpath/XPathExpressionJ.java +62 -0
  28. data/src/main/java/smile/xml/xpath/XPathJ.java +36 -0
  29. data/src/main/java/smile/xml/xpath/XPathObjectJ.java +196 -0
  30. data/src/main/java/smile/xml/xpath/XPointerJ.java +32 -0
  31. data/src/main/ruby/xml/libxml.rb +1 -0
  32. data/src/main/ruby/xml.rb +5 -0
  33. data/src/test/ruby/etc_doc_to_s.rb +21 -0
  34. data/src/test/ruby/ets_doc_file.rb +17 -0
  35. data/src/test/ruby/ets_doc_to_s.rb +23 -0
  36. data/src/test/ruby/ets_gpx.rb +28 -0
  37. data/src/test/ruby/ets_node_gc.rb +23 -0
  38. data/src/test/ruby/ets_test.xml +2 -0
  39. data/src/test/ruby/ets_tsr.rb +11 -0
  40. data/src/test/ruby/model/atom.xml +13 -0
  41. data/src/test/ruby/model/bands.iso-8859-1.xml +5 -0
  42. data/src/test/ruby/model/bands.utf-8.xml +5 -0
  43. data/src/test/ruby/model/bands.xml +5 -0
  44. data/src/test/ruby/model/books.xml +146 -0
  45. data/src/test/ruby/model/merge_bug_data.xml +58 -0
  46. data/src/test/ruby/model/ruby-lang.html +238 -0
  47. data/src/test/ruby/model/rubynet.xml +79 -0
  48. data/src/test/ruby/model/shiporder.rnc +28 -0
  49. data/src/test/ruby/model/shiporder.rng +86 -0
  50. data/src/test/ruby/model/shiporder.xml +23 -0
  51. data/src/test/ruby/model/shiporder.xsd +31 -0
  52. data/src/test/ruby/model/soap.xml +27 -0
  53. data/src/test/ruby/model/xinclude.xml +5 -0
  54. data/src/test/ruby/smile_xml_test.rb +64 -0
  55. data/src/test/ruby/tc_attr.rb +191 -0
  56. data/src/test/ruby/tc_attr_decl.rb +133 -0
  57. data/src/test/ruby/tc_attributes.rb +135 -0
  58. data/src/test/ruby/tc_deprecated_require.rb +13 -0
  59. data/src/test/ruby/tc_document.rb +162 -0
  60. data/src/test/ruby/tc_document_write.rb +212 -0
  61. data/src/test/ruby/tc_dtd.rb +125 -0
  62. data/src/test/ruby/tc_error.rb +150 -0
  63. data/src/test/ruby/tc_html_parser.rb +140 -0
  64. data/src/test/ruby/tc_namespace.rb +62 -0
  65. data/src/test/ruby/tc_namespaces.rb +210 -0
  66. data/src/test/ruby/tc_node.rb +273 -0
  67. data/src/test/ruby/tc_node_cdata.rb +51 -0
  68. data/src/test/ruby/tc_node_comment.rb +33 -0
  69. data/src/test/ruby/tc_node_copy.rb +42 -0
  70. data/src/test/ruby/tc_node_edit.rb +178 -0
  71. data/src/test/ruby/tc_node_text.rb +73 -0
  72. data/src/test/ruby/tc_node_write.rb +108 -0
  73. data/src/test/ruby/tc_node_xlink.rb +29 -0
  74. data/src/test/ruby/tc_parser.rb +371 -0
  75. data/src/test/ruby/tc_parser_context.rb +189 -0
  76. data/src/test/ruby/tc_properties.rb +40 -0
  77. data/src/test/ruby/tc_reader.rb +306 -0
  78. data/src/test/ruby/tc_relaxng.rb +54 -0
  79. data/src/test/ruby/tc_sax_parser.rb +340 -0
  80. data/src/test/ruby/tc_schema.rb +59 -0
  81. data/src/test/ruby/tc_traversal.rb +222 -0
  82. data/src/test/ruby/tc_xinclude.rb +21 -0
  83. data/src/test/ruby/tc_xml.rb +226 -0
  84. data/src/test/ruby/tc_xpath.rb +210 -0
  85. data/src/test/ruby/tc_xpath_context.rb +80 -0
  86. data/src/test/ruby/tc_xpath_expression.rb +38 -0
  87. data/src/test/ruby/tc_xpointer.rb +74 -0
  88. data/src/test/ruby/test_helper.rb +23 -0
  89. data/src/test/ruby/test_suite.rb +41 -0
  90. metadata +142 -0
@@ -0,0 +1,132 @@
1
+ package smile.xml;
2
+
3
+ import org.jruby.Ruby;
4
+ import org.jruby.RubyClass;
5
+ import org.jruby.RubyFixnum;
6
+ import org.jruby.RubyObject;
7
+ import org.jruby.RubyString;
8
+ import org.jruby.anno.JRubyClass;
9
+ import org.jruby.anno.JRubyMethod;
10
+ import org.jruby.runtime.ObjectAllocator;
11
+ import org.jruby.runtime.ThreadContext;
12
+ import org.jruby.runtime.builtin.IRubyObject;
13
+
14
+ import smile.xml.util.UtilJ;
15
+
16
+ @JRubyClass( name="LibXML::XML::Namespace" )
17
+ public class NamespaceJ extends RubyObject {
18
+
19
+ private static final long serialVersionUID = 4128551928821799987L;
20
+
21
+ private static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
22
+ public IRubyObject allocate(Ruby runtime, RubyClass klass) {
23
+ return new NamespaceJ(runtime, klass);
24
+ }
25
+ };
26
+
27
+ public static RubyClass define(Ruby runtime) {
28
+ return UtilJ.defineClass(runtime, NamespaceJ.class, ALLOCATOR);
29
+ }
30
+
31
+ private static RubyClass getRubyClass(Ruby runtime) {
32
+ return UtilJ.getClass(runtime, NamespaceJ.class);
33
+ }
34
+
35
+ public static NamespaceJ newInstance(ThreadContext context) {
36
+ return new NamespaceJ(context.getRuntime(), getRubyClass(context.getRuntime()));
37
+ }
38
+
39
+ public static NamespaceJ newInstance(ThreadContext context, IRubyObject node, IRubyObject prefix, IRubyObject href) {
40
+ IRubyObject[] args = { node, prefix, href };
41
+ return (NamespaceJ) getRubyClass(context.getRuntime()).newInstance(context, args, null);
42
+ }
43
+
44
+ private NodeJ node;
45
+ private RubyString prefix;
46
+ private RubyString href;
47
+
48
+ public NamespaceJ(Ruby runtime, RubyClass metaClass) {
49
+ super(runtime, metaClass);
50
+ }
51
+
52
+ @JRubyMethod(name = { "initialize" })
53
+ public void initialize(ThreadContext context, IRubyObject pNode, IRubyObject pPrefix, IRubyObject pHref) {
54
+ if ( ! (pNode instanceof NodeJ)) {
55
+ throw context.getRuntime().newTypeError("wrong argument type " + UtilJ.getRubyClassName(pNode) + " (expected Data)");
56
+ }
57
+
58
+ node = ((NodeJ) pNode);
59
+ if (! pPrefix.isNil()) {
60
+ prefix = (RubyString) pPrefix;
61
+ }
62
+ href = (RubyString) pHref;
63
+
64
+ // define namespace as "xmlns" attribute
65
+ String name = prefix == null ? "xmlns" : "xmlns:" + prefix.asJavaString();
66
+ String value = href.asJavaString();
67
+ AttrJ.newInstance(context, node, UtilJ.toRubyString(context, name).asString(),
68
+ UtilJ.toRubyString(context, value).asString(), this);
69
+ }
70
+
71
+ @JRubyMethod(name = { "prefix" })
72
+ public IRubyObject getPrefix(ThreadContext context) {
73
+ return UtilJ.nvl(this.prefix, context.getRuntime().getNil());
74
+ }
75
+
76
+ @JRubyMethod(name = { "href" })
77
+ public IRubyObject getHref(ThreadContext context) {
78
+ return UtilJ.nvl(this.href, context.getRuntime().getNil());
79
+ }
80
+
81
+ @JRubyMethod(name = { "node" })
82
+ public IRubyObject getNode(ThreadContext context) {
83
+ return this.node;
84
+ }
85
+
86
+ @JRubyMethod(name = { "node_type" })
87
+ public IRubyObject getNodeType(ThreadContext context) {
88
+ return new RubyFixnum(context.getRuntime(), NodeJ.NAMESPACE_DECL);
89
+ }
90
+
91
+ @JRubyMethod(name = { "next" })
92
+ public IRubyObject getNext(ThreadContext context) {
93
+ // TODO
94
+ return context.getRuntime().getNil();
95
+ }
96
+
97
+ @JRubyMethod(name = { "==" })
98
+ public IRubyObject isEqual(ThreadContext context, IRubyObject pOther) {
99
+ if (pOther instanceof NamespaceJ) {
100
+ NamespaceJ otherNS = (NamespaceJ) pOther;
101
+ if (href.equals(otherNS.href) && node.equals(otherNS.node)
102
+ && (prefix == null && otherNS.prefix == null
103
+ || prefix.equals(otherNS.prefix))) {
104
+ return context.getRuntime().getTrue();
105
+ }
106
+ }
107
+ return context.getRuntime().getFalse();
108
+ }
109
+
110
+ @JRubyMethod(name = { "to_s" })
111
+ public IRubyObject toS(ThreadContext context) {
112
+ String str;
113
+ if (prefix != null) {
114
+ str = prefix.asJavaString() + ":" + href.asJavaString();
115
+ } else {
116
+ str = href.asJavaString();
117
+ }
118
+ return context.getRuntime().newString(str);
119
+ }
120
+
121
+ public void setNode(NodeJ node) {
122
+ this.node = node;
123
+ }
124
+
125
+ public void setPrefix(RubyString prefix) {
126
+ this.prefix = prefix;
127
+ }
128
+
129
+ public void setHref(RubyString href) {
130
+ this.href = href;
131
+ }
132
+ }
@@ -0,0 +1,158 @@
1
+ package smile.xml;
2
+
3
+ import java.util.ArrayList;
4
+ import java.util.List;
5
+
6
+ import org.jruby.Ruby;
7
+ import org.jruby.RubyClass;
8
+ import org.jruby.RubyObject;
9
+ import org.jruby.anno.JRubyClass;
10
+ import org.jruby.anno.JRubyMethod;
11
+ import org.jruby.runtime.Block;
12
+ import org.jruby.runtime.ObjectAllocator;
13
+ import org.jruby.runtime.ThreadContext;
14
+ import org.jruby.runtime.builtin.IRubyObject;
15
+ import org.w3c.dom.Document;
16
+ import org.w3c.dom.NamedNodeMap;
17
+ import org.w3c.dom.Node;
18
+
19
+ import smile.xml.util.UtilJ;
20
+
21
+ @JRubyClass( name = "LibXML::XML::Namespaces", include = "Enumerable" )
22
+ public class NamespacesJ extends RubyObject {
23
+
24
+ private static final long serialVersionUID = 4673137342270845475L;
25
+
26
+ private static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
27
+ public IRubyObject allocate(Ruby runtime, RubyClass klass) {
28
+ return new NamespacesJ(runtime, klass);
29
+ }
30
+ };
31
+
32
+ public static RubyClass define(Ruby runtime) {
33
+ return UtilJ.defineClass(runtime, NamespacesJ.class, ALLOCATOR);
34
+ }
35
+
36
+ private static RubyClass getRubyClass(Ruby runtime) {
37
+ return UtilJ.getClass(runtime, NamespacesJ.class);
38
+ }
39
+
40
+ public static NamespacesJ newInstance(ThreadContext context, NodeJ node) {
41
+ IRubyObject[] args = { node };
42
+ return (NamespacesJ) getRubyClass(context.getRuntime()).newInstance(context, args, null);
43
+ }
44
+
45
+ private NodeJ node;
46
+
47
+ public NamespacesJ(Ruby runtime, RubyClass metaClass) {
48
+ super(runtime, metaClass);
49
+ }
50
+
51
+ @JRubyMethod(name = { "initialize" })
52
+ public void initialize(ThreadContext context, IRubyObject pNode) {
53
+ this.node = (NodeJ) pNode;
54
+ }
55
+
56
+ @JRubyMethod(name = { "default" })
57
+ public IRubyObject getDefault(ThreadContext context) {
58
+ return findByPrefix(context, context.getRuntime().getNil());
59
+ }
60
+
61
+ @JRubyMethod(name = { "default_prefix=" })
62
+ public void setDefaultPrefix(ThreadContext context, IRubyObject pPrefix) {
63
+ // TODO
64
+ throw context.getRuntime().newRuntimeError("not yet implemented");
65
+ }
66
+
67
+ @JRubyMethod(name = { "definitions" })
68
+ public IRubyObject getDefinitions(ThreadContext context) {
69
+ // TODO
70
+ throw context.getRuntime().newRuntimeError("not yet implemented");
71
+ }
72
+
73
+ @JRubyMethod(name = { "each" })
74
+ public void iterateOver(ThreadContext context, Block block) {
75
+ UtilJ.iterateOver(context, block, namespacesAsList(context));
76
+ }
77
+
78
+ @JRubyMethod(name = { "find_by_href" })
79
+ public IRubyObject findByHref(ThreadContext context, IRubyObject pHref) {
80
+ // TODO
81
+ throw context.getRuntime().newRuntimeError("not yet implemented");
82
+ }
83
+
84
+ @JRubyMethod(name = { "find_by_prefix" }, optional = 1)
85
+ public IRubyObject findByPrefix(ThreadContext context, IRubyObject pPrefix) {
86
+ // TODO
87
+ throw context.getRuntime().newRuntimeError("not yet implemented");
88
+ }
89
+
90
+ @JRubyMethod(name = { "namespace" })
91
+ public IRubyObject getNamespace(ThreadContext context) {
92
+ Ruby run = context.getRuntime();
93
+
94
+ String prefixStr = ((Node) node.getJavaObject()).getPrefix();
95
+ IRubyObject prefix = prefixStr == null ? run.getNil() : run.newString(prefixStr);
96
+
97
+ String uriStr = ((Node) node.getJavaObject()).getNamespaceURI();
98
+ IRubyObject uri = uriStr == null ? run.getNil() : run.newString(uriStr);
99
+
100
+ if (uri.isNil()) {
101
+ return run.getNil();
102
+ } else {
103
+ return NamespaceJ.newInstance(context, node, prefix, uri);
104
+ }
105
+ }
106
+
107
+ @JRubyMethod(name = { "namespace=" })
108
+ public void setNamespace(ThreadContext context, IRubyObject pNamespace) {
109
+ if ( ! (pNamespace instanceof NamespaceJ)) {
110
+ throw context.getRuntime().newTypeError("wrong argument type " + UtilJ.getRubyClassName(pNamespace) + " (expected Data)");
111
+ }
112
+
113
+ NamespaceJ namespace = (NamespaceJ) pNamespace;
114
+ Document doc = node.getJavaObject().getOwnerDocument();
115
+
116
+ String namespaceURI = "";
117
+ String qualifiedName = node.getJavaObject().getNodeName();
118
+ if (! namespace.getHref(context).isNil()) {
119
+ namespaceURI = namespace.getHref(context).asJavaString();
120
+ }
121
+ if (! namespace.getPrefix(context).isNil()) {
122
+ qualifiedName = namespace.getPrefix(context).asJavaString() + ":" + node.getJavaObject().getNodeName();
123
+ }
124
+ node.setJavaObject(doc.renameNode(node.getJavaObject(), namespaceURI, qualifiedName));
125
+ }
126
+
127
+ @JRubyMethod(name = { "node" })
128
+ public IRubyObject getNode(ThreadContext context) {
129
+ return this.node;
130
+ }
131
+
132
+ private List<NamespaceJ> namespacesAsList(ThreadContext context) {
133
+ NamedNodeMap attributes = node.getJavaObject().getAttributes();
134
+ List<NamespaceJ> list = new ArrayList<NamespaceJ>();
135
+ for (int i = 0; i < attributes.getLength(); i++) {
136
+ Node item = attributes.item(i);
137
+ String name = item.getNodeName();
138
+ if (name.startsWith("xmlns")) {
139
+ NamespaceJ ns = NamespaceJ.newInstance(context);
140
+ String prefix;
141
+ if (name.startsWith("xmlns:")) {
142
+ prefix = name.substring("xmlns:".length());
143
+ ns.setPrefix(context.getRuntime().newString(prefix));
144
+ } else if (name.equals("xmlns")) {
145
+ prefix = null;
146
+ ns.setPrefix(null);
147
+ } else {
148
+ continue;
149
+ }
150
+ ns.setNode(node);
151
+ String href = item.getNodeValue();
152
+ ns.setHref(context.getRuntime().newString(href));
153
+ list.add(ns);
154
+ }
155
+ }
156
+ return list;
157
+ }
158
+ }