org.ebayopensource.turmeric.eclipse.services.ui.wizards.pages.ConsumerFromExistingWSDLWizardPage.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.eclipse.services.ui.wizards.pages.ConsumerFromExistingWSDLWizardPage.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *******************************************************************************/
/**
 * 
 */
package org.ebayopensource.turmeric.eclipse.services.ui.wizards.pages;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import javax.wsdl.Definition;
import javax.wsdl.Service;

import org.apache.commons.lang.StringUtils;
import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger;
import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants;
import org.ebayopensource.turmeric.eclipse.exception.validation.ValidationInterruptedException;
import org.ebayopensource.turmeric.eclipse.registry.ExtensionPointFactory;
import org.ebayopensource.turmeric.eclipse.registry.intf.IClientRegistryProvider;
import org.ebayopensource.turmeric.eclipse.registry.models.ClientAssetModel;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.GlobalRepositorySystem;
import org.ebayopensource.turmeric.eclipse.repositorysystem.core.ISOAHelpProvider;
import org.ebayopensource.turmeric.eclipse.resources.util.SOAIntfUtil;
import org.ebayopensource.turmeric.eclipse.resources.util.SOAServiceUtil;
import org.ebayopensource.turmeric.eclipse.services.ui.SOAMessages;
import org.ebayopensource.turmeric.eclipse.ui.AbstractSOADomainWizard;
import org.ebayopensource.turmeric.eclipse.ui.wizards.pages.AbstractNewServiceFromWSDLWizardPage;
import org.ebayopensource.turmeric.eclipse.utils.lang.StringUtil;
import org.ebayopensource.turmeric.eclipse.utils.plugin.EclipseMessageUtils;
import org.ebayopensource.turmeric.eclipse.utils.ui.UIUtil;
import org.ebayopensource.turmeric.eclipse.validator.core.ErrorMessage;
import org.ebayopensource.turmeric.eclipse.validator.core.InputObject;
import org.ebayopensource.turmeric.eclipse.validator.utils.ValidateUtil;
import org.ebayopensource.turmeric.eclipse.validator.utils.common.NameValidator;
import org.ebayopensource.turmeric.eclipse.validator.utils.common.RegExConstants;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.jface.fieldassist.FieldDecoration;
import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.events.ExpansionAdapter;
import org.eclipse.ui.forms.events.ExpansionEvent;

/**
 * The Class ConsumerFromExistingWSDLWizardPage.
 *
 * @author yayu
 */
public class ConsumerFromExistingWSDLWizardPage extends AbstractNewServiceFromWSDLWizardPage {
    private Text serviceClientText;
    private Text consumerID;
    private Text adminText;
    private Button retrieveConsumerIDBtn;
    private ListViewer envrionmentList;
    private List<String> environments = new ArrayList<String>();
    private String versionFromWSDL = null;
    private boolean simpleMode = true; //simple mode will not need to craete the consumer project
    private String domainName = "";

    private static final String SIMPLE_MODE_TITLE = "Simple Mode reads a pre-existing WSDL document, creates a SOA Intf Project and a Consumer without ClientConfig.xml.";

    private static final String ADV_MODE_TITLE = "Advance Mode creates a SOA Intf Project and a Consumer from a pre-existing WSDL document.";

    private static final SOALogger logger = SOALogger.getLogger();

    /**
     * Instantiates a new consumer from existing wsdl wizard page.
     *
     * @param selection the selection
     */
    public ConsumerFromExistingWSDLWizardPage(final IStructuredSelection selection) {
        super("newConsumerFromWSDLWizardPage", "New Consumer From Existing WSDL Wizard", SIMPLE_MODE_TITLE);
    }

