/**
 *   Copyright (c) 2010, 2019 Mia-Software and others.
 *   All rights reserved. This program and the accompanying materials
 *   are made available under the terms of the Eclipse Public License v2.0
 *   which accompanies this distribution, and is available at
 *   http://www.eclipse.org/legal/epl-v20.html
 *   
 *   Contributors:
 *   
 *       Nicolas Guyomar (Mia-Software) - initial API and implementation
 */
package org.eclipse.modisco.jee.webapp.webapp30;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Java Identifier Type</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 * 
 *         The java-identifierType defines a Java identifier.
 *         The users of this type should further verify that 
 *         the content does not contain Java reserved keywords.
 *         
 *       
 * <!-- end-model-doc -->
 *
 *
 * @see org.eclipse.modisco.jee.webapp.webapp30.Webapp30Package#getJavaIdentifierType()
 * @model extendedMetaData="name='java-identifierType' kind='simple'"
 * @generated
 */
public interface JavaIdentifierType extends org.eclipse.modisco.jee.webapp.webapp30.String {
} // JavaIdentifierType
