All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robokind.api.speechrec.lifecycle.RemoteSpeechRecServiceLifecycle Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2012 Hanson Robokind LLC.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.robokind.api.speechrec.lifecycle;

import java.util.Map;
import java.util.Properties;
import org.jflux.api.messaging.rk.Constants;
import org.jflux.api.messaging.rk.MessageAsyncReceiver;
import org.jflux.api.messaging.rk.MessageSender;
import org.jflux.impl.services.rk.lifecycle.AbstractLifecycleProvider;
import org.jflux.impl.services.rk.lifecycle.utils.DescriptorListBuilder;
import org.robokind.api.messaging.services.ServiceCommand;
import org.robokind.api.messaging.services.ServiceCommandFactory;
import org.robokind.api.messaging.services.ServiceError;
import org.robokind.api.speechrec.SpeechRecEvent;
import org.robokind.api.speechrec.SpeechRecEventList;
import org.robokind.api.speechrec.SpeechRecService;
import org.robokind.api.speechrec.messaging.RemoteSpeechRecServiceClient;

/**
 *
 * @author Jason G. Pallack 
 */
public class RemoteSpeechRecServiceLifecycle extends 
        AbstractLifecycleProvider {
    private final static String theCommandSender = "commandSender";
    private final static String theConfigSender = "configSender";
    private final static String theErrorReceiver = "errorReceiver";   
    private final static String theCommandFactory = "commandFactory"; 
    private final static String theSpeechRecReceiver = "speechRecReceiver";
    private String myClientServiceId;
    private String myHostServiceId;
    private Class myConfigClass;
    
    /**
     * Creates a new SpeechTriggerHandlerLifecycle for a SpeechService
     * @param commandSenderId SpeechService to use
     */
    public RemoteSpeechRecServiceLifecycle(Class configClass,
            String speechRecServiceId, String remoteId,
            String commandSenderId, String configSenderId,
            String errorReceiverId, String requestSenderId,
            String eventsReceiverId){
        super(new DescriptorListBuilder()
                .dependency(theCommandSender, MessageSender.class)
                    .with(Constants.PROP_MESSAGE_SENDER_ID, commandSenderId)
                    .with(Constants.PROP_MESSAGE_TYPE, ServiceCommand.class.getName())
                .dependency(theConfigSender, MessageSender.class)
                    .with(Constants.PROP_MESSAGE_SENDER_ID, configSenderId)
                    .with(Constants.PROP_MESSAGE_TYPE, configClass.getName())
                .dependency(theErrorReceiver, MessageAsyncReceiver.class)
                    .with(Constants.PROP_MESSAGE_RECEIVER_ID, errorReceiverId)
                    .with(Constants.PROP_MESSAGE_TYPE, ServiceError.class.getName())
                .dependency(theSpeechRecReceiver, MessageAsyncReceiver.class)
                    .with(Constants.PROP_MESSAGE_RECEIVER_ID, eventsReceiverId)
                    .with(Constants.PROP_MESSAGE_TYPE, SpeechRecEventList.class.getName())
                .dependency(theCommandFactory, ServiceCommandFactory.class)
                .getDescriptors());
        if(speechRecServiceId == null || remoteId == null){
            throw new NullPointerException();
        }
        myClientServiceId = speechRecServiceId;
        myHostServiceId = remoteId;
        myRegistrationProperties = new Properties();
        myRegistrationProperties.put(
                SpeechRecService.PROP_ID, myClientServiceId);
    }

    @Override
    protected RemoteSpeechRecServiceClient create(Map services) {
        MessageSender commandSender = 
                (MessageSender)services.get(theCommandSender);
        MessageSender configSender = 
                (MessageSender)services.get(theConfigSender);
        MessageAsyncReceiver errorReceiver = 
                (MessageAsyncReceiver)services.get(theErrorReceiver);
        ServiceCommandFactory commandFactory = 
                (ServiceCommandFactory)services.get(theCommandFactory);
        MessageAsyncReceiver speechRecReceiver = 
                (MessageAsyncReceiver)services.get(theSpeechRecReceiver);
        return new RemoteSpeechRecServiceClient(
                myConfigClass, myClientServiceId, myHostServiceId, 
                commandSender, configSender, errorReceiver, 
                commandFactory, speechRecReceiver);
    }

    @Override
    protected void handleChange(String name, Object dependency, 
            Map availableDependencies){
        if(myService == null){
            return;
        }
        if(theCommandSender.equals(name)){
            myService.setCommandSender(
                    (MessageSender)dependency);
        }else if(theConfigSender.equals(name)){
            myService.setConfigSender((MessageSender)dependency);
        }else if(theErrorReceiver.equals(name)){
            myService.setErrorReceiver(
                    (MessageAsyncReceiver)dependency);
        }else if(theCommandFactory.equals(name)){
            myService.setCommandFactory((ServiceCommandFactory)dependency);
        }else if(theSpeechRecReceiver.equals(name)){
            myService.setSpeechRecReceiver(
                    (MessageAsyncReceiver)dependency);
        }
    }

    @Override
    public Class getServiceClass() {
        return SpeechRecService.class;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy