NativeKeyAccessFactoryModule.java
/*
* Copyright (c) 2014 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.controller.config.yang.tcpmd5.jni.cfg;
import java.nio.channels.Channel;
import org.opendaylight.tcpmd5.api.KeyAccess;
import org.opendaylight.tcpmd5.api.KeyAccessFactory;
import org.opendaylight.tcpmd5.jni.NativeKeyAccessFactory;
import org.opendaylight.tcpmd5.jni.NativeSupportUnavailableException;
/**
* Service representing a way for accessing key information.
*/
public class NativeKeyAccessFactoryModule extends
org.opendaylight.controller.config.yang.tcpmd5.jni.cfg.AbstractNativeKeyAccessFactoryModule {
private KeyAccessFactory kaf;
public NativeKeyAccessFactoryModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
super(identifier, dependencyResolver);
}
public NativeKeyAccessFactoryModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
final org.opendaylight.controller.config.yang.tcpmd5.jni.cfg.NativeKeyAccessFactoryModule oldModule,
final java.lang.AutoCloseable oldInstance) {
super(identifier, dependencyResolver, oldModule, oldInstance);
}
@Override
public void customValidation() {
try {
kaf = NativeKeyAccessFactory.getInstance();
} catch (NativeSupportUnavailableException e) {
throw new UnsupportedOperationException("Native support is not available", e);
}
}
@Override
public java.lang.AutoCloseable createInstance() {
final KeyAccessFactory f = this.kaf;
final class CloseableNativeKeyAccessFactory implements AutoCloseable, KeyAccessFactory {
@Override
public KeyAccess getKeyAccess(final Channel channel) {
return f.getKeyAccess(channel);
}
@Override
public boolean canHandleChannelClass(final Class<? extends Channel> clazz) {
return f.canHandleChannelClass(clazz);
}
@Override
public void close() {
// Nothing to do
}
}
return new CloseableNativeKeyAccessFactory();
}
}