[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [dali-dev] Manipulate java resources via resource model
|
Hi Dimiter,
In case it helps, it's probably worth noting something that Chris
mentioned a couple weeks ago as we do something very similar. If you
are also handling the scenario where the entity mappings may also be
defined in the ORM mapping file, you may need to have conditional code
that handles that case separately. You shouldn't use
setSpecifiedMappingKey in that case. See
https://bugs.eclipse.org/bugs/show_bug.cgi?id=240384 for details.
Thanks
Tom
Karen Moore wrote:
Hi Dimiter,
There is not a way to create the attribute using our API, you will
have to continue using the JDT API and then accessing the newly
created JavaPersistentAttribute.
Using JavaPersistentAtribute.setSpecifiedMappingKey(String) is the
correct approach for what you are doing. There is an interface
org.eclipse.jpt.core.MappingKeys that has static strings for all the
mappings types. So you could call
setSpecifiedMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY)
if you wanted to, obviously just a matter of preference.
Karen
Dimitrov, Dimiter wrote:
Hello Brian,
Thank you for the attention and for the question. I'm doing the
following: In an entity I'm creating attribute(via JDT API). I do
this, obtaining (org.eclipse.jdt.internal.core)CompilationUnit and
IType.createField(...). After the save, the change is propagated to
the model. On the created JavaPersistentAttribute I set annotation
@OneToOne via method
setSpecifiedMappingKey(JavaOneToOneMappingProvider.instance().getKey()).
Could you comment my approach? Is there way to create attribute via
context API? If I'm in mistake, could you show me the proper way to
create attribute in some JavaPersistentType and to annotate as
OneToOne unidirectional (@OneToOne) via context (or via resource API)
Thank you in advance.
Best Regards,
Dimiter
------------------------------------------------------------------------
*From:* dali-dev-bounces@xxxxxxxxxxx
[mailto:dali-dev-bounces@xxxxxxxxxxx] *On Behalf Of *Brian Vosburgh
*Sent:* Tuesday, July 22, 2008 8:07 PM
*To:* General Dali EJB ORM developer discussion.
*Subject:* Re: [dali-dev] Manipulate java resources via resource model
Dimiter,
changes to the model are propagated directly to the source. If the
modified file is also open in an editor in the UI, the modified file
will be changed but /not/ saved. The user will need to save the file.
If you are changing the model outside the UI thread you will need to
configure the JPA project to make modifications on the UI thread as
necessary. See
JpaProject#setThreadLocalModifySharedDocumentCommandExecutor(CommandExecutor).
Also note the model is "updated" asynchronously with every change. If
you want these updates to happen synchronously, you will need to set
the JPA project's "updater". See JpaProject#setUpdater(Updater). Note
the comments in SynchronousJpaProjectUpdater.
All of this is mildly complicated; so I have to ask: What are you
trying to do? If you are manipulating JPA annotations, you could use
the "context" model. Is there a reason you want to use the "resource"
model?
Brian
Dimitrov, Dimiter wrote:
Hi Brian,
I will take a look and I will ask you if something is not clear to
me. Just another question at this stage. When I change the model,
whether change will be propagated directly in the source, or I have
to save the explicitly. If I have to do it explicitly, is there
special API provided from DALI, or I have to use JDT API?
Best Regards,
Dimiter
------------------------------------------------------------------------
*From:* dali-dev-bounces@xxxxxxxxxxx
[mailto:dali-dev-bounces@xxxxxxxxxxx] *On Behalf Of *Brian Vosburgh
*Sent:* Thursday, July 17, 2008 9:11 PM
*To:* General Dali EJB ORM developer discussion.
*Subject:* Re: [dali-dev] Manipulate java resources via resource model
Yes, Member is the interface Dali uses to manipulate annotations in
Java source code.
We use implementations of AnnotationAdapter and
DeclarationAnnotationAdapter to
add, remove, and change annotations on a member (type, field, or
method).
These adapters are public while the implementations are still
internal; but you can look
at the implementations to see how we manipulate annotations ourselves.
Ask, if something is not clear, and I will try to remember how it
works. :)
Brian
Dimitrov, Dimiter wrote:
Hello,
In our work with new JPA model, we have necessity to manipulate
java entity class, adding new fields and annotations. We could do
this via JDT API, but I’m wondering whether will be possible to do
this via java resource model? I mean if we have reference to
JavaResourcePersistentType (respectively to its fields and
properties) could we manipulate them? For instance is it possible
to add relation one to one on attribute with name attribute? I hope
that the presented API provide such opportunities, because I
noticed method getMember() (for type, field or property), which
returns Member. From own side Member (in accordance with Java Doc)
offers manipulating of annotations on members. Is this manipulation
provides modifying (reflected in the code), or it is read-only?
Any help, information or hint will be appreciated.
------------------------------------------------------------------------
_______________________________________________
dali-dev mailing list
dali-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/dali-dev
------------------------------------------------------------------------
_______________________________________________
dali-dev mailing list
dali-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/dali-dev
_______________________________________________
dali-dev mailing list
dali-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/dali-dev