/* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; import java.util.Collection; import java.util.Optional; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData; import org.opendaylight.yangtools.yang.binding.DataContainer; public interface ConvertorExecutor { /** * Lookup and use convertor by specified type, then converts source and returns converted result * * @param <FROM> the source type * @param <TO> the result type * @param <DATA> the data type * @param source the source * @param data convertor data * @return the result (can be empty, if no convertor was found) */ <FROM extends DataContainer, TO, DATA extends ConvertorData> Optional<TO> convert(final FROM source, final DATA data); /** * Lookup and use convertor by specified type, then converts source collection and returns converted result * * @param <FROM> the source type * @param <TO> the result type * @param <DATA> the data type * @param source the source collection * @param data convertor data * @return the result (can be empty, if no convertor was found) */ <FROM extends DataContainer, TO, DATA extends ConvertorData> Optional<TO> convert(final Collection<FROM> source, final DATA data); }