Search in sources :

Example 1 with DefaultCompositeStream

use of org.onosproject.yang.runtime.DefaultCompositeStream in project onos by opennetworkinglab.

the class RestconfUtils method convertJsonToDataNode.

/**
 * Convert URI and ObjectNode to ResourceData.
 *
 * @param uri      URI of the data resource
 * @param rootNode JSON representation of the data resource
 * @return represents type of node in data store
 */
public static ResourceData convertJsonToDataNode(URI uri, ObjectNode rootNode) {
    RuntimeContext.Builder runtimeContextBuilder = new DefaultRuntimeContext.Builder();
    runtimeContextBuilder.setDataFormat(JSON_FORMAT);
    RuntimeContext context = runtimeContextBuilder.build();
    ResourceData resourceData = null;
    InputStream jsonData = null;
    try {
        if (rootNode != null) {
            jsonData = convertObjectNodeToInputStream(rootNode);
        }
        String uriString = getRawUriPath(uri);
        CompositeStream compositeStream = new DefaultCompositeStream(uriString, jsonData);
        // CompositeStream --- YangRuntimeService ---> CompositeData.
        CompositeData compositeData = YANG_RUNTIME.decode(compositeStream, context);
        resourceData = compositeData.resourceData();
    } catch (RestconfException ex) {
        throw ex;
    } catch (Exception ex) {
        log.error("convertJsonToDataNode failure: {}", ex.getMessage(), ex);
        log.info("Failed JSON: \n{}", rootNode);
        log.debug("convertJsonToDataNode failure", ex);
        throw new RestconfException("ERROR: JSON cannot be converted to DataNode", ex, RestconfError.ErrorTag.OPERATION_FAILED, INTERNAL_SERVER_ERROR, Optional.of(uri.getPath()));
    }
    if (resourceData == null) {
        throw new RestconfException("ERROR: JSON cannot be converted to DataNode", RestconfError.ErrorTag.DATA_MISSING, CONFLICT, Optional.of(uri.getPath()), Optional.empty());
    }
    return resourceData;
}
Also used : ResourceData(org.onosproject.yang.model.ResourceData) DefaultResourceData(org.onosproject.yang.model.DefaultResourceData) InputStream(java.io.InputStream) RestconfException(org.onosproject.restconf.api.RestconfException) UriBuilder(javax.ws.rs.core.UriBuilder) DefaultCompositeStream(org.onosproject.yang.runtime.DefaultCompositeStream) CompositeData(org.onosproject.yang.runtime.CompositeData) DefaultCompositeData(org.onosproject.yang.runtime.DefaultCompositeData) RuntimeContext(org.onosproject.yang.runtime.RuntimeContext) DefaultRuntimeContext(org.onosproject.yang.runtime.DefaultRuntimeContext) DefaultCompositeStream(org.onosproject.yang.runtime.DefaultCompositeStream) CompositeStream(org.onosproject.yang.runtime.CompositeStream) IOException(java.io.IOException) RestconfException(org.onosproject.restconf.api.RestconfException)

Aggregations

IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 UriBuilder (javax.ws.rs.core.UriBuilder)1 RestconfException (org.onosproject.restconf.api.RestconfException)1 DefaultResourceData (org.onosproject.yang.model.DefaultResourceData)1 ResourceData (org.onosproject.yang.model.ResourceData)1 CompositeData (org.onosproject.yang.runtime.CompositeData)1 CompositeStream (org.onosproject.yang.runtime.CompositeStream)1 DefaultCompositeData (org.onosproject.yang.runtime.DefaultCompositeData)1 DefaultCompositeStream (org.onosproject.yang.runtime.DefaultCompositeStream)1 DefaultRuntimeContext (org.onosproject.yang.runtime.DefaultRuntimeContext)1 RuntimeContext (org.onosproject.yang.runtime.RuntimeContext)1