    /**
     * Instantiates a new consumer from existing wsdl wizard page.
     */
    public ConsumerFromExistingWSDLWizardPage() {
        this(null);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void setVisible(boolean visible) {
        super.setVisible(visible);
        if (visible == true) {
            dialogChanged(true);
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void createControl(Composite parent) {
        try {
            final Composite container = super.createParentControl(parent, 4);
            Text wsdlText = addWSDL(container);

            addWorkspaceRootChooser(container);
            addServiceName(container, false);

            this.adminText = addAdminName(container, false);
            {
                if (this.resourceNameControlDecoration != null) {
                    // we do not want to show both WARNING and INFORMATION icons
                    resourceNameControlDecoration.hide();
                }
                ControlDecoration controlDecoration = new ControlDecoration(adminText, SWT.LEFT | SWT.TOP);
                controlDecoration.setShowOnlyOnFocus(false);
                controlDecoration.setDescriptionText(SOAMessages.WARNING_ADMIN_NAME_MANUAL_OVERRIDE);
                FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault()
                        .getFieldDecoration(FieldDecorationRegistry.DEC_WARNING);
                controlDecoration.setImage(fieldDecoration.getImage());
            }
            createServiceClient(container, false);

            {
                //advanced section
                ExpansionAdapter listener = new ExpansionAdapter() {
                    public void expansionStateChanged(ExpansionEvent e) {
                        boolean status = e.getState();
                        if (status == true) {
                            setDescription(ADV_MODE_TITLE);
                        } else {
                            setDescription(SIMPLE_MODE_TITLE);
                        }
                    }
                };
                Composite advancedPanel = super.createAdvancedSettingsPanel(container, listener);
                if (serviceDomainList != null && domainClassifierList != null) {
                    this.serviceDomainList.select(-1);
                    this.serviceDomainList.clearSelection();
                    this.domainClassifierList.select(-1);
                    this.domainClassifierList.clearSelection();
                }
                addTargetNamespace(advancedPanel, "", false);
                addServicePackage(advancedPanel);
                createConsumerIDText(advancedPanel);
                createEnvironmentList(advancedPanel, true);
                addWSDLPackageToNamespace(advancedPanel);
                addTypeFolding(advancedPanel).setVisible(false);
                super.setTypeFolding(false);
            }

            adminText.addModifyListener(new ModifyListener() {

                @Override
                public void modifyText(ModifyEvent e) {
                    if (serviceClientText.getEditable() == false) {
                        serviceClientText.setText(
                                ConsumerFromExistingWSDLWizardPage.this.getDefaultValue(serviceClientText));
                    }
                }

            });
            wsdlText.setFocus();
        } catch (Exception e) {
            logger.error(e);
            UIUtil.showErrorDialog(e);
        }
    }

    /**
     * Creates the consumer id text.
     *
     * @param parent the parent
     * @return the text
     * @throws CoreException the core exception
     */
    protected Text createConsumerIDText(Composite parent) throws CoreException {
        this.consumerID = super.createLabelTextField(parent, "Consumer &ID:", "", modifyListener, false, true,
                "the consumer ID of the new service consumer");
        final IClientRegistryProvider clientRegProvider = ExtensionPointFactory.getSOAClientRegistryProvider();
        if (clientRegProvider != null) {
            // The retrieve button should only be created if AR plugin is
            // available
            retrieveConsumerIDBtn = new Button(parent, SWT.PUSH);
            retrieveConsumerIDBtn.setText("Retrie&ve");
            retrieveConsumerIDBtn.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    try {
                        ClientAssetModel clientModel = clientRegProvider.getClientAsset(getClientName());
                        if (clientModel != null) {
                            String conID = StringUtils.isBlank(clientModel.getConsumerId()) ? ""
                                    : clientModel.getConsumerId();
                            consumerID.setText(conID);
                            /*
                             * if (StringUtils.isNotBlank(conID))
                             * retrieveConsumerIDBtn.setEnabled(false);
                             */
                        }
                    } catch (Exception e1) {
                        SOALogger.getLogger().error(e1);
                        UIUtil.showErrorDialog(e1);
                    }
                }
            });

            final Text text = getResourceNameText();
            text.addModifyListener(new ModifyListener() {
                @Override
                public void modifyText(ModifyEvent e) {
                    retrieveConsumerIDBtn.setEnabled(StringUtils.isNotBlank(getResourceName()));

                }
            });
        } else {
            // AR plugin is not available
            super.createEmptyLabel(parent, 1);
        }

        // TODO get consumer ID if possible
        return this.consumerID;
    }

    /**
     * Creates the environment list.
     *
     * @param parent the parent
     * @return the list viewer
     */
    protected ListViewer createEnvironmentList(Composite parent, boolean simpleMode) {
        this.simpleMode = simpleMode;
        Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
        group.setText("Environments");
        GridData data = new GridData(GridData.FILL_HORIZONTAL);
        data.horizontalSpan = 4;
        group.setLayoutData(data);
        group.setLayout(new GridLayout(2, false));
        envrionmentList = new ListViewer(group, SWT.SINGLE | SWT.BORDER);
        envrionmentList.getList().setLayoutData(new GridData(GridData.FILL_BOTH));

        envrionmentList.setContentProvider(new IStructuredContentProvider() {

            @Override
            public Object[] getElements(Object inputElement) {
                return environments.toArray();
            }

            @Override
            public void dispose() {

            }

            @Override
            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

            }

        });
        envrionmentList.setLabelProvider(new ILabelProvider() {

            @Override
            public Image getImage(Object element) {
                return null;
            }

            @Override
            public String getText(Object element) {
                return String.valueOf(element);
            }

            @Override
            public void addListener(ILabelProviderListener listener) {

            }

            @Override
            public void dispose() {

            }

            @Override
            public boolean isLabelProperty(Object element, String property) {
                return false;
            }

            @Override
            public void removeListener(ILabelProviderListener listener) {

            }

        });
        if (simpleMode == false) {
            environments.add(SOAProjectConstants.DEFAULT_CLIENT_CONFIG_ENVIRONMENT);
        }
        envrionmentList.setInput(environments);

