ADF tips: Reglas de auditoría en JDeveloper – Crea tus propias reglas (Modificador)
31/07/2015 -
Siguiendo con la serie de posts sobre reglas de auditoria, donde ya hemos explicado cómo crear nuestra propia regla de auditoria creando nuestro analizador, ahora explicaremos cómo crear un Transform que nos sugiera el código que debemos poner. Siguiendo el ejemplo de nuestra regla de auditoria, que no nos deja tener en el código la sentencia System.out.print porque por ejemplo estamos usando ADFLogger y en nuestras clases todas tienen el siguiente código de inicialización del ADFLogger:
1
|
private static ADFLogger logger = ADFLogger.createADFLogger(TestAudit. class ); |
Vamos a crear una clase Transform que nos cambiará el código System.out.println(‘texto’); por logger.info(‘texto’);
Para hacer esto modificaremos el fichero Extension.xml definiendo nuestra clase y mapeándola con la clase Analizer definida anteriormente, quedando así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
< extension id = "com.avanttic.extension.auditreglas" version = "1.0.0"
= "2.0" rsbundle-class = "com.avanttic.extension.auditreglas.AuditReglas"
= "http://jcp.org/jsr/198/extension-manifest" > < name >${EXTENSION_NAME}</ name > < owner >${EXTENSION_OWNER}</ owner > <!-- TODO Declare triggering functionality provided by extension: com.avanttic.extension.auditreglas --> < triggers > < audit-hook id = "com.avanttic.extension.auditreglas" > < trigger > < technology >Java</ technology > </ trigger > < category-definition id = "AuditAvanttic" /> < category-definition id = "ReglaJava" > < category >AuditAvanttic</ category > </ category-definition > < transform-definition id = "transform-system-print" > < transform-class >com.avanttic.extension.auditreglas.transform.java.JavaTransformImpl</ transform-class > </ transform-definition > < rule-definition id = "system-print" > < category >ReglaJava</ category > < enabled >true</ enabled > < severity >error</ severity > < transform-binding > < transform >transform-system-print</ transform > </ transform-binding > </ rule-definition > < analyzer-definition > < analyzer-class >com.avanttic.extension.auditreglas.analizers.java.JavaAnalizerImpl</ analyzer-class > </ analyzer-definition > </ audit-hook > </ triggers > </ trigger-hooks > < hooks > <!-- TODO Declare functionality provided by extension: com.avanttic.extension.auditreglas --> </ hooks > </ extension > |
Explicación de los nuevos tags:
- transform-definition: Define una clase java que extenderá oracle.jdeveloper.audit.transform.Transform y servirá para hacer la modificación.
- transform-binding: Mapeamos nuestro modificador con el Analizer.
Después crearemos la clase java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.avanttic.extension.auditreglas.transform.java; import oracle.javatools.parser.java.v2.internal.symbol.stmt.ExpressionStmt; import oracle.jdeveloper.audit.java.JavaTransformAdapter; import oracle.jdeveloper.audit.java.JavaTransformContext; import oracle.jdeveloper.audit.transform.Transform; public class JavaTransformImpl extends Transform { public JavaTransformImpl() { super ( new JavaTransformAdapter()); } public void apply(JavaTransformContext context, ExpressionStmt stmt) { // Aqui pondremos el codigo que realiará las modificaciones } } |
Una vez tengamos esto haremos el deploy de nuestro proyecto de reglas y comprobaremos cómo nos hace el cambio:
Conclusión: Hemos visto cómo en tiempo de codificación podemos controlar que se cumplan nuestras especificaciones QA y cómo podemos ayudar al programador a cumplirlas, al poder sugerirle el código correcto que tiene que usar.