Hello all,

Based on this thread it doesn't seem that we have a strong consensus either
for or against use of Lombok at this time.

Votes:
Dan W (me!):  +1
Jacques: +1
Shi: -1

Sentiment in other messages seems positive but cautious.

Some pros and cons have been presented.

I need some direction from the project on how to proceed - Is use of Lombok
acceptable within OFBiz?

Thanks,

Dan.


On Sat, 29 Aug 2020 at 13:54, Jacques Le Roux <jacques.le.r...@les7arts.com>
wrote:

> Thanks JInghai!
>
>
> Le 29/08/2020 à 14:50, Shi Jinghai a écrit :
> > Hi Jacques,
> >
> > It’s about a year ago. My IDE is eclipse. I spent about half of a day to
> make Lombok work correctly, Getter/Setter, AllArgsConstructor, plugin
> version problem and etc.
> >
> > Does Lombok plugin worth a requirement and a time investment by all
> OFBiz developers? My answer is NO.
> >
> > Kind Regards,
> >
> > Shi Jinghai
> >
> > 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用
> >
> > 发件人: Jacques Le Roux<mailto:jacques.le.r...@les7arts.com>
> > 发送时间: 2020年8月27日 15:10
> > 收件人: dev@ofbiz.apache.org<mailto:dev@ofbiz.apache.org>
> > 主题: Re: A little bit of Lombok
> >
> > Thanks Jinghai,
> >
> > Is that long ago? Do you remember the most important issues you crossed?
> >
> > Jacques
> >
> > Le 27/08/2020 à 06:20, Shi Jinghai a écrit :
> >> Just my 2 cents.
> >>
> >> -1 for using Lombok plugin in OFBiz.
> >>
> >> I had some not good experiences with this plugin in Apereo CAS 5.3.x.
> >>
> >>
> >>
> >> 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用
> >>
> >> 发件人: Daniel Watford<mailto:d...@foomoo.co.uk>
> >> 发送时间: 2020年7月28日 20:44
> >> 收件人: dev@ofbiz.apache.org<mailto:dev@ofbiz.apache.org>
> >> 主题: A little bit of Lombok
> >>
> >> Hello,
> >>
> >> Back in April the possibility of using Lombok for the generation of some
> >> boilerplate code was mentioned on the mailing list [1].
> >>
> >> As part of work-in-progress on OFBIZ-11900 (refactoring
> MacroFormRenderer)
> >> I have used Lombok on a few small classes. The work-in-progress branch
> can
> >> be found at [2].
> >>
> >> Only a small amount of Lombok has been used so far, meaning it
> shouldn't be
> >> too difficult to remove it if needed.
> >>
> >> In build.gradle I have used the FreeFair Gradle Lombok plugin [3]
> >> referenced by the Lombok Project [4].
> >>
> >> Building with the lombok plugin seemed to use a lot of memory and caused
> >> gradle to garbage collect and run out of heap regularly. To resolve
> this I
> >> increased the about of memory available to gradle in gradle.properties
> >> using:
> >>
> >> org.gradle.jvmargs=-Xmx2g -XX\:MaxHeapSize\=4g
> >>
> >> Tuning this might be important depending on the CI infrastructure used
> by
> >> the Ofbiz project.
> >>
> >> You will likely need your IDE to apply annotation processing otherwise
> you
> >> might see warning of missing methods. In IntelliJ I use what appears to
> be
> >> the de facto Lombok plugin [5].
> >> Guidance is available from the Lombok project for other IDEs [6].
> >>
> >> Lombok @ToString annotations have been applied to RenderableFtlString
> and
> >> RenderableFtlNoop. This causes Lombok to insert toString() methods into
> the
> >> classes based on the class names and field values.
> >>
> >> The @Value annotation has been applied to
> >> MacroCallParameterStringValue, MacroCallParameterBooleanValue
> >> and MacroCallParameterMapValue. This annotation turns those classes into
> >> immutable-like entities, where all fields must be set in the inserted
> >> constructor and are available from automatically inserted getters.
> >> ToString(), equals and hashCode() methods are also created meaning these
> >> classes can be relied upon as map keys if needed.
> >>
> >> The @Builder annotation has been applied to RenderableFtlMacroCall
> >> and RenderableFtlSequence. This annotation does quite a lot so I'd
> >> recommend you run delombok (instructions below) to see the code that
> Lombok
> >> inserts for us.
> >>
> >> To see the sources generated by Lombok we can run DeLombok. At the
> command
> >> line execute:
> >> ./gradlew delombok
> >>
> >> A copy of all sources (not just those with lombok annotations) will be
> >> placed under build/delombok. Please take a look at the delomboked
> sources
> >> for the above classes under
> >> build/delombok/main/org/apache/ofbiz/widget/renderer/macro/parameter and
> >> build/delombok/main/org/apache/ofbiz/widget/renderer/macro/renderable.
> >>
> >> Please let me know what you think about this usage of Lombok.
> >>
> >> Thanks,
> >>
> >> Dan.
> >>
> >> [1] -
> http://ofbiz.135035.n4.nabble.com/Default-constructors-in-JAVA-classes-tp4749257p4749258.html
> >>
> >> [2] -
> https://github.com/danwatford/ofbiz-framework/tree/OFBIZ-11900-WIP
> >> [3] - https://plugins.gradle.org/plugin/io.freefair.lombok
> >> [4] - https://projectlombok.org/setup/gradle
> >> [5] - https://plugins.jetbrains.com/plugin/6317-lombok/
> >> [6] - https://projectlombok.org/setup/overview
> >>
> >> --
> >> Daniel Watford
> >>
>


-- 
Daniel Watford

Reply via email to