/* * Copyright (c) 2016 Pantheon Technologies s.r.o. 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.impl.protocol.deserialization; import org.junit.Before; import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerExtensionProvider; import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry; import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer; import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeserializer; import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterActionDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey; import org.opendaylight.openflowjava.protocol.api.keys.TypeToClassKey; import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializationFactory; import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.queue.property.header.QueueProperty; public abstract class AbstractDeserializerTest { private DeserializerExtensionProvider provider; private DeserializerRegistry registry; private DeserializationFactory factory; @Before public void setUp() throws Exception { registry = new DeserializerRegistryImpl(); registry.init(); factory = new DeserializationFactory(); factory.setRegistry(registry); provider = new DeserializerExtensionProviderImpl(registry, factory); DeserializerInjector.injectDeserializers(provider); MessageDeserializerInjector.injectLegacyDeserializers(provider); init(); } protected DeserializationFactory getFactory() { return factory; } protected DeserializerRegistry getRegistry() { return registry; } protected DeserializerExtensionProvider getProvider() { return provider; } protected abstract void init(); static class DeserializerExtensionProviderImpl implements DeserializerExtensionProvider { private final DeserializerRegistry registry; private final DeserializationFactory factory; public DeserializerExtensionProviderImpl(final DeserializerRegistry registry, DeserializationFactory factory) { this.registry = registry; this.factory = factory; } @Override public void registerDeserializer(MessageCodeKey messageCodeKey, OFGeneralDeserializer ofGeneralDeserializer) { registry.registerDeserializer(messageCodeKey, ofGeneralDeserializer); } @Override public boolean unregisterDeserializer(ExperimenterDeserializerKey key) { return false; } @Override public void registerActionDeserializer(ExperimenterActionDeserializerKey key, OFGeneralDeserializer deserializer) { } @Override public void registerInstructionDeserializer(ExperimenterInstructionDeserializerKey key, OFGeneralDeserializer deserializer) { } @Override public void registerMatchEntryDeserializer(MatchEntryDeserializerKey key, OFGeneralDeserializer deserializer) { } @Override public void registerErrorDeserializer(ExperimenterIdDeserializerKey key, OFDeserializer<ErrorMessage> deserializer) { } @Override public void registerExperimenterMessageDeserializer(ExperimenterIdDeserializerKey key, OFDeserializer<? extends ExperimenterDataOfChoice> deserializer) { } @Override public void registerMultipartReplyMessageDeserializer(ExperimenterIdDeserializerKey key, OFDeserializer<? extends ExperimenterDataOfChoice> deserializer) { } @Override public void registerMultipartReplyTFDeserializer(ExperimenterIdDeserializerKey key, OFGeneralDeserializer deserializer) { } @Override public void registerMeterBandDeserializer(ExperimenterIdDeserializerKey key, OFDeserializer<MeterBandExperimenterCase> deserializer) { } @Override public void registerQueuePropertyDeserializer(ExperimenterIdDeserializerKey key, OFDeserializer<QueueProperty> deserializer) { } @Override public void registerDeserializerMapping(TypeToClassKey typeToClassKey, Class<?> aClass) { factory.registerMapping(typeToClassKey, aClass); } @Override public boolean unregisterDeserializerMapping(TypeToClassKey typeToClassKey) { return factory.unregisterMapping(typeToClassKey); } } }