domingo, 12 de octubre de 2008

uml: Enterprise Architect y Subversion

Enterprise Architect permite administrar los cambios en un modelo mediante varios SCM, uno de ellos es Subversion (SVN). Los siguiente pasos son necesarios:
- Instalar el servidor SVN o tener acceso a uno
- Importar la estructura del repositorio al servidor SVN
- Crear un directorio de trabajo local




Una vez que la configuracion de subversion fue completada, debera comenzar a agregar al repositorio los artefactos del modelo que desea controlar:










Vinculos:

uml: Crear un modelo master con Enterprise Architect

Para crear el modelo maestro (master) es necesario:
- Crear un modelo
- Convertirlo en maestro


Antes de comenzar con el proceso de conversion, observara un mensaje que le permitira tomar las decision final:


Una vez convertida la base de datos del modelo a una base maestro, observara el siguiente mensaje:



Una vez convertido el modelo a maestro, debera crear las replicas a partir de este maestro. No es necesario que cierre el proyecto maestro, por el contrario:


Debera buscar en el sistema de archivos el maestro recien creado:


Una vez creada la replica, observara un mensaje indicandole el resultado del proceso:


Vinculos:

sábado, 11 de octubre de 2008

scm: Crear un repositorio en Google Code

Crear un directorio temporal y alli otro con el nombre del repositorio. Ejecute los siguientes comandos:
$> mkdir tmpdir
$> cd tmpdir
$> mkdir Project

Luego importar el repositorio a SVN en Google Code:
$>svn import Project https://project.googlecode.com/svn -m "Model for the Project" --username [google-username]

Podra observar el siguiente mensaje de advertencia:

Error validating server certificate for 'https://project.googlecode.com:443':
- The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually!
Certificate information:
- Hostname: googlecode.com
- Valid: from Wed, 28 May 2008 18:48:13 GMT until Mon, 21 Jun 2010 16:09:43 GMT
- Issuer: Certification Services Division, Thawte Consulting cc, Cape Town, Western Cape, ZA
- Fingerprint: b1:3a:d5:38:56:27:52:9f:ba:6c:70:1e:a9:ab:4a:1a:8b:da:ff:ec

Tendra la opcion de aceptar o no el certificado:

(R)eject, accept (t)emporarily or accept (p)ermanently?

Si obtiene el siguiente error, vuelva a intentar ejecutar el comando:

tsvn: PROPFIND request failed on '/svn'
svn: PROPFIND of '/svn': Could not read status line: Secure connection truncated (https://project.googlecode.com)

Frente a un resultado exitoso, en el cual se concreta el agregado del repositorio a SVN, podra observar el siguiente mensaje:

Adding C:\tmpdir\Project
Committed revision 2.

Vinculos:

scm: Instalar cliente de SVN

Descargar el cliente de SVN del sitio oficial.

Descomprimir el contenido de la distribucion por lo que obtendra el directorio: svn-

Modificar la variable de entorno "path" para poder ejecutar svn desde cualquier ubicacion del sistema de archivos.

Ejecutar svn para verificar el procedimiento.

Vinculos:

jueves, 2 de octubre de 2008

aspectj: Ejemplo sencillo

Primero es necesario crear un directorio donde alojar la clase Java a interceptar por AspectJ:

$> mkdir AspectJExample
$> cd AspectJExample

Ahora debera crear la clase Example1.java con el siguiente contenido:


Cree ahora un archivo con el nombre Example1Aspect.aj para el aspecto que interceptara la clase anterior:


$> ajc Example1Aspect.aj Example1.java

El resultado podria ser:

[error] classpath error: unable to find org.aspectj.lang.JoinPoint (check that aspectjrt.jar is in your classpath)

Por lo que se debera agregar al classpath utilizado por el compilador de aspectos el jar indicado:

$> ajc -cp /aspectj1.5/lib/aspectjrt.jar -d C:\Dev\Workspace\AspectsTest\bin -log build.log -outjar example1.jar Example1Aspect.aj Example1.java


Los parametros que recibe el compilador de aspectos son:
-log [nombre_archivo] : Escribe en el archivo especificado el detalle de las clases interceptadas
-outjar [nombre_archivo] : Genera un archivo .jar que contiene las clases compiladas

Podra observar que las clases fueron construidas:

Example1.class
Example1Aspect.class

El contenido de cada una de estas clases es:

$> javap src\business\Example1

Compiled from "Example1.java"
public class business.Example1 extends java.lang.Object{
public business.Example1();
public static void main(java.lang.String[]);
public void example1();
}

$> javap src\aspects\Example1Aspect

Compiled from "Example1Aspect.aj"
public class aspects.Example1Aspect extends java.lang.Object{
public static final aspects.Example1Aspect ajc$perSingletonInstance;
static {};
public aspects.Example1Aspect();
public void ajc$before$aspects_Example1Aspect$1$88a63b48();
public static aspects.Example1Aspect aspectOf();
public static boolean hasAspect();
}

Finalmente ejecute la clase Example1

Vinculos: