Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2003-2007 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.codehaus.groovy.vmplugin.v4;
 
 
java 4 based functions

Author(s):
Jochen Theodorou
 
 public class Java4 implements VMPlugin {
     private static Class[] EMPTY_CLASS_ARRAY = new Class[0];
 
     public void setAdditionalClassInformation(ClassNode c) {
         return;
     }
 
     public Class[] getPluginDefaultGroovyMethods() {
         return ;
     }
 
     public void configureAnnotation(AnnotationNode an) {
         // do nothing
     }
     public void configureClassNode(CompileUnit compileUnitClassNode classNode) {
         Class clazz = classNode.getTypeClass();
         Field[] fields = clazz.getDeclaredFields();
         for (int i = 0; i < fields.lengthi++) {
             classNode.addField(fields[i].getName(), fields[i].getModifiers(), classNodenull);
         }
         Method[] methods = clazz.getDeclaredMethods();
         for (int i = 0; i < methods.lengthi++) {
             Method m = methods[i];
             MethodNode mn = new MethodNode(m.getName(), m.getModifiers(), ClassHelper.make(m.getReturnType()), createParameters(m.getParameterTypes()), ClassHelper.make(m.getExceptionTypes()), null);
             classNode.addMethod(mn);
         }
         Constructor[] constructors = clazz.getDeclaredConstructors();
         for (int i = 0; i < constructors.lengthi++) {
             Constructor ctor = constructors[i];
             classNode.addConstructor(ctor.getModifiers(), createParameters(ctor.getParameterTypes()), ClassHelper.make(ctor.getExceptionTypes()), null);
         }
 
         Class sc = clazz.getSuperclass();
         if (sc != nullclassNode.setUnresolvedSuperClass(getPrimaryClassNode(compileUnit,sc));
 
         buildInterfaceTypes(compileUnit,classNode,clazz);
 
     }
 
     private ClassNode getPrimaryClassNode(CompileUnit compileUnit,Class clazz) {
         // there might be a new super class from the compile unit,
         // we want to use this instead of simply referencing the old
         // class
         ClassNode result = null;
         if (compileUnit!=null) {
             result = compileUnit.getClass(clazz.getName());
         }
         if (result==nullresult = ClassHelper.make(clazz);
         return result;
     }
 
     private void buildInterfaceTypes(CompileUnit compileUnitClassNode classNodeClass c) {
         Class[] interfaces = c.getInterfaces();
         ClassNode[] ret = new ClassNode[interfaces.length];
         for (int i=0;i<interfaces.length;i++){
             ret[i] = getPrimaryClassNode(compileUnitinterfaces[i]);
         }
         classNode.setInterfaces(ret);
     }
 
     private Parameter[] createParameters(Class[] types) {
         Parameter[] parameters = .;
         int size = types.length;
         if (size > 0) {
             parameters = new Parameter[size];
             for (int i = 0; i < sizei++) {
                 parameters[i] = createParameter(types[i], i);
             }
         }
         return parameters;
    }
    private Parameter createParameter(Class parameterTypeint idx) {
        return new Parameter(ClassHelper.make(parameterType), "param" + idx);
    }
New to GrepCode? Check out our FAQ X