/* * Paros and its related class files. * * Paros is an HTTP/HTTPS proxy for assessing web application security. * Copyright (C) 2003-2004 Chinotec Technologies Company * * This program is free software; you can redistribute it and/or * modify it under the terms of the Clarified Artistic License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Clarified Artistic License for more details. * * You should have received a copy of the Clarified Artistic License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // ZAP: 2013/03/03 Issue 546: Remove all template Javadoc comments // ZAP: 2013/07/02 Changed API to public because future extensible Variant model // ZAP: 2014/01/06 Issue 965: Support 'single page' apps and 'non standard' parameter separators // ZAP: 2014/02/08 Used the same constants used in ScanParam Target settings // ZAP: 2016/02/22 Add hashCode, equals and toString methods. Remove redundant instance variable initialisations. package org.parosproxy.paros.core.scanner; public class NameValuePair { // ZAP: Parameter type constants public static final int TYPE_URL_PATH = ScannerParam.TARGET_URLPATH; public static final int TYPE_QUERY_STRING = ScannerParam.TARGET_QUERYSTRING; public static final int TYPE_COOKIE = ScannerParam.TARGET_COOKIE; public static final int TYPE_HEADER = ScannerParam.TARGET_HTTPHEADERS; public static final int TYPE_POST_DATA = ScannerParam.TARGET_POSTDATA; public static final int TYPE_UNDEFINED = -1; private final int targetType; private String name; private String value; private int position; /** * @param name * @param value */ public NameValuePair(int type, String name, String value, int position) { super(); this.targetType = type; this.name = name; this.value = value; this.position = position; } /** * Returns the type * * @return */ public int getType() { return targetType; } /** * @return Returns the name. */ public String getName() { return name; } /** * @param name The name to set. */ public void setName(String name) { this.name = name; } /** * @return Returns the value. */ public String getValue() { return value; } /** * @param value The value to set. */ public void setValue(String value) { this.value = value; } /** * @return Returns the position. */ public int getPosition() { return position; } /** * @param position The position to set. */ public void setPosition(int position) { this.position = position; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + position; result = prime * result + targetType; result = prime * result + ((value == null) ? 0 : value.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } NameValuePair other = (NameValuePair) obj; if (name == null) { if (other.name != null) { return false; } } else if (!name.equals(other.name)) { return false; } if (position != other.position) { return false; } if (targetType != other.targetType) { return false; } if (value == null) { if (other.value != null) { return false; } } else if (!value.equals(other.value)) { return false; } return true; } @Override public String toString() { StringBuilder strBuilder = new StringBuilder(75); strBuilder.append("[Position=").append(position); strBuilder.append(", Type=").append(targetType); if (name != null) { strBuilder.append(", Name=").append(name); } if (value != null) { strBuilder.append(", Value=").append(value); } strBuilder.append(']'); return strBuilder.toString(); } }