/**
 * Copyright (c) 2010 Mia-Software.
 *    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:
 *    
 *    	   Nicolas Guyomar (Mia-Software) - initial API and implementation
 */
package org.eclipse.modisco.jee.ejbjar.EjbJar31;


/**
 * <!-- 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.ejbjar.EjbJar31.EjbJar31Package#getJavaIdentifierType()
 * @model extendedMetaData="name='java-identifierType' kind='simple'"
 * @generated
 */
public interface JavaIdentifierType extends org.eclipse.modisco.jee.ejbjar.EjbJar31.String {
} // JavaIdentifierType
