geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From de...@apache.org
Subject svn commit: r955877 [4/6] - in /geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins: org.apache.geronimo.runtime.common/ org.apache.geronimo.runtime.common/META-INF/ org.apache.geronimo.runtime.v20/ org.apache.geronimo.runtime.v20/META-INF/ org.apa...
Date Fri, 18 Jun 2010 08:10:16 GMT
Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRealmWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRealmWizard.java?rev=955877&r1=955876&r2=955877&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRealmWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRealmWizard.java Fri Jun 18 08:10:13 2010
@@ -41,10 +41,11 @@ import org.apache.geronimo.jee.openejb.O
 import org.apache.geronimo.jee.web.WebApp;
 import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
 import org.apache.geronimo.st.v21.ui.Activator;
+import org.apache.geronimo.st.v21.ui.sections.SecurityRealmSection;
 import org.apache.geronimo.st.ui.CommonMessages;
 import org.apache.geronimo.st.ui.sections.AbstractTableSection;
 import org.apache.geronimo.st.ui.wizards.AbstractTableWizard;
-import org.apache.geronimo.st.v21.core.GeronimoServerInfo;
+import org.apache.geronimo.st.v21.core.GeronimoServerInfoManager;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -65,1109 +66,1111 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
 public class SecurityRealmWizard extends AbstractTableWizard {
-    protected ImageDescriptor descriptor = Activator.imageDescriptorFromPlugin(
-	    "org.apache.geronimo.st.ui", "icons/bigG.gif");
+	protected ImageDescriptor descriptor = Activator.imageDescriptorFromPlugin(
+			"org.apache.geronimo.st.ui", "icons/bigG.gif");
 
-    public SecurityRealmWizard(AbstractTableSection section) {
-	super(section);
-    }
-
-    public String getWizardWindowTitle() {
-	return CommonMessages.wizardTitle_SecurityRealm;
-    }
-
-    @Override
-    public void addPages() {
-	SecurityRealmBasicPage page0 = new SecurityRealmBasicPage(
-		"SecurityRealmBasicPage");
-	page0.setImageDescriptor(descriptor);
-	addPage(page0);
-
-	PropertiesFileRealmPage page1 = new PropertiesFileRealmPage(
-		"PropertiesFileRealmPage");
-	page1.setImageDescriptor(descriptor);
-	addPage(page1);
-
-	SelectSQLPage page2 = new SelectSQLPage("SelectSQLPage");
-	page2.setImageDescriptor(descriptor);
-	addPage(page2);
-
-	DBConnectionPage page3 = new DBConnectionPage("DBConnectionPage");
-	page3.setImageDescriptor(descriptor);
-	addPage(page3);
-
-	LDAPConnectionPage page4 = new LDAPConnectionPage("LDAPConnectionPage");
-	page4.setImageDescriptor(descriptor);
-	addPage(page4);
-
-	LDAPSearchPage page5 = new LDAPSearchPage("LDAPSearchPage");
-	page5.setImageDescriptor(descriptor);
-	addPage(page5);
-
-    }
-
-    @Override
-    public JAXBObjectFactory getEFactory() {
-	return JAXBObjectFactoryImpl.getInstance();
-    }
-
-    @Override
-    public String[] getTableColumnEAttributes() {
-	return new String[] {};
-    }
-
-    @Override
-    protected String getAddWizardWindowTitle() {
-	return "New Security Realm";// TODO put into message
-    }
-
-    @Override
-    protected String getEditWizardWindowTitle() {
-	return "Edit Security Realm";// TODO put into message
-    }
-
-    public boolean performFinish() {
-	boolean isedit = false;
-	JAXBElement<?> plan = this.section.getPlan();
-	ObjectFactory objectFactory = new ObjectFactory();
-	// all pages
-	SecurityRealmBasicPage page0 = (SecurityRealmBasicPage) this
-		.getPage("SecurityRealmBasicPage");
-	PropertiesFileRealmPage page1 = (PropertiesFileRealmPage) this
-		.getPage("PropertiesFileRealmPage");
-	SelectSQLPage page2 = (SelectSQLPage) this.getPage("SelectSQLPage");
-	DBConnectionPage page3 = (DBConnectionPage) this
-		.getPage("DBConnectionPage");
-	LDAPConnectionPage page4 = (LDAPConnectionPage) this
-		.getPage("LDAPConnectionPage");
-	LDAPSearchPage page5 = (LDAPSearchPage) this.getPage("LDAPSearchPage");
-
-	// password not match , popup a dialog
-	if (!page3.textEntries[3].getText().equals(
-		page3.textEntries[4].getText())) {
-	    Status status = new Status(IStatus.WARNING, "Login Error", 0,
-		    "Password provided in both fields do not match", null);
-	    ErrorDialog.openError(this.getShell(), "Login Error",
-		    "Invalid Login Details", status);
-	    return false;
-	}
-
-	// set a gbean according to the input from wizard
-	Gbean gbean = null;
-	if (eObject != null) {
-	    gbean = (Gbean) ((JAXBElement) eObject).getValue();
-	    isedit = true;
-	} else {
-	    gbean = new Gbean();// create a new gbean
-	    eObject = objectFactory.createGbean(gbean);
-	}
-
-	// add the data into gbean
-	String realmName = page0.textEntries[0].getText() == null ? ""
-		: page0.textEntries[0].getText();
-	gbean.setName(realmName);// set the gbean name the same as realm name
-	gbean
-		.setClazz("org.apache.geronimo.security.realm.GenericSecurityRealm");// TODO
-	// message
-
-	List<JAXBElement<?>> elelist = gbean
-		.getAttributeOrXmlAttributeOrReference();
-
-	// set the attribute
-	JAXBElement<Attribute> attributeElement = getAttributeElement(elelist);
-	if (attributeElement == null) {
-	    attributeElement = objectFactory.createGbeanAttribute(null);
-	    elelist.add(attributeElement);
-	}
-	Attribute attribute = new Attribute();
-	attribute.setName("realmName");
-	attribute.setValue(realmName);
-	attributeElement.setValue(attribute);
-
-	// set the reference
-	JAXBElement<Reference> referenceElement = getReferenceElement(elelist);
-	if (referenceElement == null) {
-	    referenceElement = objectFactory.createGbeanReference(null);
-	    elelist.add(referenceElement);
-	}
-	Reference ref = new Reference();
-	ref.setName("ServerInfo");
-	ref.setCustomFoo("ServerInfo");
-	referenceElement.setValue(ref);
-
-	// set the xml-reference
-	JAXBElement<XmlAttributeType> xmlrefElement = getXmlReferenceElement(elelist);
-	if (xmlrefElement == null) {
-	    xmlrefElement = objectFactory.createGbeanXmlReference(null);
-	    elelist.add(xmlrefElement);
-	}
-	XmlAttributeType xmlAtttribute = new XmlAttributeType();
-	xmlAtttribute.setName("LoginModuleConfiguration");
-	xmlrefElement.setValue(xmlAtttribute);
-
-	LoginConfig config = new LoginConfig();
-	xmlAtttribute.setAny(config);
-	LoginModule loginModule = new LoginModule();
-	config.getLoginModuleRefOrLoginModule().add(loginModule);
-	loginModule.setControlFlag(ControlFlag.fromValue("REQUIRED"));
-	loginModule.setWrapPrincipals(false);
-	loginModule.setLoginDomainName(realmName);
-
-	String realmType = page0.combo.getText().trim();
-	if (realmType.equals("Properties File Realm")) {
-	    loginModule
-		    .setLoginModuleClass("org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule");
-
-	    String usersfile = page1.textEntries[0].getText().trim();
-	    Option usersfileopt = createOption("usersURI", usersfile);
-
-	    String groupsfile = page1.textEntries[1].getText().trim();
-	    Option groupsfileopt = createOption("groupsURI", groupsfile);
-
-	    String algorithm = page1.textEntries[2].getText();
-	    Option algorithmopt = createOption("digest", algorithm);
-
-	    String encoding = page1.textEntries[3].getText();
-	    Option encodingopt = createOption("encoding", encoding);
-
-	    loginModule.getOption().add(usersfileopt);
-	    loginModule.getOption().add(groupsfileopt);
-	    if (algorithm != null)
-		loginModule.getOption().add(algorithmopt);
-	    if (encoding != null)
-		loginModule.getOption().add(encodingopt);
-
-	} else if (realmType.equals("SQL Realm")) {
-	    loginModule
-		    .setLoginModuleClass("org.apache.geronimo.security.realm.providers.SQLLoginModule");
-
-	    String selectUsers = page2.textEntries[0].getText().trim();
-	    Option selectUsersopt = createOption("userSelect", selectUsers);
-
-	    String selectGroups = page2.textEntries[1].getText().trim();
-	    Option selectGroupsopt = createOption("groupSelect", selectGroups);
-
-	    String algorithm = page2.textEntries[2].getText().trim();
-	    Option algorithmopt = createOption("digest", algorithm);
-
-	    String encoding = page2.textEntries[3].getText().trim();
-	    Option encodingopt = createOption("encoding", encoding);
-
-	    if (page3.buttons[0].getSelection()) {
-		String dsname = page3.dataBasePoolCombo.getText();
-		Option dsnameopt = createOption("dataSourceName", dsname);
-		loginModule.getOption().add(dsnameopt);
-	    } else if (page3.buttons[1].getSelection()) {
-
-		String jdbcDriverClass = page3.textEntries[0].getText().trim();
-		Option jdbcDriverClassopt = createOption("jdbcDriver",
-			jdbcDriverClass);
-
-		String jdbcURL = page3.textEntries[1].getText().trim();
-		Option jdbcURLopt = createOption("jdbcURL", jdbcURL);
-
-		String userName = page3.textEntries[2].getText().trim();
-		Option userNameopt = createOption("jdbcUser", userName);
-
-		String password = page3.textEntries[3].getText().trim();
-		Option passwordopt = createOption("jdbcPassword", password);
-
-		loginModule.getOption().add(jdbcDriverClassopt);
-		loginModule.getOption().add(jdbcURLopt);
-		loginModule.getOption().add(userNameopt);
-		loginModule.getOption().add(passwordopt);
-
-	    }
-
-	    loginModule.getOption().add(selectUsersopt);
-	    loginModule.getOption().add(selectGroupsopt);
-	    loginModule.getOption().add(algorithmopt);
-	    loginModule.getOption().add(encodingopt);
-
-	} else if (realmType.equals("LDAP Realm")) {
-	    loginModule
-		    .setLoginModuleClass("org.apache.geronimo.security.realm.providers.LDAPLoginModule");
-	    String initialContextFactory = page4.combo[0].getText().trim();
-	    loginModule.getOption()
-		    .add(
-			    createOption("initialContextFactory",
-				    initialContextFactory));
-	    String connectionURL = page4.combo[1].getText();
-	    loginModule.getOption().add(
-		    createOption("connectionURL", connectionURL));
-	    String connectionUsername = page4.text[0].getText();
-	    loginModule.getOption().add(
-		    createOption("connectionUsername", connectionUsername));
-	    String connectionPassword = page4.text[1].getText();
-	    loginModule.getOption().add(
-		    createOption("connectionPassword", connectionPassword));
-	    String connectionProtocol = page4.text[3].getText();
-	    loginModule.getOption().add(
-		    createOption("connectionProtocol", connectionProtocol));
-	    String authentication = page4.combo[2].getText();
-	    loginModule.getOption().add(
-		    createOption("authentication", authentication));
-
-	    String userBase = page5.text[0].getText();
-	    loginModule.getOption().add(createOption("userBase", userBase));
-	    String userSearchMatching = page5.text[1].getText();
-	    loginModule.getOption().add(
-		    createOption("userSearchMatching", userSearchMatching));
-	    String userSearchSubtree = Boolean.toString(page5.userSearchSubtree
-		    .getSelection());
-	    loginModule.getOption().add(
-		    createOption("userSearchSubtree", userSearchSubtree));
-	    String roleBase = page5.text[2].getText();
-	    loginModule.getOption().add(createOption("roleBase", roleBase));
-	    String roleName = page5.text[3].getText();
-	    loginModule.getOption().add(createOption("roleName", roleName));
-	    String roleSearchMatching = page5.text[4].getText();
-	    loginModule.getOption().add(
-		    createOption("roleSearchMatching", roleSearchMatching));
-	    String userRoleName = page5.text[5].getText();
-	    loginModule.getOption().add(
-		    createOption("userRoleName", userRoleName));
-	    String roleSearchSubtree = Boolean.toString(page5.roleSearchSubtree
-		    .getSelection());
-	    loginModule.getOption().add(
-		    createOption("roleSearchSubtree", roleSearchSubtree));
-	}
-
-	if (isedit)
-	    return true;
-
-	// is add, need to add the gbean into plan
-	Object planValue = plan.getValue();
-	if (Application.class.isInstance(planValue)) {
-	    Application application = (Application) planValue;
-
-	    // set dependency
-	    Environment env = application.getEnvironment();
-	    if (env == null) {
-		env = new Environment();
-		application.setEnvironment(env);
-	    }
-	    setDependency(env);
-
-	    // add the gbean into plan
-	    JAXBElement<Gbean> gbeanElement = objectFactory.createGbean(gbean);
-	    application.getService().add(gbeanElement);
-	} else if (WebApp.class.isInstance(planValue)) {
-	    WebApp webapp = (WebApp) planValue;
-
-	    // set dependency
-	    Environment env = webapp.getEnvironment();
-	    if (env == null) {
-		env = new Environment();
-		webapp.setEnvironment(env);
-	    }
-	    setDependency(env);
-
-	    // add the gbean into plan
-	    JAXBElement<Gbean> gbeanElement = objectFactory.createGbean(gbean);
-	    webapp.getServiceOrPersistence().add(gbeanElement);
-	} else if (OpenejbJar.class.isInstance(planValue)) {
-	    OpenejbJar openejbJar = (OpenejbJar) planValue;
-
-	    // set dependency
-	    Environment env = openejbJar.getEnvironment();
-	    if (env == null) {
-		env = new Environment();
-		openejbJar.setEnvironment(env);
-	    }
-	    setDependency(env);
-
-	    // add the gbean into plan
-	    JAXBElement<Gbean> gbeanElement = objectFactory.createGbean(gbean);
-	    openejbJar.getService().add(gbeanElement);
-	}
-
-	return true;
-    }
-
-    private void setDependency(Environment env) {
-	Dependencies dependencies = env.getDependencies();
-	if (dependencies == null) {
-	    dependencies = new Dependencies();
-	    env.setDependencies(dependencies);
-	}
-	Dependency securityDependency = new Dependency();
-	securityDependency.setGroupId("org.apache.geronimo.framework");
-	securityDependency.setArtifactId("j2ee-security");
-	securityDependency.setType("car");
-	if (!dependencies.getDependency().contains(securityDependency)) {
-	    dependencies.getDependency().add(securityDependency);
-	}
-    }
-
-    private Option createOption(String name, String value) {
-	Option option = new Option();
-	option.setName(name);
-	option.setValue(value);
-	return option;
-    }
-
-    private JAXBElement<Attribute> getAttributeElement(List<JAXBElement<?>> list) {
-	for (JAXBElement<?> ele : list) {
-	    if (Attribute.class.isInstance(ele.getValue())
-		    && ((Attribute) ele.getValue()).getName().equals(
-			    "realmName")) {
-		return (JAXBElement<Attribute>) ele;
-	    }
-	}
-	return null;
-    }
-
-    private JAXBElement<Reference> getReferenceElement(List<JAXBElement<?>> list) {
-	for (JAXBElement<?> ele : list) {
-	    if (Reference.class.isInstance(ele.getValue())
-		    && ((Reference) ele.getValue()).getName().equals(
-			    "ServerInfo")) {
-		return (JAXBElement<Reference>) ele;
-	    }
-	}
-	return null;
-    }
-
-    private JAXBElement<XmlAttributeType> getXmlReferenceElement(
-	    List<JAXBElement<?>> list) {
-	for (JAXBElement<?> ele : list) {
-	    if (XmlAttributeType.class.isInstance(ele.getValue())
-		    && ((XmlAttributeType) ele.getValue()).getName().equals(
-			    "LoginModuleConfiguration")) {
-		return (JAXBElement<XmlAttributeType>) ele;
-	    }
-	}
-	return null;
-    }
-
-    public class SecurityRealmBasicPage extends WizardPage {
-	private int recordedRealmType = -2;
-
-	Text textEntries[] = new Text[1];
-	Combo combo = null;
-
-	public SecurityRealmBasicPage(String pageName) {
-	    super(pageName);
-	    setTitle(CommonMessages.wizardFirstPageTitle_SecurityRealm);
-	    setDescription(CommonMessages.wizardFirstPageDescription_SecurityRealm);
-	}
-
-	public void createControl(Composite parent) {
-	    Composite composite = new Composite(parent, SWT.NULL);
-	    GridLayout layout = new GridLayout();
-	    layout.numColumns = 2;
-	    composite.setLayout(layout);
-	    GridData data = new GridData();
-	    data.verticalAlignment = GridData.FILL;
-	    data.horizontalAlignment = GridData.FILL;
-	    data.widthHint = 300;
-	    composite.setLayoutData(data);
-
-	    Group basicGroup = new Group(composite, SWT.NONE);
-	    basicGroup.setText("Basic Settings");
-	    GridLayout gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    GridData data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.grabExcessVerticalSpace = true;
-	    data1.horizontalSpan = 2;
-	    basicGroup.setLayout(gridLayout);
-	    data1.grabExcessHorizontalSpace = true;
-	    basicGroup.setLayoutData(data1);
-	    createLabel(basicGroup, CommonMessages.realmName, 1);
-	    textEntries[0] = createText(basicGroup, 3);
-	    createLabel(basicGroup, CommonMessages.realmType, 1);
-	    combo = new Combo(basicGroup, SWT.NONE | SWT.READ_ONLY);
-	    combo.setLayoutData(new GridData(GridData.FILL, GridData.FILL,
-		    true, false, 3, 1));
-	    combo.add("Properties File Realm");
-	    combo.add("SQL Realm");
-	    combo.add("LDAP Realm");
-	    combo.select(0);
-
-	    if (eObject != null) {
-		Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
-		String realmName = getAttributeValue(gbean, "realmName");
-		this.textEntries[0].setText(realmName == null ? "" : realmName);
-		String loginModuleClass = getLoginModuleClass(gbean);
-		if ("org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule"
-			.equals(loginModuleClass)) {
-		    this.combo.select(0);
-		} else if ("org.apache.geronimo.security.realm.providers.SQLLoginModule"
-			.equals(loginModuleClass)) {
-		    this.combo.select(1);
-		} else if ("org.apache.geronimo.security.realm.providers.LDAPLoginModule"
-			.equals(loginModuleClass)) {
-		    this.combo.select(2);
-		}
-	    }
-	    setControl(composite);
-	}
-
-	public int getRecordedRealmType() {
-	    return recordedRealmType;
-	}
-
-	public void setRecordedRealmType(int recordedRealmType) {
-	    this.recordedRealmType = recordedRealmType;
-	}
-
-	public int getRealmTypeSelectionIndex() {
-	    if (combo != null) {
-		return combo.getSelectionIndex();
-	    } else {
-		return -1;
-	    }
+	public SecurityRealmWizard(AbstractTableSection section) {
+		super(section);
+	}
+
+	public String getWizardWindowTitle() {
+		return CommonMessages.wizardTitle_SecurityRealm;
 	}
 
 	@Override
-	public IWizardPage getNextPage() {
-	    if (combo.getText().trim().equals("Properties File Realm")) {// properties
-		// file
-		// type
-		return this.getWizard().getPage("PropertiesFileRealmPage");
-	    } else if (combo.getText().trim().equals("SQL Realm")) {// sql realm
-		// type
-		return this.getWizard().getPage("SelectSQLPage");
-	    } else if (combo.getText().trim().equals("LDAP Realm")) {// ldap
-		// realm
-		// type
-		return this.getWizard().getPage("LDAPConnectionPage");
-	    }
-	    return null;
-	}
-    }
-
-    public class PropertiesFileRealmPage extends WizardPage {
-
-	Text textEntries[] = new Text[4];
-
-	public PropertiesFileRealmPage(String pageName) {
-	    super(pageName);
-	    setTitle("Properties File Realm");
-	    setDescription("Edit settings for users file and groups file's pathes");
-	}
-
-	public void createControl(Composite parent) {
-	    Composite composite = new Composite(parent, SWT.NULL);
-	    GridLayout layout = new GridLayout();
-	    layout.numColumns = 2;
-	    composite.setLayout(layout);
-	    GridData data = new GridData();
-	    data.verticalAlignment = GridData.FILL;
-	    data.horizontalAlignment = GridData.FILL;
-	    data.widthHint = 300;
-	    composite.setLayoutData(data);
-
-	    Group uriGroup = new Group(composite, SWT.NONE);
-	    uriGroup.setText("Files's URI");
-	    GridLayout gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    uriGroup.setLayout(gridLayout);
-	    GridData data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.grabExcessVerticalSpace = true;
-	    data1.horizontalSpan = 2;
-	    data1.grabExcessHorizontalSpace = true;
-	    uriGroup.setLayoutData(data1);
-	    createLabel(uriGroup, "Users File URI:", 1);
-	    textEntries[0] = createText(uriGroup, 3);
-	    createLabel(uriGroup, "Groups File URI:", 1);
-	    textEntries[1] = createText(uriGroup, 3);
-
-	    Group digestGroup = new Group(composite, SWT.NONE);
-	    digestGroup.setText("Digest Configuration");
-	    gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    digestGroup.setLayout(gridLayout);
-	    data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.grabExcessVerticalSpace = true;
-	    data1.horizontalSpan = 2;
-	    data1.grabExcessHorizontalSpace = true;
-	    digestGroup.setLayoutData(data1);
-	    createLabel(digestGroup, "Digest Algorithm:", 1);
-	    textEntries[2] = createText(digestGroup, 3);
-	    createLabel(digestGroup, "Digest Encoding:", 1);
-	    textEntries[3] = createText(digestGroup, 3);
-
-	    if (eObject != null) {
-		Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
-		if (getOptionValue(gbean, "usersURI") != null) {
-		    textEntries[0].setText(getOptionValue(gbean, "usersURI"));
-		}
-		if (getOptionValue(gbean, "groupsURI") != null) {
-		    textEntries[1].setText(getOptionValue(gbean, "groupsURI"));
-		}
-		if (getOptionValue(gbean, "digest") != null) {
-		    textEntries[2].setText(getOptionValue(gbean, "digest"));
-		}
-		if (getOptionValue(gbean, "encoding") != null) {
-		    textEntries[3].setText(getOptionValue(gbean, "encoding"));
-		}
-	    }
-
-	    setControl(composite);
-	}
-
-	public boolean canFlipToNextPage() {
-	    // no next page for this path through the wizard
-	    return false;
-	}
-
-	public IWizardPage getNextPage() {
-	    return null;
-	}
-    }
-
-    public class SelectSQLPage extends WizardPage {
-
-	Text textEntries[] = new Text[4];
-
-	public SelectSQLPage(String pageName) {
-	    super(pageName);
-	    setTitle("SQL Realm");
-	    setDescription("Edit settings for user and group select sql");
-	}
-
-	public void createControl(Composite parent) {
-	    Composite composite = new Composite(parent, SWT.NULL);
-	    GridLayout layout = new GridLayout();
-	    layout.numColumns = 2;
-	    composite.setLayout(layout);
-	    GridData data = new GridData();
-	    data.verticalAlignment = GridData.FILL;
-	    data.horizontalAlignment = GridData.FILL;
-	    data.widthHint = 300;
-	    composite.setLayoutData(data);
-
-	    Group uriGroup = new Group(composite, SWT.NONE);
-	    uriGroup.setText("Select SQL");
-	    GridLayout gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    uriGroup.setLayout(gridLayout);
-	    GridData data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.grabExcessVerticalSpace = true;
-	    data1.horizontalSpan = 2;
-	    data1.grabExcessHorizontalSpace = true;
-	    uriGroup.setLayoutData(data1);
-	    createLabel(uriGroup, "Users Select SQL:", 1);
-	    textEntries[0] = createText(uriGroup, 3);
-	    createLabel(uriGroup, "Groups Select SQL:", 1);
-	    textEntries[1] = createText(uriGroup, 3);
-
-	    Group digestGroup = new Group(composite, SWT.NONE);
-	    digestGroup.setText("Digest Configuration");
-	    gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    digestGroup.setLayout(gridLayout);
-	    data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.grabExcessVerticalSpace = true;
-	    data1.horizontalSpan = 2;
-	    data1.grabExcessHorizontalSpace = true;
-	    digestGroup.setLayoutData(data1);
-	    createLabel(digestGroup, "Digest Algorithm:", 1);
-	    textEntries[2] = createText(digestGroup, 3);
-	    createLabel(digestGroup, "Digest Encoding:", 1);
-	    textEntries[3] = createText(digestGroup, 3);
-
-	    if (eObject != null) {
-		Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
-		if (getOptionValue(gbean, "userSelect") != null) {
-		    textEntries[0].setText(getOptionValue(gbean, "userSelect"));
-		}
-		if (getOptionValue(gbean, "groupSelect") != null) {
-		    textEntries[1]
-			    .setText(getOptionValue(gbean, "groupSelect"));
-		}
-		if (getOptionValue(gbean, "digest") != null) {
-		    textEntries[2].setText(getOptionValue(gbean, "digest"));
-		}
-		if (getOptionValue(gbean, "encoding") != null) {
-		    textEntries[3].setText(getOptionValue(gbean, "encoding"));
-		}
-	    }
+	public void addPages() {
+		SecurityRealmBasicPage page0 = new SecurityRealmBasicPage(
+				"SecurityRealmBasicPage");
+		page0.setImageDescriptor(descriptor);
+		addPage(page0);
+
+		PropertiesFileRealmPage page1 = new PropertiesFileRealmPage(
+				"PropertiesFileRealmPage");
+		page1.setImageDescriptor(descriptor);
+		addPage(page1);
+
+		SelectSQLPage page2 = new SelectSQLPage("SelectSQLPage");
+		page2.setImageDescriptor(descriptor);
+		addPage(page2);
+
+		DBConnectionPage page3 = new DBConnectionPage("DBConnectionPage");
+		page3.setImageDescriptor(descriptor);
+		addPage(page3);
+
+		LDAPConnectionPage page4 = new LDAPConnectionPage("LDAPConnectionPage");
+		page4.setImageDescriptor(descriptor);
+		addPage(page4);
+
+		LDAPSearchPage page5 = new LDAPSearchPage("LDAPSearchPage");
+		page5.setImageDescriptor(descriptor);
+		addPage(page5);
 
-	    setControl(composite);
 	}
 
 	@Override
-	public IWizardPage getNextPage() {
-	    return this.getWizard().getPage("DBConnectionPage");
+	public JAXBObjectFactory getEFactory() {
+		return JAXBObjectFactoryImpl.getInstance();
 	}
 
-    }
+	@Override
+	public String[] getTableColumnEAttributes() {
+		return new String[] {};
+	}
 
-    public class DBConnectionPage extends WizardPage {
+	@Override
+	protected String getAddWizardWindowTitle() {
+		return "New Security Realm";// TODO put into message
+	}
 
-	Text textEntries[] = new Text[5];
-	Button buttons[] = new Button[2];
-	Combo dataBasePoolCombo;
-
-	protected DBConnectionPage(String pageName) {
-	    super(pageName);
-	    setTitle(CommonMessages.wizardSecondPageTitle_SecurityRealm);
-	    setDescription(CommonMessages.wizardSecondPageDescription_SecurityRealm);
-	}
-
-	public void createControl(Composite parent) {
-	    Composite composite = new Composite(parent, SWT.NULL);
-	    GridLayout layout = new GridLayout();
-	    layout.numColumns = 2;
-	    composite.setLayout(layout);
-	    GridData data = new GridData();
-	    data.verticalAlignment = GridData.FILL;
-	    data.horizontalAlignment = GridData.FILL;
-	    data.widthHint = 300;
-	    composite.setLayoutData(data);
-
-	    Group databasePoolGroup = new Group(composite, SWT.NONE);
-	    databasePoolGroup.setText(CommonMessages.dataBasePool);
-	    GridLayout gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    GridData data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.horizontalSpan = 2;
-	    databasePoolGroup.setLayout(gridLayout);
-	    databasePoolGroup.setLayoutData(data1);
-	    buttons[0] = new Button(databasePoolGroup, SWT.RADIO);
-	    buttons[0].setSelection(true);
-	    buttons[0].setText(CommonMessages.useDataBasePool);
-	    buttons[0].setLayoutData(new GridData(GridData.FILL,
-		    GridData.CENTER, true, false, 4, 1));
-	    buttons[0].addSelectionListener(new SelectionAdapter() {
-		public void widgetSelected(SelectionEvent event) {
-		    buttons[1].setSelection(false);
-		    dataBasePoolCombo.setEnabled(true);
-		    for (int i = 0; i < textEntries.length; i++) {
-			textEntries[i].setEnabled(false);
-		    }
-		}
-	    });
-	    createLabel(databasePoolGroup, CommonMessages.dataBasePoolName, 1);
-	    dataBasePoolCombo = new Combo(databasePoolGroup, SWT.NONE);
-	    dataBasePoolCombo.setLayoutData(new GridData(GridData.FILL,
-		    GridData.FILL, true, false, 3, 1));
-	    populateList(dataBasePoolCombo);
-	    dataBasePoolCombo.select(0);
-
-	    GridData data2 = new GridData();
-	    data2.horizontalAlignment = GridData.FILL;
-	    data2.grabExcessHorizontalSpace = true;
-	    data2.horizontalSpan = 2;
-	    Group databaseGroup = new Group(composite, SWT.NONE);
-	    databaseGroup.setLayout(gridLayout);
-	    databaseGroup.setLayoutData(data2);
-	    buttons[1] = new Button(databaseGroup, SWT.RADIO);
-	    buttons[1].setText(CommonMessages.useDataBase);
-	    buttons[1].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
-		    true, false, 4, 1));
-	    buttons[1].addSelectionListener(new SelectionAdapter() {
-		public void widgetSelected(SelectionEvent event) {
-		    buttons[0].setSelection(false);
-		    dataBasePoolCombo.setEnabled(false);
-		    for (int i = 0; i < textEntries.length; i++) {
-			textEntries[i].setEnabled(true);
-		    }
-		}
-	    });
-	    createLabel(databaseGroup, CommonMessages.jdbcDriverClass, 1);
-	    textEntries[0] = createText(databaseGroup, 3);
-
-	    createLabel(databaseGroup, CommonMessages.jdbcURL, 1);
-	    textEntries[1] = createText(databaseGroup, 3);
-	    createLabel(databaseGroup, CommonMessages.jdbcUserName, 1);
-	    textEntries[2] = createText(databaseGroup, 3);
-	    createLabel(databaseGroup, CommonMessages.jdbcPassword, 1);
-	    textEntries[3] = createText(databaseGroup, 1);
-	    textEntries[3].setEchoChar('*');
-	    createLabel(databaseGroup, CommonMessages.confirmPassword, 1);
-	    textEntries[4] = createText(databaseGroup, 1);
-	    textEntries[4].setEchoChar('*');
-
-	    dataBasePoolCombo.setEnabled(true);
-	    for (int i = 0; i < textEntries.length; i++) {
-		textEntries[i].setEnabled(false);
-	    }
-
-	    if (eObject != null) {
-		Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
-		if (getOptionValue(gbean, "dataSourceName") != null) {
-		    this.buttons[0].setSelection(true);
-		    this.dataBasePoolCombo.setEnabled(true);
-		    this.dataBasePoolCombo.setText(getOptionValue(gbean,
-			    "dataSourceName"));
-
-		    this.buttons[1].setSelection(false);
-		    for (int i = 0; i < textEntries.length; i++) {
-			this.textEntries[i].setEnabled(false);
-		    }
+	@Override
+	protected String getEditWizardWindowTitle() {
+		return "Edit Security Realm";// TODO put into message
+	}
 
+	public boolean performFinish() {
+		boolean isedit = false;
+		JAXBElement<?> plan = this.section.getPlan();
+		ObjectFactory objectFactory = new ObjectFactory();
+		// all pages
+		SecurityRealmBasicPage page0 = (SecurityRealmBasicPage) this
+				.getPage("SecurityRealmBasicPage");
+		PropertiesFileRealmPage page1 = (PropertiesFileRealmPage) this
+				.getPage("PropertiesFileRealmPage");
+		SelectSQLPage page2 = (SelectSQLPage) this.getPage("SelectSQLPage");
+		DBConnectionPage page3 = (DBConnectionPage) this
+				.getPage("DBConnectionPage");
+		LDAPConnectionPage page4 = (LDAPConnectionPage) this
+				.getPage("LDAPConnectionPage");
+		LDAPSearchPage page5 = (LDAPSearchPage) this.getPage("LDAPSearchPage");
+
+		// password not match , popup a dialog
+		if (!page3.textEntries[3].getText().equals(
+				page3.textEntries[4].getText())) {
+			Status status = new Status(IStatus.WARNING, "Login Error", 0,
+					"Password provided in both fields do not match", null);
+			ErrorDialog.openError(this.getShell(), "Login Error",
+					"Invalid Login Details", status);
+			return false;
+		}
+
+		// set a gbean according to the input from wizard
+		Gbean gbean = null;
+		if (eObject != null) {
+			gbean = (Gbean) ((JAXBElement) eObject).getValue();
+			isedit = true;
 		} else {
-		    this.buttons[1].setSelection(true);
-		    this.buttons[0].setSelection(false);
-		    this.dataBasePoolCombo.setEnabled(false);
-		    for (int i = 0; i < textEntries.length; i++) {
-			textEntries[i].setEnabled(true);
-		    }
-
-		    if (getOptionValue(gbean, "jdbcDriver") != null) {
-			this.textEntries[0].setText(getOptionValue(gbean,
-				"jdbcDriver"));
-		    }
-		    if (getOptionValue(gbean, "jdbcURL") != null) {
-			this.textEntries[1].setText(getOptionValue(gbean,
-				"jdbcURL"));
-		    }
-		    if (getOptionValue(gbean, "jdbcUser") != null) {
-			this.textEntries[2].setText(getOptionValue(gbean,
-				"jdbcUser"));
-		    }
-		    if (getOptionValue(gbean, "jdbcPassword") != null) {
-			this.textEntries[3].setText(getOptionValue(gbean,
-				"jdbcPassword"));
-			this.textEntries[4].setText(getOptionValue(gbean,
-				"jdbcPassword"));
-		    }
-		}
-
-	    }
-
-	    setControl(composite);
-
-	}
-
-	private void populateList(Combo combo) {
-	    ArrayList<Pattern> dbPool = GeronimoServerInfo.getInstance()
-		    .getJdbcConnectionPools();
-	    for (int i = 0; i < dbPool.size(); i++) {
-		String str = dbPool.get(i).getName();
-		combo.add(str);
-	    }
-	}
-
-	public boolean canFlipToNextPage() {
-	    // no next page for this path through the wizard
-	    return false;
-	}
-
-	public IWizardPage getNextPage() {
-	    return null;
-	}
-    }
-
-    public class LDAPConnectionPage extends WizardPage {
-	Text[] text = new Text[4];
-	Combo[] combo = new Combo[3];
-
-	protected LDAPConnectionPage(String pageName) {
-	    super(pageName);
-	    setTitle("LDAP Realm Connection");
-	    setDescription("Edit settings for LDAP server connection");
-	}
-
-	public void createControl(Composite parent) {
-	    Composite composite = new Composite(parent, SWT.NULL);
-	    GridLayout layout = new GridLayout();
-	    layout.numColumns = 2;
-	    composite.setLayout(layout);
-	    GridData data = new GridData();
-	    data.verticalAlignment = GridData.FILL;
-	    data.horizontalAlignment = GridData.FILL;
-	    data.widthHint = 300;
-	    composite.setLayoutData(data);
-
-	    Group connectionGroup = new Group(composite, SWT.NULL);
-	    connectionGroup.setText("LDAP server connection");
-	    GridLayout gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    GridData data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.horizontalSpan = 2;
-	    connectionGroup.setLayout(gridLayout);
-	    connectionGroup.setLayoutData(data1);
-
-	    createLabel(connectionGroup, "Initial Context Factory:", 1);
-	    combo[0] = new Combo(connectionGroup, SWT.NONE);
-	    combo[0].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
-		    true, false, 3, 1));
-	    combo[0].add("com.sun.jndi.ldap.LdapCtxFactory");
-	    createLabel(connectionGroup, "Connection URL:", 1);
-	    combo[1] = new Combo(connectionGroup, SWT.NONE);
-	    combo[1].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
-		    true, false, 3, 1));
-	    combo[1].add("ldap://localhost:1389");
-	    combo[1].add("ldap://localhost:389");
-	    createLabel(connectionGroup, "Connect Username:", 1);
-	    text[0] = createText(connectionGroup, 3);
-	    text[0].setText("system");
-	    createLabel(connectionGroup, "Connect Password:", 1);
-	    text[1] = createText(connectionGroup, 3);
-	    text[1].setEchoChar('*');
-	    text[1].setText("manager");
-	    createLabel(connectionGroup, "Confirm Password:", 1);
-	    text[2] = createText(connectionGroup, 3);
-	    text[2].setEchoChar('*');
-	    text[2].setText("manager");
-	    createLabel(connectionGroup, "Connect Protocol:", 1);
-	    text[3] = createText(connectionGroup, 1);
-	    createLabel(connectionGroup, "Authentication:", 1);
-	    combo[2] = new Combo(connectionGroup, SWT.NONE);
-	    combo[2].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
-		    true, false, 1, 1));
-	    combo[2].add("none");
-	    combo[2].add("simple");
-	    combo[2].add("strong");
-	    combo[2].select(1);
-
-	    if (eObject != null) {
-		Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
-		if (getOptionValue(gbean, "initialContextFactory") != null) {
-		    this.combo[0].setText(getOptionValue(gbean,
-			    "initialContextFactory"));
-		}
-		if (getOptionValue(gbean, "connectionURL") != null) {
-		    this.combo[1]
-			    .setText(getOptionValue(gbean, "connectionURL"));
-		}
-		if (getOptionValue(gbean, "connectionUsername") != null) {
-		    this.text[0].setText(getOptionValue(gbean,
-			    "connectionUsername"));
-		}
-		if (getOptionValue(gbean, "connectionPassword") != null) {
-		    this.text[1].setText(getOptionValue(gbean,
-			    "connectionPassword"));
-		    this.text[2].setText(getOptionValue(gbean,
-			    "connectionPassword"));
-		}
-		if (getOptionValue(gbean, "connectionProtocol") != null) {
-		    this.text[3].setText(getOptionValue(gbean,
-			    "connectionProtocol"));
-		}
-		if (getOptionValue(gbean, "authentication") != null) {
-		    this.combo[2].setText(getOptionValue(gbean,
-			    "authentication"));
-		}
-
-	    }
-
-	    setControl(composite);
-	}
-
-	public IWizardPage getNextPage() {
-	    return this.getWizard().getPage("LDAPSearchPage");
-	}
-
-    }
-
-    public class LDAPSearchPage extends WizardPage {
-	Text[] text = new Text[6];
-	Button userSearchSubtree, roleSearchSubtree;
-
-	protected LDAPSearchPage(String pageName) {
-	    super(pageName);
-	    setTitle("LDAP Realm Search Configuration");
-	    setDescription("Edit settings for LDAP realm search");
-	}
-
-	public void createControl(Composite parent) {
-	    Composite composite = new Composite(parent, SWT.NULL);
-	    GridLayout layout = new GridLayout();
-	    layout.numColumns = 2;
-	    composite.setLayout(layout);
-	    GridData data = new GridData();
-	    data.verticalAlignment = GridData.FILL;
-	    data.horizontalAlignment = GridData.FILL;
-	    data.widthHint = 300;
-	    composite.setLayoutData(data);
-
-	    Group userGroup = new Group(composite, SWT.NULL);
-	    userGroup.setText("User Search Configuration");
-	    GridLayout gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    GridData data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.horizontalSpan = 2;
-	    userGroup.setLayout(gridLayout);
-	    userGroup.setLayoutData(data1);
-
-	    createLabel(userGroup, "User Base:", 1);
-	    text[0] = createText(userGroup, 3);
-	    createLabel(userGroup, "User Search Matching:", 1);
-	    text[1] = createText(userGroup, 3);
-	    userSearchSubtree = new Button(userGroup, SWT.CHECK);
-	    userSearchSubtree.setText("User Search Subtree");
-	    userSearchSubtree.setLayoutData(new GridData(GridData.FILL,
-		    GridData.FILL, true, false, 4, 1));
-	    userSearchSubtree.setSelection(true);
-
-	    Group roleGroup = new Group(composite, SWT.NULL);
-	    roleGroup.setText("Role Search Configuration");
-	    gridLayout = new GridLayout();
-	    gridLayout.numColumns = 4;
-	    data1 = new GridData();
-	    data1.horizontalAlignment = GridData.FILL;
-	    data1.grabExcessHorizontalSpace = true;
-	    data1.horizontalSpan = 2;
-	    roleGroup.setLayout(gridLayout);
-	    roleGroup.setLayoutData(data1);
-	    createLabel(roleGroup, "Role Base:", 1);
-	    text[2] = createText(roleGroup, 3);
-	    createLabel(roleGroup, "Role Name:", 1);
-	    text[3] = createText(roleGroup, 3);
-	    createLabel(roleGroup, "Role User Search String:", 1);
-	    text[4] = createText(roleGroup, 3);
-	    createLabel(roleGroup, "User Role Search String:", 1);
-	    text[5] = createText(roleGroup, 3);
-	    roleSearchSubtree = new Button(roleGroup, SWT.CHECK);
-	    roleSearchSubtree.setText("Role Search Subtree");
-	    roleSearchSubtree.setLayoutData(new GridData(GridData.FILL,
-		    GridData.FILL, true, false, 4, 1));
-	    roleSearchSubtree.setSelection(true);
-
-	    if (eObject != null) {
-		Gbean gbean = (Gbean) ((JAXBElement<?>) eObject).getValue();
-		if (getOptionValue(gbean, "userBase") != null) {
-		    text[0].setText(getOptionValue(gbean, "userBase"));
-		}
-		if (getOptionValue(gbean, "userSearchMatching") != null) {
-		    text[1]
-			    .setText(getOptionValue(gbean, "userSearchMatching"));
-		}
-		if (getOptionValue(gbean, "userSearchSubtree") != null) {
-		    this.userSearchSubtree.setSelection(Boolean
-			    .parseBoolean(getOptionValue(gbean,
-				    "userSearchSubtree")));
-		}
-		if (getOptionValue(gbean, "roleBase") != null) {
-		    text[2].setText(getOptionValue(gbean, "roleBase"));
-		}
-		if (getOptionValue(gbean, "roleName") != null) {
-		    text[3].setText(getOptionValue(gbean, "roleName"));
-		}
-		if (getOptionValue(gbean, "roleSearchMatching") != null) {
-		    text[4]
-			    .setText(getOptionValue(gbean, "roleSearchMatching"));
-		}
-		if (getOptionValue(gbean, "userRoleName") != null) {
-		    text[5].setText(getOptionValue(gbean, "userRoleName"));
-		}
-		if (getOptionValue(gbean, "roleSearchSubtree") != null) {
-		    this.userSearchSubtree.setSelection(Boolean
-			    .parseBoolean(getOptionValue(gbean,
-				    "roleSearchSubtree")));
-		}
-	    }
-
-	    setControl(composite);
-	}
-
-	public boolean canFlipToNextPage() {
-	    // no next page for this path through the wizard
-	    return false;
-	}
-
-	public IWizardPage getNextPage() {
-	    return null;
-	}
-
-    }
-
-    private String getAttributeValue(Gbean gbean, String attributeName) {
-	try {
-	    List<JAXBElement<?>> elelist = gbean
-		    .getAttributeOrXmlAttributeOrReference();
-	    for (JAXBElement<?> ele : elelist) {
-		if (Attribute.class.isInstance(ele.getValue())
-			&& ((Attribute) ele.getValue()).getName().equals(
-				attributeName)) {
-		    return ((Attribute) ele.getValue()).getValue();
-		}
-	    }
-	} catch (NullPointerException e) {
-	    // ignore
-	}
-	return null;
-    }
-
-    private String getLoginModuleClass(Gbean gbean) {
-
-	try {
-	    List<JAXBElement<?>> elelist = gbean
-		    .getAttributeOrXmlAttributeOrReference();
-	    for (JAXBElement<?> ele : elelist) {
-		if (XmlAttributeType.class.isInstance(ele.getValue())
-			&& ((XmlAttributeType) ele.getValue()).getName()
-				.equals("LoginModuleConfiguration")) {
-		    LoginModule loginModule = (LoginModule) ((LoginConfig) ((XmlAttributeType) ele
-			    .getValue()).getAny())
-			    .getLoginModuleRefOrLoginModule().get(0);
-		    return loginModule.getLoginModuleClass();
-		}
-	    }
-	    return null;
-	} catch (NullPointerException e) {
-	    // ignore
-	}
-
-	return null;
-    }
-
-    private String getOptionValue(Gbean gbean, String optionName) {
-	try {
-	    List<JAXBElement<?>> elelist = gbean
-		    .getAttributeOrXmlAttributeOrReference();
-	    for (JAXBElement<?> ele : elelist) {
-		if (XmlAttributeType.class.isInstance(ele.getValue())
-			&& ((XmlAttributeType) ele.getValue()).getName()
-				.equals("LoginModuleConfiguration")) {
-		    LoginModule loginModule = (LoginModule) ((LoginConfig) ((XmlAttributeType) ele
-			    .getValue()).getAny())
-			    .getLoginModuleRefOrLoginModule().get(0);
-		    List<Option> options = loginModule.getOption();
-		    for (Option opt : options) {
-			if (opt.getName().equals(optionName))
-			    return opt.getValue();
-		    }
-		}
-	    }
-	    return null;
-	} catch (NullPointerException e) {
-	    // ignore
-	}
-
-	return null;
-    }
-
-    protected Label createLabel(Composite composite, String value, int span) {
-	Label label = new Label(composite, SWT.NONE);
-	label.setText(value);
-	GridData labelData = new GridData();
-	labelData.horizontalAlignment = GridData.FILL;
-	labelData.horizontalSpan = span;
-	label.setLayoutData(labelData);
-	return label;
-    }
-
-    protected Text createText(Composite composite, int span) {
-	Text text = new Text(composite, SWT.BORDER);
-	GridData textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-		| GridData.VERTICAL_ALIGN_FILL);
-	textData.grabExcessHorizontalSpace = true;
-	textData.widthHint = 100;
-	textData.horizontalSpan = span;
-	text.setLayoutData(textData);
-	return text;
-    }
+			gbean = new Gbean();// create a new gbean
+			eObject = objectFactory.createGbean(gbean);
+		}
+
+		// add the data into gbean
+		String realmName = page0.textEntries[0].getText() == null ? ""
+				: page0.textEntries[0].getText();
+		gbean.setName(realmName);// set the gbean name the same as realm name
+		gbean
+				.setClazz("org.apache.geronimo.security.realm.GenericSecurityRealm");// TODO
+		// message
+
+		List<JAXBElement<?>> elelist = gbean
+				.getAttributeOrXmlAttributeOrReference();
+
+		// set the attribute
+		JAXBElement<Attribute> attributeElement = getAttributeElement(elelist);
+		if (attributeElement == null) {
+			attributeElement = objectFactory.createGbeanAttribute(null);
+			elelist.add(attributeElement);
+		}
+		Attribute attribute = new Attribute();
+		attribute.setName("realmName");
+		attribute.setValue(realmName);
+		attributeElement.setValue(attribute);
+
+		// set the reference
+		JAXBElement<Reference> referenceElement = getReferenceElement(elelist);
+		if (referenceElement == null) {
+			referenceElement = objectFactory.createGbeanReference(null);
+			elelist.add(referenceElement);
+		}
+		Reference ref = new Reference();
+		ref.setName("ServerInfo");
+		ref.setCustomFoo("ServerInfo");
+		referenceElement.setValue(ref);
+
+		// set the xml-reference
+		JAXBElement<XmlAttributeType> xmlrefElement = getXmlReferenceElement(elelist);
+		if (xmlrefElement == null) {
+			xmlrefElement = objectFactory.createGbeanXmlReference(null);
+			elelist.add(xmlrefElement);
+		}
+		XmlAttributeType xmlAtttribute = new XmlAttributeType();
+		xmlAtttribute.setName("LoginModuleConfiguration");
+		xmlrefElement.setValue(xmlAtttribute);
+
+		LoginConfig config = new LoginConfig();
+		xmlAtttribute.setAny(config);
+		LoginModule loginModule = new LoginModule();
+		config.getLoginModuleRefOrLoginModule().add(loginModule);
+		loginModule.setControlFlag(ControlFlag.fromValue("REQUIRED"));
+		loginModule.setWrapPrincipals(false);
+		loginModule.setLoginDomainName(realmName);
+
+		String realmType = page0.combo.getText().trim();
+		if (realmType.equals("Properties File Realm")) {
+			loginModule
+					.setLoginModuleClass("org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule");
+
+			String usersfile = page1.textEntries[0].getText().trim();
+			Option usersfileopt = createOption("usersURI", usersfile);
+
+			String groupsfile = page1.textEntries[1].getText().trim();
+			Option groupsfileopt = createOption("groupsURI", groupsfile);
+
+			String algorithm = page1.textEntries[2].getText();
+			Option algorithmopt = createOption("digest", algorithm);
+
+			String encoding = page1.textEntries[3].getText();
+			Option encodingopt = createOption("encoding", encoding);
+
+			loginModule.getOption().add(usersfileopt);
+			loginModule.getOption().add(groupsfileopt);
+			if (algorithm != null)
+				loginModule.getOption().add(algorithmopt);
+			if (encoding != null)
+				loginModule.getOption().add(encodingopt);
+
+		} else if (realmType.equals("SQL Realm")) {
+			loginModule
+					.setLoginModuleClass("org.apache.geronimo.security.realm.providers.SQLLoginModule");
+
+			String selectUsers = page2.textEntries[0].getText().trim();
+			Option selectUsersopt = createOption("userSelect", selectUsers);
+
+			String selectGroups = page2.textEntries[1].getText().trim();
+			Option selectGroupsopt = createOption("groupSelect", selectGroups);
+
+			String algorithm = page2.textEntries[2].getText().trim();
+			Option algorithmopt = createOption("digest", algorithm);
+
+			String encoding = page2.textEntries[3].getText().trim();
+			Option encodingopt = createOption("encoding", encoding);
+
+			if (page3.buttons[0].getSelection()) {
+				String dsname = page3.dataBasePoolCombo.getText();
+				Option dsnameopt = createOption("dataSourceName", dsname);
+				loginModule.getOption().add(dsnameopt);
+			} else if (page3.buttons[1].getSelection()) {
+
+				String jdbcDriverClass = page3.textEntries[0].getText().trim();
+				Option jdbcDriverClassopt = createOption("jdbcDriver",
+						jdbcDriverClass);
+
+				String jdbcURL = page3.textEntries[1].getText().trim();
+				Option jdbcURLopt = createOption("jdbcURL", jdbcURL);
+
+				String userName = page3.textEntries[2].getText().trim();
+				Option userNameopt = createOption("jdbcUser", userName);
+
+				String password = page3.textEntries[3].getText().trim();
+				Option passwordopt = createOption("jdbcPassword", password);
+
+				loginModule.getOption().add(jdbcDriverClassopt);
+				loginModule.getOption().add(jdbcURLopt);
+				loginModule.getOption().add(userNameopt);
+				loginModule.getOption().add(passwordopt);
+
+			}
+
+			loginModule.getOption().add(selectUsersopt);
+			loginModule.getOption().add(selectGroupsopt);
+			loginModule.getOption().add(algorithmopt);
+			loginModule.getOption().add(encodingopt);
+
+		} else if (realmType.equals("LDAP Realm")) {
+			loginModule
+					.setLoginModuleClass("org.apache.geronimo.security.realm.providers.LDAPLoginModule");
+			String initialContextFactory = page4.combo[0].getText().trim();
+			loginModule.getOption()
+					.add(
+							createOption("initialContextFactory",
+									initialContextFactory));
+			String connectionURL = page4.combo[1].getText();
+			loginModule.getOption().add(
+					createOption("connectionURL", connectionURL));
+			String connectionUsername = page4.text[0].getText();
+			loginModule.getOption().add(
+					createOption("connectionUsername", connectionUsername));
+			String connectionPassword = page4.text[1].getText();
+			loginModule.getOption().add(
+					createOption("connectionPassword", connectionPassword));
+			String connectionProtocol = page4.text[3].getText();
+			loginModule.getOption().add(
+					createOption("connectionProtocol", connectionProtocol));
+			String authentication = page4.combo[2].getText();
+			loginModule.getOption().add(
+					createOption("authentication", authentication));
+
+			String userBase = page5.text[0].getText();
+			loginModule.getOption().add(createOption("userBase", userBase));
+			String userSearchMatching = page5.text[1].getText();
+			loginModule.getOption().add(
+					createOption("userSearchMatching", userSearchMatching));
+			String userSearchSubtree = Boolean.toString(page5.userSearchSubtree
+					.getSelection());
+			loginModule.getOption().add(
+					createOption("userSearchSubtree", userSearchSubtree));
+			String roleBase = page5.text[2].getText();
+			loginModule.getOption().add(createOption("roleBase", roleBase));
+			String roleName = page5.text[3].getText();
+			loginModule.getOption().add(createOption("roleName", roleName));
+			String roleSearchMatching = page5.text[4].getText();
+			loginModule.getOption().add(
+					createOption("roleSearchMatching", roleSearchMatching));
+			String userRoleName = page5.text[5].getText();
+			loginModule.getOption().add(
+					createOption("userRoleName", userRoleName));
+			String roleSearchSubtree = Boolean.toString(page5.roleSearchSubtree
+					.getSelection());
+			loginModule.getOption().add(
+					createOption("roleSearchSubtree", roleSearchSubtree));
+		}
+
+		if (isedit)
+			return true;
+
+		// is add, need to add the gbean into plan
+		Object planValue = plan.getValue();
+		if (Application.class.isInstance(planValue)) {
+			Application application = (Application) planValue;
+
+			// set dependency
+			Environment env = application.getEnvironment();
+			if (env == null) {
+				env = new Environment();
+				application.setEnvironment(env);
+			}
+			setDependency(env);
+
+			// add the gbean into plan
+			JAXBElement<Gbean> gbeanElement = objectFactory.createGbean(gbean);
+			application.getService().add(gbeanElement);
+		} else if (WebApp.class.isInstance(planValue)) {
+			WebApp webapp = (WebApp) planValue;
+
+			// set dependency
+			Environment env = webapp.getEnvironment();
+			if (env == null) {
+				env = new Environment();
+				webapp.setEnvironment(env);
+			}
+			setDependency(env);
+
+			// add the gbean into plan
+			JAXBElement<Gbean> gbeanElement = objectFactory.createGbean(gbean);
+			webapp.getServiceOrPersistence().add(gbeanElement);
+		} else if (OpenejbJar.class.isInstance(planValue)) {
+			OpenejbJar openejbJar = (OpenejbJar) planValue;
+
+			// set dependency
+			Environment env = openejbJar.getEnvironment();
+			if (env == null) {
+				env = new Environment();
+				openejbJar.setEnvironment(env);
+			}
+			setDependency(env);
+
+			// add the gbean into plan
+			JAXBElement<Gbean> gbeanElement = objectFactory.createGbean(gbean);
+			openejbJar.getService().add(gbeanElement);
+		}
+
+		return true;
+	}
+
+	private void setDependency(Environment env) {
+		Dependencies dependencies = env.getDependencies();
+		if (dependencies == null) {
+			dependencies = new Dependencies();
+			env.setDependencies(dependencies);
+		}
+		Dependency securityDependency = new Dependency();
+		securityDependency.setGroupId("org.apache.geronimo.framework");
+		securityDependency.setArtifactId("j2ee-security");
+		securityDependency.setType("car");
+		if (!dependencies.getDependency().contains(securityDependency)) {
+			dependencies.getDependency().add(securityDependency);
+		}
+	}
+
+	private Option createOption(String name, String value) {
+		Option option = new Option();
+		option.setName(name);
+		option.setValue(value);
+		return option;
+	}
+
+	private JAXBElement<Attribute> getAttributeElement(List<JAXBElement<?>> list) {
+		for (JAXBElement<?> ele : list) {
+			if (Attribute.class.isInstance(ele.getValue())
+					&& ((Attribute) ele.getValue()).getName().equals(
+							"realmName")) {
+				return (JAXBElement<Attribute>) ele;
+			}
+		}
+		return null;
+	}
+
+	private JAXBElement<Reference> getReferenceElement(List<JAXBElement<?>> list) {
+		for (JAXBElement<?> ele : list) {
+			if (Reference.class.isInstance(ele.getValue())
+					&& ((Reference) ele.getValue()).getName().equals(
+							"ServerInfo")) {
+				return (JAXBElement<Reference>) ele;
+			}
+		}
+		return null;
+	}
+
+	private JAXBElement<XmlAttributeType> getXmlReferenceElement(
+			List<JAXBElement<?>> list) {
+		for (JAXBElement<?> ele : list) {
+			if (XmlAttributeType.class.isInstance(ele.getValue())
+					&& ((XmlAttributeType) ele.getValue()).getName().equals(
+							"LoginModuleConfiguration")) {
+				return (JAXBElement<XmlAttributeType>) ele;
+			}
+		}
+		return null;
+	}
+
+	public class SecurityRealmBasicPage extends WizardPage {
+		private int recordedRealmType = -2;
+
+		Text textEntries[] = new Text[1];
+		Combo combo = null;
+
+		public SecurityRealmBasicPage(String pageName) {
+			super(pageName);
+			setTitle(CommonMessages.wizardFirstPageTitle_SecurityRealm);
+			setDescription(CommonMessages.wizardFirstPageDescription_SecurityRealm);
+		}
+
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 2;
+			composite.setLayout(layout);
+			GridData data = new GridData();
+			data.verticalAlignment = GridData.FILL;
+			data.horizontalAlignment = GridData.FILL;
+			data.widthHint = 300;
+			composite.setLayoutData(data);
+
+			Group basicGroup = new Group(composite, SWT.NONE);
+			basicGroup.setText("Basic Settings");
+			GridLayout gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			GridData data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.grabExcessVerticalSpace = true;
+			data1.horizontalSpan = 2;
+			basicGroup.setLayout(gridLayout);
+			data1.grabExcessHorizontalSpace = true;
+			basicGroup.setLayoutData(data1);
+			createLabel(basicGroup, CommonMessages.realmName, 1);
+			textEntries[0] = createText(basicGroup, 3);
+			createLabel(basicGroup, CommonMessages.realmType, 1);
+			combo = new Combo(basicGroup, SWT.NONE | SWT.READ_ONLY);
+			combo.setLayoutData(new GridData(GridData.FILL, GridData.FILL,
+					true, false, 3, 1));
+			combo.add("Properties File Realm");
+			combo.add("SQL Realm");
+			combo.add("LDAP Realm");
+			combo.select(0);
+
+			if (eObject != null) {
+				Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
+				String realmName = getAttributeValue(gbean, "realmName");
+				this.textEntries[0].setText(realmName == null ? "" : realmName);
+				String loginModuleClass = getLoginModuleClass(gbean);
+				if ("org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule"
+						.equals(loginModuleClass)) {
+					this.combo.select(0);
+				} else if ("org.apache.geronimo.security.realm.providers.SQLLoginModule"
+						.equals(loginModuleClass)) {
+					this.combo.select(1);
+				} else if ("org.apache.geronimo.security.realm.providers.LDAPLoginModule"
+						.equals(loginModuleClass)) {
+					this.combo.select(2);
+				}
+			}
+			setControl(composite);
+		}
+
+		public int getRecordedRealmType() {
+			return recordedRealmType;
+		}
+
+		public void setRecordedRealmType(int recordedRealmType) {
+			this.recordedRealmType = recordedRealmType;
+		}
+
+		public int getRealmTypeSelectionIndex() {
+			if (combo != null) {
+				return combo.getSelectionIndex();
+			} else {
+				return -1;
+			}
+		}
+
+		@Override
+		public IWizardPage getNextPage() {
+			if (combo.getText().trim().equals("Properties File Realm")) {// properties
+				// file
+				// type
+				return this.getWizard().getPage("PropertiesFileRealmPage");
+			} else if (combo.getText().trim().equals("SQL Realm")) {// sql realm
+				// type
+				return this.getWizard().getPage("SelectSQLPage");
+			} else if (combo.getText().trim().equals("LDAP Realm")) {// ldap
+				// realm
+				// type
+				return this.getWizard().getPage("LDAPConnectionPage");
+			}
+			return null;
+		}
+	}
+
+	public class PropertiesFileRealmPage extends WizardPage {
+
+		Text textEntries[] = new Text[4];
+
+		public PropertiesFileRealmPage(String pageName) {
+			super(pageName);
+			setTitle("Properties File Realm");
+			setDescription("Edit settings for users file and groups file's pathes");
+		}
+
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 2;
+			composite.setLayout(layout);
+			GridData data = new GridData();
+			data.verticalAlignment = GridData.FILL;
+			data.horizontalAlignment = GridData.FILL;
+			data.widthHint = 300;
+			composite.setLayoutData(data);
+
+			Group uriGroup = new Group(composite, SWT.NONE);
+			uriGroup.setText("Files's URI");
+			GridLayout gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			uriGroup.setLayout(gridLayout);
+			GridData data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.grabExcessVerticalSpace = true;
+			data1.horizontalSpan = 2;
+			data1.grabExcessHorizontalSpace = true;
+			uriGroup.setLayoutData(data1);
+			createLabel(uriGroup, "Users File URI:", 1);
+			textEntries[0] = createText(uriGroup, 3);
+			createLabel(uriGroup, "Groups File URI:", 1);
+			textEntries[1] = createText(uriGroup, 3);
+
+			Group digestGroup = new Group(composite, SWT.NONE);
+			digestGroup.setText("Digest Configuration");
+			gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			digestGroup.setLayout(gridLayout);
+			data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.grabExcessVerticalSpace = true;
+			data1.horizontalSpan = 2;
+			data1.grabExcessHorizontalSpace = true;
+			digestGroup.setLayoutData(data1);
+			createLabel(digestGroup, "Digest Algorithm:", 1);
+			textEntries[2] = createText(digestGroup, 3);
+			createLabel(digestGroup, "Digest Encoding:", 1);
+			textEntries[3] = createText(digestGroup, 3);
+
+			if (eObject != null) {
+				Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
+				if (getOptionValue(gbean, "usersURI") != null) {
+					textEntries[0].setText(getOptionValue(gbean, "usersURI"));
+				}
+				if (getOptionValue(gbean, "groupsURI") != null) {
+					textEntries[1].setText(getOptionValue(gbean, "groupsURI"));
+				}
+				if (getOptionValue(gbean, "digest") != null) {
+					textEntries[2].setText(getOptionValue(gbean, "digest"));
+				}
+				if (getOptionValue(gbean, "encoding") != null) {
+					textEntries[3].setText(getOptionValue(gbean, "encoding"));
+				}
+			}
+
+			setControl(composite);
+		}
+
+		public boolean canFlipToNextPage() {
+			// no next page for this path through the wizard
+			return false;
+		}
+
+		public IWizardPage getNextPage() {
+			return null;
+		}
+	}
+
+	public class SelectSQLPage extends WizardPage {
+
+		Text textEntries[] = new Text[4];
+
+		public SelectSQLPage(String pageName) {
+			super(pageName);
+			setTitle("SQL Realm");
+			setDescription("Edit settings for user and group select sql");
+		}
+
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 2;
+			composite.setLayout(layout);
+			GridData data = new GridData();
+			data.verticalAlignment = GridData.FILL;
+			data.horizontalAlignment = GridData.FILL;
+			data.widthHint = 300;
+			composite.setLayoutData(data);
+
+			Group uriGroup = new Group(composite, SWT.NONE);
+			uriGroup.setText("Select SQL");
+			GridLayout gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			uriGroup.setLayout(gridLayout);
+			GridData data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.grabExcessVerticalSpace = true;
+			data1.horizontalSpan = 2;
+			data1.grabExcessHorizontalSpace = true;
+			uriGroup.setLayoutData(data1);
+			createLabel(uriGroup, "Users Select SQL:", 1);
+			textEntries[0] = createText(uriGroup, 3);
+			createLabel(uriGroup, "Groups Select SQL:", 1);
+			textEntries[1] = createText(uriGroup, 3);
+
+			Group digestGroup = new Group(composite, SWT.NONE);
+			digestGroup.setText("Digest Configuration");
+			gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			digestGroup.setLayout(gridLayout);
+			data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.grabExcessVerticalSpace = true;
+			data1.horizontalSpan = 2;
+			data1.grabExcessHorizontalSpace = true;
+			digestGroup.setLayoutData(data1);
+			createLabel(digestGroup, "Digest Algorithm:", 1);
+			textEntries[2] = createText(digestGroup, 3);
+			createLabel(digestGroup, "Digest Encoding:", 1);
+			textEntries[3] = createText(digestGroup, 3);
+
+			if (eObject != null) {
+				Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
+				if (getOptionValue(gbean, "userSelect") != null) {
+					textEntries[0].setText(getOptionValue(gbean, "userSelect"));
+				}
+				if (getOptionValue(gbean, "groupSelect") != null) {
+					textEntries[1]
+							.setText(getOptionValue(gbean, "groupSelect"));
+				}
+				if (getOptionValue(gbean, "digest") != null) {
+					textEntries[2].setText(getOptionValue(gbean, "digest"));
+				}
+				if (getOptionValue(gbean, "encoding") != null) {
+					textEntries[3].setText(getOptionValue(gbean, "encoding"));
+				}
+			}
+
+			setControl(composite);
+		}
+
+		@Override
+		public IWizardPage getNextPage() {
+			return this.getWizard().getPage("DBConnectionPage");
+		}
+
+	}
+
+	public class DBConnectionPage extends WizardPage {
+
+		Text textEntries[] = new Text[5];
+		Button buttons[] = new Button[2];
+		Combo dataBasePoolCombo;
+
+		protected DBConnectionPage(String pageName) {
+			super(pageName);
+
+			setTitle(CommonMessages.wizardSecondPageTitle_SecurityRealm);
+			setDescription(CommonMessages.wizardSecondPageDescription_SecurityRealm);
+		}
+
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 2;
+			composite.setLayout(layout);
+			GridData data = new GridData();
+			data.verticalAlignment = GridData.FILL;
+			data.horizontalAlignment = GridData.FILL;
+			data.widthHint = 300;
+			composite.setLayoutData(data);
+
+			Group databasePoolGroup = new Group(composite, SWT.NONE);
+			databasePoolGroup.setText(CommonMessages.dataBasePool);
+			GridLayout gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			GridData data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.horizontalSpan = 2;
+			databasePoolGroup.setLayout(gridLayout);
+			databasePoolGroup.setLayoutData(data1);
+			buttons[0] = new Button(databasePoolGroup, SWT.RADIO);
+			buttons[0].setSelection(true);
+			buttons[0].setText(CommonMessages.useDataBasePool);
+			buttons[0].setLayoutData(new GridData(GridData.FILL,
+					GridData.CENTER, true, false, 4, 1));
+			buttons[0].addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent event) {
+					buttons[1].setSelection(false);
+					dataBasePoolCombo.setEnabled(true);
+					for (int i = 0; i < textEntries.length; i++) {
+						textEntries[i].setEnabled(false);
+					}
+				}
+			});
+			createLabel(databasePoolGroup, CommonMessages.dataBasePoolName, 1);
+			dataBasePoolCombo = new Combo(databasePoolGroup, SWT.NONE);
+			dataBasePoolCombo.setLayoutData(new GridData(GridData.FILL,
+					GridData.FILL, true, false, 3, 1));
+			populateList(dataBasePoolCombo);
+			dataBasePoolCombo.select(0);
+
+			GridData data2 = new GridData();
+			data2.horizontalAlignment = GridData.FILL;
+			data2.grabExcessHorizontalSpace = true;
+			data2.horizontalSpan = 2;
+			Group databaseGroup = new Group(composite, SWT.NONE);
+			databaseGroup.setLayout(gridLayout);
+			databaseGroup.setLayoutData(data2);
+			buttons[1] = new Button(databaseGroup, SWT.RADIO);
+			buttons[1].setText(CommonMessages.useDataBase);
+			buttons[1].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
+					true, false, 4, 1));
+			buttons[1].addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent event) {
+					buttons[0].setSelection(false);
+					dataBasePoolCombo.setEnabled(false);
+					for (int i = 0; i < textEntries.length; i++) {
+						textEntries[i].setEnabled(true);
+					}
+				}
+			});
+			createLabel(databaseGroup, CommonMessages.jdbcDriverClass, 1);
+			textEntries[0] = createText(databaseGroup, 3);
+
+			createLabel(databaseGroup, CommonMessages.jdbcURL, 1);
+			textEntries[1] = createText(databaseGroup, 3);
+			createLabel(databaseGroup, CommonMessages.jdbcUserName, 1);
+			textEntries[2] = createText(databaseGroup, 3);
+			createLabel(databaseGroup, CommonMessages.jdbcPassword, 1);
+			textEntries[3] = createText(databaseGroup, 1);
+			textEntries[3].setEchoChar('*');
+			createLabel(databaseGroup, CommonMessages.confirmPassword, 1);
+			textEntries[4] = createText(databaseGroup, 1);
+			textEntries[4].setEchoChar('*');
+
+			dataBasePoolCombo.setEnabled(true);
+			for (int i = 0; i < textEntries.length; i++) {
+				textEntries[i].setEnabled(false);
+			}
+
+			if (eObject != null) {
+				Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
+				if (getOptionValue(gbean, "dataSourceName") != null) {
+					this.buttons[0].setSelection(true);
+					this.dataBasePoolCombo.setEnabled(true);
+					this.dataBasePoolCombo.setText(getOptionValue(gbean,
+							"dataSourceName"));
+
+					this.buttons[1].setSelection(false);
+					for (int i = 0; i < textEntries.length; i++) {
+						this.textEntries[i].setEnabled(false);
+					}
+
+				} else {
+					this.buttons[1].setSelection(true);
+					this.buttons[0].setSelection(false);
+					this.dataBasePoolCombo.setEnabled(false);
+					for (int i = 0; i < textEntries.length; i++) {
+						textEntries[i].setEnabled(true);
+					}
+
+					if (getOptionValue(gbean, "jdbcDriver") != null) {
+						this.textEntries[0].setText(getOptionValue(gbean,
+								"jdbcDriver"));
+					}
+					if (getOptionValue(gbean, "jdbcURL") != null) {
+						this.textEntries[1].setText(getOptionValue(gbean,
+								"jdbcURL"));
+					}
+					if (getOptionValue(gbean, "jdbcUser") != null) {
+						this.textEntries[2].setText(getOptionValue(gbean,
+								"jdbcUser"));
+					}
+					if (getOptionValue(gbean, "jdbcPassword") != null) {
+						this.textEntries[3].setText(getOptionValue(gbean,
+								"jdbcPassword"));
+						this.textEntries[4].setText(getOptionValue(gbean,
+								"jdbcPassword"));
+					}
+				}
+
+			}
+
+			setControl(composite);
+
+		}
+
+		private void populateList(Combo combo) {
+		    String runtimeVersion  = ((SecurityRealmSection)(SecurityRealmWizard.this.section)).getRuntimeVersion();
+			ArrayList<Pattern> dbPool = GeronimoServerInfoManager.getProvider(runtimeVersion)
+					.getJdbcConnectionPools();
+			for (int i = 0; i < dbPool.size(); i++) {
+				String str = dbPool.get(i).getName();
+				combo.add(str);
+			}
+		}
+
+		public boolean canFlipToNextPage() {
+			// no next page for this path through the wizard
+			return false;
+		}
+
+		public IWizardPage getNextPage() {
+			return null;
+		}
+	}
+
+	public class LDAPConnectionPage extends WizardPage {
+		Text[] text = new Text[4];
+		Combo[] combo = new Combo[3];
+
+		protected LDAPConnectionPage(String pageName) {
+			super(pageName);
+			setTitle("LDAP Realm Connection");
+			setDescription("Edit settings for LDAP server connection");
+		}
+
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 2;
+			composite.setLayout(layout);
+			GridData data = new GridData();
+			data.verticalAlignment = GridData.FILL;
+			data.horizontalAlignment = GridData.FILL;
+			data.widthHint = 300;
+			composite.setLayoutData(data);
+
+			Group connectionGroup = new Group(composite, SWT.NULL);
+			connectionGroup.setText("LDAP server connection");
+			GridLayout gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			GridData data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.horizontalSpan = 2;
+			connectionGroup.setLayout(gridLayout);
+			connectionGroup.setLayoutData(data1);
+
+			createLabel(connectionGroup, "Initial Context Factory:", 1);
+			combo[0] = new Combo(connectionGroup, SWT.NONE);
+			combo[0].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
+					true, false, 3, 1));
+			combo[0].add("com.sun.jndi.ldap.LdapCtxFactory");
+			createLabel(connectionGroup, "Connection URL:", 1);
+			combo[1] = new Combo(connectionGroup, SWT.NONE);
+			combo[1].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
+					true, false, 3, 1));
+			combo[1].add("ldap://localhost:1389");
+			combo[1].add("ldap://localhost:389");
+			createLabel(connectionGroup, "Connect Username:", 1);
+			text[0] = createText(connectionGroup, 3);
+			text[0].setText("system");
+			createLabel(connectionGroup, "Connect Password:", 1);
+			text[1] = createText(connectionGroup, 3);
+			text[1].setEchoChar('*');
+			text[1].setText("manager");
+			createLabel(connectionGroup, "Confirm Password:", 1);
+			text[2] = createText(connectionGroup, 3);
+			text[2].setEchoChar('*');
+			text[2].setText("manager");
+			createLabel(connectionGroup, "Connect Protocol:", 1);
+			text[3] = createText(connectionGroup, 1);
+			createLabel(connectionGroup, "Authentication:", 1);
+			combo[2] = new Combo(connectionGroup, SWT.NONE);
+			combo[2].setLayoutData(new GridData(GridData.FILL, GridData.FILL,
+					true, false, 1, 1));
+			combo[2].add("none");
+			combo[2].add("simple");
+			combo[2].add("strong");
+			combo[2].select(1);
+
+			if (eObject != null) {
+				Gbean gbean = (Gbean) ((JAXBElement) eObject).getValue();
+				if (getOptionValue(gbean, "initialContextFactory") != null) {
+					this.combo[0].setText(getOptionValue(gbean,
+							"initialContextFactory"));
+				}
+				if (getOptionValue(gbean, "connectionURL") != null) {
+					this.combo[1]
+							.setText(getOptionValue(gbean, "connectionURL"));
+				}
+				if (getOptionValue(gbean, "connectionUsername") != null) {
+					this.text[0].setText(getOptionValue(gbean,
+							"connectionUsername"));
+				}
+				if (getOptionValue(gbean, "connectionPassword") != null) {
+					this.text[1].setText(getOptionValue(gbean,
+							"connectionPassword"));
+					this.text[2].setText(getOptionValue(gbean,
+							"connectionPassword"));
+				}
+				if (getOptionValue(gbean, "connectionProtocol") != null) {
+					this.text[3].setText(getOptionValue(gbean,
+							"connectionProtocol"));
+				}
+				if (getOptionValue(gbean, "authentication") != null) {
+					this.combo[2].setText(getOptionValue(gbean,
+							"authentication"));
+				}
+
+			}
+
+			setControl(composite);
+		}
+
+		public IWizardPage getNextPage() {
+			return this.getWizard().getPage("LDAPSearchPage");
+		}
+
+	}
+
+	public class LDAPSearchPage extends WizardPage {
+		Text[] text = new Text[6];
+		Button userSearchSubtree, roleSearchSubtree;
+
+		protected LDAPSearchPage(String pageName) {
+			super(pageName);
+			setTitle("LDAP Realm Search Configuration");
+			setDescription("Edit settings for LDAP realm search");
+		}
+
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 2;
+			composite.setLayout(layout);
+			GridData data = new GridData();
+			data.verticalAlignment = GridData.FILL;
+			data.horizontalAlignment = GridData.FILL;
+			data.widthHint = 300;
+			composite.setLayoutData(data);
+
+			Group userGroup = new Group(composite, SWT.NULL);
+			userGroup.setText("User Search Configuration");
+			GridLayout gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			GridData data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.horizontalSpan = 2;
+			userGroup.setLayout(gridLayout);
+			userGroup.setLayoutData(data1);
+
+			createLabel(userGroup, "User Base:", 1);
+			text[0] = createText(userGroup, 3);
+			createLabel(userGroup, "User Search Matching:", 1);
+			text[1] = createText(userGroup, 3);
+			userSearchSubtree = new Button(userGroup, SWT.CHECK);
+			userSearchSubtree.setText("User Search Subtree");
+			userSearchSubtree.setLayoutData(new GridData(GridData.FILL,
+					GridData.FILL, true, false, 4, 1));
+			userSearchSubtree.setSelection(true);
+
+			Group roleGroup = new Group(composite, SWT.NULL);
+			roleGroup.setText("Role Search Configuration");
+			gridLayout = new GridLayout();
+			gridLayout.numColumns = 4;
+			data1 = new GridData();
+			data1.horizontalAlignment = GridData.FILL;
+			data1.grabExcessHorizontalSpace = true;
+			data1.horizontalSpan = 2;
+			roleGroup.setLayout(gridLayout);
+			roleGroup.setLayoutData(data1);
+			createLabel(roleGroup, "Role Base:", 1);
+			text[2] = createText(roleGroup, 3);
+			createLabel(roleGroup, "Role Name:", 1);
+			text[3] = createText(roleGroup, 3);
+			createLabel(roleGroup, "Role User Search String:", 1);
+			text[4] = createText(roleGroup, 3);
+			createLabel(roleGroup, "User Role Search String:", 1);
+			text[5] = createText(roleGroup, 3);
+			roleSearchSubtree = new Button(roleGroup, SWT.CHECK);
+			roleSearchSubtree.setText("Role Search Subtree");
+			roleSearchSubtree.setLayoutData(new GridData(GridData.FILL,
+					GridData.FILL, true, false, 4, 1));
+			roleSearchSubtree.setSelection(true);
+
+			if (eObject != null) {
+				Gbean gbean = (Gbean) ((JAXBElement<?>) eObject).getValue();
+				if (getOptionValue(gbean, "userBase") != null) {
+					text[0].setText(getOptionValue(gbean, "userBase"));
+				}
+				if (getOptionValue(gbean, "userSearchMatching") != null) {
+					text[1]
+							.setText(getOptionValue(gbean, "userSearchMatching"));
+				}
+				if (getOptionValue(gbean, "userSearchSubtree") != null) {
+					this.userSearchSubtree.setSelection(Boolean
+							.parseBoolean(getOptionValue(gbean,
+									"userSearchSubtree")));
+				}
+				if (getOptionValue(gbean, "roleBase") != null) {
+					text[2].setText(getOptionValue(gbean, "roleBase"));
+				}
+				if (getOptionValue(gbean, "roleName") != null) {
+					text[3].setText(getOptionValue(gbean, "roleName"));
+				}
+				if (getOptionValue(gbean, "roleSearchMatching") != null) {
+					text[4]
+							.setText(getOptionValue(gbean, "roleSearchMatching"));
+				}
+				if (getOptionValue(gbean, "userRoleName") != null) {
+					text[5].setText(getOptionValue(gbean, "userRoleName"));
+				}
+				if (getOptionValue(gbean, "roleSearchSubtree") != null) {
+					this.userSearchSubtree.setSelection(Boolean
+							.parseBoolean(getOptionValue(gbean,
+									"roleSearchSubtree")));
+				}
+			}
+
+			setControl(composite);
+		}
+
+		public boolean canFlipToNextPage() {
+			// no next page for this path through the wizard
+			return false;
+		}
+
+		public IWizardPage getNextPage() {
+			return null;
+		}
+
+	}
+
+	private String getAttributeValue(Gbean gbean, String attributeName) {
+		try {
+			List<JAXBElement<?>> elelist = gbean
+					.getAttributeOrXmlAttributeOrReference();
+			for (JAXBElement<?> ele : elelist) {
+				if (Attribute.class.isInstance(ele.getValue())
+						&& ((Attribute) ele.getValue()).getName().equals(
+								attributeName)) {
+					return ((Attribute) ele.getValue()).getValue();
+				}
+			}
+		} catch (NullPointerException e) {
+			// ignore
+		}
+		return null;
+	}
+
+	private String getLoginModuleClass(Gbean gbean) {
+
+		try {
+			List<JAXBElement<?>> elelist = gbean
+					.getAttributeOrXmlAttributeOrReference();
+			for (JAXBElement<?> ele : elelist) {
+				if (XmlAttributeType.class.isInstance(ele.getValue())
+						&& ((XmlAttributeType) ele.getValue()).getName()
+								.equals("LoginModuleConfiguration")) {
+					LoginModule loginModule = (LoginModule) ((LoginConfig) ((XmlAttributeType) ele
+							.getValue()).getAny())
+							.getLoginModuleRefOrLoginModule().get(0);
+					return loginModule.getLoginModuleClass();
+				}
+			}
+			return null;
+		} catch (NullPointerException e) {
+			// ignore
+		}
+
+		return null;
+	}
+
+	private String getOptionValue(Gbean gbean, String optionName) {
+		try {
+			List<JAXBElement<?>> elelist = gbean
+					.getAttributeOrXmlAttributeOrReference();
+			for (JAXBElement<?> ele : elelist) {
+				if (XmlAttributeType.class.isInstance(ele.getValue())
+						&& ((XmlAttributeType) ele.getValue()).getName()
+								.equals("LoginModuleConfiguration")) {
+					LoginModule loginModule = (LoginModule) ((LoginConfig) ((XmlAttributeType) ele
+							.getValue()).getAny())
+							.getLoginModuleRefOrLoginModule().get(0);
+					List<Option> options = loginModule.getOption();
+					for (Option opt : options) {
+						if (opt.getName().equals(optionName))
+							return opt.getValue();
+					}
+				}
+			}
+			return null;
+		} catch (NullPointerException e) {
+			// ignore
+		}
+
+		return null;
+	}
+
+	protected Label createLabel(Composite composite, String value, int span) {
+		Label label = new Label(composite, SWT.NONE);
+		label.setText(value);
+		GridData labelData = new GridData();
+		labelData.horizontalAlignment = GridData.FILL;
+		labelData.horizontalSpan = span;
+		label.setLayoutData(labelData);
+		return label;
+	}
+
+	protected Text createText(Composite composite, int span) {
+		Text text = new Text(composite, SWT.BORDER);
+		GridData textData = new GridData(GridData.HORIZONTAL_ALIGN_FILL
+				| GridData.VERTICAL_ALIGN_FILL);
+		textData.grabExcessHorizontalSpace = true;
+		textData.widthHint = 100;
+		textData.horizontalSpan = span;
+		text.setLayoutData(textData);
+		return text;
+	}
 }

Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java?rev=955877&r1=955876&r2=955877&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRoleMappingWizard.java Fri Jun 18 08:10:13 2010
@@ -27,8 +27,10 @@ import org.apache.geronimo.st.core.jaxb.
 import org.apache.geronimo.st.ui.CommonMessages;
 import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
 import org.apache.geronimo.st.ui.wizards.AbstractWizard;
