initial check-in of the java dom api (not part of regular build)

This commit is contained in:
akhil.arora%sun.com 1999-08-06 00:28:53 +00:00
Родитель a6188a4453
Коммит b89b28f407
64 изменённых файлов: 7042 добавлений и 0 удалений

50
java/dom/Makefile Normal file
Просмотреть файл

@ -0,0 +1,50 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH = /opt/mozilla
topsrcdir = $(DEPTH)
srcdir = .
VPATH = .
include $(DEPTH)/config/autoconf.mk
MODULE = javadom
LIBRARY_NAME = javadom
IS_COMPONENT = 1
CPPSRCS = \
nsJavaDOMImpl.cpp \
nsJavaDOMFactory.cpp
include $(topsrcdir)/config/config.mk
JAVA_HOME = /opt/jdk
INCLUDES += -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/solaris
DSO_LDOPTS += \
-L$(JAVA_HOME)/jre/lib/sparc \
-L$(JAVA_HOME)/jre/lib/sparc/classic \
-L$(JAVA_HOME)/jre/lib/sparc/native_threads \
-R$(JAVA_HOME)/jre/lib/sparc \
-R$(JAVA_HOME)/jre/lib/sparc/classic \
-R$(JAVA_HOME)/jre/lib/sparc/native_threads \
-ljvm -lhpi -lsunwjit
EXPORTS = \
nsJavaDOMCID.h \
nsIJavaDOM.h
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
include $(topsrcdir)/config/rules.mk

50
java/dom/Makefile.in Normal file
Просмотреть файл

@ -0,0 +1,50 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = javadom
LIBRARY_NAME = javadom
IS_COMPONENT = 1
CPPSRCS = \
nsJavaDOMImpl.cpp \
nsJavaDOMFactory.cpp
include $(topsrcdir)/config/config.mk
JAVA_HOME = /opt/jdk
INCLUDES += -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/solaris
DSO_LDOPTS += \
-L$(JAVA_HOME)/jre/lib/sparc \
-L$(JAVA_HOME)/jre/lib/sparc/classic \
-L$(JAVA_HOME)/jre/lib/sparc/native_threads \
-R$(JAVA_HOME)/jre/lib/sparc \
-R$(JAVA_HOME)/jre/lib/sparc/classic \
-R$(JAVA_HOME)/jre/lib/sparc/native_threads \
-ljvm -lhpi -lsunwjit
EXPORTS = \
nsJavaDOMCID.h \
nsIJavaDOM.h
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
include $(topsrcdir)/config/rules.mk

50
java/dom/Makefile.linux Normal file
Просмотреть файл

@ -0,0 +1,50 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH = /opt/mozilla
topsrcdir = $(DEPTH)
srcdir = .
VPATH = .
include $(DEPTH)/config/autoconf.mk
MODULE = javadom
LIBRARY_NAME = javadom
IS_COMPONENT = 1
CPPSRCS = \
nsJavaDOMImpl.cpp \
nsJavaDOMFactory.cpp
include $(topsrcdir)/config/config.mk
JAVA_HOME = /opt/jdk
INCLUDES += -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/solaris
DSO_LDOPTS += \
-L$(JAVA_HOME)/jre/lib/i386 \
-L$(JAVA_HOME)/jre/lib/i386/classic \
-L$(JAVA_HOME)/jre/lib/i386/native_threads \
-Xlinker -rpath $(JAVA_HOME)/jre/lib/i386 \
-Xlinker -rpath $(JAVA_HOME)/jre/lib/i386/classic \
-Xlinker -rpath $(JAVA_HOME)/jre/lib/i386/native_threads \
-ljvm -lhpi -lsunwjit
EXPORTS = \
nsJavaDOMCID.h \
nsIJavaDOM.h
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
include $(topsrcdir)/config/rules.mk

105
java/dom/README Normal file
Просмотреть файл

@ -0,0 +1,105 @@
Using the Java DOM API
----------------------
A Java component obtains a org.w3c.dom.Document by registering for
Document load notifications. The Document is passed in along with the
notifications. The preferred way for a Java component to register for
Document load notifications is to register via the DOMAccessor
class. However, currently this does not work and one has to apply a
patch to webshell/src/nsWebShell.cpp. See the section on Building for
instructions on how to apply the patch.
The nsJavaDOM component by means of this patch registers itself as a
DocumentLoadObserver with the DocumentLoader service. It then loads a
class called DOMFactory, asks it for a Java DocumentLoadListener and
starts sending all document load notifications that it recieves to the
Java listener.
So the first place to start hacking would be DOMFactory.java.
Makefiles
---------
You may have to set DEPTH to point to the mozilla CVS workspace root
in Makefile and jni/Makefile. SInce this stuff is not part of the
regular SeaMonkeyBuild, Makefiles are not generated from Makefile.in,
so just go ahead and hack the Makefile.
That is also why I have a separate Makefile.linux for Linux. (Does not
work with Linux... last time I checked, the Blackdown JDK had a
problem creating the JVM in
nsJavaDOMImpl.cpp::Initialize:CreateJavaVM).
Building
--------
After having done a configure at the top level of SeaMonkey, do a make
in the dom and the dom/jni directories. This will copy over a few
header files that are needed by the patch to nsWebShell. You can then
apply the patch to nsWebShell.cpp by executing
`patch nsWebShell.cpp <nsWebShell.cpp.patch`
Edit Makefile.in to add -DJAVA_DOM to the list of defines. Then do a
g/make in this directory.
Currently, you will have to make the Java class files yourself, which
is pretty straight-forward. Just do a javac -d
$MOZILLA_FIVE_HOME/classes *.java in the java/dom/jni directory. I
chose to put my class files in $MOZILLA_FIVE_HOME/classes, you can put
them elsewhere, just make sure it is in the CLASSPATH.
You will also need to get the w3c DOM interfaces from
http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/java-binding.zip
and put the class files in your CLASSPATH.
NSPR Logging
------------
The NSPR Log module name is javadom. For instructions on how to enable
logging, see dist/include/prlog.h
Debug output
------------
The debug build of the Java DOM API creates the JVM with the verbose
and the verboseGC options turned on, to help in debugging. It also
creates two files in the current working directory, dom-java.txt and
dom-cpp.txt, which are simple dumps of the DOM, as printed from C++
and from Java. The two should be identical. The code to write these
files is, essentially, my regression test. Feel free to add to it.
JVM Crash on Exit
-----------------
The JVM dies when apprunner is exiting. Don't know why. WIll need to
build a debug version of the JDK to investigate. This will be a
non-issue once we start to use OJI to get to the JVM.
OJI
---
Currently the nsJavaDOM component instantiates its own JVM. When an
OJI-compatible JVM is available, we will move over to using it.
Dependencies
------------
Currently tested on Solaris 7 only with Java 2 SDK 1.2.1. egcs-2.91.66
and Sun Workshop 4.2 have been know to compile this code
fine. gcc-2.8.1 does *not* work. I have not used anything
Java2-specific, and it works with JDK1.1.x too (I have been using JDK
1.1.6 too).
References
----------
I highly recommend reading Sheng Liang's new JNI book.

Просмотреть файл

