Talk:LiveDB
From APIDesign
Comments on LiveDB <comments />
Contents |
Russ White said ...
Nice. I am glad I could motivate someone who understands the project domain. Btw. I'd put the processor into different package than the annotations, so it is not treated as part of the AridModel API. It is an implementation detail, should be hidden to users of the API in some less public part of the API JAR file.
--JaroslavTulach 18:26, 31 August 2010 (UTC)
Russ White said ...
Thanks.
That is good advice. I did as you suggested.
Cheers! Russ
--Russ White 22:13, 31 August 2010 (CEST)
Russ White said ...
Completions questions.
If you put a package-info.java such as the one in the test source package into the regular source package of a new project which wants to make use of the processor (and it's static and dynamic completions), the getCompletions method on the processor is never called. The processor still works at compile time, but the use of the annotation in the editor seems to be limited to the test packages. Can you explain why this happens?
Here is what I implemented to test:
@Override public Iterable<? extends Completion> getCompletions(Element element, AnnotationMirror annotation, ExecutableElement member, String userText) { Logger.getLogger(FooProcessor.class.getName()).info("Completion....."); return Collections.singleton(Completions.of("Test")); }
It gets called and works fine when editing a package-info.java that is in "Test Packages"
The method does not get called at all while editing a copy of the same file in "Source Packages"
I have to admit I am stumped. Any ideas? Is this just a NetBeans bug?
--Russ White 23:30, 4 September 2010 (CEST)
Hello Russ. You need to have latest development build of NetBeans 6.10 to make proper use of getCompletion method. Moreover the AnnotationProcessor needs to be compiled before you start to use the annotation. Preferably you should have your processor in one JAR file and use it from another project. That is supposed to work OK. The Test Packages are separate source root (compiled after project sources) and thus are quite similar to the previous example of packaging a JAR and using it from different project (except the JAR does not need to be created to work with the test classes). But definitely you can't use the AnnotationProcessor from among the same sources that define the processor. That would require some kind of incremental parsing and processing and I think that the NetBeans Java editor guys are not willing to bother with that.
--JaroslavTulach 05:46, 6 September 2010 (UTC)
I am using nb 6.10.m1
The project that has the annotation and processor is separate from the example project. I use it as a library in the example. I still only get the completions when writing test source code.
I am pretty sure that is not the desired behavior. I will try a nightly build.
Thanks for the pointers.
Martin Juranek said ...
Whoa, that will get handy.
About philosofical aspects: I don't think that database schema should be THE source of truth about database and entity classes. Information contained there is simply not complete, because 1) its relational 2) somtimes you need to do strange things. Considering you can describe everything in java source code (even DB specific things, thanks to annotations), its better to make java source THE source of truth. But some help when writing it and then enforcing it at compile time (annotation saying to verify whether DB schema is compatible with source) would definitely be usefull.
--Martin Juranek 09:14, 12 October 2010 (CEST)
I was inspired by your article to create a project that would fit the needs I have for a project that requires integration with an existing schema.
http://github.com/AridModel
Thanks so much for your good article.
Cheers! Russ
--Russ White 15:43, 31 August 2010 (CEST)