/*******************************************************************************
 * Copyright (c) 2006 IBM Corporation 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 Corporation - initial API and implementation
 *******************************************************************************/

package org.eclipse.wst.wsdl.util;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.resource.Resource;

/**
 * Generated by the WSDL model parsing and validation mechanisms.
 * 
 * <p>
 * <b>Note:</b> This class/interface is part of an interim API that is still
 * under development and expected to change significantly before reaching
 * stability. It is being made available at this early stage to solicit feedback
 * from pioneering adopters on the understanding that any code that uses this
 * API will almost certainly be broken (repeatedly) as the API evolves.
 * </p>
 * 
 * This interface is a candidate to becoming a first class WSDL model object.
 */
public interface WSDLDiagnostic extends Resource.Diagnostic
{
  /**
   * Provides this diagnostic's severity.
   * 
   * @return an XSDDiagnosticSeverity
   */
  WSDLDiagnosticSeverity getSeverity();

  /**
   * Sets this diagnostic's severity.
   * 
   * @param severity
   *          the new diagnostic severity.
   */
  void setSeverity(WSDLDiagnosticSeverity severity);
  
  /**
   * Gets the original message key.
   * 
   * @return a String with the original message key.
   */
  String getKey();

  /**
   * Sets the original message key.
   * @param value the new message key value.
   */
  void setKey(String value);

  /**
   * Returns a list with the original message parameters as Strings.
   * @return  a list with the original message parameters as Strings.
   */
  EList getSubstitutions();
}
