/*******************************************************************************
 * Copyright (c) 2002-2003 IBM Corporation, Parasoft and others.
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   IBM      - Initial API and implementation
 *   Parasoft - Initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.wsi.internal.core;

/**
 * WS-I constants.
 * 
 * @version 1.0.1
 * @author Peter Brittenham (peterbr@us.ibm.com)
 * @author Jim Clune
 * @author Graham Turrell (gturrell@uk.ibm.com)
 */
public interface WSIConstants {
	/**
	 * Copyright notice.
	 */
	public static final String COPYRIGHT = "Copyright (C) 2002-2003 by The Web Services-Interoperability Organization and Certain "
			+ "of its Members. All Rights Reserved.\nUse of this Material is governed by WS-I licenses included within the documentation.";

	/**
	 * XML declaration statement.
	 */
	public static final String XML_DECL = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";

	/**
	 * XML namespace URI.
	 */
	public static final String NS_URI_XMLNS = "http://www.w3.org/2000/xmlns/";
	public static final String NS_URI_XML =  "http://www.w3.org/XML/1998/namespace";
	/**
	 * XML schema namespace URI.
	 */
	public static final String NS_URI_XSD = "http://www.w3.org/2001/XMLSchema";

	/**
	 * XML schema location.
	 */
	public static final String XSD_SCHEMA_LOCATION = "http://www.w3.org/2001/XMLSchema.xsd";

	/**
	 * XML schema namespace name.
	 */
	public static final String NS_NAME_XSD = "xsd";

	/**
	 * XML schema instance namespace URI.
	 */
	public static final String NS_URI_XSI = "http://www.w3.org/2001/XMLSchema-instance";

	/**
	 * XML schema namespace name.
	 */
	public static final String NS_NAME_XSI = "xsi";


	/**
	 * WS-I message log namespace URI.
	 */
	public static final String NS_URI_WSI_LOG = "http://www.ws-i.org/testing/2004/07/log/";

	public static final String NS_NAME_WSI_LOG = "wsi-log";

	/**
	 * WS-I conformance report namespace URI.
	 */
	public static final String NS_URI_WSI_REPORT = "http://www.ws-i.org/testing/2004/07/report/";
	public static final String NS_NAME_WSI_REPORT = "wsi-report";

	/**
	 * WS-I profile test assertions namespace URI.
	 */
	public static final String NS_URI_WSI_ASSERTIONS_2003 = "http://www.ws-i.org/testing/2003/03/assertions/";
	public static final String NS_URI_WSI_ASSERTIONS = "http://www.ws-i.org/testing/2004/07/assertions/";

	public static final String NS_NAME_WSI_ASSERTIONS = "wsi-assertions";

	/**
	 * WS-I monitor configuration file namesapce URI.
	 */
	public static final String NS_URI_WSI_MONITOR_CONFIG_2003 = "http://www.ws-i.org/testing/2003/03/monitorConfig/";
	public static final String NS_URI_WSI_MONITOR_CONFIG = "http://www.ws-i.org/testing/2004/07/monitorConfig/";
	

	public static final String NS_NAME_WSI_MONITOR_CONFIG = "wsi-monConfig";

	/**
	 * WS-I analyzer configuration file namesapce URI.
	 */
	public static final String NS_URI_WSI_ANALYZER_CONFIG_2003 = "http://www.ws-i.org/testing/2003/03/analyzerConfig/";
	public static final String NS_URI_WSI_ANALYZER_CONFIG = "http://www.ws-i.org/testing/2004/07/analyzerConfig/";
	
	public static final String NS_NAME_WSI_ANALYZER_CONFIG = "wsi-analyzerConfig";

	/**
	 * WS-I common namesapce URI.
	 */
	public static final String NS_URI_WSI_COMMON_2003 = "http://www.ws-i.org/testing/2003/03/common/";
	public static final String NS_URI_WSI_COMMON = "http://www.ws-i.org/testing/2004/07/common/";
	public static final String NS_NAME_WSI_COMMON = "wsi-common";

	/**
	 * SOAP V1.1 namespace.
	 */
	public final static String NS_URI_SOAP = "http://schemas.xmlsoap.org/soap/envelope/";

	/**
	 * SOAP/1.1 encoding.
	 */
	public final static String NS_URI_SOAP_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/";

