001/*
002 *  Copyright 2022 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.hyperplanning;
017
018import java.util.List;
019
020import javax.xml.ws.BindingProvider;
021
022import org.apache.avalon.framework.configuration.Configurable;
023import org.apache.avalon.framework.configuration.Configuration;
024import org.apache.avalon.framework.configuration.ConfigurationException;
025
026import org.ametys.runtime.model.checker.ItemChecker;
027import org.ametys.runtime.model.checker.ItemCheckerTestFailureException;
028
029import com.indexeducation.frahtm.hpsvcw.HpSvcWAdmin;
030import com.indexeducation.frahtm.hpsvcw.IHpSvcWAdmin;
031
032/**
033 * Connection checker for hyperplanning
034 */
035public class HyperplanningConnectionChecker implements ItemChecker, Configurable
036{
037    public void configure(Configuration configuration) throws ConfigurationException
038    {
039        Configuration[] config = configuration.getChild("linked-params").getChildren();
040        if (config.length != 3)
041        {
042            throw new ConfigurationException("The HyperplanningChecker should have 3 linked params in the right order: url, login, password");
043        }
044    }
045
046    public void check(List<String> values) throws ItemCheckerTestFailureException
047    {
048        String url = values.get(0);
049        String login = values.get(1);
050        String password = values.get(2);
051        
052        try
053        {
054            // configure port
055            IHpSvcWAdmin portAdmin = new HpSvcWAdmin().getPortAdmin();
056            ((BindingProvider) portAdmin).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
057            ((BindingProvider) portAdmin).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, login);
058            ((BindingProvider) portAdmin).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
059            
060            portAdmin.version();
061        }
062        catch (Exception e)
063        {
064            throw new ItemCheckerTestFailureException(e);
065        }
066    }
067}