[jboss-cvs] JBossAS SVN: r110383 - in projects/jboss-jca/trunk/codegenerator/src/main: java/org/jboss/jca/codegenerator/code and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Jan 16 21:19:12 EST 2011
Author: jeff.zhang
Date: 2011-01-16 21:19:11 -0500 (Sun, 16 Jan 2011)
New Revision: 110383
Modified:
projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java
projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java
projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java
projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java
projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties
Log:
[JBJCA-457] add mbean lifescycle methods
Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java 2011-01-16 19:02:12 UTC (rev 110382)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/BaseProfile.java 2011-01-17 02:19:11 UTC (rev 110383)
@@ -62,7 +62,8 @@
generateRaCode(def);
generateOutboundCode(def);
generateInboundCode(def);
- generateMBeanCode(def);
+ if (def.isGenMbean() && !def.isUseCciConnection())
+ generateMBeanCode(def);
generateTestCode(def);
Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java 2011-01-16 19:02:12 UTC (rev 110382)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Definition.java 2011-01-17 02:19:11 UTC (rev 110383)
@@ -155,10 +155,13 @@
/** MBean test interface */
@XmlElement(name = "MBeanInterface")
- private String mbeanInterfaceClass = "TestMBean";
+ private String mbeanInterfaceClass;
/** MBean test impl */
@XmlElement(name = "MBeanImpl")
- private String mbeanImplClass = "Test";
+ private String mbeanImplClass;
+ /** generate MBean or not */
+ @XmlElement(name = "GenMBean")
+ private boolean genMbean = true;
/**
* Set the version.
@@ -961,8 +964,13 @@
*/
public String getMbeanInterfaceClass()
{
+ if (mbeanInterfaceClass == null || mbeanInterfaceClass.equals(""))
+ {
+ mbeanInterfaceClass = getDefaultValue() + "MBean";
+ }
return mbeanInterfaceClass;
- }
+ }
+
/**
* Get the mbeanImplClass.
*
@@ -970,6 +978,30 @@
*/
public String getMbeanImplClass()
{
+ if (mbeanImplClass == null || mbeanImplClass.equals(""))
+ {
+ mbeanImplClass = getDefaultValue() + "MBeanImpl";
+ }
return mbeanImplClass;
}
+
+ /**
+ * Get the genMbean.
+ *
+ * @return the genMbean.
+ */
+ public boolean isGenMbean()
+ {
+ return genMbean;
+ }
+
+ /**
+ * Set the genMbean.
+ *
+ * @param genMbean The genMbean to set.
+ */
+ public void setGenMbean(boolean genMbean)
+ {
+ this.genMbean = genMbean;
+ }
}
Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java 2011-01-16 19:02:12 UTC (rev 110382)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/Main.java 2011-01-17 02:19:11 UTC (rev 110383)
@@ -419,6 +419,22 @@
def.setActivationClass(actiClassName);
}
+ if (!def.isUseCciConnection())
+ {
+ //generate mbean classes
+ System.out.print(rb.getString("gen.mbean") + "[Y]: ");
+ String genMbean = in.readLine();
+ if (genMbean == null)
+ def.setGenMbean(true);
+ else
+ {
+ if (genMbean.equals("N") || genMbean.equals("n") || genMbean.equals("No"))
+ def.setGenMbean(false);
+ else
+ def.setGenMbean(true);
+ }
+ }
+
//build environment
System.out.print(rb.getString("build.env"));
System.out.print("[" + def.getBuild() + "]: ");
Modified: projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java 2011-01-16 19:02:12 UTC (rev 110382)
+++ projects/jboss-jca/trunk/codegenerator/src/main/java/org/jboss/jca/codegenerator/code/MbeanImplCodeGen.java 2011-01-17 02:19:11 UTC (rev 110383)
@@ -50,14 +50,155 @@
out.write("public class " + getClassName(def) + " implements " + def.getMbeanInterfaceClass());
writeLeftCurlyBracket(out, 0);
+ writeVars(def, out, indent);
+ writeEol(out);
+ writeMBeanLifecycle(def, out, indent);
+ writeEol(out);
+ writeMethods(def, out, indent);
+ writeEol(out);
+ writeGetConnection(def, out, indent);
+
+ writeRightCurlyBracket(out, 0);
+ }
+
+ /**
+ * Output Constructor
+ * @param def definition
+ * @param out Writer
+ * @param indent space number
+ * @throws IOException ioException
+ */
+ void writeConstructor(Definition def, Writer out, int indent) throws IOException
+ {
writeIndent(out, indent);
+ out.write("/**");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write(" * Default constructor");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write(" */");
+ writeEol(out);
+
+ //constructor
+ writeIndent(out, indent);
+ out.write("public " + getClassName(def) + "()");
+ writeLeftCurlyBracket(out, indent);
+
+ writeIndent(out, indent + 1);
+ out.write("this.mbeanServer = null;");
+ writeEol(out);
+ writeIndent(out, indent + 1);
+ out.write("this.objectName = \"" + def.getDefaultValue() + ",class=HelloWorld\";");
+ writeEol(out);
+ writeIndent(out, indent + 1);
+ out.write("this.registered = false;");
+ writeEol(out);
+ writeEol(out);
+
+ writeRightCurlyBracket(out, indent);
+ writeEol(out);
+ }
+
+ /**
+ * Output class import
+ * @param def definition
+ * @param out Writer
+ * @throws IOException ioException
+ */
+ @Override
+ public void writeImport(Definition def, Writer out) throws IOException
+ {
+ out.write("package " + def.getRaPackage() + ".mbean;");
+ writeEol(out);
+ writeEol(out);
+ out.write("import javax.management.MBeanServer;");
+ writeEol(out);
+ out.write("import javax.management.NotCompliantMBeanException;");
+ writeEol(out);
+ out.write("import javax.management.ObjectName;");
+ writeEol(out);
+ out.write("import javax.naming.InitialContext;");
+ writeEol(out);
+ writeEol(out);
+
+ out.write("import " + def.getRaPackage() + "." + def.getConnInterfaceClass() + ";");
+ writeEol(out);
+ out.write("import " + def.getRaPackage() + "." + def.getCfInterfaceClass() + ";");
+ writeEol(out);
+ writeEol(out);
+ }
+
+ /**
+ * get this class name
+ * @param def definition
+ * @return String class name
+ */
+ @Override
+ public String getClassName(Definition def)
+ {
+ return def.getMbeanImplClass();
+ }
+
+ /**
+ * Output class vars
+ * @param def definition
+ * @param out Writer
+ * @param indent space number
+ * @throws IOException ioException
+ */
+ private void writeVars(Definition def, Writer out, int indent) throws IOException
+ {
+ writeIndent(out, indent);
out.write("/** JNDI name */");
writeEol(out);
writeIndent(out, indent);
out.write("private static final String JNDI_NAME = \"java:/eis/" + def.getDefaultValue() + "\";");
writeEol(out);
writeEol(out);
+
+ writeIndent(out, indent);
+ out.write("/** MBeanServer instance */");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write("private MBeanServer mbeanServer;");
+ writeEol(out);
+ writeEol(out);
+
+ writeIndent(out, indent);
+ out.write("/** Object Name */");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write("private String objectName;");
+ writeEol(out);
+ writeEol(out);
+
+ writeIndent(out, indent);
+ out.write("/** The actual ObjectName instance */");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write("private ObjectName on;");
+ writeEol(out);
+ writeEol(out);
+
+ writeIndent(out, indent);
+ out.write("/** Registered */");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write("private boolean registered;");
+ writeEol(out);
+ writeEol(out);
+ }
+ /**
+ * Output defined methods
+ * @param def definition
+ * @param out Writer
+ * @param indent space number
+ * @throws IOException ioException
+ */
+ private void writeMethods(Definition def, Writer out, int indent) throws IOException
+ {
if (def.isDefineMethodInConnection())
{
if (def.getMethods().size() > 0)
@@ -148,7 +289,20 @@
writeRightCurlyBracket(out, indent);
}
+ }
+ /**
+ * Output getConnection method
+ * @param def definition
+ * @param out Writer
+ * @param indent space number
+ * @throws IOException ioException
+ */
+ private void writeGetConnection(Definition def, Writer out, int indent) throws IOException
+ {
+ String connInterface = def.getConnInterfaceClass();
+ String cfInterface = def.getCfInterfaceClass();
+
writeIndent(out, indent);
out.write("/**");
writeEol(out);
@@ -156,24 +310,24 @@
out.write(" * GetConnection");
writeEol(out);
writeIndent(out, indent);
- out.write(" * @return " + def.getConnInterfaceClass());
+ out.write(" * @return " + connInterface);
writeEol(out);
writeIndent(out, indent);
out.write(" */");
writeEol(out);
writeIndent(out, indent);
- out.write("private " + def.getConnInterfaceClass() + " getConnection() throws Exception");
+ out.write("private " + connInterface + " getConnection() throws Exception");
writeLeftCurlyBracket(out, indent);
writeIndent(out, indent + 1);
out.write("InitialContext context = new InitialContext();");
writeEol(out);
writeIndent(out, indent + 1);
- out.write(def.getCfInterfaceClass() + " factory = (" + def.getCfInterfaceClass() +
+ out.write(cfInterface + " factory = (" + cfInterface +
")context.lookup(JNDI_NAME);");
writeEol(out);
writeIndent(out, indent + 1);
- out.write(def.getConnInterfaceClass() + " conn = factory.getConnection();");
+ out.write(connInterface + " conn = factory.getConnection();");
writeEol(out);
writeIndent(out, indent + 1);
out.write("if (conn == null)");
@@ -186,40 +340,91 @@
out.write("return conn;");
writeRightCurlyBracket(out, indent);
-
- writeRightCurlyBracket(out, 0);
}
/**
- * Output class import
+ * Output mbean lifecycle
* @param def definition
* @param out Writer
+ * @param indent space number
* @throws IOException ioException
*/
- @Override
- public void writeImport(Definition def, Writer out) throws IOException
+ private void writeMBeanLifecycle(Definition def, Writer out, int indent) throws IOException
{
- out.write("package " + def.getRaPackage() + ".mbean;");
+ //setMBeanServer
+ writeIndent(out, indent);
+ out.write("/**");
writeEol(out);
+ writeIndent(out, indent);
+ out.write(" * Set the MBean server");
writeEol(out);
- out.write("import javax.naming.InitialContext;");
+ writeIndent(out, indent);
+ out.write(" * @param v The value");
writeEol(out);
+ writeIndent(out, indent);
+ out.write(" */");
writeEol(out);
- out.write("import " + def.getRaPackage() + "." + def.getConnInterfaceClass() + ";");
+ writeIndent(out, indent);
+ out.write("public void setMBeanServer(MBeanServer v)");
+ writeLeftCurlyBracket(out, indent);
+ writeIndent(out, indent + 1);
+ out.write("mbeanServer = v;");
+ writeRightCurlyBracket(out, indent);
+
+ //Start
+ writeIndent(out, indent);
+ out.write("/**");
writeEol(out);
- out.write("import " + def.getRaPackage() + "." + def.getCfInterfaceClass() + ";");
+ writeIndent(out, indent);
+ out.write(" * Start");
writeEol(out);
+ writeIndent(out, indent);
+ out.write(" * @exception Throwable Thrown in case of an error");
writeEol(out);
+ writeIndent(out, indent);
+ out.write(" */");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write("public void start() throws Throwable");
+ writeLeftCurlyBracket(out, indent);
+
+ writeIndent(out, indent + 1);
+ out.write("if (mbeanServer == null)");
+ writeEol(out);
+ writeIndent(out, indent + 2);
+ out.write("throw new IllegalArgumentException(\"MBeanServer is null\");");
+ writeEol(out);
+ writeIndent(out, indent + 1);
+ out.write("on = new ObjectName(mbeanServer.getDefaultDomain() + objectName);");
+ writeEol(out);
+ writeIndent(out, indent + 1);
+ out.write("mbeanServer.registerMBean(this, on);");
+ writeEol(out);
+ writeIndent(out, indent + 1);
+ out.write("registered = true;");
+ writeRightCurlyBracket(out, indent);
+
+ //stop
+ writeIndent(out, indent);
+ out.write("/**");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write(" * Stop");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write(" * @exception Throwable Thrown in case of an error");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write(" */");
+ writeEol(out);
+ writeIndent(out, indent);
+ out.write("public void stop() throws Throwable");
+ writeLeftCurlyBracket(out, indent);
+ writeIndent(out, indent + 1);
+ out.write("if (registered)");
+ writeEol(out);
+ writeIndent(out, indent + 2);
+ out.write("mbeanServer.unregisterMBean(on); ");
+ writeRightCurlyBracket(out, indent);
}
-
- /**
- * get this class name
- * @param def definition
- * @return String class name
- */
- @Override
- public String getClassName(Definition def)
- {
- return def.getMbeanImplClass();
- }
}
Modified: projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties
===================================================================
--- projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties 2011-01-16 19:02:12 UTC (rev 110382)
+++ projects/jboss-jca/trunk/codegenerator/src/main/resources/codegenerator.properties 2011-01-17 02:19:11 UTC (rev 110383)
@@ -31,5 +31,6 @@
connection.method.param.type=Parameter type:
connection.method.exception=Exception type [enter to quit]:
output.dir=Output directory:
+gen.mbean=Generate MBean test class [Y/Yes/N/No]
build.env=Build environment [A/Ant/I/Ant+Ivy/M/Maven]
code.wrote=Code generated
More information about the jboss-cvs-commits
mailing list