/* * 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.common; import java.util.Collection; import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yangtools.yang.binding.DataContainer; /** * Converts OpenflowJava to MDSal model and vice versa * * @param <FROM> type of source * @param <TO> type of result * @param <DATA> the type parameter */ public abstract class Convertor<FROM, TO, DATA extends ConvertorData> { private ConvertorExecutor convertorExecutor; /** * Gets convertor manager. * * @return the convertor manager */ protected ConvertorExecutor getConvertorExecutor() { return convertorExecutor; } /** * Sets convertor manager. * * @param convertorExecutor the convertor manager */ public void setConvertorExecutor(ConvertorExecutor convertorExecutor) { this.convertorExecutor = convertorExecutor; } /** * Gets type of convertor, used in * {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager}. * * @return the type of convertor */ public abstract Collection<Class<? extends DataContainer>> getTypes(); /** * Converts source to result * * @param source source * @param data convertor data * @return converted source */ public abstract TO convert(FROM source, DATA data); }