/****************************************************************************
 * Copyright (C) 2012 ecsec GmbH.
 * All rights reserved.
 * Contact: ecsec GmbH (info@ecsec.de)
 *
 * This file is part of the Open eCard App.
 *
 * GNU General Public License Usage
 * This file may be used under the terms of the GNU General Public
 * License version 3.0 as published by the Free Software Foundation
 * and appearing in the file LICENSE.GPL included in the packaging of
 * this file. Please review the following information to ensure the
 * GNU General Public License version 3.0 requirements will be met:
 * http://www.gnu.org/copyleft/gpl.html.
 *
 * Other Usage
 * Alternatively, this file may be used in accordance with the terms
 * and conditions contained in a signed written agreement between
 * you and ecsec GmbH.
 *
 ***************************************************************************/

package org.openecard.common.interfaces;

import java.lang.reflect.InvocationTargetException;


/**
 * Interface for a webservice method dispatcher.
 * The dispatcher receives an object which is a JAXB type parameter of a webservice method. The dispatcher the looks for
 * a webservice with a suitable method and executes it.
 *
 * @author Tobias Wich <tobias.wich@ecsec.de>
 */
public interface Dispatcher {

    /**
     * Invokes the service which is responsible for messages of the type of the given request object.
     *
     * @param request Object to dispatch to related service.
     * @return The result of the method invocation.
     * @throws DispatcherException In case an error happens in the reflections part of the dispatcher.
     * @throws InvocationTargetException In case the dispatched method throws en exception.
     */
    Object deliver(Object request) throws DispatcherException, InvocationTargetException;

}

@@ -92,16 +92,21 @@
 (C) 2012
+-2014
  ecsec G
@@ -110,16 +110,16 @@
 c GmbH.%0A
-
  * All r
@@ -993,16 +993,39 @@
 eption;%0A
+import java.util.List;%0A
 %0A%0A/**%0A *
@@ -1297,16 +1297,74 @@
 sec.de%3E%0A
+ * @author Hans-Martin Haase %3Chans-martin.haase@ecsec.de%3E%0A
  */%0Apubl
@@ -1823,16 +1823,16 @@
      */%0A
-
     Obje
@@ -1914,10 +1914,1242 @@
 ption;%0A%0A
+    /**%0A     * Get a list of String with the available services.%0A     * The format of the name depends on the name space of the service so the service name has either the prefix%0A     * %7B@code urn:iso:std:iso-iec:24727:tech:schema%7D or %7B@code http://www.bsi.bund.de/ecard/api/1.0%7D. A valid example%0A     * is for instance %3Cbr%3E%0A     * %7B@code http://www.bsi.bund.de/ecard/api/1.0#InitializeFramework%7D or %3Cbr%3E%0A     * %7B@code urn:iso:std:iso-iec:24727:tech:schema:DIDAuthenticate%7D.%0A     *%0A     * @return A list of Strings representing the available services of the dispatcher.%0A     */%0A    List%3CString%3E getServiceList();%0A%0A    /**%0A     * Get a Dispatcher which provides a implementation specific range of services.%0A     * This method is primarily meant to provide a Dispatcher with restricted access to functions which should not be%0A     * invoked by external communication partners. For instance in the PAOS message exchange of the TR-03112 add-on we%0A     * do not want to provide access to the CardApplicationPath method which would be enable the remote party to view all%0A     * available terminals and cards.%0A     *%0A     * @return A Dispatcher which provides implementation specific range of services.%0A     */%0A    Dispatcher getFilter();%0A%0A
 %7D%0A

Add two new interface methods. One for getting a restricted Dispatcher and one for getting a service list.