svnno****@sourc*****
svnno****@sourc*****
2009年 9月 24日 (木) 21:46:19 JST
Revision: 3666 http://sourceforge.jp/projects/jiemamy/svn/view?view=rev&revision=3666 Author: yamkazu Date: 2009-09-24 21:46:19 +0900 (Thu, 24 Sep 2009) Log Message: ----------- Javadocを追加。動作にあわせたメソッド名に変更。 Modified Paths: -------------- eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExportMojo.java Modified: eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExportMojo.java =================================================================== --- eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExportMojo.java 2009-09-24 12:03:07 UTC (rev 3665) +++ eros/maven-jiemamy-plugin/trunk/src/main/java/org/jiemamy/maven/ExportMojo.java 2009-09-24 12:46:19 UTC (rev 3666) @@ -159,7 +159,7 @@ private void executeExport(RootModel rootModel) throws ClassNotFoundException, MojoExecutionException, InstantiationException, IllegalAccessException, ExportException, NotFoundException, CannotCompileException { Class<?> exportClass = Class.forName(exporterClass); - Type genericType = getGenericType(exportClass); + Type genericType = getExporterGenericInterface(exportClass); // ExportConfigクラスを取得 Class<?> exportConfigClass = Class.forName(((Class<?>) genericType).getName()); @@ -238,7 +238,18 @@ return generator.generate(); } - private Type getGenericType(Class<?> clazz) throws MojoExecutionException { + /** + * パラメータ化された{@link Exporter}の要素型を取得する。 + * <p> + * {@code clazz}に{@link Exporter}が見つからない場合は再帰的に + * {@link Class#getSuperclass()}を取得して{@link Exporter}を探す。 + * + * @param clazz {@link Exporter}の実装クラス + * @return {@link Exporter}の要素型 + * @throws MojoExecutionException {@link Exporter}が見つからない場合 + * @since 0.3 + */ + private Type getExporterGenericInterface(Class<?> clazz) throws MojoExecutionException { for (Type type : clazz.getGenericInterfaces()) { if (type != null && type instanceof ParameterizedType && Exporter.class.equals(((ParameterizedType) type).getRawType())) { @@ -246,12 +257,12 @@ } } if (clazz.getSuperclass() != null) { - Type genericType = getGenericType(clazz.getSuperclass()); + Type genericType = getExporterGenericInterface(clazz.getSuperclass()); if (genericType != null) { return genericType; } } - throw new MojoExecutionException("Not found ExportConfig Class"); + throw new MojoExecutionException("Not found Exporter Class"); } /**