Hi!!

We found following inconsistency in ServiceManager in merlin 3.2.5.

In one component we defined following dependency:

public class B extends A{
 /**
     * @avalon.dependency type="com.mrt.vend.client.desktop2.view.ViewContainer" 
key="parentContainer"
     **/
    public void service(ServiceManager serviceManager) throws ServiceException
    {
        super.service(serviceManager);
    }
}


public abstract A{
 
public void initialize() throws java.lang.Exception
    {
        if (getServiceManager().hasService("parentContainer"))
        {
            System.out.println("hasService");
            
            viewContainer = 
(ViewContainer)getServiceManager().lookup("parentContainer");
        }
}

getServiceManager().hasService("parentContainer") returns true, but 
getServiceManager().lookup("parentContainer") throws exception:

Exception: org.apache.avalon.framework.service.ServiceException
    Message: Unexpected runtime error while attempting to resolve service for key: 
parentContainer (Key='parentContainer')

Here's a part of our block.xml:

<component name="MainViewContainerImpl" 
class="com.mrt.vend.client.desktop2.view.MainViewContainerImpl">
        <parameters>
            <parameter name="language" value="pl"/>
            <parameter name="country" value="PL"/>
        </parameters>
    </component>
    
    <component name="LocationViewContainerImpl" 
class="com.mrt.vend.client.desktop2.view.LocationViewContainerImpl">
        <dependencies>
            <dependency key="parentContainer" source="MainViewContainerImpl" />
        </dependencies>
    </component>

Could you help us? Is it a problem with merlin or we are using it in wrong way?

Jarosław Pałka
MRT-System
Poland

Reply via email to