@ -0,0 +1,32 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Attr;
public class AttrImpl extends NodeImpl implements Attr {
// instantiated from JNI or Document.createAttribute()
private AttrImpl() {}
public native String getName();
public native boolean getSpecified();
public native String getValue();
public native void setValue(String value);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,26 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.CDATASection;
public class CDATASectionImpl extends TextImpl implements CDATASection {
// instantiated from JNI or Document.createCDATASection()
private CDATASectionImpl() {}
}

Просмотреть файл

@ -0,0 +1,36 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.CharacterData;
public class CharacterDataImpl extends NodeImpl implements CharacterData {
// instantiated from JNI only
protected CharacterDataImpl() {}
public native void appendData(String arg);
public native void deleteData(int offset, int count);
public native String getData();
public native int getLength();
public native void insertData(int offset, String arg);
public native void replaceData(int offset, int count, String arg);
public native void setData(String data);
public native String substringData(int offset, int count);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,25 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Comment;
public class CommentImpl extends CharacterDataImpl implements Comment {
// instantiated from JNI or Document.createComment()
private CommentImpl() {}
}

Просмотреть файл

@ -0,0 +1,24 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
public interface DOMAccessor {
public DOMAccessor getInstance();
public void addDocumentLoadListener(DocumentLoadListener listener);
public void removeDocumentLoadListener(DocumentLoadListener listener);
}

Просмотреть файл

@ -0,0 +1,124 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import java.util.Vector;
import java.util.Enumeration;
import org.w3c.dom.Document;
public class DOMAccessorImpl implements DOMAccessor, DocumentLoadListener {
private DOMAccessor instance = null;
private Vector documentLoadListeners = new Vector();
public static native void register();
public static native void unregister();
public synchronized DOMAccessor getInstance() {
if (instance == null) {
instance = new DOMAccessorImpl();
}
return instance;
}
public synchronized void
addDocumentLoadListener(DocumentLoadListener listener) {
if (documentLoadListeners.size() == 0) {
register();
}
documentLoadListeners.addElement(listener);
}
public synchronized void
removeDocumentLoadListener(DocumentLoadListener listener) {
documentLoadListeners.removeElement(listener);
if (documentLoadListeners.size() == 0) {
unregister();
}
}
public synchronized void
startURLLoad(String url, String contentType, Document doc) {
for (Enumeration e = documentLoadListeners.elements();
e.hasMoreElements();) {
DocumentLoadListener listener =
(DocumentLoadListener) e.nextElement();
listener.startURLLoad(url, contentType, doc);
}
}
public synchronized void
endURLLoad(String url, int status, Document doc) {
for (Enumeration e = documentLoadListeners.elements();
e.hasMoreElements();) {
DocumentLoadListener listener =
(DocumentLoadListener) e.nextElement();
listener.endURLLoad(url, status, doc);
}
}
public synchronized void
progressURLLoad(String url, int progress, int progressMax,
Document doc) {
for (Enumeration e = documentLoadListeners.elements();
e.hasMoreElements();) {
DocumentLoadListener listener =
(DocumentLoadListener) e.nextElement();
listener.progressURLLoad(url, progress, progressMax, doc);
}
}
public synchronized void
statusURLLoad(String url, String message, Document doc) {
for (Enumeration e = documentLoadListeners.elements();
e.hasMoreElements();) {
DocumentLoadListener listener =
(DocumentLoadListener) e.nextElement();
listener.statusURLLoad(url, message, doc);
}
}
public synchronized void
startDocumentLoad(String url) {
for (Enumeration e = documentLoadListeners.elements();
e.hasMoreElements();) {
DocumentLoadListener listener =
(DocumentLoadListener) e.nextElement();
listener.startDocumentLoad(url);
}
}
public synchronized void
endDocumentLoad(String url, int status, Document doc) {
for (Enumeration e = documentLoadListeners.elements();
e.hasMoreElements();) {
DocumentLoadListener listener =
(DocumentLoadListener) e.nextElement();
listener.endDocumentLoad(url, status, doc);
}
}
}

Просмотреть файл

@ -0,0 +1,27 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.DOMException;
public class DOMExceptionImpl extends DOMException
{
// instantiated from JNI only
private DOMExceptionImpl(short code, String message) {
super(code, message);
}
}

Просмотреть файл

@ -0,0 +1,199 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.PrintStream;
import java.io.IOException;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DOMFactory implements DocumentLoadListener {
private static final boolean debug = false;
public DocumentLoadListener getDocumentLoadListener() {
return this;
}
public void startURLLoad(String url, String contentType, Document doc) {
if (debug)
System.err.println("DOM: start URL load - " +
url.toString() + " " +
contentType);
}
public void endURLLoad(String url, int status, Document doc) {
if (debug)
System.err.println("DOM: end URL load - " +
url.toString() + " " +
Integer.toHexString(status));
if (url.endsWith(".xul") ||
url.endsWith(".js") ||
url.endsWith(".css") ||
url.startsWith("file:")) return;
if (doc == null) return;
Element element = doc.getDocumentElement();
if (element == null) return;
element.normalize();
FileOutputStream fos = null;
PrintStream ps = null;
try {
fos = new FileOutputStream("dom-java.txt", true);
ps = new PrintStream(new BufferedOutputStream(fos, 1024));
ps.println("\n+++ " + url.toString() + " +++");
} catch (IOException ex) {
ex.printStackTrace();
return;
}
dump(ps, element, 0, false);
ps.println();
ps.flush();
element = null;
doc = null;
}
public void progressURLLoad(String url, int progress, int progressMax,
Document doc) {
if (debug)
System.err.println("DOM: progress URL load - " +
url.toString() + " " +
Integer.toString(progress) + "/" +
Integer.toString(progressMax));
}
public void statusURLLoad(String url, String message, Document doc) {
if (debug)
System.err.println("DOM: status URL load - " +
url.toString() + " (" +
message + ")");
}
public void startDocumentLoad(String url) {
if (debug)
System.err.println("DOM: start load - " +
url.toString());
}
public void endDocumentLoad(String url, int status, Document doc) {
if (debug) {
System.err.println("DOM: end load - " +
url.toString() + " " +
Integer.toHexString(status));
}
}
private void dump(PrintStream ps, Node node, int indent, boolean isMapNode) {
if (node == null) return;
ps.println();
for (int i=0; i<indent; i++)
ps.print(' ');
ps.print("name=\"" + node.getNodeName() + "\"" +
" type=" + dumpType(node.getNodeType()) +
" value=\"" + stripWhiteSpace(node.getNodeValue()) + "\"");
if (isMapNode) return;
NamedNodeMap map = node.getAttributes();
dumpMap(ps, map, indent);
NodeList children = node.getChildNodes();
if (children == null) return;
/*
Node fc = node.getFirstChild();
if (fc != null)
System.out.println(fc);
*/
int length = children.getLength();
for (int i=0; i < length; i++) {
dump(ps, children.item(i), indent+2, false);
}
}
private void dumpMap(PrintStream ps, NamedNodeMap map, int indent) {
if (map == null) return;
ps.println();
int length = map.getLength();
if (length > 0) {
for (int i=0; i<indent; i++)
ps.print(' ');
ps.print("------- start attributes -------");
}
for (int i=0; i < length; i++) {
Node item = map.item(i);
dump(ps, item, indent, true);
}
if (length > 0) {
ps.println();
for (int i=0; i<indent; i++)
ps.print(' ');
ps.print("------- end attributes -------");
}
}
private static String dumpType(int type) {
switch (type) {
case Node.ELEMENT_NODE: return "ELEMENT";
case Node.ATTRIBUTE_NODE: return "ATTRIBUTE";
case Node.TEXT_NODE: return "TEXT";
case Node.CDATA_SECTION_NODE: return "CDATA_SECTION";
case Node.ENTITY_REFERENCE_NODE: return "ENTITY_REFERENCE";
case Node.ENTITY_NODE: return "ENTITY";
case Node.PROCESSING_INSTRUCTION_NODE: return "PROCESSING_INSTRUCTION";
case Node.COMMENT_NODE: return "COMMENT";
case Node.DOCUMENT_NODE: return "DOCUMENT";
case Node.DOCUMENT_TYPE_NODE: return "DOCUMENT_TYPE";
case Node.DOCUMENT_FRAGMENT_NODE: return "DOCUMENT_FRAGMENT";
case Node.NOTATION_NODE: return "NOTATION";
}
return "ERROR";
}
private static String stripWhiteSpace(String s) {
int len = s.length();
StringBuffer sb = new StringBuffer(len);
char c = ' ';
char pc = ' ';
for (int i=0; i < len; i++) {
c = s.charAt(i);
if ((pc == ' ' || pc == '\n' || pc == '\t') &&
(c == ' ' || c == '\n' || c == '\t'))
continue;
sb.append(c);
pc = c;
}
return sb.toString();
}
}

Просмотреть файл

@ -0,0 +1,22 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
public class DOMGarbageCollector {
private static native void doGC();
}

Просмотреть файл

@ -0,0 +1,31 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.DOMImplementation;
public class DOMImplementationImpl implements DOMImplementation {
private long p_nsIDOMDOMImplementation = 0;
// instantiated from JNI only
private DOMImplementationImpl() {}
public native boolean hasFeature(String feature, String version);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,24 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.DocumentFragment;
public class DocumentFragmentImpl extends NodeImpl implements DocumentFragment {
// instantiated from JNI or Document.createDocumentFragment()
private DocumentFragmentImpl() {}
}

Просмотреть файл

@ -0,0 +1,60 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.EntityReference;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;
import org.w3c.dom.DocumentType;
import org.w3c.dom.NodeList;
import org.w3c.dom.DOMImplementation;
public class DocumentImpl extends NodeImpl implements Document {
// instantiated from JNI only
private DocumentImpl() {}
public native Attr createAttribute(String name);
public native CDATASection createCDATASection(String data);
public native Comment createComment(String data);
public native DocumentFragment createDocumentFragment();
public native Element createElement(String tagName);
public native EntityReference createEntityReference(String name);
public native ProcessingInstruction
createProcessingInstruction(String target,
String data);
public native Text createTextNode(String data);
public native DocumentType getDoctype();
public native Element getDocumentElement();
public native NodeList getElementsByTagName(String tagName);
public native DOMImplementation getImplementation();
protected native void finalize();
private static native void initialize();
static {
System.loadLibrary("javadomjni");
initialize();
}
}

Просмотреть файл

@ -0,0 +1,31 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Document;
public interface DocumentLoadListener {
public void startURLLoad(String url, String contentType, Document doc);
public void endURLLoad(String url, int status, Document doc);
public void progressURLLoad(String url, int progress, int progressMax,
Document doc);
public void statusURLLoad(String url, String message, Document doc);
public void startDocumentLoad(String url);
public void endDocumentLoad(String url, int status, Document doc);
}

Просмотреть файл

@ -0,0 +1,32 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.DocumentType;
import org.w3c.dom.NamedNodeMap;
public class DocumentTypeImpl extends NodeImpl implements DocumentType {
// instantiated from JNI only
private DocumentTypeImpl() {}
public native String getName();
public native NamedNodeMap getEntities();
public native NamedNodeMap getNotations();
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,39 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class ElementImpl extends NodeImpl implements Element {
// instantiated from JNI or Document.createElement()
private ElementImpl() {}
public native String getAttribute(String name);
public native Attr getAttributeNode(String name);
public native NodeList getElementsByTagName(String name);
public native String getTagName();
public native void normalize();
public native void removeAttribute(String name);
public native Attr removeAttributeNode(Attr oldAttr);
public native void setAttribute(String name, String value);
public native Attr setAttributeNode(Attr newAttr);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,25 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.EntityReference;
public class EntityReferenceImpl extends NodeImpl implements EntityReference {
// instantiated from JNI or Document.createEntityReference()
private EntityReferenceImpl() {}
}

43
java/dom/jni/Makefile Normal file
Просмотреть файл

@ -0,0 +1,43 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH = /opt/mozilla
topsrcdir = $(DEPTH)
srcdir = .
VPATH = .
include $(DEPTH)/config/autoconf.mk
LIBRARY_NAME = javadomjni
CPPSRCS = \
javaDOMGlobals.cpp \
org_mozilla_dom_DOMGarbageCollector.cpp \
org_mozilla_dom_DOMAccessorImpl.cpp \
org_mozilla_dom_AttrImpl.cpp \
org_mozilla_dom_CharacterDataImpl.cpp \
org_mozilla_dom_DocumentImpl.cpp \
org_mozilla_dom_DocumentTypeImpl.cpp \
org_mozilla_dom_DOMImplementationImpl.cpp \
org_mozilla_dom_ElementImpl.cpp \
org_mozilla_dom_NamedNodeMapImpl.cpp \
org_mozilla_dom_NodeImpl.cpp \
org_mozilla_dom_NodeListImpl.cpp \
org_mozilla_dom_ProcessingInstructionImpl.cpp \
org_mozilla_dom_TextImpl.cpp
include $(topsrcdir)/config/config.mk
include $(topsrcdir)/config/rules.mk

43
java/dom/jni/Makefile.in Normal file
Просмотреть файл

@ -0,0 +1,43 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
LIBRARY_NAME = javadomjni
CPPSRCS = \
javaDOMGlobals.cpp \
org_mozilla_dom_DOMGarbageCollector.cpp \
org_mozilla_dom_DOMAccessorImpl.cpp \
org_mozilla_dom_AttrImpl.cpp \
org_mozilla_dom_CharacterDataImpl.cpp \
org_mozilla_dom_DocumentImpl.cpp \
org_mozilla_dom_DocumentTypeImpl.cpp \
org_mozilla_dom_DOMImplementationImpl.cpp \
org_mozilla_dom_ElementImpl.cpp \
org_mozilla_dom_NamedNodeMapImpl.cpp \
org_mozilla_dom_NodeImpl.cpp \
org_mozilla_dom_NodeListImpl.cpp \
org_mozilla_dom_ProcessingInstructionImpl.cpp \
org_mozilla_dom_TextImpl.cpp
include $(topsrcdir)/config/config.mk
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -0,0 +1,34 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
public class NamedNodeMapImpl extends NodeImpl implements NamedNodeMap {
// instantiated from JNI only
private NamedNodeMapImpl() {}
public native int getLength();
public native Node getNamedItem(String name);
public native Node item(int index);
public native Node removeNamedItem(String name);
public native Node setNamedItem(Node arg);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,91 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Node;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import org.w3c.dom.Document;
public class NodeImpl implements Node {
/* The derived classes (Attr, CharacterData, DocumentFragment,
Document, Element, EntityReference, NamedNodeMap,
ProcessingInstruction) will also use this native pointer, since
the nsIDOM coreDom classes follow the same hierarchy */
private long p_nsIDOMNode = 0;
// instantiated from JNI only
protected NodeImpl() {}
public boolean equals(Object o) {
if (!(o instanceof NodeImpl))
return false;
return p_nsIDOMNode == ((NodeImpl)o).p_nsIDOMNode;
}
public int hashCode() {
return (int) p_nsIDOMNode;
}
public String toString() {
return "<" + getNodeName() +
" t=" + nodeTypeString(getNodeType()) +
" c=org.mozilla.dom.NodeImpl p=" +
Long.toHexString(p_nsIDOMNode) + ">";
}
private static String nodeTypeString(int type) {
switch (type) {
case Node.ELEMENT_NODE: return "ELEMENT";
case Node.ATTRIBUTE_NODE: return "ATTRIBUTE";
case Node.TEXT_NODE: return "TEXT";
case Node.CDATA_SECTION_NODE: return "CDATA_SECTION";
case Node.ENTITY_REFERENCE_NODE: return "ENTITY_REFERENCE";
case Node.ENTITY_NODE: return "ENTITY";
case Node.PROCESSING_INSTRUCTION_NODE: return "PROCESSING_INSTRUCTION";
case Node.COMMENT_NODE: return "COMMENT";
case Node.DOCUMENT_NODE: return "DOCUMENT";
case Node.DOCUMENT_TYPE_NODE: return "DOCUMENT_TYPE";
case Node.DOCUMENT_FRAGMENT_NODE: return "DOCUMENT_FRAGMENT";
case Node.NOTATION_NODE: return "NOTATION";
}
return "ERROR";
}
public native Node appendChild(Node newChild);
public native Node cloneNode(boolean deep);
public native NamedNodeMap getAttributes();
public native NodeList getChildNodes();
public native Node getFirstChild();
public native Node getLastChild();
public native Node getNextSibling();
public native String getNodeName();
public native short getNodeType();
public native String getNodeValue();
public native Document getOwnerDocument();
public native Node getParentNode();
public native Node getPreviousSibling();
public native boolean hasChildNodes();
public native Node insertBefore(Node newChild, Node refChild);
public native Node removeChild(Node oldChild);
public native Node replaceChild(Node newChild, Node oldChild);
public native void setNodeValue(String nodeValue);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,33 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class NodeListImpl implements NodeList {
private long p_nsIDOMNodeList = 0;
// instantiated from JNI or Document.createAttribute()
private NodeListImpl() {}
public native int getLength();
public native Node item(int index);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,31 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.ProcessingInstruction;
public class ProcessingInstructionImpl extends NodeImpl implements ProcessingInstruction {
// instantiated from JNI or Document.createProcessingInstruction()
private ProcessingInstructionImpl() {}
public native String getData();
public native String getTarget();
public native void setData(String data);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,30 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
package org.mozilla.dom;
import org.w3c.dom.Text;
public class TextImpl extends CharacterDataImpl implements Text {
// instantiated from JNI or Document.createTextNode()
protected TextImpl() {}
public native Text splitText(int offset);
protected native void finalize();
}

Просмотреть файл

@ -0,0 +1,352 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "prmon.h"
#include "nsAutoLock.h"
#include "nsIDOMNode.h"
#include "javaDOMGlobals.h"
jclass JavaDOMGlobals::attrClass = NULL;
jclass JavaDOMGlobals::cDataSectionClass = NULL;
jclass JavaDOMGlobals::commentClass = NULL;
jclass JavaDOMGlobals::documentClass = NULL;
jclass JavaDOMGlobals::documentFragmentClass = NULL;
jclass JavaDOMGlobals::documentTypeClass = NULL;
jclass JavaDOMGlobals::domImplementationClass = NULL;
jclass JavaDOMGlobals::elementClass = NULL;
jclass JavaDOMGlobals::entityClass = NULL;
jclass JavaDOMGlobals::entityReferenceClass = NULL;
jclass JavaDOMGlobals::namedNodeMapClass = NULL;
jclass JavaDOMGlobals::nodeClass = NULL;
jclass JavaDOMGlobals::nodeListClass = NULL;
jclass JavaDOMGlobals::notationClass = NULL;
jclass JavaDOMGlobals::processingInstructionClass = NULL;
jclass JavaDOMGlobals::textClass = NULL;
jfieldID JavaDOMGlobals::nodePtrFID = NULL;
jfieldID JavaDOMGlobals::nodeListPtrFID = NULL;
jfieldID JavaDOMGlobals::domImplementationPtrFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeAttributeFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeCDataSectionFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeCommentFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeDocumentFragmentFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeDocumentFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeDocumentTypeFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeElementFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeEntityFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeEntityReferenceFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeNotationFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeProcessingInstructionFID = NULL;
jfieldID JavaDOMGlobals::nodeTypeTextFID = NULL;
PRLogModuleInfo* JavaDOMGlobals::log = NULL;
PRCList JavaDOMGlobals::garbage = PR_INIT_STATIC_CLIST(&garbage);
PRLock* JavaDOMGlobals::garbageLock = NULL;
class jniDOMGarbage : public PRCList {
public:
jniDOMGarbage(nsISupports* p) { domObject = p; }
nsISupports* domObject;
};
void JavaDOMGlobals::Initialize(JNIEnv *env)
{
garbageLock = PR_NewLock();
log = PR_NewLogModule("javadom");
PR_INIT_CLIST(&garbage);
/* Node is loaded first because it is the base class of a lot of the
others */
nodeClass = env->FindClass("org/mozilla/dom/NodeImpl");
if (!nodeClass) return;
nodeClass = (jclass) env->NewGlobalRef(nodeClass);
if (!nodeClass) return;
nodePtrFID =
env->GetFieldID(nodeClass, "p_nsIDOMNode", "J");
if (!nodePtrFID) return;
attrClass = env->FindClass("org/mozilla/dom/AttrImpl");
if (!attrClass) return;
attrClass = (jclass) env->NewGlobalRef(attrClass);
if (!attrClass) return;
documentClass = env->FindClass("org/mozilla/dom/DocumentImpl");
if (!documentClass) return;
documentClass = (jclass) env->NewGlobalRef(documentClass);
if (!documentClass) return;
documentTypeClass = env->FindClass("org/mozilla/dom/DocumentTypeImpl");
if (!documentTypeClass) return;
documentTypeClass = (jclass) env->NewGlobalRef(documentTypeClass);
if (!documentTypeClass) return;
domImplementationClass = env->FindClass("org/mozilla/dom/DOMImplementationImpl");
if (!domImplementationClass) return;
domImplementationClass = (jclass) env->NewGlobalRef(domImplementationClass);
if (!domImplementationClass) return;
domImplementationPtrFID =
env->GetFieldID(domImplementationClass, "p_nsIDOMDOMImplementation", "J");
if (!domImplementationPtrFID) return;
elementClass = env->FindClass("org/mozilla/dom/ElementImpl");
if (!elementClass) return;
elementClass = (jclass) env->NewGlobalRef(elementClass);
if (!elementClass) return;
namedNodeMapClass = env->FindClass("org/mozilla/dom/NamedNodeMapImpl");
if (!namedNodeMapClass) return;
namedNodeMapClass = (jclass) env->NewGlobalRef(namedNodeMapClass);
if (!namedNodeMapClass) return;
nodeListClass = env->FindClass("org/mozilla/dom/NodeListImpl");
if (!nodeListClass) return;
nodeListClass = (jclass) env->NewGlobalRef(nodeListClass);
if (!nodeListClass) return;
nodeListPtrFID =
env->GetFieldID(nodeListClass, "p_nsIDOMNodeList", "J");
if (!nodeListPtrFID) return;
nodeTypeAttributeFID =
env->GetStaticFieldID(nodeClass, "ATTRIBUTE_NODE", "S");
if (!nodeTypeAttributeFID) return;
nodeTypeCDataSectionFID =
env->GetStaticFieldID(nodeClass, "CDATA_SECTION_NODE", "S");
if (!nodeTypeCDataSectionFID) return;
nodeTypeCommentFID =
env->GetStaticFieldID(nodeClass, "COMMENT_NODE", "S");
if (!nodeTypeCommentFID) return;
nodeTypeDocumentFragmentFID =
env->GetStaticFieldID(nodeClass, "DOCUMENT_FRAGMENT_NODE", "S");
if (!nodeTypeDocumentFragmentFID) return;
nodeTypeDocumentFID =
env->GetStaticFieldID(nodeClass, "DOCUMENT_NODE", "S");
if (!nodeTypeDocumentFID) return;
nodeTypeDocumentTypeFID =
env->GetStaticFieldID(nodeClass, "DOCUMENT_TYPE_NODE", "S");
if (!nodeTypeDocumentTypeFID) return;
nodeTypeElementFID =
env->GetStaticFieldID(nodeClass, "ELEMENT_NODE", "S");
if (!nodeTypeElementFID) return;
nodeTypeEntityFID =
env->GetStaticFieldID(nodeClass, "ENTITY_NODE", "S");
if (!nodeTypeEntityFID) return;
nodeTypeEntityReferenceFID =
env->GetStaticFieldID(nodeClass, "ENTITY_REFERENCE_NODE", "S");
if (!nodeTypeEntityReferenceFID) return;
nodeTypeNotationFID =
env->GetStaticFieldID(nodeClass, "NOTATION_NODE", "S");
if (!nodeTypeNotationFID) return;
nodeTypeProcessingInstructionFID =
env->GetStaticFieldID(nodeClass, "PROCESSING_INSTRUCTION_NODE", "S");
if (!nodeTypeProcessingInstructionFID) return;
nodeTypeTextFID =
env->GetStaticFieldID(nodeClass, "TEXT_NODE", "S");
if (!nodeTypeTextFID) return;
}
void JavaDOMGlobals::Destroy(JNIEnv *env)
{
env->DeleteGlobalRef(attrClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete Attr global ref %x\n",
attrClass));
return;
}
attrClass = NULL;
env->DeleteGlobalRef(documentClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete Document global ref %x\n",
attrClass));
return;
}
documentClass = NULL;
env->DeleteGlobalRef(documentTypeClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete DocumentType global ref %x\n",
attrClass));
return;
}
documentTypeClass = NULL;
env->DeleteGlobalRef(domImplementationClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete DOMImplementation global ref %x\n",
attrClass));
return;
}
domImplementationClass = NULL;
env->DeleteGlobalRef(elementClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete Element global ref %x\n",
attrClass));
return;
}
elementClass = NULL;
env->DeleteGlobalRef(namedNodeMapClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete NamedNodeMap global ref %x\n",
attrClass));
return;
}
namedNodeMapClass = NULL;
env->DeleteGlobalRef(nodeListClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete NodeList global ref %x\n",
attrClass));
return;
}
nodeListClass = NULL;
env->DeleteGlobalRef(nodeClass);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::Destroy: failed to delete Node global ref %x\n",
attrClass));
return;
}
nodeClass = NULL;
TakeOutGarbage();
PR_DestroyLock(garbageLock);
}
jobject JavaDOMGlobals::CreateNodeSubtype(JNIEnv *env,
nsIDOMNode *node)
{
PRUint16 nodeType = 0;
(void) node->GetNodeType(&nodeType);
jclass clazz = nodeClass;
switch (nodeType) {
case nsIDOMNode::ATTRIBUTE_NODE:
clazz = attrClass;
break;
case nsIDOMNode::CDATA_SECTION_NODE:
clazz = cDataSectionClass;
break;
case nsIDOMNode::COMMENT_NODE:
clazz = commentClass;
break;
case nsIDOMNode::DOCUMENT_NODE:
clazz = documentClass;
break;
case nsIDOMNode::DOCUMENT_FRAGMENT_NODE:
clazz = documentFragmentClass;
break;
case nsIDOMNode::DOCUMENT_TYPE_NODE:
clazz = documentTypeClass;
break;
case nsIDOMNode::ENTITY_NODE:
clazz = entityClass;
break;
case nsIDOMNode::ENTITY_REFERENCE_NODE:
clazz = entityReferenceClass;
break;
case nsIDOMNode::NOTATION_NODE:
clazz = notationClass;
break;
case nsIDOMNode::PROCESSING_INSTRUCTION_NODE:
clazz = processingInstructionClass;
break;
case nsIDOMNode::TEXT_NODE:
clazz = textClass;
break;
}
jobject jnode = env->AllocObject(clazz);
if (!jnode) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::CreateNodeSubtype: failed to allocate Node of type %d\n",
nodeType));
return NULL;
}
env->SetLongField(jnode, nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::CreateNodeSubtype: failed to set native ptr %x\n",
(jlong) node));
return NULL;
}
node->AddRef();
return jnode;
}
void JavaDOMGlobals::AddToGarbage(nsISupports* domObject)
{
nsAutoLock lock(garbageLock);
jniDOMGarbage* elem = new jniDOMGarbage(domObject);
PR_INSERT_BEFORE(elem, &garbage);
PR_LOG(log, PR_LOG_DEBUG,
("JavaDOMGlobals::AddToGarbage: Scheduling %x\n", domObject));
}
void JavaDOMGlobals::TakeOutGarbage()
{
nsAutoLock lock(garbageLock);
PRUint32 count = 0;
nsISupports* domo = NULL;
PRCList* chain = NULL;
PRCList* elem = NULL;
for (chain = garbage.next;
chain != &garbage;
chain = PR_NEXT_LINK(chain)) {
elem = chain;
domo = ((jniDOMGarbage*) elem)->domObject;
PR_LOG(log, PR_LOG_DEBUG,
("JavaDOMGlobals::TakeOutGarbage: Releasing %x\n", domo));
domo->Release();
domo = NULL;
delete elem;
count++;
}
PR_INIT_CLIST(&garbage);
if (count)
PR_LOG(log, PR_LOG_DEBUG,
("JavaDOMGlobals::TakeOutGarbage: Released %d objects\n", count));
}

