Cuando se carga la aplicación, se llama al método
initApp()
para las aplicaciones de Flex o el código de la línea de tiempo (sin función) se ejecuta en Flash Professional. Este código define un paquete XML de ejemplo que comprobará la clase Validator. Se ejecuta el siguiente código:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
El paquete XML se muestra después en una instancia de componente TextArea en el escenario, lo que permite modificar el paquete antes de intentar su revalidación.
Cuando el usuario hace clic en el botón Validate, se llama al método
validateData()
. Este método valida el paquete XML para empleados con el método
validateEmployeeXML()
de la clase Validator. El código siguiente muestra el método
validateData()
:
function validateData():void
{
try
{
var tempXML:XML = XML(xmlText.text);
Validator.validateEmployeeXML(tempXML);
status.text = "The XML was successfully validated.";
}
catch (error:FatalError)
{
showFatalError(error);
}
catch (error:WarningError)
{
showWarningError(error);
}
catch (error:Error)
{
showGenericError(error);
}
}
En primer lugar, se crea un objeto XML temporal con el contenido de la instancia de componente TextArea
xmlText
. A continuación, el método
validateEmployeeXML()
de la clase Validator personalizada (com.example.programmingas3/errors/Validator.as) se llama y transmite el objeto XML temporal como parámetro. Si el paquete XML es válido, la instancia de componente Label
status
muestra un mensaje de operación realizada correctamente y se cierra la aplicación. Si el método
validateEmployeeXML()
genera un error personalizado (es decir, FatalError, WarningError o Error de tipo genérico), la sentencia
catch
correspondiente llama al método
showFatalError()
,
showWarningError()
o
showGenericError()
y lo ejecuta. Cada uno de estos métodos muestra un mensaje apropiado en un área de texto denominada
statusText
para notificar al usuario el error concreto que se ha producido. Los métodos también actualizan la instancia de componente Label
status
con un mensaje determinado.
Si se produce un error grave durante el intento de validar el paquete XML para empleados, el mensaje de error se muestra en el área de texto
statusText
y el componente TextArea
xmlText
y la instancia del componente Button
validateBtn
se deshabilitan, tal como se indica en el código siguiente:
function showFatalError(error:FatalError):void
{
var message:String = error.message + "\n\n";
var title:String = error.getTitle();
statusText.text = message + " " + title + "\n\nThis application has ended.";
this.xmlText.enabled = false;
this.validateBtn.enabled = false;
hideButtons();
}
Si se produce un error de advertencia en lugar de un error grave, el mensaje de error se muestra en la instancia de TextArea
statusText
, pero las instancias del componente TextField y Button
xmlText
no se deshabilitan. El método
showWarningError()
muestra el mensaje de error personalizado en el área de texto
statusText
. El mensaje también pregunta al usuario si desea continuar con la validación del XML o cancelar la ejecución del script. El siguiente fragmento de código muestra el método
showWarningError()
:
function showWarningError(error:WarningError):void
{
var message:String = error.message + "\n\n" + "Do you want to exit this application?";
showButtons();
var title:String = error.getTitle();
statusText.text = message;
}
Cuando el usuario hace clic en el botón Sí o No, se llama al método
closeHandler()
. El extracto siguiente muestra el método
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Si el usuario decide cancelar la ejecución del script haciendo clic en Sí, se genera un error de tipo FatalError, lo que provoca el cierre de la aplicación.