You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mk...@apache.org on 2002/09/16 21:04:09 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util ObjectType.java
mkwan 2002/09/16 12:04:09
Modified: java/src/org/apache/xalan/xsltc/compiler/util
ObjectType.java
Log:
For XSLTC extension integration. Support creating ObjectType from a Class
object. Add an additional field to store the Class.
Revision Changes Path
1.2 +37 -2 xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ObjectType.java
Index: ObjectType.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ObjectType.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ObjectType.java 25 Jul 2002 11:42:13 -0000 1.1
+++ ObjectType.java 16 Sep 2002 19:04:09 -0000 1.2
@@ -67,10 +67,12 @@
import org.apache.bcel.generic.*;
import org.apache.xalan.xsltc.compiler.Parser;
import org.apache.xalan.xsltc.compiler.Constants;
+import org.apache.xalan.xsltc.runtime.TransletLoader;
public final class ObjectType extends Type {
- private String _javaClassName = "java.lang.Object";
+ private String _javaClassName = "java.lang.Object";
+ private Class _clazz = java.lang.Object.class;
/**
* Used to represent an 'any' type.
@@ -84,6 +86,19 @@
*/
public ObjectType(String javaClassName) {
_javaClassName = javaClassName;
+
+ try {
+ TransletLoader loader = new TransletLoader();
+ _clazz = loader.loadClass(javaClassName);
+ }
+ catch (ClassNotFoundException e) {
+ _clazz = null;
+ }
+ }
+
+ public ObjectType(Class clazz) {
+ _clazz = clazz;
+ _javaClassName = clazz.getName();
}
public int hashCode() {
@@ -97,6 +112,10 @@
public String getJavaClassName() {
return _javaClassName;
}
+
+ public Class getJavaClass() {
+ return _clazz;
+ }
public String toString() {
return "object";
@@ -157,6 +176,22 @@
gotobh.setTarget(il.append(NOP));
}
+ /**
+ * Translates an object of this type to the external (Java) type denoted
+ * by <code>clazz</code>. This method is used to translate parameters
+ * when external functions are called.
+ */
+ public void translateTo(ClassGenerator classGen, MethodGenerator methodGen,
+ Class clazz) {
+ if (clazz.isAssignableFrom(_clazz))
+ methodGen.getInstructionList().append(NOP);
+ else {
+ ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
+ toString(), clazz.getClass().toString());
+ classGen.getParser().reportError(Constants.FATAL, err);
+ }
+ }
+
/**
* Translates an external Java type into an Object type
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org