Просмотреть файл

@ -0,0 +1,78 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#ifndef __JavaDOMGlobals_h__
#define __JavaDOMGlobals_h__
#include "jni.h"
#include "prclist.h"
class nsISupports;
class nsIDOMNode;
class PRLogModuleInfo;
class PRLock;
class JavaDOMGlobals {
public:
static jclass attrClass;
static jclass cDataSectionClass;
static jclass commentClass;
static jclass documentClass;
static jclass documentFragmentClass;
static jclass documentTypeClass;
static jclass domImplementationClass;
static jclass elementClass;
static jclass entityClass;
static jclass entityReferenceClass;
static jclass namedNodeMapClass;
static jclass nodeClass;
static jclass nodeListClass;
static jclass notationClass;
static jclass processingInstructionClass;
static jclass textClass;
static jfieldID nodePtrFID;
static jfieldID nodeListPtrFID;
static jfieldID domImplementationPtrFID;
static jfieldID nodeTypeAttributeFID;
static jfieldID nodeTypeCDataSectionFID;
static jfieldID nodeTypeCommentFID;
static jfieldID nodeTypeDocumentFragmentFID;
static jfieldID nodeTypeDocumentFID;
static jfieldID nodeTypeDocumentTypeFID;
static jfieldID nodeTypeElementFID;
static jfieldID nodeTypeEntityFID;
static jfieldID nodeTypeEntityReferenceFID;
static jfieldID nodeTypeNotationFID;
static jfieldID nodeTypeProcessingInstructionFID;
static jfieldID nodeTypeTextFID;
static PRLogModuleInfo* log;
static PRCList garbage;
static PRLock* garbageLock;
static void Initialize(JNIEnv *env);
static void Destroy(JNIEnv *env);
static jobject CreateNodeSubtype(JNIEnv *env,
nsIDOMNode *node);
static void AddToGarbage(nsISupports* domObject);
static void TakeOutGarbage();
};
#endif /* __JavaDOMGlobals_h__ */

89
java/dom/jni/makefile.win Executable file
Просмотреть файл

@ -0,0 +1,89 @@
#!nmake
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH=..\..\..
IGNORE_MANIFEST=1
DEFINES=-D_IMPL_NS_WEB -DWIN32_LEAN_AND_MEAN
MODULE=javadomjni
CPPSRCS= \
javaDOMGlobals.cpp \
org_mozilla_dom_DOMAccessorImpl.cpp \
org_mozilla_dom_DOMGarbageCollector.cpp \
org_mozilla_dom_AttrImpl.cpp \
org_mozilla_dom_CharacterDataImpl.cpp \
org_mozilla_dom_DocumentImpl.cpp \
org_mozilla_dom_DocumentTypeImpl.cpp \
org_mozilla_dom_DOMImplementationImpl.cpp \
org_mozilla_dom_ElementImpl.cpp \
org_mozilla_dom_NamedNodeMapImpl.cpp \
org_mozilla_dom_NodeImpl.cpp \
org_mozilla_dom_NodeListImpl.cpp \
org_mozilla_dom_ProcessingInstructionImpl.cpp \
org_mozilla_dom_TextImpl.cpp \
$(NULL)
CPP_OBJS= \
.\$(OBJDIR)\javaDOMGlobals.obj \
.\$(OBJDIR)\org_mozilla_dom_DOMAccessorImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_DOMGarbageCollector.obj \
.\$(OBJDIR)\org_mozilla_dom_AttrImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_CharacterDataImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_DocumentImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_DocumentTypeImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_DOMImplementationImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_ElementImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_NamedNodeMapImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_NodeImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_NodeListImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_ProcessingInstructionImpl.obj \
.\$(OBJDIR)\org_mozilla_dom_TextImpl.obj \
$(NULL)
LINCS=
MAKE_OBJ_TYPE = DLL
DLLNAME = javadomjni
DLL=.\$(OBJDIR)\$(DLLNAME).dll
LIBRARY_NAME=javadomimpl
LCFLAGS = \
$(LCFLAGS) \
$(DEFINES) \
$(NULL)
# These are the libraries we need to link with to create the dll
LLIBS= \
$(DIST)\lib\xpcom.lib \
$(DIST)\lib\raptorgfxwin.lib \
$(DIST)\lib\img32$(VERSION_NUMBER).lib \
$(DIST)\lib\util.lib \
$(DIST)\lib\plc3.lib \
$(DIST)\lib\jsdom.lib \
$(LIBNSPR)
include <$(DEPTH)\config\config.mak>
include <$(DEPTH)\config\rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib
clobber::
rm -f $(DIST)\bin\$(DLLNAME).dll
rm -f $(DIST)\lib\$(DLLNAME).lib

Просмотреть файл

@ -0,0 +1,171 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMAttr.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_AttrImpl.h"
/*
* Class: org_mozilla_dom_AttrImpl
* Method: getName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_AttrImpl_getName
(JNIEnv *env, jobject jthis)
{
nsIDOMAttr* attr = (nsIDOMAttr*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getName: NULL pointer\n"));
return NULL;
}
nsString name;
nsresult rv = attr->GetName(name);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getName: failed (%x)\n", rv));
return NULL;
}
char* cname = name.ToNewCString();
jstring jname = env->NewStringUTF(cname);
if (!jname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getName: NewStringUTF failed: %s\n", cname));
}
delete[] cname;
return jname;
}
/*
* Class: org_mozilla_dom_AttrImpl
* Method: getSpecified
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_AttrImpl_getSpecified
(JNIEnv *env, jobject jthis)
{
nsIDOMAttr* attr = (nsIDOMAttr*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getSpecified: NULL pointer\n"));
return JNI_FALSE;
}
PRBool specified = PR_FALSE;
nsresult rv = attr->GetSpecified(&specified);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getSpecified: failed (%x)\n", rv));
return JNI_FALSE;
}
return (specified == PR_TRUE) ? JNI_TRUE : JNI_FALSE;
}
/*
* Class: org_mozilla_dom_AttrImpl
* Method: getValue
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_AttrImpl_getValue
(JNIEnv *env, jobject jthis)
{
nsIDOMAttr* attr = (nsIDOMAttr*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getValue: NULL pointer\n"));
return NULL;
}
nsString value;
nsresult rv = attr->GetValue(value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getValue: failed (%x)\n", rv));
return NULL;
}
char* cvalue = value.ToNewCString();
jstring jval = env->NewStringUTF(cvalue);
if (!jval) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.getValue: NewStringUTF failed: %s\n", cvalue));
}
delete[] cvalue;
return jval;
}
/*
* Class: org_mozilla_dom_AttrImpl
* Method: setValue
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_AttrImpl_setValue
(JNIEnv *env, jobject jthis, jstring jval)
{
nsIDOMAttr* attr = (nsIDOMAttr*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.setValue: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* cvalue = env->GetStringUTFChars(jval, &iscopy);
if (!cvalue) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.setValue: GetStringUTFChars failed\n"));
return;
}
nsresult rv = attr->SetValue(cvalue);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jval, cvalue);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.setValue: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_AttrImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_AttrImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMAttr* attr = (nsIDOMAttr*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(attr);
}

Просмотреть файл

@ -0,0 +1,53 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_AttrImpl */
#ifndef _Included_org_mozilla_dom_AttrImpl
#define _Included_org_mozilla_dom_AttrImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_AttrImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_AttrImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_AttrImpl
* Method: getName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_AttrImpl_getName
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_AttrImpl
* Method: getSpecified
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_AttrImpl_getSpecified
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_AttrImpl
* Method: getValue
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_AttrImpl_getValue
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_AttrImpl
* Method: setValue
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_AttrImpl_setValue
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,296 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMCharacterData.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_CharacterDataImpl.h"
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: appendData
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_appendData
(JNIEnv *env, jobject jthis, jstring jvalue)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.appendData: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.appendData: GetStringUTFChars failed\n"));
return;
}
nsresult rv = data->AppendData(value);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.appendData: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: deleteData
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_deleteData
(JNIEnv *env, jobject jthis, jint offset, jint count)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.deleteData: NULL pointer\n"));
return;
}
nsresult rv = data->DeleteData((PRUint32) offset, (PRUint32) count);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.deleteData: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(data);
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: getData
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_CharacterDataImpl_getData
(JNIEnv *env, jobject jthis)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getData: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = data->GetData(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getData: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getData: NewStringUTF failed: %s\n", cret));
}
delete[] cret;
return jret;
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: getLength
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_dom_CharacterDataImpl_getLength
(JNIEnv *env, jobject jthis)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getLength: NULL pointer\n"));
return 0;
}
PRUint32 len = 0;
nsresult rv = data->GetLength(&len);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getLength: failed (%x)\n", rv));
return 0;
}
return (jint) len;
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: insertData
* Signature: (ILjava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_insertData
(JNIEnv *env, jobject jthis, jint offset, jstring jvalue)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.insertData: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.insertData: GetStringUTFChars failed\n"));
return;
}
nsresult rv = data->InsertData((PRUint32) offset, value);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.insertData: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: replaceData
* Signature: (IILjava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_replaceData
(JNIEnv *env, jobject jthis, jint offset, jint count, jstring jvalue)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.replaceData: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.replaceData: GetStringUTFChars failed\n"));
return;
}
nsresult rv = data->ReplaceData((PRUint32) offset, (PRUint32) count, value);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.replaceData: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: setData
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_setData
(JNIEnv *env, jobject jthis, jstring jvalue)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.setData: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.setData: GetStringUTFChars failed\n"));
return;
}
nsresult rv = data->SetData(value);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.setData: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: substringData
* Signature: (II)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_CharacterDataImpl_substringData
(JNIEnv *env, jobject jthis, jint offset, jint count)
{
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.substringData: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = data->SubstringData((PRUint32) offset, (PRUint32) count, ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.substringData: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.substringData: NewStringUTF failed: %s\n", cret));
}
delete[] cret;
return jret;
}

