package org.eclipse.jst.validation.sample.parser;
/*
 * Licensed Material - Property of IBM 
 * (C) Copyright IBM Corp. 2002, 2003 - All Rights Reserved. 
 * US Government Users Restricted Rights - Use, duplication or disclosure 
 * restricted by GSA ADP Schedule Contract with IBM Corp. 
 *
 * DISCLAIMER OF WARRANTIES.
 * The following [enclosed] code is sample code created by IBM
 * Corporation. This sample code is not part of any standard or IBM
 * product and is provided to you solely for the purpose of assisting
 * you in the development of your applications.  The code is provided
 * "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
 * NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
 * THIS CODE.  THIS CODE MAY CONTAIN ERRORS.  IBM shall not be liable
 * for any damages arising out of your use of the sample code, even
 * if it has been advised of the possibility of such damages.
 * 
 */

/**
 * This interface contains the message ids of all of the Properties
 * Validator's messages, and the name of the resource bundle that 
 * contains those messages. 
 */
public interface IValidationConstants {
	/*package*/ static final String BUNDLENAME = "propertiesValidator"; //$NON-NLS-1$
	
	/*package*/ static final String ABCD0000 = "ABCD0000"; //$NON-NLS-1$
	/*package*/ static final String ABCD0010E = "ABCD0010E"; //$NON-NLS-1$
	/*package*/ static final String ABCD0010W = "ABCD0010W"; //$NON-NLS-1$
	/*package*/ static final String ABCD0020 = "ABCD0020"; //$NON-NLS-1$
	/*package*/ static final String ABCD0030 = "ABCD0030"; //$NON-NLS-1$
	/*package*/ static final String ABCD0040 = "ABCD0040"; //$NON-NLS-1$
	/*package*/ static final String ABCD0050 = "ABCD0050"; //$NON-NLS-1$
	/*package*/ static final String ABCD0060 = "ABCD0060"; //$NON-NLS-1$
	/*package*/ static final String ABCD0070 = "ABCD0070"; //$NON-NLS-1$
	/*package*/ static final String ABCD0080 = "ABCD0080"; //$NON-NLS-1$
	/*package*/ static final String ABCD0090 = "ABCD0090"; //$NON-NLS-1$
	/*package*/ static final String ABCD0110 = "ABCD0110"; //$NON-NLS-1$
	/*package*/ static final String ABCD0120 = "ABCD0120"; //$NON-NLS-1$
	/*package*/ static final String ABCD0130 = "ABCD0130"; //$NON-NLS-1$

	/*package*/ static final String LINE_LOC = "LINE_LOC"; //$NON-NLS-1$
}
