X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fgnpy%2FServiceDataStoreOperationsImpl.java;h=5b6ccaf685b041faa1bd47f64d03d1dbca75b2b1;hb=243c08d8b7ad90b0cbaec76a33a639d6fa96f5c8;hp=5d813a83c230ce069ac55e58af730713c8cedd87;hpb=56dd2add269f0fdc8efdc1e3bfece25301ba6a3f;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImpl.java b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImpl.java index 5d813a83c..5b6ccaf68 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImpl.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/gnpy/ServiceDataStoreOperationsImpl.java @@ -8,43 +8,40 @@ package org.opendaylight.transportpce.pce.gnpy; -import com.google.common.base.Function; import com.google.common.collect.FluentIterable; - import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.util.Collection; import java.util.Collections; import java.util.Optional; - -import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry; -import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; -import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.binding.runtime.spi.BindingRuntimeHelpers; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.transportpce.common.DataStoreContext; import org.opendaylight.transportpce.common.converter.XMLDataObjectConverter; import org.opendaylight.transportpce.common.network.NetworkTransactionService; +import org.opendaylight.yang.gen.v1.gnpy.path.rev200202.Result; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice; -import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier; import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@edu.umd.cs.findbugs.annotations.SuppressFBWarnings( + value = "DLS_DEAD_LOCAL_STORE", + justification = "FIXME aluminium migration pending: need to convert GNPy to BindingDOMCodecServices") public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperations { private static final Logger LOG = LoggerFactory.getLogger(ServiceDataStoreOperationsImpl.class); @@ -52,6 +49,7 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation public ServiceDataStoreOperationsImpl(NetworkTransactionService networkTransactionService) { } + @Override public void createXMLFromDevice(DataStoreContext dataStoreContextUtil, OrgOpenroadmDevice device, String output) throws GnpyException { @@ -66,69 +64,56 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation } Writer writerFromDataObject = cwDsU.writerFromDataObject(device, OrgOpenroadmDevice.class,cwDsU.dataContainer()); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(output)); + try (BufferedWriter writer = new BufferedWriter(new FileWriter(output,StandardCharsets.UTF_8))) { writer.write(writerFromDataObject.toString()); - writer.close(); } catch (IOException e) { throw new GnpyException( - String.format("In ServiceDataStoreOperationsImpl : Bufferwriter error"),e); + String.format("In ServiceDataStoreOperationsImpl : Bufferwriter error %s",e)); } - LOG.debug("GNPy: device xml : {}", writerFromDataObject.toString()); + LOG.debug("GNPy: device xml : {}", writerFromDataObject); } } + @Override public String createJsonStringFromDataObject(final InstanceIdentifier id, DataObject object) throws GnpyException, Exception { - final SchemaPath scPath = SchemaPath - .create(FluentIterable.from(id.getPathArguments()).transform(new Function() { - @Override - public QName apply(final PathArgument input) { - return BindingReflections.findQName(input.getType()); - } - }), true); - final Writer writer = new StringWriter(); - NormalizedNodeStreamWriter domWriter; + final SchemaPath scPath = SchemaPath.create(FluentIterable + .from(id.getPathArguments()) + .transform(input -> BindingReflections.findQName(input.getType())), true); - try { - // Prepare the variables - final ModuleInfoBackedContext moduleContext = ModuleInfoBackedContext.create(); - Iterable moduleInfos = Collections - .singleton(BindingReflections.getModuleInfo(object.getClass())); - moduleContext.addModuleInfos(moduleInfos); - SchemaContext schemaContext = moduleContext.tryToCreateSchemaContext().get(); - BindingRuntimeContext bindingContext; - bindingContext = BindingRuntimeContext.create(moduleContext, schemaContext); - final BindingNormalizedNodeCodecRegistry codecRegistry = - new BindingNormalizedNodeCodecRegistry(bindingContext); + // Prepare the variables + // Create the schema context + Collection moduleInfos = Collections.singleton(BindingReflections + .getModuleInfo(Result.class)); + @NonNull + EffectiveModelContext schemaContext = BindingRuntimeHelpers.createEffectiveModel(moduleInfos); - /* - * This function needs : - context - scPath.getParent() - - * scPath.getLastComponent().getNamespace(), - - * JsonWriterFactory.createJsonWriter(writer) - */ - domWriter = JSONNormalizedNodeStreamWriter.createExclusiveWriter( + /* + * This function needs : - context - scPath.getParent() - + * scPath.getLastComponent().getNamespace(), - + * JsonWriterFactory.createJsonWriter(writer) + */ + final Writer writer = new StringWriter(); + + try (NormalizedNodeStreamWriter domWriter = JSONNormalizedNodeStreamWriter.createExclusiveWriter( JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.createSimple(schemaContext), scPath.getParent(), scPath.getLastComponent().getNamespace(), - JsonWriterFactory.createJsonWriter(writer, 2)); + JsonWriterFactory.createJsonWriter(writer, 2));) { // The write part - final BindingStreamEventWriter bindingWriter = codecRegistry.newWriter(id, domWriter); - codecRegistry.getSerializer(id.getTargetType()).serialize(object, bindingWriter); - domWriter.close(); - writer.close(); - } catch (IOException | YangSyntaxErrorException | ReactorException e) { + //FIXME + //codecRegistry.getSerializer(id.getTargetType()).serialize(object, codecRegistry.newWriter(id, domWriter)); + } catch (IOException e) { throw new GnpyException("In ServiceDataStoreOperationsImpl: exception during json file creation",e); } return writer.toString(); } // Write the json as a string in a file + @Override public void writeStringFile(String jsonString, String fileName) throws GnpyException { - try { - FileWriter file = new FileWriter(fileName); + try (FileWriter file = new FileWriter(fileName,StandardCharsets.UTF_8)) { file.write(jsonString); - file.close(); } catch (IOException e) { throw new GnpyException("In ServiceDataStoreOperationsImpl : exception during file writing",e); }