Просмотреть файл

@ -0,0 +1,85 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_CharacterDataImpl */
#ifndef _Included_org_mozilla_dom_CharacterDataImpl
#define _Included_org_mozilla_dom_CharacterDataImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: appendData
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_appendData
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: deleteData
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_deleteData
(JNIEnv *, jobject, jint, jint);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: getData
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_CharacterDataImpl_getData
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: getLength
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_dom_CharacterDataImpl_getLength
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: insertData
* Signature: (ILjava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_insertData
(JNIEnv *, jobject, jint, jstring);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: replaceData
* Signature: (IILjava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_replaceData
(JNIEnv *, jobject, jint, jint, jstring);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: setData
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_setData
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_CharacterDataImpl
* Method: substringData
* Signature: (II)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_CharacterDataImpl_substringData
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,78 @@
#include "org_mozilla_dom_DOMAccessorImpl.h"
#include "prlog.h"
#include "javaDOMGlobals.h"
#include "nsIDocumentLoader.h"
#include "nsIServiceManager.h"
#include "nsIJavaDOM.h"
#include "nsJavaDOMCID.h"
static NS_DEFINE_IID(kDocLoaderServiceCID, NS_DOCUMENTLOADER_SERVICE_CID);
static NS_DEFINE_IID(kJavaDOMFactoryCID, NS_JAVADOMFACTORY_CID);
static NS_DEFINE_IID(kIJavaDOMIID, NS_IJAVADOM_IID);
/*
* Class: org_mozilla_dom_DOMAccessorImpl
* Method: register
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMAccessorImpl_register
(JNIEnv *, jclass jthis)
{
PR_LOG(JavaDOMGlobals::log, PR_LOG_DEBUG,
("DOMAccessor::register: registering %x\n", jthis));
nsIDocumentLoader* docLoaderService = nsnull;
nsISupports* javaDOM = nsnull;
nsresult rv = nsServiceManager::GetService(kJavaDOMFactoryCID,
kIJavaDOMIID,
(nsISupports**) &javaDOM);
if (NS_FAILED(rv) || !javaDOM) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMAccessor::register: GetService(JavaDOM) failed: %x\n",
rv));
} else {
rv = docLoaderService->AddObserver((nsIDocumentLoaderObserver*)javaDOM);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMAccessor::register: AddObserver(JavaDOM) failed x\n",
rv));
}
}
nsServiceManager::ReleaseService(kDocLoaderServiceCID, docLoaderService);
}
/*
* Class: org_mozilla_dom_DOMAccessorImpl
* Method: unregister
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMAccessorImpl_unregister
(JNIEnv *, jclass jthis)
{
PR_LOG(JavaDOMGlobals::log, PR_LOG_DEBUG,
("DOMAccessor::unregister: unregistering %x\n", jthis));
nsIDocumentLoader* docLoaderService = nsnull;
nsISupports* javaDOM = nsnull;
nsresult rv = nsServiceManager::GetService(kJavaDOMFactoryCID,
kIJavaDOMIID,
(nsISupports**) &javaDOM);
if (NS_FAILED(rv) || !javaDOM) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMAccessor::unregister: GetService(JavaDOM) failed %x\n",
rv));
} else {
rv = docLoaderService->RemoveObserver((nsIDocumentLoaderObserver*)javaDOM);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMAccessor::unregister: RemoveObserver(JavaDOM) failed x\n",
rv));
}
}
nsServiceManager::ReleaseService(kDocLoaderServiceCID, docLoaderService);
}

Просмотреть файл

@ -0,0 +1,29 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_DOMAccessorImpl */
#ifndef _Included_org_mozilla_dom_DOMAccessorImpl
#define _Included_org_mozilla_dom_DOMAccessorImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_DOMAccessorImpl
* Method: register
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMAccessorImpl_register
(JNIEnv *, jclass);
/*
* Class: org_mozilla_dom_DOMAccessorImpl
* Method: unregister
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMAccessorImpl_unregister
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,29 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "org_mozilla_dom_DOMGarbageCollector.h"
#include "javaDOMGlobals.h"
/*
* Class: org_mozilla_dom_DOMGarbageCollector
* Method: doGC
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMGarbageCollector_doGC
(JNIEnv *, jclass)
{
JavaDOMGlobals::TakeOutGarbage();
}

Просмотреть файл

Просмотреть файл

@ -0,0 +1,85 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMDOMImplementation.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_DOMImplementationImpl.h"
/*
* Class: org_mozilla_dom_DOMImplementationImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMImplementationImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMDOMImplementation* dom = (nsIDOMDOMImplementation*)
env->GetLongField(jthis, JavaDOMGlobals::domImplementationPtrFID);
if (!dom) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("DOMImplementation.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(dom);
}
/*
* Class: org_mozilla_dom_DOMImplementationImpl
* Method: hasFeature
* Signature: (Ljava/lang/String;Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_DOMImplementationImpl_hasFeature
(JNIEnv *env, jobject jthis, jstring jfeature, jstring jversion)
{
nsIDOMDOMImplementation* dom = (nsIDOMDOMImplementation*)
env->GetLongField(jthis, JavaDOMGlobals::domImplementationPtrFID);
if (!dom) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("DOMImplementation.hasFeature: NULL pointer\n"));
return JNI_FALSE;
}
jboolean iscopy = JNI_FALSE;
const char* feature = env->GetStringUTFChars(jfeature, &iscopy);
if (!feature) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMImplementation.hasFeature: GetStringUTFChars feature failed\n"));
return JNI_FALSE;
}
jboolean iscopy2 = JNI_FALSE;
const char* version = env->GetStringUTFChars(jversion, &iscopy2);
if (!version) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMImplementation.hasFeature: GetStringUTFChars version failed\n"));
return JNI_FALSE;
}
PRBool ret = PR_FALSE;
nsresult rv = dom->HasFeature(feature, version, &ret);
if (iscopy2 == JNI_TRUE)
env->ReleaseStringUTFChars(jversion, version);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jfeature, feature);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMImplementation.hasFeature: failed (%x)\n", rv));
}
return ret == PR_TRUE ? JNI_TRUE : JNI_FALSE;
}

Просмотреть файл

@ -0,0 +1,29 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_DOMImplementationImpl */
#ifndef _Included_org_mozilla_dom_DOMImplementationImpl
#define _Included_org_mozilla_dom_DOMImplementationImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_DOMImplementationImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DOMImplementationImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_DOMImplementationImpl
* Method: hasFeature
* Signature: (Ljava/lang/String;Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_DOMImplementationImpl_hasFeature
(JNIEnv *, jobject, jstring, jstring);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,659 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMDocument.h"
#include "nsIDOMAttr.h"
#include "nsIDOMComment.h"
#include "nsIDOMElement.h"
#include "nsIDOMDocumentType.h"
#include "nsIDOMDocumentFragment.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMCDATASection.h"
#include "nsIDOMDOMImplementation.h"
#include "nsIDOMProcessingInstruction.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_DocumentImpl.h"
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: initialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DocumentImpl_initialize
(JNIEnv *env, jclass)
{
if (!JavaDOMGlobals::log) {
JavaDOMGlobals::Initialize(env);
PR_LOG(JavaDOMGlobals::log, PR_LOG_DEBUG,
("Document.initialize\n"));
}
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DocumentImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(doc);
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createAttribute
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createAttribute: NULL pointer\n"));
return NULL;
}
nsIDOMAttr* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->CreateAttribute(name, &ret);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createCDATASection
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/CDATASection;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection
(JNIEnv *env, jobject jthis, jstring jdata)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createCDATASection: NULL pointer\n"));
return NULL;
}
nsIDOMCDATASection* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->CreateCDATASection(data, &ret);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::cDataSectionClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createComment
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Comment;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment
(JNIEnv *env, jobject jthis, jstring jdata)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createComment: NULL pointer\n"));
return NULL;
}
nsIDOMComment* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->CreateComment(data, &ret);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::commentClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createDocumentFragment
* Signature: ()Lorg/w3c/dom/DocumentFragment;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createDocumentFragment
(JNIEnv *env, jobject jthis)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createDocumentFragment: NULL pointer\n"));
return NULL;
}
nsIDOMDocumentFragment* ret = nsnull;
nsresult rv = doc->CreateDocumentFragment(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createDocumentFragment: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::documentFragmentClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createDocumentFragment: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createDocumentFragment: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createElement
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Element;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement
(JNIEnv *env, jobject jthis, jstring jtagName)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createElement: NULL pointer\n"));
return NULL;
}
nsIDOMElement* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const char* tagName = env->GetStringUTFChars(jtagName, &iscopy);
if (!tagName) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->CreateElement(tagName, &ret);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jtagName, tagName);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::elementClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createEntityReference
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/EntityReference;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReference
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createEntityReference: NULL pointer\n"));
return NULL;
}
nsIDOMCDATASection* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->CreateCDATASection(name, &ret);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::entityReferenceClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createProcessingInstruction
* Signature: (Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInstruction
(JNIEnv *env, jobject jthis, jstring jtarget, jstring jdata)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createProcessingInstruction: NULL pointer\n"));
return NULL;
}
nsIDOMProcessingInstruction* ret = nsnull;
jboolean iscopy = JNI_FALSE;
jboolean iscopy2 = JNI_FALSE;
const char* target = env->GetStringUTFChars(jtarget, &iscopy);
if (!target) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: GetStringUTFChars target failed\n"));
return NULL;
}
const char* data = env->GetStringUTFChars(jdata, &iscopy2);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: GetStringUTFChars data failed\n"));
return NULL;
}
nsresult rv = doc->CreateProcessingInstruction(target, data, &ret);
if (iscopy2 == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jtarget, target);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::processingInstructionClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createTextNode
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Text;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode
(JNIEnv *env, jobject jthis, jstring jdata)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createTextNode: NULL pointer\n"));
return NULL;
}
nsIDOMText* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->CreateTextNode(data, &ret);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createTextNode: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::textClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createTextNode: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createTextNode: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getDoctype
* Signature: ()Lorg/w3c/dom/DocumentType;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getDoctype
(JNIEnv *env, jobject jthis)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: NULL pointer\n"));
return NULL;
}
nsIDOMDocumentType* docType = nsnull;
nsresult rv = doc->GetDoctype(&docType);
if (NS_FAILED(rv) || !docType) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: error %x\n", rv));
return NULL;
}
jobject jDocType = env->AllocObject(JavaDOMGlobals::documentTypeClass);
jobject jret = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jDocType, JavaDOMGlobals::nodePtrFID, (jlong) docType);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: failed to set node ptr: %x\n", docType));
return NULL;
}
docType->AddRef();
return jDocType;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getDocumentElement
* Signature: ()Lorg/w3c/dom/Element;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getDocumentElement
(JNIEnv *env, jobject jthis)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: NULL pointer\n"));
return NULL;
}
nsIDOMElement* element = nsnull;
nsresult rv = doc->GetDocumentElement(&element);
if (NS_FAILED(rv) || !element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::elementClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) element);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: failed to set node ptr: %x\n", element));
return NULL;
}
element->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getElementsByTagName
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/NodeList;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName
(JNIEnv *env, jobject jthis, jstring jtagName)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: NULL pointer\n"));
return NULL;
}
nsIDOMNodeList* elements = nsnull;
jboolean iscopy = JNI_FALSE;
const char* tagName = env->GetStringUTFChars(jtagName, &iscopy);
if (!tagName) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = doc->GetElementsByTagName(tagName, &elements);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jtagName, tagName);
if (NS_FAILED(rv) || !elements) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::nodeListClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) elements);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: failed to set node ptr: %x\n", elements));
return NULL;
}
elements->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getImplementation
* Signature: ()Lorg/w3c/dom/DOMImplementation;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getImplementation
(JNIEnv *env, jobject jthis)
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: NULL pointer\n"));
return NULL;
}
nsIDOMDOMImplementation* impl = nsnull;
nsresult rv = doc->GetImplementation(&impl);
if (NS_FAILED(rv) || !impl) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: error %x\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::domImplementationClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) impl);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: failed to set node ptr: %x\n", impl));
return NULL;
}
impl->AddRef();
return jret;
}

Просмотреть файл

