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]

Reply via email to