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