<scope>provided</scope>
<optional>true</optional>
</dependency>
- <dependency>
- <groupId>org.apache.aries.blueprint</groupId>
- <artifactId>blueprint-maven-plugin-annotation</artifactId>
- <optional>true</optional>
- </dependency>
<!-- project specific dependencies -->
<dependency>
<groupId>${project.groupId}</groupId>
<build>
<plugins>
- <plugin>
- <groupId>org.apache.aries.blueprint</groupId>
- <artifactId>blueprint-maven-plugin</artifactId>
- <configuration>
- <scanPaths>org.opendaylight.ovsdb.hwvtepsouthbound</scanPaths>
- </configuration>
- </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Singleton;
-import org.apache.aries.blueprint.annotation.service.Reference;
-import org.apache.aries.blueprint.annotation.service.Service;
import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
import org.slf4j.LoggerFactory;
@Singleton
-@Service(classes = HwvtepSouthboundProviderInfo.class)
public class HwvtepSouthboundProvider
implements HwvtepSouthboundProviderInfo, ClusteredDataTreeChangeListener<Topology>, AutoCloseable {
private final UpgradeState upgradeState;
@Inject
- public HwvtepSouthboundProvider(@Reference final DataBroker dataBroker,
- @Reference final EntityOwnershipService entityOwnershipServiceDependency,
- @Reference final OvsdbConnection ovsdbConnection,
- @Reference final DOMSchemaService schemaService,
- @Reference final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer,
- @Reference final UpgradeState upgradeState) {
+ public HwvtepSouthboundProvider(final DataBroker dataBroker, final EntityOwnershipService entityOwnership,
+ final OvsdbConnection ovsdbConnection, final DOMSchemaService schemaService,
+ final BindingNormalizedNodeSerializer serializer,
+ final UpgradeState upgradeState) {
this.dataBroker = dataBroker;
- this.entityOwnershipService = entityOwnershipServiceDependency;
+ this.entityOwnershipService = entityOwnership;
registration = null;
this.ovsdbConnection = ovsdbConnection;
this.upgradeState = upgradeState;
- HwvtepSouthboundUtil.setInstanceIdentifierCodec(new InstanceIdentifierCodec(schemaService,
- bindingNormalizedNodeSerializer));
+ // FIXME: eliminate this static wiring
+ HwvtepSouthboundUtil.setInstanceIdentifierCodec(new InstanceIdentifierCodec(schemaService, serializer));
LOG.info("HwvtepSouthboundProvider ovsdbConnectionService: {}", ovsdbConnection);
}
// Prevent instantiating a utility class
}
+ // FIXME: eliminate this static wiring by encaspulating the codec into a service
+ @Deprecated
public static void setInstanceIdentifierCodec(InstanceIdentifierCodec iidc) {
instanceIdentifierCodec = iidc;
}
+ // FIXME: this should be an instance method
public static InstanceIdentifierCodec getInstanceIdentifierCodec() {
return instanceIdentifierCodec;
}
+ // FIXME: this should be an instance method
public static String serializeInstanceIdentifier(InstanceIdentifier<?> iid) {
return instanceIdentifierCodec.serialize(iid);
}
+ // FIXME: this should be an instance method
public static InstanceIdentifier<?> deserializeInstanceIdentifier(String iidString) {
InstanceIdentifier<?> result = null;
try {
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener;
import org.opendaylight.yangtools.yang.model.api.Module;
-public class InstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec
- implements EffectiveModelContextListener {
+public class InstanceIdentifierCodec
+ // FIXME: this really wants to be wired as yangtools-data-codec-gson's codecs, because ...
+ extends AbstractModuleStringInstanceIdentifierCodec implements EffectiveModelContextListener {
+
+ // FIXME: this is not the only interface exposed from binding-dom-codec-api, something different might be more
+ // appropriate.
+ private final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
private DataSchemaContextTree dataSchemaContextTree;
private EffectiveModelContext context;
- private final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
public InstanceIdentifierCodec(final DOMSchemaService schemaService,
final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) {
this.bindingNormalizedNodeSerializer = bindingNormalizedNodeSerializer;
}
+ // ... all of this is dynamic lookups based on injection. OSGi lifecycle gives us this for free ...
@Override
protected DataSchemaContextTree getDataContextTree() {
return dataSchemaContextTree;
this.dataSchemaContextTree = DataSchemaContextTree.from(schemaContext);
}
+ // FIXME: ... and then this is a separate service built on top of dynamic lifecycle.
public String serialize(final InstanceIdentifier<?> iid) {
YangInstanceIdentifier normalizedIid = bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid);
return serialize(normalizedIid);
return bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid);
}
- public InstanceIdentifier<?> bindingDeserializer(final String iidString) throws DeserializationException {
+ public InstanceIdentifier<?> bindingDeserializer(final String iidString) throws DeserializationException {
YangInstanceIdentifier normalizedYangIid = deserialize(iidString);
return bindingNormalizedNodeSerializer.fromYangInstanceIdentifier(normalizedYangIid);
}
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+ <!-- FIXME: Auto-generated, to be migrated -->
+ <reference id="dataBroker" interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
+ <reference id="bindingNormalizedNodeSerializer" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer"/>
+ <reference id="dOMSchemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService"/>
+ <reference id="entityOwnershipService" interface="org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService"/>
+ <reference id="ovsdbConnection" interface="org.opendaylight.ovsdb.lib.OvsdbConnection"/>
+ <reference id="upgradeState" interface="org.opendaylight.serviceutils.upgrade.UpgradeState"/>
+ <bean id="hwvtepSouthboundProvider" class="org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProvider" init-method="init" destroy-method="close">
+ <argument ref="dataBroker"/>
+ <argument ref="entityOwnershipService"/>
+ <argument ref="ovsdbConnection"/>
+ <argument ref="dOMSchemaService"/>
+ <argument ref="bindingNormalizedNodeSerializer"/>
+ <argument ref="upgradeState"/>
+ </bean>
+ <service ref="hwvtepSouthboundProvider" interface="org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProviderInfo"/>
+
<!-- FIXME: convert these to proper Karaf commands -->
<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
<command>