Package com.eviware.soapui.security.support

Source Code of com.eviware.soapui.security.support.SecurityCheckedParameterHolder

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.security.support;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.eviware.soapui.config.CheckedParameterConfig;
import com.eviware.soapui.config.CheckedParametersListConfig;
import com.eviware.soapui.model.security.SecurityScan;
import com.eviware.soapui.model.security.SecurityScanParameterHolderListener;
import com.eviware.soapui.model.security.SecurityCheckedParameter;
import com.eviware.soapui.model.testsuite.TestPropertyListener;

/**
* Holder for SecurityScanPameters, which are request parameters on which
* security scan is applied.
*
* @author robert
*/
public class SecurityCheckedParameterHolder extends SecurityScanParameterListenerAdapter implements
        TestPropertyListener {

    private SecurityScan securityCheck;
    private CheckedParametersListConfig paramsConfig;

    private List<SecurityCheckedParameter> params = new ArrayList<SecurityCheckedParameter>();
    private Map<String, SecurityCheckedParameter> paramsMap = new HashMap<String, SecurityCheckedParameter>();

    private Set<SecurityScanParameterHolderListener> listeners = new HashSet<SecurityScanParameterHolderListener>();

    public SecurityCheckedParameterHolder(SecurityScan securityCheck, CheckedParametersListConfig checkedPameters) {
        this.securityCheck = securityCheck;
        this.paramsConfig = checkedPameters;

        for (CheckedParameterConfig param : paramsConfig.getParametersList()) {
            addParameter(param);
        }

        securityCheck.getTestStep().addTestPropertyListener(this);
    }

    public void addParameterListener(SecurityScanParameterHolderListener listener) {
        listeners.add(listener);
    }

    public void removeParameterListener(SecurityScanParameterHolderListener listener) {
        listeners.remove(listener);
    }

    public void updateConfig(CheckedParametersListConfig config) {
        paramsConfig = config;

        List<CheckedParameterConfig> paramsList = config.getParametersList();
        for (int c = 0; c < paramsList.size(); c++) {
            if (params.get(c) instanceof SecurityCheckedParameterImpl) {
                ((SecurityCheckedParameterImpl) params.get(c)).setConfig(paramsList.get(c));
            }
        }
    }

    SecurityCheckedParameter addParameter(CheckedParameterConfig param) {
        SecurityCheckedParameter result = new SecurityCheckedParameterImpl(param);
        params.add(result);
        paramsMap.put(result.getLabel().toUpperCase(), result);

        fireParameterAdded(result);

        return result;
    }

    public boolean addParameter(String label, String name, String xpath, boolean used) {
        if (paramsMap.get(label.toUpperCase()) != null) {
            return false;
        }

        CheckedParameterConfig newParameterConfig = paramsConfig.addNewParameters();
        SecurityCheckedParameterImpl newParameter = new SecurityCheckedParameterImpl(newParameterConfig);
        newParameter.setLabel(label);
        newParameter.setName(name);
        newParameter.setXpath(xpath);
        newParameter.setChecked(used);
        params.add(newParameter);
        paramsMap.put(newParameter.getLabel().toUpperCase(), newParameter);

        fireParameterAdded(newParameter);

        return true;
    }

    public void removeParameter(SecurityCheckedParameter parameter) {

        int index = params.indexOf(parameter);
        params.remove(parameter);
        paramsMap.remove(parameter.getLabel().toUpperCase());

        paramsConfig.removeParameters(index);

        fireParameterRemoved(parameter);
    }

    public void fireParameterAdded(SecurityCheckedParameter parameter) {
        for (SecurityScanParameterHolderListener listener : listeners) {
            listener.parameterAdded(parameter);
        }
    }

    public void fireParameterRemoved(SecurityCheckedParameter parameter) {
        for (SecurityScanParameterHolderListener listener : listeners) {
            listener.parameterRemoved(parameter);
        }
    }

    public List<SecurityCheckedParameter> getParameterList() {
        return params;
    }

    public String[] getParameterLabels() {
        String[] labels = new String[params.size()];
        for (int c = 0; c < labels.length; c++) {
            labels[c] = params.get(c).getLabel();
        }

        return labels;
    }

    /*
     * Need to keep track on parameter label change.
     *
     * (non-Javadoc)
     *
     * @see
     * com.eviware.soapui.security.support.SecurityScanParameterListenerAdapter
     * #parameterLabelChanged
     * (com.eviware.soapui.model.security.SecurityCheckedParameter,
     * java.lang.String, java.lang.String)
     */
    @Override
    public void parameterLabelChanged(SecurityCheckedParameter parameter, String oldLabel, String newLabel) {
        SecurityCheckedParameter param = paramsMap.get(oldLabel);
        paramsMap.remove(oldLabel);
        paramsMap.put(newLabel, param);
    }

    /**
     * This method returns parameter based on its label.
     *
     * @param paramLabel
     * @return parameter
     */
    public SecurityCheckedParameter getParametarByLabel(String paramLabel) {
        for (SecurityCheckedParameter param : params) {
            if (param.getLabel().equals(paramLabel)) {
                return param;
            }
        }
        return null;
    }

    /**
     * This method returns parameter based on its name.
     *
     * @param paramName
     * @return parameter
     */
    public List<SecurityCheckedParameter> getParametarsByName(String paramName) {
        List<SecurityCheckedParameter> paramsList = new ArrayList<SecurityCheckedParameter>();
        for (SecurityCheckedParameter param : params) {
            if (param.getName().equals(paramName)) {
                paramsList.add(param);
            }
        }
        return paramsList;
    }

    public void removeParameters(int[] selected) {
        ArrayList<SecurityCheckedParameter> paramsToRemove = new ArrayList<SecurityCheckedParameter>();
        for (int index : selected) {
            paramsToRemove.add(params.get(index));
        }

        for (SecurityCheckedParameter param : paramsToRemove) {
            removeParameter(param);
        }
    }

    @Override
    public void propertyAdded(String name) {
        // TODO Auto-generated method stub
        // we do not care for this
    }

    @Override
    public void propertyMoved(String name, int oldIndex, int newIndex) {
        // TODO Auto-generated method stub
        // we do not care about this, we keep order by label
    }

    @Override
    public void propertyRemoved(String name) {
        ArrayList<SecurityCheckedParameter> parameterToRemove = new ArrayList<SecurityCheckedParameter>();
        for (SecurityCheckedParameter param : params) {
            if (param.getName().equals(name)) {
                parameterToRemove.add(param);
            }
        }
        for (SecurityCheckedParameter param : parameterToRemove) {
            removeParameter(param);
        }
    }

    @Override
    public void propertyRenamed(String oldName, String newName) {
        ArrayList<SecurityCheckedParameter> parameterToRemove = new ArrayList<SecurityCheckedParameter>();
        for (SecurityCheckedParameter param : params) {
            if (param.getName().equals(oldName)) {
                parameterToRemove.add(param);
            }
        }
        for (SecurityCheckedParameter param : parameterToRemove) {
            ((SecurityCheckedParameterImpl) param).setName(newName);
        }

    }

    @Override
    public void propertyValueChanged(String name, String oldValue, String newValue) {
        // TODO Auto-generated method stub
        // we do not cate for this
    }

    public void release() {
        securityCheck.getTestStep().removeTestPropertyListener(this);
    }
}
TOP

Related Classes of com.eviware.soapui.security.support.SecurityCheckedParameterHolder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.