	public static final String NS_URI_SOAP_NEXT_ACTOR = "http://schemas.xmlsoap.org/soap/actor/next" ;
	/**
	 * HTTP transport.
	 */
	public final static String NS_URI_SOAP_HTTP = "http://schemas.xmlsoap.org/soap/http";

	/**
	 * WSDL V1.1 namespace.
	 */
	public final static String NS_URI_WSDL = "http://schemas.xmlsoap.org/wsdl/";

	/**
	 * WSDL SOAP binding namespace.
	 */
	public final static String NS_URI_WSDL_SOAP = "http://schemas.xmlsoap.org/wsdl/soap/";

	public final static String NS_NAME_WSDL_SOAP = "soap";

	/**
	 * WSDL MIME binding namespace.
	 */
	public final static String NS_NAME_WSDL_MIME = "http://schemas.xmlsoap.org/wsdl/mime/";

	/**
	 * WSDL HTTP GET & POST binding namespace.
	 */
	public final static String NS_NAME_WSDL_HTTP = "http://schemas.xmlsoap.org/wsdl/http/";

	/**
	 * WSDL DIME binding namespace.
	 */
	public final static String NS_NAME_WSDL_DIME = "http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/";

	/**
	 * Conformance Claim namespace.
	 */
	public final static String NS_URI_CLAIM = "http://ws-i.org/schemas/conformanceClaim/";

	/**
	 * UDDI V2 namespace.
	 */
	public final static String NS_URI_UDDI_V2 = "urn:uddi-org:api_v2";

	/**
	 * The XML Schema for the type used to refer to attachments from the SOAP
	 * envelope.
	 */
	public final static String NS_URI_SWA_REF = "http://ws-i.org/profiles/basic/1.1/xsd";

	public final static String SCHEMA_TYPE_SWA_REF = "swaRef";

	/**
	 * Element names.
	 */
	public static final String ELEM_ADD_STYLE_SHEET = "addStyleSheet";

	public static final String ELEM_ADDITIONAL_ENTRY_TYPE_LIST = "additionalEntryTypeList";

	public static final String ELEM_ANALYZER_FAILURE = "analyzerFailure";

	public static final String ELEM_ARTIFACT = "artifact";

	public static final String ELEM_ARTIFACT_REFERENCE = "artifactReference";

	public static final String ELEM_ASSERTION_COVERAGE = "assertionCoverage";

	public static final String ELEM_ASSERTION_DESCRIPTION = "assertionDescription";

	public static final String ELEM_ASSERTION_RESULT = "assertionResult";

	public static final String ELEM_ASSERTION_RESULT_SUMMARY = "assertionResultSummary";

	public static final String ELEM_ASSERTION_RESULTS = "assertionResults";

	public static final String ELEM_CLEANUP_TIMEOUT_SECONDS = "cleanupTimeoutSeconds";

	public static final String ELEM_CONFIG = "configuration";

	public static final String ELEM_COMMENT = "comment";

	public static final String ELEM_CONTEXT = "context";

	public static final String ELEM_DETAIL = "detail";

	public static final String ELEM_DETAIL_DESCRIPTION = "detailDescription";

	public static final String ELEM_DESCRIPTION = "description";

	public static final String ELEM_ENVIRONMENT = "environment";

	public static final String ELEM_ENTRY = "entry";

	public static final String ELEM_FAILURE_DETAIL = "failureDetail";

	public static final String ELEM_FAILURE_DETAIL_DESCRIPTION = "failureDetailDescription";

	public static final String ELEM_FAILURE_MESSAGE = "failureMessage";

	public static final String ELEM_HTTP_HEADERS = "httpHeaders";

	public static final String ELEM_IMPLEMENTER = "implementer";

	public static final String ELEM_INQUIRY_URL = "inquiryURL";

	public static final String ELEM_LISTEN_PORT = "listenPort";

	public static final String ELEM_LOG = "log";

	public static final String ELEM_LOG_DURATION = "logDuration";

	public static final String ELEM_LOG_FILE = "logFile";

	public static final String ELEM_MAN_IN_THE_MIDDLE = "manInTheMiddle";

	public static final String ELEM_MAX_CONNECTIONS = "maxConnections";

	public static final String ELEM_MESSAGE_CONTENT = "messageContent";
	
	public static final String ELEM_MESSAGE_CONTENT_WITH_ATTACHMENTS = "messageContentWithAttachments";
	
	public static final String ELEM_MESSAGE_ENTRY = "messageEntry";

