Here's an other way of doing, and both are Blueprint-compliants. Make your
choice!
With Lombok:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class HelloEntity extends AbstractEntity implements Serializable {
private static final transient long serialVersionUID =
6233801298404301547L;
private String helloMessage;
}
or Handmade:
public class HelloEntity extends AbstractEntity implements Serializable {
private static final transient long serialVersionUID =
6233801298404301547L;
private String helloMessage;
public static class HelloEntityBuilder {
private String helloMessage;
HelloEntityBuilder() {
}
public HelloEntityBuilder helloMessage(final String helloMessage) {
this.helloMessage = helloMessage;
return this;
}
public HelloEntity build() {
return new HelloEntity(helloMessage);
}
}
public static HelloEntityBuilder builder() {
return new HelloEntityBuilder();
}
public String getHelloMessage() {
return this.helloMessage;
}
public void setHelloMessage(final String helloMessage) {
this.helloMessage = helloMessage;
}
public HelloEntity() {
}
public HelloEntity(final String helloMessage) {
this.helloMessage = helloMessage;
}
}
2014-06-24 12:31 GMT+02:00 Charlie Mordant <[email protected]>:
> Errata,
> I forgot the return this; on the myprop() builder method
>
>
> 2014-06-24 12:30 GMT+02:00 Charlie Mordant <[email protected]>:
>
> Hi,
>>
>> Here's a bp compliant builder (and one many of builder devs do it...).
>>
>> public class MyBean {
>> private Object myprop;
>> public void setMyProp(Object prop) {
>> myprop = prop;
>> }
>> public void getMyProp {return myprop;}
>> public MyBeanBuilder {
>> private MyBean mybean;
>> public MyBeanBuilder() {mybean = new Mybean();}
>> public MyBeanBuilder myProp(Object prop) {
>> mybean.setMyProp(prop);
>> }
>> public MyBean build() {
>> return mybean;
>> }
>> }
>>
>> You can also use lombok (provides getters, setter and builder
>> annotation) if you want to get rid of boilerplate code.
>>
>> Regards,
>>
>>
>>
>>
>> 2014-06-24 12:20 GMT+02:00 CLEMENT Jean-Philippe <
>> [email protected]>:
>>
>> A builder usually returns itself to cumulates changes via Java. It could
>>> be good to use the same method either from Java or Blueprint. From a
>>> language perspective there is nothing which prevents this as a method is
>>> identified via its name and arguments; it is not tied to its return type.
>>>
>>> Is the return type really prohibited from the Blueprint spec or is it
>>> left unspecified?
>>>
>>> JP
>>>
>>>
>>> -----Message d'origine-----
>>> De : Jean-Baptiste Onofré [mailto:[email protected]]
>>> Envoyé : lundi 23 juin 2014 17:49
>>> À : [email protected]
>>> Objet : Re: Troubles when creating a builder with blueprint.
>>>
>>> Hi Christophe,
>>>
>>> in JavaBeans (following by Blueprint), a setter is void, and a getter
>>> doesn't have argument.
>>> So it should be:
>>>
>>> public void setMaxValue(float maxValue) {
>>> this.maxValue=maxValue;
>>> }
>>> public float getMaxValue() {
>>> return this.maxValue;
>>> }
>>>
>>> Regards
>>> JB
>>>
>>> On 06/23/2014 05:34 PM, Lasserre Christophe wrote:
>>> > Hello,
>>> >
>>> > I wrote a builder containing the following setter which does not
>>> > return void (see following sample).
>>> >
>>> > /**
>>> >
>>> > * @param maxValue
>>> >
>>> > * Maximal value for compression law attributes
>>> >
>>> > * @return the builder.
>>> >
>>> > */
>>> >
>>> > public CompressionLawBuilder setMaxValue(final float maxValue) {
>>> >
>>> > this.maxValue = maxValue;
>>> >
>>> > return this;
>>> >
>>> > }
>>> >
>>> > When I try to create the builder via blueprint, the runtime returns me
>>> > the following error message; "Caused by:
>>> > org.osgi.service.blueprint.container.ComponentDefinitionException: No
>>> > setter for maxValue property"
>>> >
>>> > If I change the setter and make it return void, everything works
>>> > perfectly, so is it normal that the return type of the setter has an
>>> > impact on the application behavior ?
>>> >
>>> > Chris.
>>> >
>>> > [@@ OPEN @@]
>>> >
>>>
>>> --
>>> Jean-Baptiste Onofré
>>> [email protected]
>>> http://blog.nanthrax.net
>>> Talend - http://www.talend.com
>>>
>>
>>
>>
>> --
>> Charlie Mordant
>>
>> Full OSGI/EE stack made with Karaf:
>> https://github.com/OsgiliathEnterprise/net.osgiliath.parent
>>
>
>
>
> --
> Charlie Mordant
>
> Full OSGI/EE stack made with Karaf:
> https://github.com/OsgiliathEnterprise/net.osgiliath.parent
>
--
Charlie Mordant
Full OSGI/EE stack made with Karaf:
https://github.com/OsgiliathEnterprise/net.osgiliath.parent