###############################################################################
# Copyright (c) 2003, 2004 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
# https://www.eclipse.org/legal/epl-2.0/
# 
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
New_key_attribute_added_wi_ERROR_=IWAE0001E New key attribute added without attribute helper.
IWAJ0129E_The_Java_type_na_ERROR_=IWAE0002E The Java type named {0} could not be set for the {1} because its EJB is null.
IWAJ0128E_Cannot_reflect_J_ERROR_=IWAE0003E Cannot reflect JavaClass because its name is not set within the command: {0}.
IWAJ0130I_Cannot_perform_t_ERROR_=IWAE0004E IWAJ0130I Cannot perform the command request because the EJB is null for the command:
IWAJ0131I_Cannot_add_the_f_ERROR_=IWAE0005E IWAJ0131I Cannot add the feature to the key because the feature is null for the command:
IWAJ0132I_Cannot_remove_th_ERROR_=IWAE0006E IWAJ0132I Cannot remove the feature from the key because the feature is null for the command:
Can_not_get_to_a_valid_EJB_ERROR_=IWAE0007E Can not get to a valid EJB extension
Empty_Attribute_name_ERROR_=IWAE0008E Empty Attribute name
--_Java_Generation____Init_UI_=-- Java Generation :: Initializing...
--_Java_Generation____Anal_UI_=-- Java Generation :: Analyzing...
--_Java_Generation____Gene_UI_=-- Java Generation :: Generating...
--_Java_Generation____Fini_UI_=-- Java Generation :: Finishing...
--_Updating_Metadata..._UI_=-- Updating Metadata...
The_command_failed_to_exec_ERROR_=IWAE0009E The command failed to execute code generation for the following reason:
Cancelled_ERROR_=IWAE0010E Cancelled
Add-On_Command_UI_=Add-On Command
The_command_failed_to_upda_ERROR_=IWAE0011E The command failed to update the meta-data for the following reason:
The_command_failed_to_undo_ERROR_=IWAE0012E The command failed to undo the meta-data change for the following reason:
Multiple_EnterpriseBean_Up_UI_=Multiple EnterpriseBean Updates
Creating_bean_named___{0}__UI_=Creating bean named "{0}"
Updating_bean_named___{0}__UI_=Updating bean named "{0}"
Deleting_bean_named___{0}__UI_=Deleting bean named "{0}"
The_key_shape_has_changed__UI_=The key shape has changed for the CMP Entity named {0} and there are relationship roles pointing to this entity, would you like to propagate these key changes?
MofObject_UI_=MofObject
Enumeration_UI_=Enumeration
Double_UI_=Double
Float_UI_=Float
Long_UI_=Long
Short_UI_=Short
Boolean_UI_=Boolean
Integer_UI_=Integer
Character_UI_=Character
Byte_UI_=Byte
Role(__{0}__)_opposite_is__INFO_=IWAE0013I Role("{0}") opposite is empty
Failed_to_convert_{0}_to_{_ERROR_=IWAE0014E Failed to convert {0} to {1}.
Error_in_Client_View_Creation_1=Error in Client View Creation.
Creating_source_folder__1=Creating source folder {0}
Failed_to_create_the_EnterpriseBean=Failed to create the enterprise bean.\nSee the log for more details.
Error_has_occurred_ERROR_=IWAE0002E Error has occurred
DeleteEnterpriseBeanDataModel_UI_1=Delete Bean(s)
EJBCodegenHandlerExtensionReader_ERROR_0=IWAE0015E "Extensions must be of the type \"{0}\".