	public static final String ELEM_MESSAGE_INPUT = "messageInput";

	public static final String ELEM_MONITOR = "monitor";

	public static final String ELEM_OPERATING_SYSTEM = "operatingSystem";

	public static final String ELEM_PREREQ_FAILED_LIST = "prereqFailedList";

	public static final String ELEM_PREREQ_LIST = "prereqList";

	public static final String ELEM_PROFILE = "profile";

	public static final String ELEM_PROFILE_ASSERTIONS = "profileAssertions";

	public static final String ELEM_READ_TIMEOUT_SECONDS = "readTimeoutSeconds";

	public static final String ELEM_RECEIVER_HOST_AND_PORT = "receiverHostAndPort";

	public static final String ELEM_REDIRECT = "redirect";

	public static final String ELEM_REPORT = "report";

	public static final String ELEM_REPORT_FILE = "reportFile";

	public static final String ELEM_RUNTIME = "runtime";

	public static final String ELEM_SCHEME_AND_HOSTPORT = "schemeAndHostPort";

	public static final String ELEM_SENDER_HOST_AND_PORT = "senderHostAndPort";

	public static final String ELEM_SERVICE_LOCATION = "serviceLocation";

	public static final String ELEM_SUMMARY = "summary";

	public static final String ELEM_TEST_ASSERTION = "testAssertion";

	public static final String ELEM_TEST_ASSERTIONS_FILE = "testAssertionsFile";

	public static final String ELEM_TEST_ASSERTION_ID = "testAssertionID";

	public static final String ELEM_TEST_COVERAGE = "testCoverage";

	public static final String ELEM_UDDI_ENTRY = "uddiEntry";

	public static final String ELEM_UDDI_KEY = "uddiKey";

	public static final String ELEM_UDDI_REFERENCE = "uddiReference";

	public static final String ELEM_VERBOSE = "verbose";

	public static final String ELEM_WSDL_ELEMENT = "wsdlElement";

	public static final String ELEM_WSDL_INPUT = "wsdlInput";

	public static final String ELEM_WSDL_REFERENCE = "wsdlReference";

	public static final String ELEM_WSDL_URI = "wsdlURI";

	public static final String ELEM_XML_PARSER = "xmlParser";
	
	public static final String ELEM_MIME_PART = "mimePart";

	public static final String ELEM_MIME_HEADERS = "mimeHeaders";
	
	public static final String ELEM_MIME_CONTENT = "mimeContent";

	public static final String ELEM_BOUNDARY_STRING = "boundaryString";

	/**
	 * Attribute names.
	 */
	public static final String ATTR_ALTERNATE = "alternate";

	public static final String ATTR_ARRAY_TYPE = "arrayType";

	public static final String ATTR_ASSERTION_DESCRIPTION = "assertionDescription";

	public static final String ATTR_BOM = "BOM";

	public static final String ATTR_CHARSET = "charset";

	public static final String ATTR_CODE = "code";

	public static final String ATTR_COLUMN_NUMBER = "columnNumber";

	public static final String ATTR_CONVERSATION_ID = "conversationID";

	public static final String ATTR_CORRELATION_TYPE = "correlationType";

	public static final String ATTR_DATE = "date";

	public static final String ATTR_ENABLED = "enabled";

	public static final String ATTR_ENTRY_TYPE = "entryType";

	public static final String ATTR_FAILURE_MESSAGE = "failureMessage";

	public static final String ATTR_FAILURE_DETAIL = "failureDetail";

	public static final String ATTR_HREF = "href";

	public static final String ATTR_ID = "id";

	public static final String ATTR_ID_UC = "ID";

	public static final String ATTR_IMPLEMENTER = "implementer";

	public static final String ATTR_LINE_NUMBER = "lineNumber";

	public static final String ATTR_LOCATION = "location";

	public static final String ATTR_MEDIA = "media";

	public static final String ATTR_MESSAGE_ENTRY = "messageEntry";

	public static final String ATTR_MESSAGES = "messages";

	public static final String ATTR_NAME = "name";

	public static final String ATTR_NAMESPACE = "namespace";

	public static final String ATTR_PARENT_ELEMENT_NAME = "parentElementName";

	public static final String ATTR_REFERENCE_ID = "referenceID";

	public static final String ATTR_REFERENCE_TYPE = "referenceType";