        Composite btnComposite = new Composite(group, SWT.NONE);
        btnComposite.setLayout(new GridLayout(1, true));
        btnComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));

        final Button addBtn = new Button(btnComposite, SWT.PUSH);
        addBtn.setText("Add...");
        addBtn.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                final IInputValidator validator = new IInputValidator() {

                    @Override
                    public String isValid(String newText) {
                        if (StringUtils.isBlank(newText)) {
                            return "Error: Environment name must not be empty";
                        }
                        if (environments.contains(newText)) {
                            return "Error: Environment name already exist->" + newText;
                        }
                        final InputObject inputObject = new InputObject(newText, RegExConstants.PROJECT_NAME_EXP,
                                ErrorMessage.CLIENT_NAME_ERRORMSG);

                        try {
                            IStatus validationModel = NameValidator.getInstance().validate(inputObject);
                            if (validationModel != null && validationModel.getSeverity() == IStatus.ERROR) {
                                return ValidateUtil.getBasicFormattedUIErrorMessage(validationModel);
                            }
                        } catch (ValidationInterruptedException e) {
                            processException(e);
                        }
                        return null;
                    }

                };
                InputDialog dialog = new InputDialog(UIUtil.getActiveShell(), "New Environment",
                        "Please enter the new environment name", "", validator);
                if (dialog.open() == Window.OK) {
                    environments.add(dialog.getValue());
                    envrionmentList.refresh();
                    dialogChanged();
                }
            }
        });

        final Button removeBtn = new Button(btnComposite, SWT.PUSH);
        removeBtn.setText("Remove");
        removeBtn.setEnabled(false);
        removeBtn.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                Object obj = ((IStructuredSelection) envrionmentList.getSelection()).getFirstElement();
                environments.remove(obj);
                envrionmentList.refresh();
                dialogChanged();
            }
        });
        envrionmentList.addSelectionChangedListener(new ISelectionChangedListener() {

            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                removeBtn.setEnabled(envrionmentList.getSelection().isEmpty() == false);
            }
        });

        UIUtil.setEqualWidthHintForButtons(addBtn, removeBtn);
        return envrionmentList;
    }

    /**
     * Creates the service client.
     *
     * @param parent the parent
     * @param editable the editable
     * @return the text
     */
    protected Text createServiceClient(final Composite parent, final boolean editable) {
        final ModifyListener nsModifyListener = new ModifyListener() {
            public void modifyText(ModifyEvent e) {
                dialogChanged();
            }
        };
        serviceClientText = super.createLabelTextField(parent, "&Client Name:", "", nsModifyListener, false,
                editable, "the client name of consumer");

        Button overrideSvcClient = createOverrideButton(parent, serviceClientText, null);
        overrideSvcClient.setSelection(editable);

        return serviceClientText;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getDefaultValue(Text text) {
        if (text == serviceClientText) {
            String adminName = getAdminName();
            if (StringUtils.isEmpty(adminName) == true) {
                return "";
            } else {
                return adminName + SOAProjectConstants.CLIENT_PROJECT_SUFFIX;
            }
        }
        return super.getDefaultValue(text);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected boolean dialogChanged(boolean wsdlChanged) {
        if (super.dialogChanged(wsdlChanged) == false && isPageComplete() == false) {
            return false;
        }
        return dialogChanged();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected boolean dialogChanged() {
        if (super.dialogChanged(false) == false && isPageComplete() == false) {
            return false;
        }

        if (publicServiceNameText != null && (validateName(publicServiceNameText, getPublicServiceName(),
                RegExConstants.SERVICE_NAME_EXP,
                "The service name [" + getPublicServiceName() + "] in WSDL file is not valid against the pattern \""
                        + RegExConstants.SERVICE_NAME_EXP
                        + "\". Please correct service name in WSDL and run this wizard again.") == false)) {
            return false;
        }

        // Client name is consumer project name and admin name is the service
        // interface project name. They should not be the same.
        if (this.serviceClientText != null && adminNameText != null) {
            String clientName = serviceClientText.getText();
            String adminName = adminNameText.getText();
            if (StringUtils.equalsIgnoreCase(clientName, adminName) == true) {
                updateStatus("Admin Name and Client Name should not be the same.", serviceClientText,
                        adminNameText);
                return false;
            }
        }

        if (this.serviceClientText != null) {
            if (StringUtils.isBlank(getClientName())) {
                updateStatus(this.serviceClientText, "Client name must be specified");
                return false;
            }
            if (StringUtils.equals(StringUtils.capitalize(getClientName()), getClientName()) == false) {
                updateStatus(this.serviceClientText, "Client name must be capitalized.");
                return false;
            }
            if (validateName(this.serviceClientText, getClientName(), RegExConstants.PROJECT_NAME_EXP,
                    ErrorMessage.PROJECT_NAME_ERRORMSG + " The name [" + getClientName()
                            + "] is not valid against the pattern \"" + RegExConstants.PROJECT_NAME_EXP
                            + "\"") == false) {
                return false;
            }
        }

        if (envrionmentList != null) {
            if (environments.isEmpty() && this.simpleMode == false) {
                updateStatus(envrionmentList.getControl(), "At least one environment must be added");
                return false;
            }
        }

        // String version = resourceVersionText.getText();
        // if (StringUtils.isNotBlank(version) &&
        // (isV2Format == true)) {
        // // version from WSDL is X.Y, only maintenance version should be
        // changed.
        // Version newVer = new Version(version);
        // Version oldVer = new Version(versionFromWSDL);
        // if ((newVer.getMajor() != oldVer.getMajor())
        // || (newVer.getMinor() != oldVer.getMinor())) {
        // updateStatus(super.resourceVersionText,
        // "Service version from WSDL is: "+versionFromWSDL +
        // ". You can not change the major and minor version. The version must start with->"
        // + versionFromWSDL);
        // return false;
        // }
        // }

        /*
         * 1) If service version in WSDL follows V3 format, like 1.2.3, service
         * version text will not be editable. 2) If service version in WSDL
         * doesnt follow V3 format, like 1.2, 1.2,3, 1, 1.a, 1.2.a, then
         * service version text is editable. BUT even user specified a correct
         * V3 version, there will be an error marker on the service version text
         * says Specified service version [1.2.3] does not match service version
         * in WSDL [1.2]. Please modify service version in source WSDL and
         * follow format {major.minor.maintance}. It means the WSDL file used
         * in wizard must contain a correct V3 format service version.
         * Otherwise, the wizard couldnt continue.
         */

        if ((versionFromWSDL != null && resourceVersionText != null)
                && versionFromWSDL.equals(getResourceVersion()) == false) {
            String errorMsg = StringUtil.formatString(SOAMessages.DIFFERENT_SERVICE_VERSION_WITH_WSDL,
                    getResourceVersion(), versionFromWSDL);
            updateStatus(super.resourceVersionText, errorMsg);
            return false;
        }

        if (domainClassifierList != null && StringUtils.isNotBlank(getDomainClassifier()) && this.wsdl != null) {
            String namespacePart = getOrganizationProvider()
                    .getNamespacePartFromTargetNamespace(this.wsdl.getTargetNamespace());
            if (StringUtils.isNotBlank(namespacePart) && namespacePart.equals(getDomainClassifier()) == false) {
                // user has selected a namespace part that not match the ns-part
                // from the wsdl file
                updateStatus(super.domainClassifierList,
                        StringUtil.formatString(SOAMessages.ERR_WRONG_NAMESPACEPART, getDomainClassifier(),
                                this.wsdl.getTargetNamespace()));
                return false;
            }
        }

        if (StringUtils.isNotEmpty(getResourceName()) && Character.isLowerCase(getResourceName().charAt(0))) {
            updatePageStatus(getResourceNameText(),
                    EclipseMessageUtils.createStatus(SOAMessages.SVCNAME_ERR, Status.WARNING));
            return true;
        }

        return true;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void wsdlChanged(final Definition wsdl) {
        final Collection<?> services = wsdl.getServices().values();
        if (services.size() > 0) {
            // only process the first service
            final Service service = (Service) services.toArray()[0];
            if (services.size() > 1) {
                logger.warning("Found multiple service, but only the first service will be processed->"
                        + service.getQName());
            }
            final String targetNs = wsdl.getTargetNamespace();
            targetNamespaceModified(targetNs);
            setTargetNamespace(targetNs);
            if (domainClassifierList == null) {
                // Non-MP
                String nsPart = StringUtils
                        .capitalize(getOrganizationProvider().getNamespacePartFromTargetNamespace(targetNs));
                this.domainName = nsPart;
                if (StringUtils.isNotBlank(nsPart)) {
                    this.adminText.setText(nsPart + getAdminName());
                } else {
                    this.adminText.setText(getPublicServiceName() + SOAProjectConstants.MAJOR_VERSION_PREFIX
                            + SOAServiceUtil.getServiceMajorVersion(getServiceVersion()));
                }
            }
            String version = SOAIntfUtil.getServiceVersionFromWsdl(wsdl, getPublicServiceName()).trim();
            if (resourceVersionText != null) {
                resourceVersionText.setEditable(true);
                if (StringUtils.isNotBlank(version)) {
                    versionFromWSDL = version;
                    // has version
                    int versionPart = StringUtils.countMatches(version, SOAProjectConstants.DELIMITER_DOT);
                    // add "dot number" to version. It will be changed to X.Y.Z
                    if (versionPart == 2) {
                        // is new version format, set version text read-only.
                        resourceVersionText.setEditable(false);
                    } else {
                        // is v2format
                        while (versionPart < 2) {
                            version += SOAProjectConstants.DELIMITER_DOT + "0";
                            versionPart++;
                        }
                    }
                    resourceVersionText.setText(version);
                } else {
                    // don't have version, use default version.
                    resourceVersionText.setText(SOAProjectConstants.DEFAULT_SERVICE_VERSION);
                }
            } else {
                versionFromWSDL = version;
                serviceVersionChanged(version);
            }
            serviceClientText.setText(getAdminName() + SOAProjectConstants.CLIENT_PROJECT_SUFFIX);
        } else {
            serviceClientText.setText(DEFAULT_TEXT_VALUE);
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void targetNamespaceModified(String newNamespace) {
        super.targetNamespaceModified(newNamespace);
        if (this.serviceDomainList == null || this.domainClassifierList == null
                || StringUtils.isBlank(newNamespace))
            return;

        String namespacePart = getOrganizationProvider().getNamespacePartFromTargetNamespace(newNamespace);

        if (StringUtils.isNotBlank(namespacePart)) {
            String domainName = StringUtils.capitalize(namespacePart);
            Map<String, List<String>> domainList = Collections.emptyMap();
            if (getWizard() instanceof AbstractSOADomainWizard) {
                try {
                    domainList = ((AbstractSOADomainWizard) getWizard()).getDomainList();
                } catch (Exception e) {
                    logger.warning(e);
                }
            }

            for (String key : domainList.keySet()) {
                final List<String> values = domainList.get(key);
                if (values != null && values.contains(namespacePart)) {
                    domainName = key;
                    break;
                }
            }
            this.serviceDomainList.setText(domainName);
            this.domainClassifierList.setText(namespacePart);
        } else if (StringUtils.isBlank(getServiceDomain()) || StringUtils.isBlank(getDomainClassifier())) {
            // could not get the namespace-part
            this.serviceDomainList.select(-1);
            this.serviceDomainList.clearSelection();
            this.domainClassifierList.clearSelection();
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getServiceVersion() {
        String result = super.getServiceVersion();
        if (StringUtils.isBlank(result) && StringUtils.isNotBlank(versionFromWSDL)) {
            return versionFromWSDL;
        }
        return result;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void resetServiceName() {
        super.resetServiceName();
        if (serviceClientText != null)
            serviceClientText.setText(DEFAULT_TEXT_VALUE);
    }

    /**
     * Gets the client name.
     *
     * @return the client name
     */
    public String getClientName() {
        return super.getTextValue(this.serviceClientText);
    }

    /**
     * Gets the consumer id.
     *
     * @return the consumer id
     */
    public String getConsumerId() {
        return super.getTextValue(this.consumerID);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectNameControl> getProjectNames() {
        final List<ProjectNameControl> result = super.getProjectNames();
        if (this.serviceClientText != null) {
            result.add(new ProjectNameControl(getClientName(), this.serviceClientText));
        }
        return result;
    }

    /**
     * Gets the environments.
     *
     * @return the environments
     */
    public List<String> getEnvironments() {
        return environments;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getDefaultResourceName() {
        final String defaultName = computeServiceName();
        if (StringUtils.isNotBlank(defaultName))
            return defaultName;
        else
            return "";
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getServiceDomain() {
        if (serviceDomainList == null) {
            return this.domainName;
        }
        return super.getServiceDomain();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getHelpContextID() {
        return GlobalRepositorySystem.instanceOf().getActiveRepositorySystem().getHelpProvider()
                .getHelpContextID(ISOAHelpProvider.PAGE_CREATE_CONSUMER_FROM_WSDL);
    }

}