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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to