Stefan, As you probably know the <conversion> / <map> construct is at runtime substituted by a matching <create-object>, a set of <read-attribute>, and a <invoke-parent> rule. The <read-attribute> rule has an optional "skip-if-null" attribute which defaults to "true". That's what in the end causes your translator to be skipped. So as a workaround you could replace your <conversion> with the appropriate expanded rules and set "skip-if-null" to "false" on the <read-attribute> rules.
That being said, I agree with you that this doesn't feel right. I think the reason the "skip-if-null" defaults to "true" is that it's possible that there are default values specified in the Java code, which would be unfortunate to overwrite. The only solution I can think of is if we added a new "default" attribute to the <attribute> element. This could then take precedence over the "skip-if-null" check. What do others think? --knut On 6/14/05, Liebig, Stefan <[EMAIL PROTECTED]> wrote: > > > While trying to write a simple translator, I figured out that > I either had the wrong expecations or that I am doing something wrong. > > My expectation with Translators and default values is like this. > If I have an attribute element in a schema like this: > > <element name="counter"> > <attribute name="count" > translator="int,min=5,max=10,default=5"/> > <conversion ... /> > </element> > > and I make such a contribution: > > <counter/> > > than I would expect to get the default value for the count property > specified > in the translator attribute. But this seems to be wrong. The translator does > not get called in such a case. > I need to do something like this: > > <counter count=""/> > > Now the translator gets called and the specified default value will be set. > > But, shouldn´t the translator not be called in any case (except when a > requiered > attribute is not given, which is an error). Otherwise I need to have two > places dealing with default values, one in the translator specification > and one in Java code. > And additionally the code can not rely on the specification, because in > the above example the int property count would get 0 (if not handled > explicitly) and this would violate the ´min´ specification in the > translator. > > Stefan > -- knut --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
