<div dir="ltr">I agree with what Hardy said.<div><br></div><div>Alternatively we could have one annotation with two attributes:<div><br></div><div style>@ValidateExecutables(enabled=true/false, types=ALL|CONSTRUCTORS|GETTERS|NON_GETTERS)</div>
</div><div style><br></div><div style>Where enabled = true by default and types = ALL by default. types would only be considered if enabled = true.</div><div style><br></div><div style>//enable validation for type</div><div style>
@ValidateExecutables </div><div style>public class Foo {</div><div style><br></div><div style>}</div><div style><br></div><div style>//exclude getters</div><div style><div><div>@ValidateExecutables(types={CONSTRUCTORS, NON_GETTERS})</div>
<div>public class Foo {</div><div><br></div><div>}</div></div><div><br></div><div><div>@ValidateExecutables</div><div>public class Foo {</div><div><br></div><div style>    @ValidateExecutables(enabled=false)</div><div style>
    public getFoo() { ... }</div><div>}</div></div><div><br></div><div style>This would avoid the mixing of two things in one enum as mentioned by Hardy and also circumvent the naming issue. On a single method, @ValidateExecutables(enabled=false) is still a bit lengthy, but I think it&#39;s better than @ValidateExecutables(types = NONE).</div>
<div style><br></div><div style>--Gunnar</div><div style><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/2/15 Hardy Ferentschik <span dir="ltr">&lt;<a href="mailto:hardy@hibernate.org" target="_blank">hardy@hibernate.org</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
To have a enum which truly makes sense we would have to go for two annotations.<br>
<br>
We try to mix two semantics into a single emum. One is the on/off switch and one<br>
is the types of executables to validate. No matter how you rename the enum will always<br>
read awkward unless we separate these two things.<br>
<br>
I could live with @ValidateExecutables and @ValidateExecutable. I don&#39;t think that it<br>
is a problem that in other contexts the @Xs is a list of @X annotations.<br>
<span class="HOEnZb"><font color="#888888"><br>
--Hardy<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On 14 Jan 2013, at 5:55 PM, Emmanuel Bernard &lt;<a href="mailto:emmanuel@hibernate.org">emmanuel@hibernate.org</a>&gt; wrote:<br>
<br>
&gt; Pete from CDI gave me the same feedback.<br>
&gt;<br>
&gt; There are a few competing alternatives<br>
&gt;<br>
&gt; ## enum adjustments<br>
&gt;<br>
&gt; @ValidateExecutable.type defaults to ALL<br>
&gt; and rename ElementType.NONE to ElementType.OFF or NO<br>
&gt;<br>
&gt; We can even rename type to value to make the user even easier at the<br>
&gt; risk of harder evolutions if we need to add more parameters down the<br>
&gt; road.<br>
&gt;<br>
&gt; ## two annotations<br>
&gt;<br>
&gt; @ValidateExecutable(ON|OFF) targeting methods and constructors<br>
&gt; @ValidateExecutables(ALL|NON_GETTER_METHODS|...)<br>
&gt;<br>
&gt; The downside is that the @Xxxs convention is used to add several times<br>
&gt; the same annotation. This is widely used in EE for example.<br>
&gt;<br>
&gt; We could try and find better (different) names for these annotations but<br>
&gt; I could not find a good set.<br>
&gt;<br>
&gt; What are your preferences?<br>
&gt;<br>
&gt; On Mon 2013-02-11 11:04, Emmanuel Bernard wrote:<br>
&gt;&gt; Santiago from the JAX-RS EG is concerned that we have created an<br>
&gt;&gt; over-engineered solution to enable / disable method validation on a per<br>
&gt;&gt; method basis.<br>
&gt;&gt; We have good reasons for it but I am wondering if we can make it a bit<br>
&gt;&gt; easier to enable or disable methods out of the box.<br>
&gt;&gt;<br>
&gt;&gt; Remember, the default is to ignore getters. If we make<br>
&gt;&gt; @ValidateExecutable.type default to ALL, enabling it on a getter would<br>
&gt;&gt; be<br>
&gt;&gt;<br>
&gt;&gt;    @NotEmpty @ValidateExecutable<br>
&gt;&gt;    public String getAction() {...}<br>
&gt;&gt;<br>
&gt;&gt; instead of<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;    @NotEmpty @ValidateExecutable(type=ExecutableType.ALL)<br>
&gt;&gt;    public String getAction() {...}<br>
&gt;&gt;<br>
&gt;&gt; We would still need the verbose approach to disable validation<br>
&gt;&gt;<br>
&gt;&gt;    @NotEmpty @ValidateExecutable(type=ExecutableType.NONE)<br>
&gt;&gt;    public String getAction() {...}<br>
&gt;&gt;<br>
&gt;&gt; I am open to suggestions to make that easier on methods. I don&#39;t think<br>
&gt;&gt; an additional annotation will make anything easier<br>
&gt;&gt;<br>
&gt;&gt; Maybe renaming NONE with OFF might help? It&#39;s a bit weirder on a<br>
&gt;&gt; class-level but that might work.<br>
&gt;&gt;<br>
&gt;&gt; Thoughts?<br>
&gt;&gt;<br>
&gt;&gt; Emmanuel<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; beanvalidation-dev mailing list<br>
&gt;&gt; <a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
&gt; _______________________________________________<br>
&gt; beanvalidation-dev mailing list<br>
&gt; <a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
<br>
<br>
_______________________________________________<br>
beanvalidation-dev mailing list<br>
<a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
</div></div></blockquote></div><br></div>