Problem contributing to EagerLoad with annotation module
--------------------------------------------------------

                 Key: HIVEMIND-210
                 URL: https://issues.apache.org/jira/browse/HIVEMIND-210
             Project: HiveMind
          Issue Type: Bug
          Components: annotations
    Affects Versions: 2.0-alpha-1
            Reporter: Kevin Gilpin


I've defined an annotation module. I define a service and contribute it to the 
EagerLoad configuration point, but EagerLoad throws a ClassCastException. If I 
define the contribution in an XML file, it works. The relevant code is included 
below.

Module
======

package com.praxeon.search.service;

import java.util.Collections;
import java.util.List;

import org.apache.hivemind.annotations.AbstractAnnotatedModule;
import org.apache.hivemind.annotations.definition.Configuration ;
import org.apache.hivemind.annotations.definition.Contribution;
import org.apache.hivemind.annotations.definition.Module;
import org.apache.hivemind.annotations.definition.Service;

import com.praxeon.api.index.IndexHome ;
import com.praxeon.api.index.SegmentHostListener;
import com.praxeon.index.service.StatusQueueSegmentHostListener;

import com.praxeon.sysutils.config.XMLConfiguration;

@Module(id="praxeon.search.annot ")
public class SearchModule extends AbstractAnnotatedModule {

    @Configuration(id="QueueName")
    public String getQueueName() {
        return XMLConfiguration.getValue("/*/Search/SegmentHostQueue");
    }
   
    @Service(id="StatusQueueSegmentHostListener")
    public SegmentHostListener getStatusQueueSegmentHostListener() {
        String queueName = configuration("QueueName", String.class );
        StatusQueueSegmentHostListener listener = new 
StatusQueueSegmentHostListener(queueName);
        service(IndexHome.class).addSegmentHostListener(listener);
        return listener;
    }
   
    @Contribution(configurationId="hivemind.EagerLoad")
    public List eagerLoad() {
        return 
Collections.singletonList(service("StatusQueueSegmentHostListener", 
SegmentHostListener.class ));
    }
}

Exception
=========

java.lang.ClassCastException: $SegmentHostListener_1161fffc175
    at org.apache.hivemind.service.impl.EagerLoader.run(EagerLoader.java:37)
    at org.apache.hivemind.impl.StartupImpl.run( StartupImpl.java :45)
    at 
org.apache.hivemind.impl.RegistryInfrastructureImpl.startup(RegistryInfrastructureImpl.java:435)
    at 
org.apache.hivemind.impl.RegistryBuilder.constructRegistry(RegistryBuilder.java:170)
    at com.praxeon.config.HivemindConfiguration.load 
(HivemindConfiguration.java:145)

XML contribution that works
===========================

    <contribution configuration-id="hivemind.EagerLoad">
        <load service-id="praxeon.search.annot.StatusQueueSegmentHostListener"/>
    </contribution>



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to