1 22 23 24 package com.mchange.v2.codegen.bean; 25 26 import java.util.*; 27 import java.lang.reflect.Modifier ; 28 import java.io.IOException ; 29 import com.mchange.v2.codegen.CodegenUtils; 30 import com.mchange.v2.codegen.IndentedWriter; 31 32 public class CopyConstructorGeneratorExtension implements GeneratorExtension 33 { 34 int ctor_modifiers = Modifier.PUBLIC; 35 36 public Collection extraGeneralImports() 37 { return Collections.EMPTY_SET; } 38 39 public Collection extraSpecificImports() 40 { return Collections.EMPTY_SET; } 41 42 public Collection extraInterfaceNames() 43 { return Collections.EMPTY_SET; } 44 45 public void generate(ClassInfo info, Class superclassType, Property[] props, Class [] propTypes, IndentedWriter iw) 46 throws IOException 47 { 48 iw.print( CodegenUtils.getModifierString( ctor_modifiers ) ); 49 iw.print(" " + info.getClassName() + "( "); 50 iw.print( info.getClassName() + " copyMe" ); 51 iw.println(" )"); 52 iw.println("{"); 53 iw.upIndent(); 54 55 for (int i = 0, len = props.length; i < len; ++i) 56 { 57 String propGetterMethodCall; 58 if (propTypes[i] == boolean.class) 59 propGetterMethodCall = "is" + BeangenUtils.capitalize( props[i].getName() ) + "()"; 60 else 61 propGetterMethodCall = "get" + BeangenUtils.capitalize( props[i].getName() ) + "()"; 62 iw.println(props[i].getSimpleTypeName() + ' ' + props[i].getName() + " = copyMe." + propGetterMethodCall + ';'); 63 iw.print("this." + props[i].getName() + " = "); 64 String setExp = props[i].getDefensiveCopyExpression(); 65 if (setExp == null) 66 setExp = props[i].getName(); 67 iw.println(setExp + ';'); 68 } 69 70 iw.downIndent(); 71 iw.println("}"); 72 } 73 } 74 | Popular Tags |