@ -0,0 +1,125 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_DocumentImpl */
#ifndef _Included_org_mozilla_dom_DocumentImpl
#define _Included_org_mozilla_dom_DocumentImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createAttribute
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createCDATASection
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/CDATASection;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createComment
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Comment;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createDocumentFragment
* Signature: ()Lorg/w3c/dom/DocumentFragment;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createDocumentFragment
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createElement
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Element;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createEntityReference
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/EntityReference;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReference
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createProcessingInstruction
* Signature: (Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInstruction
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: createTextNode
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Text;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DocumentImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getDoctype
* Signature: ()Lorg/w3c/dom/DocumentType;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getDoctype
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getDocumentElement
* Signature: ()Lorg/w3c/dom/Element;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getDocumentElement
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getElementsByTagName
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/NodeList;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: getImplementation
* Signature: ()Lorg/w3c/dom/DOMImplementation;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getImplementation
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_DocumentImpl
* Method: initialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DocumentImpl_initialize
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,160 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMDocumentType.h"
#include "nsIDOMNamedNodeMap.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_DocumentImpl.h"
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DocumentTypeImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMDocumentType* docType = (nsIDOMDocumentType*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!docType) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("DocumentType.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(docType);
}
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: getEntities
* Signature: ()Lorg/w3c/dom/NamedNodeMap;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentTypeImpl_getEntities
(JNIEnv *env, jobject jthis)
{
nsIDOMDocumentType* docType = (nsIDOMDocumentType*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!docType) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("DocumentType.getEntities: NULL pointer\n"));
return NULL;
}
nsIDOMNamedNodeMap* nodeMap = nsnull;
nsresult rv = docType->GetEntities(&nodeMap);
if (NS_FAILED(rv) || !nodeMap) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getEntities: failed (%x)\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::namedNodeMapClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getEntities: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) nodeMap);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getEntities: failed to set node ptr: %x\n", nodeMap));
return NULL;
}
nodeMap->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: getName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_DocumentTypeImpl_getName
(JNIEnv *env, jobject jthis)
{
nsIDOMDocumentType* docType = (nsIDOMDocumentType*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!docType) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("DocumentType.getName: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = docType->GetName(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getName: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getName: NewStringUTF failed: %s\n", cret));
}
delete[] cret;
return jret;
}
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: getNotations
* Signature: ()Lorg/w3c/dom/NamedNodeMap;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentTypeImpl_getNotations
(JNIEnv *env, jobject jthis)
{
nsIDOMDocumentType* docType = (nsIDOMDocumentType*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!docType) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("DocumentType.getNotations: NULL pointer\n"));
return NULL;
}
nsIDOMNamedNodeMap* nodeMap = nsnull;
nsresult rv = docType->GetNotations(&nodeMap);
if (NS_FAILED(rv) || !nodeMap) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getNotations: failed (%x)\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::namedNodeMapClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getNotations: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) nodeMap);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DocumentType.getNotations: failed to set node ptr: %x\n", nodeMap));
return NULL;
}
nodeMap->AddRef();
return jret;
}

Просмотреть файл

@ -0,0 +1,46 @@
#include "nsIDOMDocumentType.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_DocumentTypeImpl.h"
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_DocumentTypeImpl_finalize
(JNIEnv *, jobject)
{
}
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: getEntities
* Signature: ()Lorg/w3c/dom/NamedNodeMap;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentTypeImpl_getEntities
(JNIEnv *, jobject)
{
return NULL;
}
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: getName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_DocumentTypeImpl_getName
(JNIEnv *, jobject)
{
return NULL;
}
/*
* Class: org_mozilla_dom_DocumentTypeImpl
* Method: getNotations
* Signature: ()Lorg/w3c/dom/NamedNodeMap;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentTypeImpl_getNotations
(JNIEnv *, jobject)
{
return NULL;
}

Просмотреть файл

@ -0,0 +1,430 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMElement.h"
#include "nsIDOMAttr.h"
#include "nsIDOMNodeList.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_ElementImpl.h"
/*
* Class: org_mozilla_dom_ElementImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(element);
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getAttribute
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getAttribute
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getAttribute: NULL pointer\n"));
return NULL;
}
jboolean iscopy = JNI_FALSE;
const char* cname = env->GetStringUTFChars(jname, &iscopy);
if (!cname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttribute: GetStringUTFChars failed\n"));
return NULL;
}
nsString attr;
nsresult rv = element->GetAttribute(cname, attr);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, cname);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttribute: failed (%x)\n", rv));
return NULL;
}
char* cattr = attr.ToNewCString();
jstring jattr = env->NewStringUTF(cattr);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttribute: NewStringUTF failed (%s)\n", cattr));
return NULL;
}
delete[] cattr;
return jattr;
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getAttributeNode
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getAttributeNode
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getAttributeNode: NULL pointer\n"));
return NULL;
}
jboolean iscopy = JNI_FALSE;
const char* cname = env->GetStringUTFChars(jname, &iscopy);
if (!cname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: GetStringUTFChars failed\n"));
return NULL;
}
nsIDOMAttr* attr = nsnull;
nsresult rv = element->GetAttributeNode(cname, &attr);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, cname);
if (NS_FAILED(rv) || !attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: failed (%x)\n", rv));
return NULL;
}
jobject jattr = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jattr, JavaDOMGlobals::nodePtrFID, (jlong) attr);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: failed to set node ptr: %x\n", attr));
return NULL;
}
attr->AddRef();
return jattr;
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getElementsByTagName
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/NodeList;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagName
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getElementsByTagName: NULL pointer\n"));
return NULL;
}
jboolean iscopy = JNI_FALSE;
const char* cname = env->GetStringUTFChars(jname, &iscopy);
if (!cname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: GetStringUTFChars failed\n"));
return NULL;
}
nsIDOMNodeList* nodes = nsnull;
nsresult rv = element->GetElementsByTagName(cname, &nodes);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, cname);
if (NS_FAILED(rv) || !nodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: failed (%x)\n", rv));
return NULL;
}
jobject jnodes = env->AllocObject(JavaDOMGlobals::nodeListClass);
if (!jnodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jnodes, JavaDOMGlobals::nodeListPtrFID, (jlong) nodes);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: failed to set node ptr: %x\n", nodes));
return NULL;
}
nodes->AddRef();
return jnodes;
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getTagName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getTagName
(JNIEnv *env, jobject jthis)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getTagName: NULL pointer\n"));
return NULL;
}
nsString tagName;
nsresult rv = element->GetTagName(tagName);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getTagName: failed (%x)\n", rv));
return NULL;
}
char* cTagName = tagName.ToNewCString();
jstring jTagName = env->NewStringUTF(cTagName);
if (!jTagName) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getTagName: NewStringUTF failed (%s)\n", cTagName));
return NULL;
}
delete[] cTagName;
return jTagName;
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: normalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_normalize
(JNIEnv *env, jobject jthis)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.normalize: NULL pointer\n"));
return;
}
nsresult rv = element->Normalize();
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.normalize: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: removeAttribute
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_removeAttribute
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.removeAttribute: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttribute: GetStringUTFChars failed\n"));
return;
}
nsresult rv = element->RemoveAttribute(name);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttribute: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: removeAttributeNode
* Signature: (Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_removeAttributeNode
(JNIEnv *env, jobject jthis, jobject joldAttr)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.removeAttributeNode: NULL pointer\n"));
return NULL;
}
nsIDOMAttr* oldAttr = (nsIDOMAttr*)
env->GetLongField(joldAttr, JavaDOMGlobals::nodePtrFID);
if (!oldAttr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.removeAttributeNode: NULL arg pointer\n"));
return NULL;
}
nsIDOMAttr* ret = nsnull;
nsresult rv = element->RemoveAttributeNode(oldAttr, &ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttributeNode: failed (%x)\n", rv));
return NULL;
}
jobject jattr = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttributeNode: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jattr, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttributeNode: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jattr;
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: setAttribute
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute
(JNIEnv *env, jobject jthis, jstring jname, jstring jvalue)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.setAttribute: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttribute: GetStringUTFChars name failed\n"));
return;
}
jboolean iscopy2 = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy2);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttribute: GetStringUTFChars value failed\n"));
return;
}
nsresult rv = element->SetAttribute(name, value);
if (iscopy2 == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttribute: failed (%x)\n", rv));
return;
}
}
/*
* Class: org_mozilla_dom_ElementImpl
* Method: setAttributeNode
* Signature: (Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_setAttributeNode
(JNIEnv *env, jobject jthis, jobject jnewAttr)
{
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.setAttributeNode: NULL pointer\n"));
return NULL;
}
nsIDOMAttr* newAttr = (nsIDOMAttr*)
env->GetLongField(jnewAttr, JavaDOMGlobals::nodePtrFID);
if (!newAttr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.setAttributeNode: NULL arg pointer\n"));
return NULL;
}
nsIDOMAttr* ret = nsnull;
nsresult rv = element->SetAttributeNode(newAttr, &ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttributeNode: failed (%x)\n", rv));
return NULL;
}
jobject jattr = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttributeNode: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jattr, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttributeNode: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jattr;
}

Просмотреть файл

@ -0,0 +1,93 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_ElementImpl */
#ifndef _Included_org_mozilla_dom_ElementImpl
#define _Included_org_mozilla_dom_ElementImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_ElementImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getAttribute
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getAttribute
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getAttributeNode
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getAttributeNode
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getElementsByTagName
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/NodeList;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagName
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: getTagName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getTagName
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: normalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_normalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: removeAttribute
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_removeAttribute
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: removeAttributeNode
* Signature: (Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_removeAttributeNode
(JNIEnv *, jobject, jobject);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: setAttribute
* Signature: (Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: org_mozilla_dom_ElementImpl
* Method: setAttributeNode
* Signature: (Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_setAttributeNode
(JNIEnv *, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,264 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMNamedNodeMap.h"
#include "nsIDOMNode.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_NamedNodeMapImpl.h"
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(map);
}
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: getLength
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getLength
(JNIEnv *env, jobject jthis)
{
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.getLength: NULL pointer\n"));
return 0;
}
PRUint32 length = 0;
nsresult rv = map->GetLength(&length);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.getLength: failed (%x)\n", rv));
return 0;
}
return (jint) length;
}
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: getNamedItem
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.getNamedItem: NULL pointer\n"));
return NULL;
}
nsIDOMNode* node = nsnull;
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.getNamedItem: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = map->GetNamedItem(name, &node);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.getNamedItem: failed (%x)\n", rv));
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.getNamedItem: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.getNamedItem: failed to set node ptr: %x\n", node));
return NULL;
}
node->AddRef();
return jnode;
}
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: item
* Signature: (I)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_item
(JNIEnv *env, jobject jthis, jint jindex)
{
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.item: NULL pointer\n"));
return NULL;
}
nsIDOMNode* node = nsnull;
nsresult rv = map->Item((PRUint32) jindex, &node);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.item: failed (%x)\n", rv));
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.item: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.item: failed to set node ptr: %x\n", node));
return NULL;
}
node->AddRef();
return jnode;
}
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: removeNamedItem
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem
(JNIEnv *env, jobject jthis, jstring jname)
{
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.removeNamedItem: NULL pointer\n"));
return NULL;
}
nsIDOMNode* node = nsnull;
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.removeNamedItem: GetStringUTFChars failed\n"));
return NULL;
}
nsresult rv = map->RemoveNamedItem(name, &node);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.removeNamedItem: failed (%x)\n", rv));
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.removeNamedItem: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.removeNamedItem: failed to set node ptr: %x\n", node));
return NULL;
}
node->AddRef();
return jnode;
}
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: setNamedItem
* Signature: (Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_setNamedItem
(JNIEnv *env, jobject jthis, jobject jarg)
{
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.setNamedItem: NULL pointer\n"));
return NULL;
}
nsIDOMNode* arg = (nsIDOMNode*)
env->GetLongField(jarg, JavaDOMGlobals::nodePtrFID);
if (!arg) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.setNamedItem: NULL item pointer\n"));
return NULL;
}
nsIDOMNode* node = nsnull;
nsresult rv = map->SetNamedItem(arg, &node);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.setNamedItem: failed (%x)\n", rv));
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.setNamedItem: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.setNamedItem: failed to set node ptr: %x\n", node));
return NULL;
}
node->AddRef();
return jnode;
}

Просмотреть файл

