Stephen wrote:
> Daniel Frey wrote:
>
>> Stephen wrote:
>>
>>> Daniel Frey wrote:
>>>
>>>
>>>> Timothy,
>>>>
>>>> After a regexp search through my *.java files I find that I've got
>>>> exactly on component with two constructors. AnimationQueue has one
>>>> parameter-less and one parameter-ful constructor:
>>>>
>>>> public AnimationQueue()
>>>> public AnimationQueue(Image backgroundImage)
>>>>
>>>> However, this is not a compnent in Merlins sense as it is not
>>>> mentioned in any block.xml. It's just a class behind the scenes. Can
>>>> this be the cause?
>>>>
>>>> Or do you mean two constructors with the same signature?
>>>
>>> I need to goo look at the code in detail - but basically what the
>>> exception is saying is that there is a component (i.e. a class with an
>>> associated .xinfo) that has multiple public constructors. For a
>>> number of reasons this is considered to be ambigouse.
>>>
>>> Cheers, Stephen.
>>
>>
>> I've got three .xinfo files in my build tree:
>>
>> Application.xinfo -- no constructors
>>
>> HierarchialResourceManagerFacade.xinfo -- no constructors
>>
>> SimpleSplash.xinfo -- two constructors
>> public SimpleSplash(ImageIcon backgroundImage)
>> public SimpleSplash(ImageIcon backgroundImage,
>> Component component)
>
> I hope the reference to Component is not a framework reference!
It's a reference into a java.awt.Component.
>
>> Bingo. I think that's the reason: No default constructor or
>> configuraiton to address one of the given constructors (if the second
>> solution is possible).
>>
>> I'm on the way to transform this class to a Merlin component. However,
>> it needs at least a ImageIcon for the background. How do I handle this
>> with Merlin? Do I need to have a default constructor and an mutator
>> for the backgroundImage property? Why not, seems kind of a proper
>> solution... Except that the Splash may be without background image,
>> which would be nice to be enforced by passing it in the constructor.
>
> You can handle this my defining a custom context entry. Basically you
> component SimpleSplash declares under either the constructor or under a
> contextualization method that it needs an entry of the type ImageIcon.
>
> E.g.:
>
> /**
> * @avalon.entry key="splash" type="x.u.z.ImageIcon"
> */
> public SimpleSplash( Context context )
> {
> ImageIcon icon = (ImageIcon) context.get( "splash" );
> // whatever
> }
>
> Then in the block (or packaged profile for the component) you declare to
> merlin how to build your image icon. For details on constructed context
> entries - take a look at the following example:
>
> http://avalon.apache.org/merlin/starting/tutorial/context/entries.html
>
> Cheers, Stephen.
I'll try that.
Thanks,
Daniel
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]