org.nuiton.topia.service.servers
Class RemoteClassLoader

java.lang.Object
  extended by org.nuiton.topia.service.servers.RemoteClassLoader
All Implemented Interfaces:
org.objectweb.asm.ClassVisitor

public class RemoteClassLoader
extends java.lang.Object
implements org.objectweb.asm.ClassVisitor

RMIRemoteHelper.java Creer une nouvelle classe en transformant la classe passee en parametre. Ajoute une interface "Remote" Ajoute des exception a toutes les methodes "RemoteException" Utilise les API asm.

Version:
$Revision: 1558 $ Last update : $Date: 2009-06-11 06:53:44 +0200 (jeu. 11 juin 2009) $ By : $Author: tchemit $
Author:
chatellier
See Also:
Remote, RemoteException

Field Summary
protected  org.objectweb.asm.ClassWriter cWriter
          Le writer (global necessaire parce que parcourt par patron visiteur)
static java.lang.String EXTENSION
          Ajout au nom de classe
 
Constructor Summary
protected RemoteClassLoader()
          Constructeur
 
Method Summary
static java.lang.String getOriginClassName(java.lang.Class clazz)
          Retourne le nom d'origine sans l'ajout
static java.lang.Class<?> getRemoteClass(java.lang.Class clazz)
          Retourne la classe version "remote" de celle specifiee
protected  void saveInFile(java.net.URL originClazzPath, byte[] clazzBytes)
          Genere la classe dans son fichier phisyque /home/chatellier/tmp/toto.java file:/home/chatellier/tmp/toto.class
protected  void saveInJarFile(java.net.URL originClazzPath, byte[] clazzBytes)
          Sauve le fichier dans un jar.
protected  void saveOnDisk(java.lang.Class clazz, byte[] clazzBytes)
          Sauve la classe generee sur le disque.
 void visit(int version, int access, java.lang.String name, java.lang.String superName, java.lang.String[] interfaces, java.lang.String sourceFile)
           
 void visitAttribute(org.objectweb.asm.Attribute attr)
           
 void visitEnd()
           
 void visitField(int access, java.lang.String name, java.lang.String desc, java.lang.Object value, org.objectweb.asm.Attribute attrs)
           
 void visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)
           
 org.objectweb.asm.CodeVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String[] exceptions, org.objectweb.asm.Attribute attrs)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EXTENSION

public static final java.lang.String EXTENSION
Ajout au nom de classe

See Also:
Constant Field Values

cWriter

protected org.objectweb.asm.ClassWriter cWriter
Le writer (global necessaire parce que parcourt par patron visiteur)

Constructor Detail

RemoteClassLoader

protected RemoteClassLoader()
Constructeur

Method Detail

visit

public void visit(int version,
                  int access,
                  java.lang.String name,
                  java.lang.String superName,
                  java.lang.String[] interfaces,
                  java.lang.String sourceFile)
Specified by:
visit in interface org.objectweb.asm.ClassVisitor

visitAttribute

public void visitAttribute(org.objectweb.asm.Attribute attr)
Specified by:
visitAttribute in interface org.objectweb.asm.ClassVisitor

visitEnd

public void visitEnd()
Specified by:
visitEnd in interface org.objectweb.asm.ClassVisitor

visitField

public void visitField(int access,
                       java.lang.String name,
                       java.lang.String desc,
                       java.lang.Object value,
                       org.objectweb.asm.Attribute attrs)
Specified by:
visitField in interface org.objectweb.asm.ClassVisitor

visitInnerClass

public void visitInnerClass(java.lang.String name,
                            java.lang.String outerName,
                            java.lang.String innerName,
                            int access)
Specified by:
visitInnerClass in interface org.objectweb.asm.ClassVisitor

visitMethod

public org.objectweb.asm.CodeVisitor visitMethod(int access,
                                                 java.lang.String name,
                                                 java.lang.String desc,
                                                 java.lang.String[] exceptions,
                                                 org.objectweb.asm.Attribute attrs)
Specified by:
visitMethod in interface org.objectweb.asm.ClassVisitor

getOriginClassName

public static java.lang.String getOriginClassName(java.lang.Class clazz)
Retourne le nom d'origine sans l'ajout

Parameters:
clazz - la classe remote
Returns:
le nom non-remote

getRemoteClass

public static java.lang.Class<?> getRemoteClass(java.lang.Class clazz)
                                         throws java.lang.ClassNotFoundException
Retourne la classe version "remote" de celle specifiee

Parameters:
clazz - la classe non remote
Returns:
la classe remote
Throws:
java.lang.ClassNotFoundException - si on ne peut pas genere la classe

saveOnDisk

protected void saveOnDisk(java.lang.Class clazz,
                          byte[] clazzBytes)
                   throws java.io.IOException
Sauve la classe generee sur le disque. Dans un jar, ou ds un fichier...

Parameters:
clazz - La class d'origine
clazzBytes - La classe generee
Throws:
java.io.IOException

saveInJarFile

protected void saveInJarFile(java.net.URL originClazzPath,
                             byte[] clazzBytes)
                      throws java.io.IOException
Sauve le fichier dans un jar. Java ne supporte pas le modification des jar. On le sauve maintenant dan le dossier topiagen.

Parameters:
originClazzPath -
clazzBytes -
Throws:
java.io.IOException - si erreur d'ecriture

saveInFile

protected void saveInFile(java.net.URL originClazzPath,
                          byte[] clazzBytes)
                   throws java.io.IOException
Genere la classe dans son fichier phisyque /home/chatellier/tmp/toto.java file:/home/chatellier/tmp/toto.class

Parameters:
originClazzPath - l'url d'origine
clazzBytes - les donnees de la classe
Throws:
java.io.IOException - si erreur d'ecriture


Copyright © 2004-2009 CodeLutin. All Rights Reserved.