1 22 23 24 package com.mchange.v2.codegen.bean; 25 26 import java.util.*; 27 import com.mchange.v2.codegen.IndentedWriter; 28 import com.mchange.v2.naming.JavaBeanObjectFactory; 29 import com.mchange.v2.naming.JavaBeanReferenceMaker; 30 31 import java.io.IOException ; 32 33 public class PropertyReferenceableExtension implements GeneratorExtension 34 { 35 boolean explicit_reference_properties = false; 36 37 String factoryClassName = JavaBeanObjectFactory.class.getName(); 38 39 String javaBeanReferenceMakerClassName = JavaBeanReferenceMaker.class.getName(); 40 41 public void setUseExplicitReferenceProperties( boolean explicit_reference_properties ) 42 { this.explicit_reference_properties = explicit_reference_properties; } 43 44 public boolean getUseExplicitReferenceProperties() 45 { return explicit_reference_properties; } 46 47 public void setFactoryClassName( String factoryClassName ) 48 { this.factoryClassName = factoryClassName; } 49 50 public String getFactoryClassName() 51 { return factoryClassName; } 52 53 56 59 public Collection extraGeneralImports() 60 { 61 Set set = new HashSet(); 62 return set; 63 } 64 65 public Collection extraSpecificImports() 66 { 67 Set set = new HashSet(); 68 set.add( "javax.naming.Reference" ); 69 set.add( "javax.naming.Referenceable" ); 70 set.add( "javax.naming.NamingException" ); 71 set.add( "com.mchange.v2.naming.JavaBeanObjectFactory" ); 72 set.add( "com.mchange.v2.naming.JavaBeanReferenceMaker" ); 73 set.add( "com.mchange.v2.naming.ReferenceMaker" ); 74 return set; 75 } 76 77 public Collection extraInterfaceNames() 78 { 79 Set set = new HashSet(); 80 set.add( "Referenceable" ); 81 return set; 82 } 83 84 public void generate(ClassInfo info, Class superclassType, Property[] props, Class [] propTypes, IndentedWriter iw) 85 throws IOException 86 { 87 iw.println("final static JavaBeanReferenceMaker referenceMaker = new " + javaBeanReferenceMakerClassName + "();"); 88 iw.println(); 89 iw.println("static"); 90 iw.println("{"); 91 iw.upIndent(); 92 93 iw.println("referenceMaker.setFactoryClassName( \"" + factoryClassName + "\" );"); 94 if ( explicit_reference_properties ) 95 { 96 for( int i = 0, len = props.length; i < len; ++i) 97 iw.println("referenceMaker.addReferenceProperty(\"" + props[i].getName() + "\");"); 98 } 99 100 iw.downIndent(); 101 iw.println("}"); 102 iw.println(); 103 iw.println("public Reference getReference() throws NamingException"); 104 iw.println("{"); 105 iw.upIndent(); 106 107 iw.println("return referenceMaker.createReference( this );"); 108 109 iw.downIndent(); 110 iw.println("}"); 111 } 112 } 113 | Popular Tags |