public boolean performFinish()

in plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/wizards/SecurityRealmWizard.java [130:387]


    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, Messages.error, 0,
            Messages.dbLoginError0, null);
        ErrorDialog.openError(this.getShell(), Messages.error,
        		Messages.dbLoginError1, 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(Messages.propertiesFileRealm)) {
        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(Messages.sqlRealm)) {
        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(Messages.ldapRealm)) {
        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;
    }