@ -0,0 +1,61 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_NamedNodeMapImpl */
#ifndef _Included_org_mozilla_dom_NamedNodeMapImpl
#define _Included_org_mozilla_dom_NamedNodeMapImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: getLength
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getLength
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: getNamedItem
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: item
* Signature: (I)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_item
(JNIEnv *, jobject, jint);
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: removeNamedItem
* Signature: (Ljava/lang/String;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_dom_NamedNodeMapImpl
* Method: setNamedItem
* Signature: (Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_setNamedItem
(JNIEnv *, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,718 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMNode.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMNamedNodeMap.h"
#include "nsIDOMDocument.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_NodeImpl.h"
/*
* Class: org_mozilla_dom_NodeImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(node);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: appendChild
* Signature: (Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_appendChild
(JNIEnv *env, jobject jthis, jobject jchild)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.appendChild: NULL pointer\n"));
return NULL;
}
nsIDOMNode* child = (nsIDOMNode*)
env->GetLongField(jchild, JavaDOMGlobals::nodePtrFID);
if (!child) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.appendChild: NULL child pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->AppendChild(child, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.appendChild: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: cloneNode
* Signature: (Z)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_cloneNode
(JNIEnv *env, jobject jthis, jboolean jdeep)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.cloneNode: NULL pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
PRBool deep = jdeep == JNI_TRUE ? PR_TRUE : PR_FALSE;
nsresult rv = node->CloneNode(deep, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.cloneNode: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getAttributes
* Signature: ()Lorg/w3c/dom/NamedNodeMap;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getAttributes
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getAttributes: NULL pointer\n"));
return NULL;
}
nsIDOMNamedNodeMap* nodeMap = nsnull;
nsresult rv = node->GetAttributes(&nodeMap);
if (NS_FAILED(rv) || !nodeMap) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getAttributes: failed (%x)\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::namedNodeMapClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getAttributes: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) nodeMap);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getAttributes: failed to set node ptr: %x\n", nodeMap));
return NULL;
}
nodeMap->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getChildNodes
* Signature: ()Lorg/w3c/dom/NodeList;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getChildNodes
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getChildNodes: NULL pointer\n"));
return NULL;
}
nsIDOMNodeList* nodeList = nsnull;
nsresult rv = node->GetChildNodes(&nodeList);
if (NS_FAILED(rv) || !nodeList) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getChildNodes: failed (%x)\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::nodeListClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getChildNodes: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodeListPtrFID, (jlong) nodeList);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getChildNodes: failed to set node ptr: %x\n", nodeList));
return NULL;
}
nodeList->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getFirstChild
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getFirstChild
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getFirstChild: NULL pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetFirstChild(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getFirstChild: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getLastChild
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getLastChild
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getLastChild: NULL pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetLastChild(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getLastChild: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNextSibling
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getNextSibling
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNextSibling: NULL pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetNextSibling(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNextSibling: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNodeName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_NodeImpl_getNodeName
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNodeName: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = node->GetNodeName(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeName: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeName: NewStringUTF failed (%s)\n", cret));
return NULL;
}
delete[] cret;
return jret;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNodeType
* Signature: ()S
*/
JNIEXPORT jshort JNICALL Java_org_mozilla_dom_NodeImpl_getNodeType
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNodeType: NULL pointer\n"));
return (jshort) NULL;
}
PRUint16 type;
nsresult rv = node->GetNodeType(&type);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: failed (%x)\n", rv));
return (jshort) NULL;
}
jfieldID typeFID = NULL;
switch (type) {
case nsIDOMNode::ATTRIBUTE_NODE:
typeFID = JavaDOMGlobals::nodeTypeAttributeFID;
break;
case nsIDOMNode::CDATA_SECTION_NODE:
typeFID = JavaDOMGlobals::nodeTypeCDataSectionFID;
break;
case nsIDOMNode::COMMENT_NODE:
typeFID = JavaDOMGlobals::nodeTypeCommentFID;
break;
case nsIDOMNode::DOCUMENT_FRAGMENT_NODE:
typeFID = JavaDOMGlobals::nodeTypeDocumentFragmentFID;
break;
case nsIDOMNode::DOCUMENT_NODE:
typeFID = JavaDOMGlobals::nodeTypeDocumentFID;
break;
case nsIDOMNode::DOCUMENT_TYPE_NODE:
typeFID = JavaDOMGlobals::nodeTypeDocumentTypeFID;
break;
case nsIDOMNode::ELEMENT_NODE:
typeFID = JavaDOMGlobals::nodeTypeElementFID;
break;
case nsIDOMNode::ENTITY_NODE:
typeFID = JavaDOMGlobals::nodeTypeEntityFID;
break;
case nsIDOMNode::ENTITY_REFERENCE_NODE:
typeFID = JavaDOMGlobals::nodeTypeEntityReferenceFID;
break;
case nsIDOMNode::NOTATION_NODE:
typeFID = JavaDOMGlobals::nodeTypeNotationFID;
break;
case nsIDOMNode::PROCESSING_INSTRUCTION_NODE:
typeFID = JavaDOMGlobals::nodeTypeProcessingInstructionFID;
break;
case nsIDOMNode::TEXT_NODE:
typeFID = JavaDOMGlobals::nodeTypeTextFID;
break;
}
jshort ret = 0;
if (typeFID) {
jclass nodeClass = env->GetObjectClass(jthis);
if (!nodeClass) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: GetObjectClass failed (%x)\n", jthis));
return ret;
}
ret = env->GetStaticShortField(nodeClass, typeFID);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: typeFID failed\n"));
return ret;
}
} else {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: illegal type %d\n", type));
}
return ret;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNodeValue
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_NodeImpl_getNodeValue
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNodeValue: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = node->GetNodeValue(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeValue: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeValue: NewStringUTF failed (%s)\n", cret));
return NULL;
}
delete[] cret;
return jret;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getOwnerDocument
* Signature: ()Lorg/w3c/dom/Document;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getOwnerDocument
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getOwnerDocument: NULL pointer\n"));
return NULL;
}
nsIDOMDocument* ret = nsnull;
nsresult rv = node->GetOwnerDocument(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getOwnerDocument: failed (%x)\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::documentClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getOwnerDocument: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getOwnerDocument: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getParentNode
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getParentNode
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getParentNode: NULL pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetParentNode(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getParentNode: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getPreviousSibling
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getPreviousSibling
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getPreviousSibling: NULL pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetPreviousSibling(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getPreviousSibling: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: hasChildNodes
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_NodeImpl_hasChildNodes
(JNIEnv *env, jobject jthis)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.hasChildNodes: NULL pointer\n"));
return (jboolean) NULL;
}
PRBool ret = PR_FALSE;
nsresult rv = node->HasChildNodes(&ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.hasChildNodes: failed (%x)\n", rv));
return (jboolean) NULL;
}
return ret == PR_TRUE ? JNI_TRUE : JNI_FALSE;
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: insertBefore
* Signature: (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_insertBefore
(JNIEnv *env, jobject jthis, jobject jnewChild, jobject jrefChild)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.insertBefore: NULL pointer\n"));
return NULL;
}
nsIDOMNode* newChild = (nsIDOMNode*)
env->GetLongField(jnewChild, JavaDOMGlobals::nodePtrFID);
if (!newChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.insertBefore: NULL newChild pointer\n"));
return NULL;
}
nsIDOMNode* refChild = (nsIDOMNode*)
env->GetLongField(jrefChild, JavaDOMGlobals::nodePtrFID);
if (!refChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.insertBefore: NULL refChild pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->InsertBefore(newChild, refChild, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.insertBefore: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: removeChild
* Signature: (Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_removeChild
(JNIEnv *env, jobject jthis, jobject joldChild)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.removeChild: NULL pointer\n"));
return NULL;
}
nsIDOMNode* oldChild = (nsIDOMNode*)
env->GetLongField(joldChild, JavaDOMGlobals::nodePtrFID);
if (!oldChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.removeChild: NULL oldChild pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->RemoveChild(oldChild, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.removeChild: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: replaceChild
* Signature: (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_replaceChild
(JNIEnv *env, jobject jthis, jobject jnewChild, jobject joldChild)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.replaceChild: NULL pointer\n"));
return NULL;
}
nsIDOMNode* newChild = (nsIDOMNode*)
env->GetLongField(jnewChild, JavaDOMGlobals::nodePtrFID);
if (!newChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.replaceChild: NULL newChild pointer\n"));
return NULL;
}
nsIDOMNode* oldChild = (nsIDOMNode*)
env->GetLongField(joldChild, JavaDOMGlobals::nodePtrFID);
if (!oldChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.replaceChild: NULL oldChild pointer\n"));
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->ReplaceChild(newChild, oldChild, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.replaceChild: failed (%x)\n", rv));
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
}
/*
* Class: org_mozilla_dom_NodeImpl
* Method: setNodeValue
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_setNodeValue
(JNIEnv *env, jobject jthis, jstring jvalue)
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.setNodeValue: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.setNodeValue: GetStringUTFChars failed\n"));
return;
}
nsresult rv = node->SetNodeValue(value);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.setNodeValue: failed (%x)\n", rv));
return;
}
}

Просмотреть файл

@ -0,0 +1,165 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_NodeImpl */
#ifndef _Included_org_mozilla_dom_NodeImpl
#define _Included_org_mozilla_dom_NodeImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_NodeImpl
* Method: appendChild
* Signature: (Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_appendChild
(JNIEnv *, jobject, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: cloneNode
* Signature: (Z)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_cloneNode
(JNIEnv *, jobject, jboolean);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getAttributes
* Signature: ()Lorg/w3c/dom/NamedNodeMap;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getAttributes
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getChildNodes
* Signature: ()Lorg/w3c/dom/NodeList;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getChildNodes
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getFirstChild
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getFirstChild
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getLastChild
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getLastChild
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNextSibling
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getNextSibling
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNodeName
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_NodeImpl_getNodeName
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNodeType
* Signature: ()S
*/
JNIEXPORT jshort JNICALL Java_org_mozilla_dom_NodeImpl_getNodeType
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getNodeValue
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_NodeImpl_getNodeValue
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getOwnerDocument
* Signature: ()Lorg/w3c/dom/Document;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getOwnerDocument
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getParentNode
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getParentNode
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: getPreviousSibling
* Signature: ()Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getPreviousSibling
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: hasChildNodes
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_NodeImpl_hasChildNodes
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: insertBefore
* Signature: (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_insertBefore
(JNIEnv *, jobject, jobject, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: removeChild
* Signature: (Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_removeChild
(JNIEnv *, jobject, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: replaceChild
* Signature: (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_replaceChild
(JNIEnv *, jobject, jobject, jobject);
/*
* Class: org_mozilla_dom_NodeImpl
* Method: setNodeValue
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_setNodeValue
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,110 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMNode.h"
#include "nsIDOMNodeList.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_NodeListImpl.h"
/*
* Class: org_mozilla_dom_NodeListImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeListImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMNodeList* nodes = (nsIDOMNodeList*)
env->GetLongField(jthis, JavaDOMGlobals::nodeListPtrFID);
if (!nodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeList.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(nodes);
}
/*
* Class: org_mozilla_dom_NodeListImpl
* Method: getLength
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_dom_NodeListImpl_getLength
(JNIEnv *env, jobject jthis)
{
nsIDOMNodeList* nodes = (nsIDOMNodeList*)
env->GetLongField(jthis, JavaDOMGlobals::nodeListPtrFID);
if (!nodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeList.getLength: NULL pointer\n"));
return 0;
}
PRUint32 length = 0;
nsresult rv = nodes->GetLength(&length);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeList.getLength: failed (%x)\n", rv));
return 0;
}
return (jint) length;
}
/*
* Class: org_mozilla_dom_NodeListImpl
* Method: item
* Signature: (I)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeListImpl_item
(JNIEnv *env, jobject jthis, jint jindex)
{
nsIDOMNodeList* nodes = (nsIDOMNodeList*)
env->GetLongField(jthis, JavaDOMGlobals::nodeListPtrFID);
if (!nodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeList.item: NULL pointer\n"));
return NULL;
}
nsIDOMNode* node = NULL;
nsresult rv = nodes->Item((PRUint32) jindex, &node);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeList.item: failed (%x)\n", rv));
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeList.item: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeList.item: failed to set node ptr: %x\n", node));
return NULL;
}
node->AddRef();
return jnode;
}

Просмотреть файл

@ -0,0 +1,37 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_NodeListImpl */
#ifndef _Included_org_mozilla_dom_NodeListImpl
#define _Included_org_mozilla_dom_NodeListImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_NodeListImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeListImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeListImpl
* Method: getLength
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_dom_NodeListImpl_getLength
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_NodeListImpl
* Method: item
* Signature: (I)Lorg/w3c/dom/Node;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeListImpl_item
(JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,144 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMProcessingInstruction.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_ProcessingInstructionImpl.h"
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(pi);
}
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: getData
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_getData
(JNIEnv *env, jobject jthis)
{
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.getData: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = pi->GetData(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getData: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getData: NewStringUTF failed (%s)\n", cret));
return NULL;
}
delete[] cret;
return jret;
}
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: getTarget
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_getTarget
(JNIEnv *env, jobject jthis)
{
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.getTarget: NULL pointer\n"));
return NULL;
}
nsString ret;
nsresult rv = pi->GetData(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getTarget: failed (%x)\n", rv));
return NULL;
}
char* cret = ret.ToNewCString();
jstring jret = env->NewStringUTF(cret);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getTarget: NewStringUTF failed (%s)\n", cret));
return NULL;
}
delete[] cret;
return jret;
}
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: setData
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_setData
(JNIEnv *env, jobject jthis, jstring jdata)
{
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.setData: NULL pointer\n"));
return;
}
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.setData: GetStringUTFChars failed\n"));
return;
}
nsresult rv = pi->SetData(data);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.setData: failed (%x)\n", rv));
return;
}
}

Просмотреть файл

@ -0,0 +1,45 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_ProcessingInstructionImpl */
#ifndef _Included_org_mozilla_dom_ProcessingInstructionImpl
#define _Included_org_mozilla_dom_ProcessingInstructionImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: getData
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_getData
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: getTarget
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_getTarget
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_ProcessingInstructionImpl
* Method: setData
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_setData
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif

Просмотреть файл

@ -0,0 +1,81 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prlog.h"
#include "nsIDOMText.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_TextImpl.h"
/*
* Class: org_mozilla_dom_TextImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_TextImpl_finalize
(JNIEnv *env, jobject jthis)
{
nsIDOMText* text = (nsIDOMText*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!text) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Text.finalize: NULL pointer\n"));
return;
}
JavaDOMGlobals::AddToGarbage(text);
}
/*
* Class: org_mozilla_dom_TextImpl
* Method: splitText
* Signature: (I)Lorg/w3c/dom/Text;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_TextImpl_splitText
(JNIEnv *env, jobject jthis, jint joffset)
{
nsIDOMText* text = (nsIDOMText*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!text) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Text.splitText: NULL pointer\n"));
return NULL;
}
nsIDOMText* ret = nsnull;
nsresult rv = text->SplitText((PRUint32) joffset, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Text.splitText: failed (%x)\n", rv));
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::textClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Text.splitText: failed to allocate object\n"));
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Text.splitText: failed to set node ptr: %x\n", ret));
return NULL;
}
ret->AddRef();
return jret;
}

Просмотреть файл

@ -0,0 +1,29 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_dom_TextImpl */
#ifndef _Included_org_mozilla_dom_TextImpl
#define _Included_org_mozilla_dom_TextImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_dom_TextImpl
* Method: finalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_dom_TextImpl_finalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_dom_TextImpl
* Method: splitText
* Signature: (I)Lorg/w3c/dom/Text;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_TextImpl_splitText
(JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif

73
java/dom/makefile.win Executable file
Просмотреть файл

@ -0,0 +1,73 @@
#!nmake
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
DEPTH=..\..
IGNORE_MANIFEST=1
DEFINES=-D_IMPL_NS_WEB -DWIN32_LEAN_AND_MEAN
MODULE=javadom
IS_COMPONENT=1
LIBRARY_NAME=libjavadom
CPPSRCS= \
nsJavaDOMFactory.cpp \
nsJavaDOMImpl.cpp \
$(NULL)
CPP_OBJS= \
.\$(OBJDIR)\nsJavaDOMFactory.obj \
.\$(OBJDIR)\nsJavaDOMImpl.obj \
$(NULL)
EXPORTS = \
nsJavaDOMCID.h \
nsIJavaDOM.h
LINCS= \
-I..\..\..\jdk\include \
-I..\..\..\jdk\include\win32
MAKE_OBJ_TYPE = DLL
DLLNAME = javadom
DLL=.\$(OBJDIR)\$(DLLNAME).dll
LCFLAGS = \
$(LCFLAGS) \
$(DEFINES) \
$(NULL)
LLIBS= \
..\..\..\jdk\lib\jvm.lib \
$(DIST)\lib\xpcom.lib \
$(DIST)\lib\raptorgfxwin.lib \
$(DIST)\lib\img32$(VERSION_NUMBER).lib \
$(DIST)\lib\util.lib \
$(DIST)\lib\plc3.lib \
$(DIST)\lib\jsdom.lib \
$(DIST)\lib\js3250.lib \
$(LIBNSPR)
include <$(DEPTH)\config\config.mak>
include <$(DEPTH)\config\rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\components
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib
clobber::
rm -f $(DIST)\bin\components\$(DLLNAME).dll
rm -f $(DIST)\lib\$(DLLNAME).lib

95
java/dom/nsIJavaDOM.h Normal file
Просмотреть файл

@ -0,0 +1,95 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#ifndef __nsIJavaDOM_h__
#define __nsIJavaDOM_h__
#include "nsISupports.h"
#include "nsString.h"
#include "nsIDocumentLoaderObserver.h"
#include "jni.h"
class nsIURI;
/* {9cc0ca50-0e31-11d3-8a61-0004ac56c4a5} */
#define NS_IJAVADOM_IID_STR "9cc0ca50-0e31-11d3-8a61-0004ac56c4a5"
#define NS_IJAVADOM_IID \
{0x9cc0ca50, 0x0e31, 0x11d3, \
{ 0x8a, 0x61, 0x00, 0x04, 0xac, 0x56, 0xc4, 0xa5 }}
class nsIJavaDOM : public nsIDocumentLoaderObserver {
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IJAVADOM_IID)
/* nsIDocumentLoaderObserver methods */
NS_IMETHOD OnStartDocumentLoad(nsIDocumentLoader* loader,
nsIURI* aURL,
const char* aCommand) = 0;
NS_IMETHOD OnEndDocumentLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRInt32 aStatus,
nsIDocumentLoaderObserver* aObserver) = 0;
NS_IMETHOD OnStartURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
const char* aContentType,
#endif
nsIContentViewer* aViewer) = 0;
NS_IMETHOD OnProgressURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRUint32 aProgress,
PRUint32 aProgressMax) = 0;
NS_IMETHOD OnStatusURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
nsString& aMsg) = 0;
NS_IMETHOD OnEndURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRInt32 aStatus) = 0;
NS_IMETHOD HandleUnknownContentType(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
const char *aContentType,
const char *aCommand) = 0;
};
#endif /* __nsIJavaDOM_h__ */

24
java/dom/nsJavaDOMCID.h Normal file
Просмотреть файл

@ -0,0 +1,24 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#ifndef __nsJavaDOMCID_h__
#define __nsJavaDOMCID_h__
#define NS_JAVADOMFACTORY_CID \
{0x12c2fa66, 0x0fef, 0x11d3, \
{0x87, 0x14, 0x00, 0x04, 0xac, 0x56, 0xc4, 0xa5}}
#endif /* __nsJavaDOMCID_h__ */

Просмотреть файл

@ -0,0 +1,142 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "pratom.h"
#include "nsCOMPtr.h"
#include "nsIServiceManager.h"
#include "nsJavaDOMCID.h"
#include "nsJavaDOMImpl.h"
#include "nsJavaDOMFactory.h"
static PRInt32 gLockCount = 0;
static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID);
static NS_DEFINE_IID(kJavaDOMFactoryCID, NS_JAVADOMFACTORY_CID);
static NS_DEFINE_IID(kJavaDOMFactoryIID, NS_JAVADOMFACTORY_IID);
NS_IMPL_ISUPPORTS(nsJavaDOMFactory, kJavaDOMFactoryIID)
nsJavaDOMFactory::nsJavaDOMFactory()
{
NS_INIT_REFCNT();
}
nsresult nsJavaDOMFactory::CreateInstance(nsISupports* aOuter,
const nsIID& aIID,
void** aResult)
{
if (aOuter != NULL)
return NS_ERROR_NO_AGGREGATION;
if (aResult == NULL)
return NS_ERROR_NULL_POINTER;
*aResult = NULL;
nsISupports* inst = new nsJavaDOMImpl();
if (inst == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult res = inst->QueryInterface(aIID, aResult);
if (NS_FAILED(res))
delete inst;
return res;
}
nsresult nsJavaDOMFactory::LockFactory(PRBool aLock)
{
if (aLock)
PR_AtomicIncrement(&gLockCount);
else
PR_AtomicDecrement(&gLockCount);
return NS_OK;
}
extern "C"
NS_EXPORT nsresult NSGetFactory(nsISupports* serviceMgr,
const nsCID& aClass,
const char* aClassName,
const char* aProgID,
nsIFactory** aFactory)
{
if (aFactory == NULL)
return NS_ERROR_NULL_POINTER;
*aFactory = NULL;
nsISupports *inst = NULL;
static NS_DEFINE_IID(kJavaDOMFactoryCID, NS_JAVADOMFACTORY_CID);
if (aClass.Equals(kJavaDOMFactoryCID))
inst = new nsJavaDOMFactory();
else
return NS_ERROR_ILLEGAL_VALUE;
if (inst == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult res = inst->QueryInterface(kJavaDOMFactoryIID,
(void**) aFactory);
if (res != NS_OK)
delete inst;
return res;
}
extern "C"
NS_EXPORT PRBool NSCanUnload(nsISupports* serviceMgr)
{
return (PRBool) (gLockCount == 0);
}
extern "C"
NS_EXPORT nsresult NSRegisterSelf(nsISupports* aServMgr, const char* aPath)
{
nsresult rv;
nsCOMPtr<nsIServiceManager> servMgr(do_QueryInterface(aServMgr, &rv));
if (NS_FAILED(rv))
return rv;
nsIComponentManager* cm = nsnull;
rv = servMgr->GetService(kComponentManagerCID,
nsIComponentManager::GetIID(),
(nsISupports**)&cm);
if (NS_FAILED(rv))
return rv;
rv = cm->RegisterComponent(kJavaDOMFactoryCID, NULL, NULL,
aPath, PR_TRUE, PR_TRUE);
return rv;
}
extern "C"
NS_EXPORT nsresult NSUnregisterSelf(nsISupports* aServMgr, const char* aPath)
{
nsresult rv;
nsCOMPtr<nsIServiceManager> servMgr(do_QueryInterface(aServMgr, &rv));
if (NS_FAILED(rv))
return rv;
nsIComponentManager* cm = nsnull;
rv = servMgr->GetService(kComponentManagerCID,
nsIComponentManager::GetIID(),
(nsISupports**)&cm);
if (NS_FAILED(rv))
return rv;
rv = cm->UnregisterComponent(kJavaDOMFactoryCID, aPath);
return rv;
}

Просмотреть файл

@ -0,0 +1,40 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#ifndef __nsJavaDOMFactory_h__
#define __nsJavaDOMFactory_h__
#include "nsIFactory.h"
#define NS_JAVADOMFACTORY_IID \
{0x6a07c434, 0x0e58, 0x11d3, \
{0x86, 0xea, 0x00, 0x04, 0xac, 0x56, 0xc4, 0xa5}}
class nsJavaDOMFactory : public nsIFactory {
NS_DECL_ISUPPORTS
public:
nsJavaDOMFactory();
NS_IMETHOD CreateInstance(nsISupports* aOuter,
const nsIID& iid,
void** retval);
NS_IMETHOD LockFactory(PRBool lock);
};
#endif /* __nsJavaDOMFactory_h__ */

666
java/dom/nsJavaDOMImpl.cpp Executable file
Просмотреть файл

@ -0,0 +1,666 @@
/*
The contents of this file are subject to the Mozilla Public License
Version 1.0 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
The Initial Developer of the Original Code is Sun Microsystems,
Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
Inc. All Rights Reserved.
*/
#include "prenv.h"
#include "nsISupportsUtils.h"
#include "nsIURL.h"
#include "nsIContentViewerContainer.h"
#include "nsIDocument.h"
#include "nsIDocumentLoader.h"
#include "nsIDocumentLoaderObserver.h"
#include "nsIDocumentViewer.h"
#include "nsIDOMDocument.h"
#include "nsJavaDOMImpl.h"
#if defined(DEBUG)
#include <stdio.h>
#include "nsIDOMElement.h"
#include "nsIDOMNodeList.h"
#include "nsIDOMNamedNodeMap.h"
static void dump_document(nsIDOMDocument* dom, const char* urlSpec);
static void dump_node(FILE* of, nsIDOMNode* node, int indent,
PRBool isMapNode);
static void dump_map(FILE* of, nsIDOMNamedNodeMap* map, int indent);
static char* strip_whitespace(char* input);
static const char* describe_type(int type);
#endif
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIJavaDOMIID, NS_IJAVADOM_IID);
static NS_DEFINE_IID(kIDocumentViewerIID, NS_IDOCUMENT_VIEWER_IID);
static NS_DEFINE_IID(kIDOMDocumentIID, NS_IDOMDOCUMENT_IID);
static NS_DEFINE_IID(kIDocumentLoaderObserverIID, NS_IDOCUMENT_LOADER_OBSERVER_IID);
NS_IMPL_ADDREF(nsJavaDOMImpl);
NS_IMPL_RELEASE(nsJavaDOMImpl);
NS_IMETHODIMP nsJavaDOMImpl::QueryInterface(REFNSIID aIID, void** aInstance)
{
if (NULL == aInstance)
return NS_ERROR_NULL_POINTER;
*aInstance = NULL;
if (aIID.Equals(kIJavaDOMIID)) {
*aInstance = (void*) ((nsIJavaDOM*)this);
NS_ADDREF_THIS();
return NS_OK;
}
if (aIID.Equals(kIDocumentLoaderObserverIID)) {
*aInstance = (void*) ((nsIDocumentLoaderObserver*)this);
NS_ADDREF_THIS();
return NS_OK;
}
if (aIID.Equals(kISupportsIID)) {
*aInstance = (void*) ((nsISupports*)this);
NS_ADDREF_THIS();
return NS_OK;
}
return NS_NOINTERFACE;
}
JavaVM* nsJavaDOMImpl::jvm = NULL;
JNIEnv* nsJavaDOMImpl::env = NULL;
jclass nsJavaDOMImpl::factoryClass = NULL;
jclass nsJavaDOMImpl::documentClass = NULL;
jclass nsJavaDOMImpl::listenerClass = NULL;
jclass nsJavaDOMImpl::gcClass = NULL;
jobject nsJavaDOMImpl::factory = NULL;
jobject nsJavaDOMImpl::docListener = NULL;
jfieldID nsJavaDOMImpl::documentPtrFID = NULL;
jmethodID nsJavaDOMImpl::getListenerMID = NULL;
jmethodID nsJavaDOMImpl::startURLLoadMID = NULL;
jmethodID nsJavaDOMImpl::endURLLoadMID = NULL;
jmethodID nsJavaDOMImpl::progressURLLoadMID = NULL;
jmethodID nsJavaDOMImpl::statusURLLoadMID = NULL;
jmethodID nsJavaDOMImpl::startDocumentLoadMID = NULL;
jmethodID nsJavaDOMImpl::endDocumentLoadMID = NULL;
jmethodID nsJavaDOMImpl::gcMID = NULL;
nsJavaDOMImpl::nsJavaDOMImpl()
{
NS_INIT_ISUPPORTS();
if (jvm)
return;
JDK1_1InitArgs vm_args;
JNI_GetDefaultJavaVMInitArgs(&vm_args);
vm_args.version = 0x00010001;
vm_args.verifyMode = JNI_TRUE;
#ifdef DEBUG
vm_args.verbose = JNI_TRUE;
vm_args.enableVerboseGC = JNI_TRUE;
#endif // DEBUG
char* cp = PR_GetEnv("CLASSPATH");
char* p = new char[strlen(cp) + strlen(vm_args.classpath) + 2];
strcpy(p, vm_args.classpath);
if (cp) {
#ifdef XP_PC
strcat(p, ";");
#else
strcat(p, ":");
#endif
strcat(p, cp);
vm_args.classpath = p;
}
#ifdef DEBUG
printf("classpath is \"%s\"\n", vm_args.classpath);
#endif // DEBUG
#ifdef XP_PC
// for some reason, vc++ 6.0 requires this cast
JNI_CreateJavaVM(&jvm, (void**) &env, &vm_args);
#else
JNI_CreateJavaVM(&jvm, &env, &vm_args);
#endif
delete[] p;
gcClass = env->FindClass("org/mozilla/dom/DOMGarbageCollector");
if (!gcClass) return;
gcClass = (jclass) env->NewGlobalRef(gcClass);
if (!gcClass) return;
gcMID =
env->GetStaticMethodID(gcClass,
"doGC",
"()V");
if (!gcMID) return;
factoryClass = env->FindClass("org/mozilla/dom/DOMFactory");
if (!factoryClass) return;
factoryClass = (jclass) env->NewGlobalRef(factoryClass);
if (!factoryClass) return;
factory = env->AllocObject(factoryClass);
if (!factory) return;
factory = (jclass) env->NewGlobalRef(factory);
if (!factory) return;
getListenerMID =
env->GetMethodID(factoryClass,
"getDocumentLoadListener",
"()Lorg/mozilla/dom/DocumentLoadListener;");
if (!getListenerMID) return;
docListener =
env->CallObjectMethod(factory, getListenerMID);
if (!docListener) return;
docListener = (jclass) env->NewGlobalRef(docListener);
if (!docListener) return;
listenerClass =
env->GetObjectClass(docListener);
if (!listenerClass) return;
listenerClass = (jclass) env->NewGlobalRef(listenerClass);
if (!listenerClass) return;
documentClass =
env->FindClass("org/mozilla/dom/DocumentImpl");
if (!documentClass) return;
documentClass = (jclass) env->NewGlobalRef(documentClass);
if (!documentClass) return;
documentPtrFID =
env->GetFieldID(documentClass,
"p_nsIDOMNode",
"J");
if (!documentPtrFID) return;
startURLLoadMID =
env->GetMethodID(listenerClass,
"startURLLoad",
"(Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/Document;)V");
if (!startURLLoadMID) return;
endURLLoadMID =
env->GetMethodID(listenerClass,
"endURLLoad",
"(Ljava/lang/String;ILorg/w3c/dom/Document;)V");
if (!endURLLoadMID) return;
progressURLLoadMID =
env->GetMethodID(listenerClass,
"progressURLLoad",
"(Ljava/lang/String;IILorg/w3c/dom/Document;)V");
if (!progressURLLoadMID) return;
statusURLLoadMID =
env->GetMethodID(listenerClass,
"statusURLLoad",
"(Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/Document;)V");
if (!statusURLLoadMID) return;
startDocumentLoadMID =
env->GetMethodID(listenerClass,
"startDocumentLoad",
"(Ljava/lang/String;)V");
if (!startDocumentLoadMID) return;
endDocumentLoadMID =
env->GetMethodID(listenerClass,
"endDocumentLoad",
"(Ljava/lang/String;ILorg/w3c/dom/Document;)V");
if (!endDocumentLoadMID) return;
Cleanup();
}
nsJavaDOMImpl::~nsJavaDOMImpl()
{
}
PRBool nsJavaDOMImpl::Cleanup()
{
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
return PR_TRUE;
}
return PR_FALSE;
}
nsIDOMDocument* nsJavaDOMImpl::GetDocument(nsIDocumentLoader* loader)
{
nsIContentViewerContainer* container = nsnull;
nsIContentViewer* contentv = nsnull;
nsIDocumentViewer* docv = nsnull;
nsIDocument* document = nsnull;
nsIDOMDocument* domDoc = nsnull;
nsresult rv = loader->GetContainer(&container);
if (NS_SUCCEEDED(rv) && container)
rv = container->GetContentViewer(&contentv);
if (NS_SUCCEEDED(rv) && contentv) {
rv = contentv->QueryInterface(kIDocumentViewerIID,
(void**) &docv);
if (NS_SUCCEEDED(rv) && docv) {
docv->GetDocument(document);
rv = document->QueryInterface(kIDOMDocumentIID,
(void**) &domDoc);
if (NS_SUCCEEDED(rv) && docv) {
return domDoc;
}
}
}
fprintf(stderr,
"nsJavaDOMImpl::GetDocument: failed: "
"container=%x, contentViewer=%x, documentViewer=%x, document=%x, "
"domDocument=%x, error=%x\n",
(unsigned) (void*) container, (unsigned) (void*) contentv,
(unsigned) (void*) docv, (unsigned) (void*) document,
(unsigned) (void*) domDoc, rv);
return NULL;
}
// convert nsIDOMDocument to org.mozilla.dom.DocumentImpl
jobject nsJavaDOMImpl::CaffienateDOMDocument(nsIDOMDocument* domDoc)
{
if (!domDoc) return NULL;
jobject jdoc = env->AllocObject(documentClass);
if (!jdoc) return NULL;
env->SetLongField(jdoc, documentPtrFID, (jlong) (void*) domDoc);
if (Cleanup() == PR_TRUE) return NULL;
return jdoc;
}
/* nsIDocumentLoaderObserver methods */
NS_IMETHODIMP nsJavaDOMImpl::OnStartDocumentLoad(nsIDocumentLoader* loader,
nsIURI* aURL,
const char* aCommand)
{
char* urlSpec = "";
if (aURL)
aURL->GetSpec(&urlSpec);
jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE;
env->CallVoidMethod(docListener,
startDocumentLoadMID,
jURL);
if (Cleanup() == PR_TRUE) return NS_ERROR_FAILURE;
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
NS_IMETHODIMP nsJavaDOMImpl::OnEndDocumentLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRInt32 aStatus,
nsIDocumentLoaderObserver* aObserver)
{
char* urlSpec = "";
#ifdef NECKO
nsIURI* url = nsnull;
if (channel && NS_SUCCEEDED(channel->GetURI(&url)))
url->GetSpec(&urlSpec);
#else
if (aURL)
aURL->GetSpec(&urlSpec);
#endif
jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
jobject jdoc = CaffienateDOMDocument(domDoc);
env->CallVoidMethod(docListener,
endDocumentLoadMID,
jURL,
(jint) aStatus,
jdoc);
if (Cleanup() == PR_TRUE) return NS_ERROR_FAILURE;
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
NS_IMETHODIMP nsJavaDOMImpl::OnStartURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
const char* aContentType,
#endif
nsIContentViewer* aViewer)
{
char* urlSpec = "";
#ifdef NECKO
nsIURI* url = nsnull;
if (channel && NS_SUCCEEDED(channel->GetURI(&url)))
url->GetSpec(&urlSpec);
#else
if (aURL)
aURL->GetSpec(&urlSpec);
#endif
jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE;
char* contentType = "";
#ifdef NECKO
if (channel)
channel->GetContentType(&contentType);
#else
if (aContentType)
contentType = aContentType;
#endif
jstring jContentType = env->NewStringUTF(contentType);
if (!jContentType) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
jobject jdoc = CaffienateDOMDocument(domDoc);
env->CallVoidMethod(docListener,
startURLLoadMID,
jURL,
jContentType,
jdoc);
if (Cleanup() == PR_TRUE) return NS_ERROR_FAILURE;
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
NS_IMETHODIMP nsJavaDOMImpl::OnProgressURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRUint32 aProgress,
PRUint32 aProgressMax)
{
char* urlSpec = "";
#ifdef NECKO
nsIURI* url = nsnull;
if (channel && NS_SUCCEEDED(channel->GetURI(&url)))
url->GetSpec(&urlSpec);
#else
if (aURL)
aURL->GetSpec(&urlSpec);
#endif
jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
jobject jdoc = CaffienateDOMDocument(domDoc);
env->CallVoidMethod(docListener,
progressURLLoadMID,
jURL,
(jint) aProgress,
(jint) aProgressMax,
jdoc);
if (Cleanup() == PR_TRUE) return NS_ERROR_FAILURE;
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
NS_IMETHODIMP nsJavaDOMImpl::OnStatusURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
nsString& aMsg)
{
char* urlSpec = "";
#ifdef NECKO
nsIURI* url = nsnull;
if (channel && NS_SUCCEEDED(channel->GetURI(&url)))
url->GetSpec(&urlSpec);
#else
if (aURL)
aURL->GetSpec(&urlSpec);
#endif
jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE;
char* cMsg = aMsg.ToNewCString();
jstring jMessage = env->NewStringUTF(cMsg);
delete[] cMsg;
if (!jMessage) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
jobject jdoc = CaffienateDOMDocument(domDoc);
env->CallVoidMethod(docListener,
statusURLLoadMID,
jURL,
jMessage,
jdoc);
if (Cleanup() == PR_TRUE) return NS_ERROR_FAILURE;
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
NS_IMETHODIMP nsJavaDOMImpl::OnEndURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRInt32 aStatus)
{
char* urlSpec = "";
#ifdef NECKO
nsIURI* url = nsnull;
if (channel && NS_SUCCEEDED(channel->GetURI(&url)))
url->GetSpec(&urlSpec);
#else
if (aURL)
aURL->GetSpec(&urlSpec);
#endif
jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
jobject jdoc = CaffienateDOMDocument(domDoc);
#if defined(DEBUG)
dump_document(domDoc, urlSpec);
#endif
env->CallVoidMethod(docListener,
endURLLoadMID,
jURL,
(jint) aStatus,
jdoc);
if (Cleanup() == PR_TRUE) return NS_ERROR_FAILURE;
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
NS_IMETHODIMP nsJavaDOMImpl::HandleUnknownContentType(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
const char *aContentType,
const char *aCommand)
{
env->CallStaticVoidMethod(gcClass, gcMID);
Cleanup();
return NS_OK;
}
#if defined(DEBUG)
static void dump_document(nsIDOMDocument* domDoc, const char* urlSpec)
{
if (!domDoc) return;
if (strstr(urlSpec, ".xul") ||
strstr(urlSpec, ".js") ||
strstr(urlSpec, ".css") ||
strstr(urlSpec, "file:")) return;
FILE* of = fopen("dom-cpp.txt", "a");
if (!of) {
perror("nsJavaDOMImpl::dump_document: failed to open output file\n");
return;
}
nsIDOMElement* element = nsnull;
nsresult rv = domDoc->GetDocumentElement(&element);
if (NS_FAILED(rv) || !element)
return;
(void) element->Normalize();
fprintf(of, "\n+++ %s +++\n", urlSpec);
dump_node(of, (nsIDOMNode*) element, 0, PR_FALSE);
fprintf(of, "\n");
fflush(of);
fclose(of);
}
static void dump_node(FILE* of, nsIDOMNode* node, int indent,
PRBool isMapNode)
{
if (!node) return;
fprintf(of, "\n");
for (int i=0; i < indent; i++)
fprintf(of, " ");
nsString name;
nsString value;
PRUint16 type;
node->GetNodeName(name);
node->GetNodeValue(value);
node->GetNodeType(&type);
char* cname = name.ToNewCString();
char* cvalue = value.ToNewCString();
char* cnorm = strip_whitespace(cvalue);
fprintf(of, "name=\"%s\" type=%s value=\"%s\"",
cname, describe_type(type), cnorm);
delete[] cnorm;
delete[] cname;
if (isMapNode) return;
nsIDOMNamedNodeMap* map = nsnull;
node->GetAttributes(&map);
dump_map(of, map, indent);
nsIDOMNodeList* children = nsnull;
node->GetChildNodes(&children);
if (!children) return;
PRUint32 length=0;
children->GetLength(&length);
for (PRUint32 j=0; j < length; j++) {
nsIDOMNode* child = nsnull;
children->Item(j, &child);
dump_node(of, child, indent+2, PR_FALSE);
}
}
static void dump_map(FILE* of, nsIDOMNamedNodeMap* map, int indent)
{
if (!map) return;
fprintf(of, "\n");
PRUint32 length=0;
map->GetLength(&length);
if (length > 0) {
for (int i=0; i < indent; i++)
fprintf(of, " ");
fprintf(of, "------- start attributes -------");
}
for (PRUint32 j=0; j < length; j++) {
nsIDOMNode* node = nsnull;
map->Item(j, &node);
dump_node(of, node, indent, PR_TRUE);
}
if (length > 0) {
fprintf(of, "\n");
for (int k=0; k < indent; k++)
fprintf(of, " ");
fprintf(of, "------- end attributes -------");
}
}
static char* strip_whitespace(char* input)
{
int len = strlen(input);
char* out = new char[len];
char* op = out;
char* ip = input;
char c = ' ';
char pc = ' ';
for (c = *ip++; c; c = *ip++) {
if ((pc == ' ' || pc == '\n' || pc == '\t') &&
(c == ' ' || c == '\n' || c == '\t'))
continue;
*op++ = c;
pc = c;
}
*op++ = 0;
delete[] input;
return out;
}
static const char* describe_type(int type)
{
switch (type) {
case nsIDOMNode::ELEMENT_NODE: return "ELEMENT";
case nsIDOMNode::ATTRIBUTE_NODE: return "ATTRIBUTE";
case nsIDOMNode::TEXT_NODE: return "TEXT";
case nsIDOMNode::CDATA_SECTION_NODE: return "CDATA_SECTION";
case nsIDOMNode::ENTITY_REFERENCE_NODE: return "ENTITY_REFERENCE";
case nsIDOMNode::ENTITY_NODE: return "ENTITY";
case nsIDOMNode::PROCESSING_INSTRUCTION_NODE: return "PROCESSING_INSTRUCTION";
case nsIDOMNode::COMMENT_NODE: return "COMMENT";
case nsIDOMNode::DOCUMENT_NODE: return "DOCUMENT";
case nsIDOMNode::DOCUMENT_TYPE_NODE: return "DOCUMENT_TYPE";
case nsIDOMNode::DOCUMENT_FRAGMENT_NODE: return "DOCUMENT_FRAGMENT";
case nsIDOMNode::NOTATION_NODE: return "NOTATION";
}
return "ERROR";
}
#endif

106
java/dom/nsJavaDOMImpl.h Normal file
Просмотреть файл

@ -0,0 +1,106 @@
#ifndef __nsJavaDOMImpl_h__
#define __nsJavaDOMImpl_h__
#include <jni.h>
#include "nsIJavaDOM.h"
class nsIURI;
class nsIDOMDocument;
class nsIDocumentLoader;
class nsJavaDOMImpl : public nsIJavaDOM {
NS_DECL_ISUPPORTS
public:
nsJavaDOMImpl();
virtual ~nsJavaDOMImpl();
/* nsIDocumentLoaderObserver methods */
NS_IMETHOD OnStartDocumentLoad(nsIDocumentLoader* loader,
nsIURI* aURL,
const char* aCommand);
NS_IMETHOD OnEndDocumentLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRInt32 aStatus,
nsIDocumentLoaderObserver* aObserver);
NS_IMETHOD OnStartURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
const char* aContentType,
#endif
nsIContentViewer* aViewer);
NS_IMETHOD OnProgressURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRUint32 aProgress,
PRUint32 aProgressMax);
NS_IMETHOD OnStatusURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
nsString& aMsg);
NS_IMETHOD OnEndURLLoad(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
PRInt32 aStatus);
NS_IMETHOD HandleUnknownContentType(nsIDocumentLoader* loader,
#ifdef NECKO
nsIChannel* channel,
#else
nsIURI* aURL,
#endif
const char *aContentType,
const char *aCommand);
private:
static JavaVM* jvm;
static JNIEnv* env;
static jclass factoryClass;
static jclass documentClass;
static jclass listenerClass;
static jclass gcClass;
static jobject factory;
static jobject docListener;
static jfieldID documentPtrFID;
static jmethodID getListenerMID;
static jmethodID startURLLoadMID;
static jmethodID endURLLoadMID;
static jmethodID progressURLLoadMID;
static jmethodID statusURLLoadMID;
static jmethodID startDocumentLoadMID;
static jmethodID endDocumentLoadMID;
static jmethodID gcMID;
// cleanup after a JNI method invocation
static PRBool Cleanup();
nsIDOMDocument* GetDocument(nsIDocumentLoader* loader);
jobject CaffienateDOMDocument(nsIDOMDocument* domDoc);
};
#endif /* __nsJavaDOMImpl_h__ */

