Franck, Sorry it a while for me to respond. I am assuming you are still interested in contributing the validation framework to Apache Flex. Please let me know how you would like to proceed. I have some free cycles and I can help committing it to the codebase.
Thanks, Om On Wed, Oct 3, 2012 at 5:56 AM, Franck Wolff <franck.wo...@graniteds.org>wrote: > The goal is of course to give the validation framework with the less > possible dependencies. Refactoring is an option but it should be minimal in > order to preserve the current stability of our code (which is very good so > far). We don't want to contribute an untested, deeply modified and > potentially unstable piece of code to Apache. > > Franck. > > 2012/10/3 Carlos Rovira <carlos.rov...@codeoscopic.com> > > > Hi Franck, > > > > IMHO the only problem I see is that user could end with dependent > > frameworks that could be removed if some refactor is applyed, in this > > case with reflect classes from granite and other microframework like > > swiz, parsley or other. > > > > Maybe reflect classes could be cut to the minimun in order to drop > > weight to minimum. Maybe math classes could be cut in the same way. In > > both cases event refactored to be plug into other frameworks... > > > > > > 2012/10/3 Franck Wolff <franck.wo...@graniteds.org>: > > > Hi Carlos, > > > > > > math & reflect (I forgot about this one) are mandatory. util & > > collections > > > can certainly be refactored in order to lower dependencies. I need to > > check > > > about that but, basically, we are ready to contribute all required > code. > > > > > > Thanks for your feedback, > > > Franck. > > > > > > 2012/10/3 Carlos Rovira <carlos.rov...@codeoscopic.com> > > > > > >> Hi Franck, > > >> > > >> I was looking at the validation source in graniteds and I see that > > >> dependencies are a bit more complex. From what I see those are the > > >> packages needed: > > >> > > >> * math > > >> * reflect > > >> * util > > >> * collections > > >> > > >> maybe some other class could be needed... > > >> > > >> Maybe some refactor could be done to avoid overhead of classes that > > >> really are not used/needed > > >> > > >> Best, > > >> > > >> Carlos > > >> > > >> > > >> > > >> 2012/10/2 Om <bigosma...@gmail.com>: > > >> > Thanks for the detailed responses, Franck. I think this could work > > and > > >> > would make a great addition to Flex. > > >> > > > >> > PPMC folks, any objections? Or should we take a formal vote on > this? > > >> > > > >> > What should be the next steps? > > >> > > > >> > Thanks, > > >> > Om > > >> > > > >> > On Wed, Sep 26, 2012 at 3:07 AM, Franck Wolff < > > >> franck.wo...@graniteds.org>wrote: > > >> > > > >> >> Om, > > >> >> > > >> >> 2012/9/25 Om <bigosma...@gmail.com> > > >> >> > > >> >> > Franck, > > >> >> > > > >> >> > My initial reaction after reading the documentation is that this > > would > > >> >> be a > > >> >> > great addition to the Flex framework. > > >> >> > > > >> >> > If you don't mind, maybe you could address these concerns I have? > > >> >> > > > >> >> > 1. Can we make sure that this approach does not tie Flex to > > specific > > >> >> > server side solution (Java in this case)? > > >> >> > > > >> >> > > >> >> The validation can be used standalone, without any server-side > > >> counterpart: > > >> >> you can manually annotate your AS3 beans and run a pure client-side > > >> >> validation process. Usually, these annotations are generated by > Gas3, > > >> based > > >> >> on Java annotations you put on your Java entity beans, but this is > > just > > >> a > > >> >> typical JavaEE usage: the framework doesn't depend on any specific > > >> server > > >> >> implementation (Java or not). > > >> >> > > >> >> However, I realized after sending my last email that the bean > > validation > > >> >> framework relies on our BigDecimal implementation: the > > DecimalMax/Min, > > >> >> Digits and Max/Min constraints annotations make internal use of > > >> BigDecimal > > >> >> values in order to check the validity of a given field (which can > be > > a > > >> >> String, a Number, an int/uint or a BigDecimal). The purpose of this > > >> >> dependency is to stick, as much as possible, to the JSR-303 > > >> specification > > >> >> and to make sure that the validation on the Flex side is consistent > > with > > >> >> the validation on the Java side. As a result, we must contribute > both > > >> the > > >> >> Bean Validation and Big Numbers implementations... But even with > this > > >> >> addition, there is no dependency to GraniteDS. > > >> >> > > >> >> To summarize: > > >> >> > > >> >> 1. The Bean Validation in AS3 doesn't depend on GraniteDS or any > > Java > > >> >> server-side solution: it comes from a specification written for > > Java > > >> EE > > >> >> developers, it is often used with our code generation tool > (Gas3), > > >> but > > >> >> you > > >> >> can use it without any specific server side solution (it can be > > PHP > > >> or > > >> >> whatever you want). > > >> >> 2. It does depend on our BigDecimal implementation, which comes > > >> >> originally from a Java class but serves a general purpose for > > >> handling > > >> >> numbers with arbitrary scale and precision. If you don't > > explicitly > > >> use > > >> >> BigDecimal in your code, and more specifically, if you don't try > > to > > >> >> serialize this kind of value, there is again no dependency to > any > > >> >> specific > > >> >> server side solution. If you intend to serialize BigDecimal > > values, > > >> the > > >> >> server, whatever it is, has to handle an "externalization" of > the > > >> >> BigDecimal value as a String, which is not a big deal and > follows > > the > > >> >> AMF3 > > >> >> specification (ie: org.granite.math.BigDecimal implements > > >> >> flash.utils.IExternalizable). There is of course a built-in > > support > > >> for > > >> >> that in GraniteDS, but it is just related to a (de)serialization > > >> which > > >> >> not > > >> >> all used in the Bean Validation framework. > > >> >> > > >> >> > > >> >> 2. Do you think this could go in the SDK itself or would it go > into > > an > > >> >> > ancilliary library, but still part of Flex. Can you suggest a > > >> package > > >> >> > structure? > > >> >> > > > >> >> > > >> >> Our current packages structure is: > > >> >> > > >> >> org.granite.validation (Bean Validation) > > >> >> org.granite.math (BigDecimal) > > >> >> > > >> >> It could be whatever you want. It can go into an ancillary library, > > but > > >> it > > >> >> would be simpler for users to be able to use it without any > specific > > >> >> configuration. Again, it's up to you. > > >> >> > > >> >> > > >> >> > 3. What happens to JSR 303 if/when you contribute the AS3 > portion > > of > > >> the > > >> >> > implementation? Obviously we can't guarantee that Apache Flex > > will > > >> >> follow > > >> >> > that standard always. > > >> >> > > > >> >> > > >> >> An implementation of any JSR doesn't have to follow its evolution. > At > > >> the > > >> >> time we wrote this code and because we are from the Java "world", > we > > >> tried > > >> >> to follow the specification as far as possible and to guaranty that > > the > > >> >> Java validation would be consistent with the Flex one. It would be > of > > >> >> course great to keep this tight compatibility, but the Flex > > >> implementation > > >> >> can evolve its own way, by adding specific features or even > breaking > > the > > >> >> requisite of being a "certified" JSR-303 implementation. Any sound > > >> >> evolution is welcomed, we are not specification fundamentalists ;) > > >> >> > > >> >> > > >> >> > 4. What sort of performance implications can we expect with this > > >> >> > approach? Also, would it help if we make changes to the Flex > > >> compiler > > >> >> for > > >> >> > this to perform better? > > >> >> > > > >> >> > > >> >> As far as we know from our users, performances are very good. I > don't > > >> see > > >> >> any compiler change that could specifically benefit to this > > framework: > > >> the > > >> >> only performance issue with BigDecimal is that it relies on 32-bits > > >> >> integers and computations would have been easier to implement and > > better > > >> >> performing if we could have used 64-bits long types. But this > rather > > a > > >> >> Flash VM issue than a compiler one if I'm right. > > >> >> > > >> >> Thanks a lot for offering to contribute to Apache Flex! > > >> >> > > > >> >> > > >> >> You're welcome, thanks for your interest in our contribution offer. > > >> >> Franck. > > >> >> > > >> >> > > >> >> > > > >> >> > Regards, > > >> >> > Om > > >> >> > On Sep 24, 2012 7:40 AM, "Franck Wolff" < > > franck.wo...@graniteds.org> > > >> >> > wrote: > > >> >> > > > >> >> > > Hi Carlos, > > >> >> > > > > >> >> > > 2012/9/24 Carlos Rovira <carlos.rov...@codeoscopic.com> > > >> >> > > > > >> >> > > > Hi Franck, > > >> >> > > > > > >> >> > > > I think it would be great. I was in the way to make some > > >> >> > > > implementation some time ago since flex view validation is > > >> >> problematic > > >> >> > > > when you try to use MVC but I never get to far. In flex the > > >> problem > > >> >> is > > >> >> > > > that validation and view controls are dependent and it would > be > > >> great > > >> >> > > > to have bean validation in order to validate data and have > real > > >> >> > > > separation from the view. This brings the problem on how to > > show > > >> the > > >> >> > > > errors in controls to let the user now about a failed > > validation. > > >> I > > >> >> > > > suppose that is solved in GDS. > > >> >> > > > > > >> >> > > > > >> >> > > Yes, we have a specific component called FormValidator which > > >> displays > > >> >> > > errors in real-time, based on the user input. > > >> >> > > > > >> >> > > > > >> >> > > > So I think bean validation would be a great improvement in > flex > > >> SDK > > >> >> > > > and annotations would make it more usable. > > >> >> > > > > > >> >> > > > For BigDecimal and others classes could be great as well, > but I > > >> don't > > >> >> > > > have clear how could be donate to sdk...maybe it could go to > an > > >> >> > > > extension package or something like that and get some > > >> externalization > > >> >> > > > base implementation... > > >> >> > > > > > >> >> > > > > >> >> > > An extension package is of course an option. > > >> >> > > > > >> >> > > Thanks for your quick feedback, > > >> >> > > Franck. > > >> >> > > > > >> >> > > 2012/9/24 Franck Wolff <franck.wo...@graniteds.org>: > > >> >> > > > > Hi All, > > >> >> > > > > > > >> >> > > > > We, at Granite Data Services <http://www.graniteds.org>, > are > > >> >> > > considering > > >> >> > > > > contributing part of our Flex client code to this Apache > > >> project. > > >> >> Our > > >> >> > > > first > > >> >> > > > > thought is to contribute our Bean Validation (aka JSR-303) > > >> >> > > implementation > > >> >> > > > > in ActionScript3: this framework gives an easy and powerful > > way > > >> to > > >> >> > > > validate > > >> >> > > > > ActionScript beans based on constraint annotations (see > > >> >> documentation > > >> >> > > > > here< > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> > > > http://www.graniteds.org/public/docs/2.3.2/docs/reference/en-US/html/graniteds.validation.html > > >> >> > > > >). > > >> >> > > > > This framework can be used standalone, with no specific > > >> dependency > > >> >> to > > >> >> > > > rest > > >> >> > > > > of the GraniteDS platform, but is usually best used > together > > >> with > > >> >> > Gas3 > > >> >> > > > (our > > >> >> > > > > code generation tool) which replicates Java entities > > annotated > > >> with > > >> >> > > > > constraint annotations in ActionScript3, with the same > > >> constraints. > > >> >> > The > > >> >> > > > > validation process can then be executed on the Flex, > > replicating > > >> >> what > > >> >> > > > Java > > >> >> > > > > is doing on its part, and can display error messages on the > > fly, > > >> >> > while > > >> >> > > > the > > >> >> > > > > user is filling out a Flex form. > > >> >> > > > > > > >> >> > > > > What do you think about such contribution? We could also > > >> contribute > > >> >> > > later > > >> >> > > > > our Flex implementation of the BigDecimal, BigInteger and > > Long > > >> >> > classes > > >> >> > > > (see > > >> >> > > > > documentation here< > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> > > > http://www.graniteds.org/public/docs/2.3.2/docs/reference/en-US/html/graniteds.bignumbers.html > > >> >> > > > >), > > >> >> > > > > but this implementation has a dependency on some > > externalization > > >> >> > > features > > >> >> > > > > specific to GraniteDS. > > >> >> > > > > > > >> >> > > > > Regards, > > >> >> > > > > -- > > >> >> > > > > Franck Wolff / William Draï > > >> >> > > > > Granite Data Services > > >> >> > > > > > >> >> > > > > > >> >> > > > > > >> >> > > > -- > > >> >> > > > Carlos Rovira > > >> >> > > > Director de Tecnología > > >> >> > > > M: +34 607 22 60 05 > > >> >> > > > F: +34 912 35 57 77 > > >> >> > > > CODEOSCOPIC S.A. > > >> >> > > > Avd. del General Perón, 32 > > >> >> > > > Planta 10, Puertas P-Q > > >> >> > > > 28020 Madrid > > >> >> > > > > > >> >> > > > > >> >> > > > > >> >> > > > > >> >> > > -- > > >> >> > > Franck Wolff > > >> >> > > Granite Data Services Inc. > > >> >> > > CEO & Founder > > >> >> > > > > >> >> > > > >> >> > > >> >> > > >> >> > > >> >> -- > > >> >> Franck Wolff > > >> >> Granite Data Services Inc. > > >> >> CEO & Founder > > >> >> > > >> > > >> > > >> > > >> -- > > >> Carlos Rovira > > >> Director de Tecnología > > >> M: +34 607 22 60 05 > > >> F: +34 912 35 57 77 > > >> CODEOSCOPIC S.A. > > >> Avd. del General Perón, 32 > > >> Planta 10, Puertas P-Q > > >> 28020 Madrid > > >> > > > > > > > > -- > > Carlos Rovira > > Director de Tecnología > > M: +34 607 22 60 05 > > F: +34 912 35 57 77 > > CODEOSCOPIC S.A. > > Avd. del General Perón, 32 > > Planta 10, Puertas P-Q > > 28020 Madrid > > >