	public static final String ATTR_RELEASE_DATE = "releaseDate";

	public static final String ATTR_REPLACE = "replace";

	public static final String ATTR_RESULT = "result";

	public static final String ATTR_SERVICE_NAME = "serviceName";

	public static final String ATTR_SPECIFICATION = "specification";

	public static final String ATTR_TIMESTAMP = "timestamp";

	public static final String ATTR_TITLE = "title";

	public static final String ATTR_TYPE = "type";

	public static final String ATTR_VERSION = "version";

	/**
	 * Default values.
	 */
	public static final String DEFAULT_REPORT_URI = "report.xml";

	// TEMP: Use the following report title for the draft release only.
	//public static final String DEFAULT_REPORT_TITLE = "WS-I Profile
	// Conformance Report";
	public static final String DEFAULT_REPORT_TITLE = "WS-I Basic Profile Conformance Report.";

	public static final String DEFAULT_TEST_ASSERTIONS_DOCUMENT_URI = "../common/profiles/SSBP10_BP11_TAD.xml";

	public static final String DEFAULT_LOG_XSL = "../common/xsl/log.xsl";

	public static final String DEFAULT_REPORT_XSL = "../common/xsl/report.xsl";

	public static final String DEFAULT_XSL_TYPE = "text/xsl";

	public static final String DEFAULT_XML_ENCODING = "UTF-8";

	/**
	 * BOM constants.
	 *  
	 */
	public static int BOM_UTF16 = 0xFFFE;

	public static int BOM_UTF16_BIG_ENDIAN = 0xFEFF;

	public static int BOM_UTF8 = 0xEFBBBF;

	/**
	 * Validation constants.
	 *  
	 */
	public static final String ATTRVAL_SOAP_BODY_USE_LIT = "literal";

	public static final String ATTRVAL_SOAP_BODY_USE_ENC = "encoded";

	public static final String ATTRVAL_SOAP_BIND_STYLE_DOC = "document";

	public static final String ATTRVAL_SOAP_BIND_STYLE_RPC = "rpc";

	public static final String ATTRVAL_CORRELATION_TYPE_ENDPOINT = "endpoint";

	public static final String ATTRVAL_CORRELATION_TYPE_NAMESPACE = "namespace";

	public static final String ATTRVAL_CORRELATION_TYPE_OPERATION = "operation";

	/**
	 * WS-I constants - attributes for conformance claims (discovery).
	 *  
	 */

	public static final String ATTRVAL_UDDI_CLAIM_KEYVALUE = "http://ws-i.org/profiles/basic/1.0";

	public static final String ATTRVAL_UDDI_CLAIM_TMODELKEY = "uuid:65719168-72c6-3f29-8c20-62defb0961c0";

	/**
	 * WS-I names and versions of the profile test assertion document supported
	 * in the current version of the test tools.
	 */
	public static final String BASIC_PROFILE_TAD_NAME = "Basic Profile Test Assertions";

	public static final String BASIC_PROFILE_1_1_TAD_NAME = "Basic Profile 1.1 Test Assertions";

	public static final String SIMPLE_SOAP_BINDINGS_PROFILE_TAD_NAME = "Simple Soap Binding Profile [1.0] (with Basic Profile [1.1]) Test Assertions";

	public static final String ATTACHMENTS_PROFILE_TAD_NAME = "Attachments Profile [1.0] (with Basic Profile [1.1] and Simple Soap Binding Profile [1.0]) Test Assertions";

	public static final String BASIC_PROFILE_TAD_VERSION = "1.1.0";

	public static final String BASIC_PROFILE_1_1_TAD_VERSION = "1.1.0";

	public static final String SIMPLE_SOAP_BINDINGS_PROFILE_TAD_VERSION = "1.0.0";

	public static final String ATTACHMENTS_PROFILE_TAD_VERSION = "1.0.0";

	/**
	 * System dependent line separator character.
	 */
	public static final String LINE_SEPARATOR = System
			.getProperty("line.separator");

	/**
	 * System dependent path separator character.
	 */
	public static final String PATH_SEPARATOR = System
			.getProperty("path.separator");

	/**
	 * File which contains the copyright, license and feedback comments.
	 */
	public static final String COMMENTS_FILE = "comments.xml";

	public static final String CONTENT_TYPE_TEXT_XML = "text/xml";

	public static final String CONTENT_TYPE_MULTIPART = "multipart/related";

}