[JIRA] (HBX-2015) Allow custom reverse engineering strategy to enrich table/column metaattributes provided by hibernate.reveng.xml
by Jordi Hernández (JIRA)
Jordi Hernández ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate Tools ( https://hibernate.atlassian.net/browse/HBX?atlOrigin=eyJpIjoiZGY3MWNiODdi... ) / Improvement ( https://hibernate.atlassian.net/browse/HBX-2015?atlOrigin=eyJpIjoiZGY3MWN... ) HBX-2015 ( https://hibernate.atlassian.net/browse/HBX-2015?atlOrigin=eyJpIjoiZGY3MWN... ) Allow custom reverse engineering strategy to enrich table/column metaattributes provided by hibernate.reveng.xml ( https://hibernate.atlassian.net/browse/HBX-2015?atlOrigin=eyJpIjoiZGY3MWN... )
Issue Type: Improvement Affects Versions: 5.4.12.Final Assignee: Koen Aers ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) Components: hbm2java, reverse-engineer Created: 12/Apr/2020 14:22 PM Priority: Minor Reporter: Jordi Hernández ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
Currently, when a hibernate.reveng.xml is provided alongside an implementation of ReverseEngineeringStrategy there are some cases in which the latter is completely ignored, making it pointless to implement some of its methods.
An instance of the OverrideRepository is created, which creates an internal implementation of a ReverseEngineeringStrategy (which, I notice, has recently been renamed to RevengStrategy). Now, this implementation will pick when to call or not the user provided implementation.
In the case of the methods that generate MetaAttributes for tables and columns, the RevengStrategy implementation is bypassed altogether. This means that you cannot enrich this metadata for template specifics at the same time as you provide some configuration via hibernate.reveng.xml.
I believe that metadata from the XML file and the reveng strategy implementation do not need to be exclusive, since after all metadata is put in a Map and therefore many different bits of information can be provided from each side.
So the solution to this, which I implemented in a PR, is to call the reverse engineering implementation, grab whatever metadata is generated there, and merge it with the one coming from the xml mapping file.
( https://hibernate.atlassian.net/browse/HBX-2015#add-comment?atlOrigin=eyJ... ) Add Comment ( https://hibernate.atlassian.net/browse/HBX-2015#add-comment?atlOrigin=eyJ... )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.... ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailN... ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100124- sha1:185bad4 )
4 years, 5 months
[JIRA] (HBX-2014) HBM2Java uses default plattform encoding for source generation
by Jordi Hernández (JIRA)
Jordi Hernández ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) *created* an issue
Hibernate Tools ( https://hibernate.atlassian.net/browse/HBX?atlOrigin=eyJpIjoiMzQzNDdiNGYw... ) / Improvement ( https://hibernate.atlassian.net/browse/HBX-2014?atlOrigin=eyJpIjoiMzQzNDd... ) HBX-2014 ( https://hibernate.atlassian.net/browse/HBX-2014?atlOrigin=eyJpIjoiMzQzNDd... ) HBM2Java uses default plattform encoding for source generation ( https://hibernate.atlassian.net/browse/HBX-2014?atlOrigin=eyJpIjoiMzQzNDd... )
Issue Type: Improvement Affects Versions: 5.4.13.Final Assignee: Koen Aers ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... ) Components: hbm2java Created: 12/Apr/2020 13:08 PM Priority: Minor Reporter: Jordi Hernández ( https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%... )
I am using hbm2java via Maven integration in a project where we are doing database first development. I have used a custom ReverseEngineeringStrategy in order to import the comments from tables and fields into the generated classes.
The project language is spanish, so usually the comments in the database will contain characters with accents (á, é, í…) etc. When the code is generated, it will produce errors because the files have the wrong encoding and these characters are mangled.
I took a look at the hbm2x sources and turns out that the code that does the actual writing of the files looks as follows (in the class org.hibernate.tool.hbm2x.TemplateProducer) :
fileWriter = new FileWriter(destination);
fileWriter.write(tempResult);
The ‘destination’ variable is a File reference, and tempResult is the templates output.
Well, turns out that with this code, java will write the file using the default plattform encoding, which in my case, being a Windows user, will end up being CP-1512.
So, for international character codes support I think this code should at least write UTF-8, or even better, let the user select the encoding.
( https://hibernate.atlassian.net/browse/HBX-2014#add-comment?atlOrigin=eyJ... ) Add Comment ( https://hibernate.atlassian.net/browse/HBX-2014#add-comment?atlOrigin=eyJ... )
Get Jira notifications on your phone! Download the Jira Cloud app for Android ( https://play.google.com/store/apps/details?id=com.atlassian.android.jira.... ) or iOS ( https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailN... ) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100124- sha1:185bad4 )
4 years, 5 months