[Seasar-user:19815] Re: [Doma]Enumの利用での要望

newta [E-MAIL ADDRESS DELETED]
2010年 5月 28日 (金) 19:01:58 JST


新田(newta)です。

再現性の件ですが、再現性はありました。

@Dao
public interface TestDao {
    @Select
    HogeEntity selectById(TopClass.InnerEnumDomain cd,
Top2Class.InnerEnumDomain no);
}

以上のように2つのインナークラスを参照しているDaoなどを定義を使用しているときに
Enumなどのインナークラスが2つとも削除されたときに、起きるようです。
(インナークラスが参照できず、コンパイルエラーになる状態のとき)

1度、eclipseがエラーを出すと、コンパイルエラーの表示がされなくなり、
コンパイルされなくなりますが、
コンパイルエラーにならない正常なソースにまでなれば、エラーが消えるようです。
ただ、コンパイルエラーが表示されない状態でコンパイルエラーにならない
正常な状態に戻さなければならないのは結構きついです。

また、コンパイルエラーになっているため、
スーパークラスなどをプロジェクトのクラスを参照してdoma-genなどを利用している場合、
参照しているクラスが生成されずにdoma-genが実行できないため一部上書きでなども厳しいです。

インナークラスをフルで使っていると、ちょくちょく問題が起きるかもしれません。

以上です。


2010年5月28日17:53 newta <[E-MAIL ADDRESS DELETED]>:
> 新田(newta)です。
>
>
> スタックトレースは以下のとおりです。
>
> java.lang.NullPointerException
> at org.eclipse.jdt.internal.compiler.apt.model.ElementImpl.hashCode(ElementImpl.java:110)
> at java.util.HashMap.put(HashMap.java:372)
> at java.util.HashSet.add(HashSet.java:200)
> at org.eclipse.jdt.internal.compiler.apt.util.ManyToMany.put(ManyToMany.java:198)
> at org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor.resolveAnnotations(AnnotationDiscoveryVisitor.java:187)
> at org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor.visit(AnnotationDiscoveryVisitor.java:128)
> at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:207)
> at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1290)
> at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:679)
> at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundEnvImpl.<init>(RoundEnvImpl.java:56)
> at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:148)
> at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:134)
> at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:809)
> at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:428)
> at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:364)
> at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:178)
> at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:301)
> at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:60)
> at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:254)
> at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:178)
> at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
> at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
> at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
> at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
> at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
> at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
> at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
> at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
>
>
> 再現性についてですが今のところ、1回しか起きていません。
> ちょっと時間がなくて、再度試している時間が取れなくて、、、。
> 来週以降にでももう1度試せる時間があればいいのですが、、。
>
> インナークラスにDomainやEnumDomainアノテーションを定義したり、
> トップレベルからインナークラスに移動したり試していたときに、
> エラーが起きて直らなくなったので、状況もあっているのかな、
> 感じて3.6のリンクは張っておきました。
> (英語に自信がないので、雰囲気だけですが。)
>
> 使用しているEclipseは http://mergedoc.sourceforge.jp/ からダウンロードしている
> Version: 3.5.2.r352でした。
>
>
> 以上です。よろしくお願いします。
>
>
> 2010年5月28日15:59 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>:
>> 中村(taedium)です。
>>
>>> 現在、色々触っていると、
>>> Internal compiler error: java.lang.NullPointerException at
>>> org.eclipse.jdt.internal.compiler.apt.model.ElementImpl.hashCode(ElementImpl.java:110)
>>> のeclipseエラーが出たりして、
>>> daoとentityを消すと直ったのですが、
>>> 調べたところあまり情報が出てこなかったのですが以下が怪しそうです。
>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=295948
>>> Innerクラスのapt動作は怪しいですかね。。
>>
>> スタックトレース全体を見せてもらうと
>> Domaで回避できる部分がみつかるかもしれません。
>>
>> 再現性はありますか?
>>
>>> eclipseのAll in oneの最新を使っているのですが、
>>> はまってしばらく直らないことがあったので
>>> 対応していただいたのですが、使っていくべきか、
>>> はまるリスクを考えるとどうするべきか難しいです。。
>>
>> 最新とは具体的に、どのバージョンでしょうか?
>> 示していただいたBugzillaへのリンクではバージョンが3.6となっていますが
>> 3.6のマイルストーン版を使っていますか?
>> こちらの動作確認としては、Eclipse 3.5 SR2で行っています。
>>
>>> もう1つselectByIdのsql自動生成ですが、
>>> Entityクラスでsuperクラスを指定している場合に、
>>> superクラスで定義されたカラムが
>>> selectByIdのsqlの自動生成されたselectの取得カラム出力されません。
>>> 取得できるようにsuperクラスのプロパティも持つように
>>> freemarkerに渡すモデルを修正してもらえませんでしょうか。
>>
>> これは、完全に考慮もれでした。
>> 修正します。
>> --
>> Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>


Seasar-user メーリングリストの案内