-import org.apache.geronimo.st.v21.core.GeronimoServerInfo;
+import org.apache.geronimo.st.v21.core.GeronimoServerInfoManager;
 import org.apache.geronimo.st.v21.core.jaxb.JAXBObjectFactoryImpl;
+import org.apache.geronimo.st.v21.ui.sections.SecurityRealmSection;
+import org.apache.geronimo.st.v21.ui.sections.SecurityRoleMappingSection;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Combo;
@@ -63,8 +65,9 @@ public class SecurityRoleMappingWizard e
         this.section = section;
     }
 
-    protected static String[] getSecurityRealms() {
-        List<String> securityRealms = GeronimoServerInfo.getInstance().getSecurityRealms();
+    protected String[] getSecurityRealms() {
+        String runtimeVersion  = ((SecurityRoleMappingSection)(SecurityRoleMappingWizard.this.section)).getRuntimeVersion();
+        List<String> securityRealms = GeronimoServerInfoManager.getProvider(runtimeVersion).getSecurityRealms();
         return securityRealms.toArray(new String[securityRealms.size()]);
     }
 

Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/.classpath
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/.classpath?rev=955877&r1=955876&r2=955877&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/.classpath (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/.classpath Fri Jun 18 08:10:13 2010
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/META-INF/MANIFEST.MF?rev=955877&r1=955876&r2=955877&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/META-INF/MANIFEST.MF (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/META-INF/MANIFEST.MF Fri Jun 18 08:10:13 2010
@@ -3,11 +3,10 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.apache.geronimo.st.v22.core;singleton:=true
 Bundle-Version: 2.2.1
-Bundle-Activator: org.apache.geronimo.st.v21.core.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.apache.geronimo.runtime.v22,
- org.apache.geronimo.st.v21.core,
+ org.apache.geronimo.st.v21.core;visibility:=reexport,
  org.apache.geronimo.st.core,
  org.apache.geronimo.jee.v21.jaxbmodel,
  org.eclipse.core.runtime,
@@ -17,3 +16,4 @@ Require-Bundle: org.apache.geronimo.runt
  org.eclipse.jst.common.frameworks,
  org.eclipse.wst.common.modulecore
 Bundle-ActivationPolicy: lazy
+Export-Package: org.apache.geronimo.st.v22.core.operations

Modified: geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/plugin.properties
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/plugin.properties?rev=955877&r1=955876&r2=955877&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/plugin.properties (original)
+++ geronimo/devtools/eclipse-plugin/branches/2.2.1/plugins/org.apache.geronimo.st.v22.core/plugin.properties Fri Jun 18 08:10:13 2010
@@ -18,6 +18,7 @@
 #
 pluginName=Geronimo v2.2 Server Adapter
 providerName=Apache Software Foundation
+geronimoLaunchConfigurationType=Apache Geronimo
 
 runtimeTypeName=Apache Geronimo v2.2
 runtimeTypeDescription=Apache Geronimo v2.2 supports Java EE 5.0.



Mime
View raw message