Would this mainly be on the DB layer?  With intellij, theres a shortcut to 
auto-gen these fields, does this improve on that?

At compile time, does it overwrite the src or generate a new file?  In the case 
of needing additional logic in a set/get method, can I override that?

> On May 24, 2018, at 11:08 PM, Na Li <lina...@cloudera.com> wrote:
> 
> Brian,
> 
> That looks quite useful. We can give it a try.
> 
> Cheers,
> 
> Lina
> 
>> On May 24, 2018, at 7:02 PM, Kalyan Kumar Kalvagadda <kkal...@cloudera.com> 
>> wrote:
>> 
>> Brian,
>> 
>> It will be helpful. I'm in the favor of it.
>> 
>> 
>> *Thanks,Kalyan Kumar Kalvagadda* | Software Engineer
>> t. (469) 279- <0000000000>5732
>> cloudera.com <https://www.cloudera.com>
>> 
>> [image: Cloudera] <https://www.cloudera.com/>
>> 
>> [image: Cloudera on Twitter] <https://twitter.com/cloudera> [image:
>> Cloudera on Facebook] <https://www.facebook.com/cloudera> [image: Cloudera
>> on LinkedIn] <https://www.linkedin.com/company/cloudera>
>> ------------------------------
>> 
>>> On Thu, May 24, 2018 at 2:54 PM, Brian Towles <btow...@cloudera.com> wrote:
>>> 
>>> Howdy all,
>>> 
>>> I was wondering what the teams thoughts are on using Lombok?
>>> 
>>> https://projectlombok.org/
>>> 
>>> Lombok is a tool that uses annotations at *compile time* to dynamically
>>> generate the boilerplate code for things like getters, setters, basic
>>> constructors, toString, equals, etc...
>>> There are no actual code changes to the source, so its not a traditional
>>> generator.  It uses the internal
>>> To me it has been a very helpful time saver for coding and maintenance and
>>> it allows for us to avoid missing things.
>>> 
>>> A good look at how it works in IntelliJ and Eclipse is here:
>>> https://www.javacodegeeks.com/2016/06/lombok-compile-time-
>>> java-annotation-preprocessor-minimize-code-size.html
>>> 
>>> But as a quick example of using this for a very simple class and a single
>>> @Data annotation takes:
>>> 
>>> package org.apache.sentry;
>>> 
>>> import lombok.Data;
>>> 
>>> @Data
>>> public class SimpleBean {
>>> private final String name;
>>> private int age;
>>> private double score;
>>> private String[] tags;
>>> }
>>> 
>>> and turn it effectively into
>>> 
>>> package org.apache.sentry;
>>> 
>>> public class SimpleBean {
>>> private final String name;
>>> private int age;
>>> private double score;
>>> private String[] tags;
>>> 
>>> @java.beans.ConstructorProperties({"name"})
>>> public SimpleBean(String name) {
>>>   this.name = name;
>>> }
>>> 
>>> public String getName() {
>>>   return this.name;
>>> }
>>> 
>>> public int getAge() {
>>>   return this.age;
>>> }
>>> 
>>> public double getScore() {
>>>   return this.score;
>>> }
>>> 
>>> public String[] getTags() {
>>>   return this.tags;
>>> }
>>> 
>>> public void setAge(int age) {
>>>   this.age = age;
>>> }
>>> 
>>> public void setScore(double score) {
>>>   this.score = score;
>>> }
>>> 
>>> public void setTags(String[] tags) {
>>>   this.tags = tags;
>>> }
>>> 
>>> public boolean equals(Object o) {
>>>   if (o == this) {
>>>     return true;
>>>   }
>>>   if (!(o instanceof SimpleBean)) {
>>>     return false;
>>>   }
>>>   final SimpleBean other = (SimpleBean) o;
>>>   if (!other.canEqual((Object) this)) {
>>>     return false;
>>>   }
>>>   final Object this$name = this.getName();
>>>   final Object other$name = other.getName();
>>>   if (this$name == null ? other$name != null :
>>> !this$name.equals(other$name)) {
>>>     return false;
>>>   }
>>>   if (this.getAge() != other.getAge()) {
>>>     return false;
>>>   }
>>>   if (Double.compare(this.getScore(), other.getScore()) != 0) {
>>>     return false;
>>>   }
>>>   if (!java.util.Arrays.deepEquals(this.getTags(), other.getTags())) {
>>>     return false;
>>>   }
>>>   return true;
>>> }
>>> 
>>> public int hashCode() {
>>>   final int PRIME = 59;
>>>   int result = 1;
>>>   final Object $name = this.getName();
>>>   result = result * PRIME + ($name == null ? 43 : $name.hashCode());
>>>   result = result * PRIME + this.getAge();
>>>   final long $score = Double.doubleToLongBits(this.getScore());
>>>   result = result * PRIME + (int) ($score >>> 32 ^ $score);
>>>   result = result * PRIME + java.util.Arrays.deepHashCode(
>>> this.getTags());
>>>   return result;
>>> }
>>> 
>>> protected boolean canEqual(Object other) {
>>>   return other instanceof SimpleBean;
>>> }
>>> 
>>> public String toString() {
>>>   return "SimpleBean(name=" + this.getName() + ", age=" +
>>> this.getAge() + ", score=" + this
>>>       .getScore() + ", tags=" +
>>> java.util.Arrays.deepToString(this.getTags()) + ")";
>>> }
>>> }
>>> 
>>> 
>>> There are more helper functions in the library for things like Builders,
>>> and Synchronized.
>>> 
>>> What do you guys think about using this in Sentry?
>>> 
>>> -=Brian
>>> 
>>> --
>>> *Brian Towles* | Software Engineer
>>> t. (512) 415- <0000000000>8105 e. btow...@cloudera.com <j...@cloudera.com>
>>> cloudera.com <http://www.cloudera.com/>
>>> 
>>> [image: Cloudera] <http://www.cloudera.com/>
>>> 
>>> [image: Cloudera on Twitter] <https://twitter.com/cloudera> [image:
>>> Cloudera on Facebook] <https://www.facebook.com/cloudera> [image: Cloudera
>>> on LinkedIn] <https://www.linkedin.com/company/cloudera>
>>> ------------------------------
>>> 

Reply via email to