[forge-dev] JPA facet isInstalled implementation

George Gastaldi ggastald at redhat.com
Mon Jul 6 16:19:14 EDT 2015


Hey Ivan,

It seems that in your case the JPA 2.0 classes are defined in a 
different JAR (a different groupId/artifactId) ?
Your idea might work, however, just make sure that the version attribute 
in the persistence.xml defines the installed facet version (JPAFacet_2_0 
when version="2.0" and JPAFacet_2_1 when version="2.1").

Best Regards,
George Gastaldi

On 07/06/2015 05:13 PM, Ivan St. Ivanov wrote:
> Hi George,
>
> My idea is the following: if you don't have persistence.xml, then most 
> probably you don't have the dependencies either. Definitely the facet 
> is not installed, so Forge installs it for you by adding both the 
> persistence.xml and the dependencies.
>
> But if you have persistence.xml already in your project in 99% of the 
> cases you have already setup the dependencies as well. So the facet is 
> there and Forge does not need to install it.
>
> Regards,
> Ivan
>
> On Mon, Jul 6, 2015 at 11:06 PM, George Gastaldi <ggastald at redhat.com 
> <mailto:ggastald at redhat.com>> wrote:
>
>     Hi Ivan,
>
>     I am not sure this is enough. How can you assure that no
>     compilation errors would occur when @Entity or any other
>     JPA-related class is used?
>
>     Best Regards,
>
>     George Gastaldi
>
>
>     On 07/06/2015 05:02 PM, Ivan St. Ivanov wrote:
>>     Hi everybody,
>>
>>     I am working on a project that is not mainstream Java EE. Its
>>     target is Tomcat, but it uses JPA 2.0 (Eclipselink). I have
>>     tailored the dependencies in the pom.xml as well as the
>>     persistence.xml.
>>
>>     And now I want to use Forge to add some fields to the existing
>>     entities. What I noticed is that when I run the jpa-new-field
>>     command for the first time, it also installs the JPA facet. Which
>>     in turns adds some unwanted dependencies to my pom.xml and
>>     completely overwrites persistence.xml.
>>
>>     I dig into the code and found that the isInstalled method of the
>>     JPA Facet returns true when persistence.xml file does not exist
>>     and when pom.xml does not contain some dependencies. These
>>     dependencies are different for JPA 2.0 and 2.1, but are basically
>>     Hibernate JPA API and the Java EE API.
>>
>>     As a result of this, projects that don't target Java EE or that
>>     use different artifacts for it or for JPA are going to get their
>>     poms polluted and their persistence.xml files overwritten.
>>
>>     So my proposal is to change the isInstalled method to only check
>>     for the presence of persistence.xml. What do you think?
>>
>>     Regards,
>>     Ivan
>>
>>
>>     _______________________________________________
>>     forge-dev mailing list
>>     forge-dev at lists.jboss.org  <mailto:forge-dev at lists.jboss.org>
>>     https://lists.jboss.org/mailman/listinfo/forge-dev
>
>
>     _______________________________________________
>     forge-dev mailing list
>     forge-dev at lists.jboss.org <mailto:forge-dev at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/forge-dev
>
>
>
>
> _______________________________________________
> forge-dev mailing list
> forge-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/forge-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/forge-dev/attachments/20150706/8f6f2f59/attachment-0001.html 


More information about the forge-dev mailing list