KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mchange > v2 > codegen > bean > PropertyReferenceableExtension


1 /*
2  * Distributed as part of c3p0 v.0.9.1
3  *
4  * Copyright (C) 2005 Machinery For Change, Inc.
5  *
6  * Author: Steve Waldman <swaldman@mchange.com>
7  *
8  * This library is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License version 2.1, as
10  * published by the Free Software Foundation.
11  *
12  * This software is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this software; see the file LICENSE. If not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */

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 JavaDoc;
32
33 public class PropertyReferenceableExtension implements GeneratorExtension
34 {
35     boolean explicit_reference_properties = false;
36
37     String JavaDoc factoryClassName = JavaBeanObjectFactory.class.getName();
38
39     String JavaDoc 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 JavaDoc factoryClassName )
48     { this.factoryClassName = factoryClassName; }
49
50     public String JavaDoc getFactoryClassName()
51     { return factoryClassName; }
52
53 // public void setJavaBeanReferenceMakerClassName( String javaBeanReferenceMakerClassName )
54
// { this.javaBeanReferenceMakerClassName = javaBeanReferenceMakerClassName; }
55

56 // public String getJavaBeanReferenceMakerClassName()
57
// { return javaBeanReferenceMakerClassName; }
58

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 JavaDoc superclassType, Property[] props, Class JavaDoc[] propTypes, IndentedWriter iw)
85     throws IOException JavaDoc
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