Просмотреть файл

@ -0,0 +1,38 @@
Index: nsWebShell.cpp
===================================================================
RCS file: /cvsroot/mozilla/webshell/src/nsWebShell.cpp,v
retrieving revision 1.200
diff -r1.200 nsWebShell.cpp
70a71,75
> #ifdef JAVA_DOM
> #include "nsIJavaDOM.h"
> #include "nsJavaDOMCID.h"
> #endif // JAVA_DOM
>
566a572
>
577a584,588
> #ifdef JAVA_DOM
> static NS_DEFINE_IID(kJavaDOMFactoryCID, NS_JAVADOMFACTORY_CID);
> static NS_DEFINE_IID(kIJavaDOMIID, NS_IJAVADOM_IID);
> #endif // JAVA_DOM
>
1036a1048,1065
> #ifdef JAVA_DOM
> nsISupports* javaDOM = nsnull;
> nsresult jrv = nsServiceManager::GetService(kJavaDOMFactoryCID,
> kIJavaDOMIID,
> (nsISupports**) &javaDOM);
> if (NS_FAILED(jrv) || !javaDOM) {
> fprintf(stderr,
> "nsWebShell::Init: GetService of JavaDOM failed (error %x)\n",
> jrv);
> } else {
> jrv = docLoaderService->AddObserver((nsIDocumentLoaderObserver*)javaDOM);
> if (NS_FAILED(jrv)) {
> fprintf(stderr,
> "nsWebShell::Init: AddObserver of JavaDOM failed (error %x)\n",
> jrv);
> }
> }
> #endif // JAVA_DOM