Index: topia-service/src/java/org/codelutin/topia/migration/transformation/FinderMigration.java diff -u topia-service/src/java/org/codelutin/topia/migration/transformation/FinderMigration.java:1.2 topia-service/src/java/org/codelutin/topia/migration/transformation/FinderMigration.java:1.3 --- topia-service/src/java/org/codelutin/topia/migration/transformation/FinderMigration.java:1.2 Thu Apr 26 13:03:56 2007 +++ topia-service/src/java/org/codelutin/topia/migration/transformation/FinderMigration.java Fri Apr 27 08:13:32 2007 @@ -18,6 +18,8 @@ package org.codelutin.topia.migration.transformation; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.codelutin.topia.migration.common.ProxyClass; import org.codelutin.topia.migration.common.Version; @@ -28,9 +30,9 @@ * @author Chevallereau Benjamin * @author Eon Sébastien * @author Trève Vincent - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Last update : $Date: 2007/04/26 13:03:56 $ + * Last update : $Date: 2007/04/27 08:13:32 $ */ public class FinderMigration { @@ -42,7 +44,7 @@ /** * Logger (common-logging) */ - //private static Log logger = LogFactory.getLog(FinderMigration.class); + private static Log logger = LogFactory.getLog(FinderMigration.class); /** * Constructeur vide. @@ -52,7 +54,9 @@ /** * Constructeur - * @param prefix nouveau prefix + * + * @param prefix + * nouveau prefix */ public FinderMigration(String prefix) { this(); @@ -61,29 +65,40 @@ /** * Use to get migration class for one version to next version + * * @param klass class * @param base base version - * @param next + * @param next destination version */ - public MigrationClass getMigrationClass(ProxyClass klass, Version base, Version next) { - + public MigrationClass getMigrationClass(ProxyClass klass, Version base, + Version next) { + MigrationClass mcResult = null; + + String baseFullName = klass.getCanonicalName(); + String baseLittleName = baseFullName.substring(baseFullName + .lastIndexOf('.') + 1); + String basePackage = baseFullName.substring(0, baseFullName + .lastIndexOf('.')); - String baseFullName = klass.getCanonicalName(); - String baseLittleName = baseFullName.substring(baseFullName.lastIndexOf('.')+1); - String basePackage = baseFullName.substring(0,baseFullName.lastIndexOf('.')); - String newClassName = basePackage + "." + PREFIX + baseLittleName + "V" + base.getVersion() + "V" + next.getVersion(); - + // Convention : + // - meme package + // - MigrationVV + String newClassName = basePackage + "." + PREFIX + baseLittleName + "V" + + base.getVersion() + "V" + next.getVersion(); + try { Class.forName(newClassName); - + // pas d'exception, la classe existe - mcResult = new MigrationClass(newClassName,baseFullName,base,next); + mcResult = new MigrationClass(newClassName, baseFullName, base, + next); } catch (ClassNotFoundException e) { // no migration class // but this is not an error + logger.debug("No migration class for " + klass.getCanonicalName()); } - + return mcResult; } }