Here is the code of "org.jboss.example.client.GUIInput"
public class GUIInput extends JFrame{
private boolean useBus = false;
//private boolean useBus = true;
private URL url;
//private UserInterface userInterface;
private HRManager manager;
private EmbeddedBootstrap bootstrap;
private KernelController controller;
private KernelBus bus;
private final static String HRSERVICE = "HRService";
private final static String EMPLOYEE = "org.jboss.example.service.Employee";
int frame_width = 1024;
int frame_height = 600;
JLabel jl_UseBus = new JLabel("Use Bus");
JComboBox jcb_UseBus = new JComboBox();
JLabel jl_FirstName = new JLabel("First Name");
JTextField jt_FirstName = new JTextField();
JLabel jl_LastName = new JLabel("Last Name");
JTextField jt_LastName = new JTextField();
JLabel jl_Salary = new JLabel("Salary");
JTextField jt_Salary = new JTextField();
//
JTextArea jt_Output = new JTextArea();
//
JButton jb_Deploy = new JButton("Deploy");
JButton jb_Undeploy = new JButton("Uneploy");
JButton jb_AddEmployee = new JButton("Add employee");
JButton jb_ListEmployees = new JButton("List employees");
JButton jb_RemoveEmployee = new JButton("Remove employee");
JButton jb_GetASalary = new JButton("Get a salary");
JButton jb_SetASalary = new JButton("Set a salary");
JButton jb_ToggleHiringFreeze = new JButton("Toggle hiring freeze");
JButton jb_PrintServiceStatus = new JButton("Print service status");
JButton jb_Quit = new JButton("Quit");
//
public GUIInput(){
try{
{
ClassLoader cl = Thread.currentThread().getContextClassLoader();
url = cl.getResource("jboss-beans.xml");
// Start JBoss Microcontainer
bootstrap = new EmbeddedBootstrap();
bootstrap.run();
controller = bootstrap.getKernel().getController();
bus = bootstrap.getKernel().getBus();
}
//
this.addWindowListener(new WindowListener(){
public void windowOpened(WindowEvent e){}
public void windowClosing(WindowEvent e){System.exit(0);}
public void windowClosed(WindowEvent e){System.exit(0);}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
});
initGUI();
}catch(Exception e){
e.printStackTrace();
}
}
private void initGUI(){
JPanel jp_input = new JPanel();
{
jp_input.setLayout(new GridLayout(4,2));
jp_input.setPreferredSize(new Dimension(frame_width-10,300));
//
jp_input.add(jl_UseBus);
jp_input.add(jcb_UseBus);
jp_input.add(jl_FirstName);
jp_input.add(jt_FirstName);
jp_input.add(jl_LastName);
jp_input.add(jt_LastName);
jp_input.add(jl_Salary);
jp_input.add(jt_Salary);
//
jcb_UseBus.addItem(Boolean.TRUE);
jcb_UseBus.addItem(Boolean.FALSE);
jcb_UseBus.setSelectedItem(this.useBus);
jcb_UseBus.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(jcb_UseBus.getSelectedItem()==Boolean.TRUE){
GUIInput.this.useBus = true;
}else{
GUIInput.this.useBus = false;
}
System.out.println("GUIInput.this.useBus is set to "+GUIInput.this.useBus);
}
});
}
JPanel jp_output = new JPanel();
{
jp_output.setLayout(new GridLayout(1,2));
jp_output.setPreferredSize(new Dimension(frame_width-10,150));
jp_output.add(new JLabel("Output:"));
jp_output.add(jt_Output);
}
JPanel jp_buttons = new JPanel();
{
jp_buttons.setPreferredSize(new Dimension(frame_width-10,100));
jp_buttons.setLayout(new GridLayout(2,6));
jp_buttons.add(jb_Deploy);
jp_buttons.add(jb_Undeploy);
jp_buttons.add(jb_AddEmployee);
jp_buttons.add(jb_ListEmployees);
jp_buttons.add(jb_RemoveEmployee);
jp_buttons.add(jb_GetASalary);
jp_buttons.add(jb_SetASalary);
jp_buttons.add(jb_ToggleHiringFreeze);
jp_buttons.add(jb_PrintServiceStatus);
jp_buttons.add(jb_Quit);
//
jb_Deploy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_Deploy__actionPerformed();
}
});
jb_Undeploy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_Undeploy__actionPerformed();
}
});
jb_AddEmployee.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_AddEmployee__actionPerformed();
}
});
jb_ListEmployees.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_ListEmployees__actionPerformed();
}
});
jb_RemoveEmployee.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_RemoveEmployee__actionPerformed();
}
});
jb_GetASalary.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_GetASalary__actionPerformed();
}
});
jb_SetASalary.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_SetASalary__actionPerformed();
}
});
jb_ToggleHiringFreeze.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_ToggleHiringFreeze__actionPerformed();
}
});
jb_PrintServiceStatus.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jb_PrintServiceStatus__actionPerformed();
}
});
jb_Quit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
this.setSize(frame_width,frame_width);
this.getContentPane().add(jp_input, BorderLayout.NORTH);
this.getContentPane().add(jp_output, BorderLayout.CENTER);
this.getContentPane().add(jp_buttons, BorderLayout.SOUTH);
}
public static void main(String args[]){
GUIInput gui = new GUIInput();
gui.setTitle("JBoss Micro Container client");
gui.setVisible(true);
}
public void jb_Deploy__actionPerformed(){
bootstrap.deploy(url);
if (!useBus && manager == null) {
ControllerContext context = controller.getInstalledContext(HRSERVICE);
if (context != null) {
manager = (HRManager) context.getTarget();
}
}else{
}
jt_Output.setText("Deployed.");
}
public void jb_Undeploy__actionPerformed(){
bootstrap.undeploy(url);
jt_Output.setText("undeployed.");
}
public void jb_AddEmployee__actionPerformed (){
try{
Employee newEmployee = new Employee(this.jt_FirstName.getText(), this.jt_LastName.getText());
newEmployee.setAddress(new Address(200030, "PuTuo", "Shanghai"));
newEmployee.setDateOfBirth(new Date(new Date().getTime() - 2000000000000l));
boolean result = false;
if (useBus)
result = (Boolean) invoke(HRSERVICE, "addEmployee", new Object[]{newEmployee}, new String[]{EMPLOYEE});
else
result = manager.addEmployee(newEmployee);
jt_Output.setText("Add employee["+newEmployee+"] result:" + result);
} catch (Exception e){
e.printStackTrace();
jt_Output.setText("Exception:\n"+e);
}
}
public void jb_ListEmployees__actionPerformed(){
Set<Employee> result;
if (useBus)
result = (Set<Employee>) invoke(HRSERVICE, "getEmployees", new Object[]{}, new String[]{});
else
result = manager.getEmployees();
Iterator<Employee> it = result.iterator();
jt_Output.setText("List All Employees:");
while(it.hasNext()){
Employee item = it.next();
jt_Output.append("\n----:"+item);
}
jt_Output.append("\nList END");
}
public void jb_RemoveEmployee__actionPerformed(){
try{
Employee employee = new Employee(this.jt_FirstName.getText(), this.jt_LastName.getText());
if (useBus)
invoke(HRSERVICE, "removeEmployee", new Object[]{employee}, new String[]{EMPLOYEE});
else
manager.removeEmployee(employee);
}catch(Exception e){
e.printStackTrace();
}
}
public void jb_GetASalary__actionPerformed(){
try{
Employee employee = new Employee(this.jt_FirstName.getText(), this.jt_LastName.getText());
Integer result ;
if (useBus)
result = (Integer) invoke(HRSERVICE, "getSalary", new Object[]{employee}, new String[]{EMPLOYEE});
else
result = manager.getSalary(employee);
jt_Output.setText(employee.toString()+"-salary is:"+result);
}catch(Exception e){
e.printStackTrace();
}
}
public void jb_SetASalary__actionPerformed(){
try{
Employee employee = new Employee(this.jt_FirstName.getText(), this.jt_LastName.getText());
Integer salary = Integer.parseInt(this.jt_Salary.getText());
Employee actualEmployee;
if (useBus) {
actualEmployee = (Employee) invoke(HRSERVICE, "getEmployee", new Object[]{employee.getFirstName(), employee.getLastName()}, new String[]{"java.lang.String", "java.lang.String"});
invoke(HRSERVICE, "setSalary", new Object[]{actualEmployee, salary}, new String[]{EMPLOYEE, "java.lang.Integer"});
} else {
actualEmployee = manager.getEmployee(employee.getFirstName(), employee.getLastName());
manager.setSalary(actualEmployee, salary);
}
jt_Output.setText("set salary end.");
}catch(Exception e){
e.printStackTrace();
}
}
public void jb_ToggleHiringFreeze__actionPerformed(){
try{
boolean hiringFreeze;
if (useBus) {
hiringFreeze = (Boolean) invoke(HRSERVICE, "isHiringFreeze", new Object[]{}, new String[]{});
invoke(HRSERVICE, "setHiringFreeze", new Object[]{!hiringFreeze}, new String[]{"boolean"});
} else {
hiringFreeze = manager.isHiringFreeze();
manager.setHiringFreeze(!hiringFreeze);
}
//return !hiringFreeze;
jt_Output.setText("Now hiringFreeze="+hiringFreeze);
}catch(Exception e){
e.printStackTrace();
}
}
public void jb_PrintServiceStatus__actionPerformed(){
try{
boolean hiringFreeze;
int totalEmployees;
SalaryStrategy salaryStrategy;
if (useBus) {
hiringFreeze = (Boolean) invoke(HRSERVICE, "isHiringFreeze", new Object[]{}, new String[]{});
Set<Employee> employees = (Set<Employee>) invoke(HRSERVICE, "getEmployees", new Object[]{}, new String[]{});
totalEmployees = employees.size();
salaryStrategy = (SalaryStrategy) invoke(HRSERVICE, "getSalaryStrategy", new Object[]{}, new String[]{});
} else {
hiringFreeze = manager.isHiringFreeze();
totalEmployees = manager.getEmployees().size();
salaryStrategy = manager.getSalaryStrategy();
}
StringBuffer buffer = new StringBuffer();
buffer.append("Total number of employees: " + totalEmployees);
buffer.append("\nHiring Freeze: " + hiringFreeze);
buffer.append("\nSalary Strategy: ");
if (salaryStrategy == null) {
buffer.append("None");
} else {
buffer.append(salaryStrategy.toString());
}
jt_Output.setText(buffer.toString());
}catch(Exception e){
jt_Output.setText("Exception:"+e);
}
}
private Object invoke(String serviceName, String methodName, Object[] args, String[] types) {
Object result = null;
try {
result = bus.invoke(serviceName, methodName, args, types);
} catch (Throwable t) {
t.printStackTrace();
}
return result;
}
}