001// Copyright 2004, 2005 The Apache Software Foundation
002//
003// Licensed under the Apache License, Version 2.0 (the "License");
004// you may not use this file except in compliance with the License.
005// You may obtain a copy of the License at
006//
007//     http://www.apache.org/licenses/LICENSE-2.0
008//
009// Unless required by applicable law or agreed to in writing, software
010// distributed under the License is distributed on an "AS IS" BASIS,
011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012// See the License for the specific language governing permissions and
013// limitations under the License.
014
015package org.apache.hivemind.impl;
016
017import java.util.List;
018
019import org.apache.commons.logging.Log;
020import org.apache.hivemind.ServiceImplementationFactoryParameters;
021import org.apache.hivemind.ErrorLog;
022import org.apache.hivemind.internal.Module;
023import org.apache.hivemind.internal.ServicePoint;
024import org.apache.hivemind.util.Defense;
025
026/**
027 * Wrapper around a {@link org.apache.hivemind.internal.ServicePoint} and a List of parameters,
028 * passed to a {@link org.apache.hivemind.ServiceImplementationFactory}.
029 * 
030 * @author Howard M. Lewis Ship
031 * @since 1.1
032 */
033public class ServiceImplementationFactoryParametersImpl implements
034        ServiceImplementationFactoryParameters
035{
036    private ServicePoint _servicePoint;
037
038    private Module _invokingModule;
039
040    private List _parameters;
041
042    public ServiceImplementationFactoryParametersImpl(ServicePoint servicePoint,
043            Module invokingModule, List parameters)
044    {
045        Defense.notNull(servicePoint, "servicePoint");
046        Defense.notNull(invokingModule, "invokingModule");
047        Defense.notNull(parameters, "parameters");
048
049        _servicePoint = servicePoint;
050        _invokingModule = invokingModule;
051        _parameters = parameters;
052    }
053
054    /**
055     * This method is only used in testing.
056     */
057
058    public boolean equals(Object other)
059    {
060        ServiceImplementationFactoryParametersImpl p = (ServiceImplementationFactoryParametersImpl) other;
061
062        return _servicePoint == p._servicePoint && _invokingModule == p._invokingModule
063                && _parameters.equals(p._parameters);
064    }
065
066    public String getServiceId()
067    {
068        return _servicePoint.getExtensionPointId();
069    }
070
071    public Class getServiceInterface()
072    {
073        return _servicePoint.getServiceInterface();
074    }
075
076    public Log getLog()
077    {
078        return _servicePoint.getLog();
079    }
080
081    public ErrorLog getErrorLog()
082    {
083        return _servicePoint.getErrorLog();
084    }
085
086    public Module getInvokingModule()
087    {
088        return _invokingModule;
089    }
090
091    public List getParameters()
092    {
093        return _parameters;
094    }
095
096    public Object getFirstParameter()
097    {
098        return _parameters.isEmpty() ? null : _parameters.get(0);
099    }
100}