* @exception GeneratorException on a generation error
* @exception IOException on an IO error
*/
public void generate(OutputStream out)
throws GeneratorException, IOException {
IndentingWriter p
= new IndentingWriter(new OutputStreamWriter(out));
String packageName = getPackageName(bean.getName());
if (packageName != null)
p.pln("package " + packageName + ";");
//IASRI 4717059 BEGIN
if (isReadOnlyBean) {
p.plnI("public final class " + homeImpl
+ " extends "
+ (isLocal ? READ_ONLY_EJB_LOCAL_HOME_IMPL : READ_ONLY_EJB_HOME_IMPL)
+ " implements " + homeInterface.getName()
+ ", " + (isLocal ? READ_ONLY_EJB_LOCAL_HOME_INTERFACE : READ_ONLY_EJB_HOME_INTERFACE)
+ " {");
} else {
//IASRI 4717059 END
p.plnI("public final class " + homeImpl
+ " extends com.sun.ejb.containers."
+ (isLocal ? "EJBLocalHomeImpl" : "EJBHomeImpl")
+ " implements " + homeInterface.getName() + " {");
//IASRI 4717059 BEGIN
}
//IASRI 4717059 END
// print static variables for Method objects and static initializer
String[] methodVariables = printStaticMethodInit(p, homeInterface,
factoryMethods);
// constructor
p.plnI("public " + homeImpl + "() "
+(isLocal ? "" : "throws java.rmi.RemoteException ")
+ "{");
p.pln("super();");
p.pOln("}");
for(int i = 0; i < factoryMethods.length; i++) {
if ( isCreateMethod(factoryMethods[i]) ) {
Method m = getBeanMethod(factoryMethods[i]);
if (m == null)
throw new MethodNotFound("Could not find bean method for factory method: " + factoryMethods[i]);
printFactoryMethodImpl(p, factoryMethods[i], CREATE,
methodVariables[i]);
} else if ( isFinderMethod(factoryMethods[i]) ) {
// Note: Container-Managed EntityBeans dont implement finder
printFactoryMethodImpl(p, factoryMethods[i], FINDER,
methodVariables[i]);
} else {
// must be a home method.
printFactoryMethodImpl(p, factoryMethods[i], OTHER,
methodVariables[i]);
}
}
p.pOln("}");
p.close();
}