/** * Translates supplied Binding Instance Identifier into NormalizedNode * instance identifier. * * @param binding * Binding Instance Identifier * @return DOM Instance Identifier * @throws IllegalArgumentException * If supplied Instance Identifier is not valid. */ public YangInstanceIdentifier toNormalized(final InstanceIdentifier<? extends DataObject> binding) { return codecRegistry.toYangInstanceIdentifier(binding); }
@Override public YangInstanceIdentifier toYangInstanceIdentifier(final InstanceIdentifier<?> binding) { return codecRegistry.toYangInstanceIdentifier(binding); }
YangInstanceIdentifier toYangInstanceIdentifierBlocking(final InstanceIdentifier<? extends DataObject> binding) { try { return codecRegistry.toYangInstanceIdentifier(binding); } catch (final MissingSchemaException e) { waitForSchema(decompose(binding),e); return codecRegistry.toYangInstanceIdentifier(binding); } }
@Override public <T extends DataObject> ListenableFuture<Optional<T>> readData(final InstanceIdentifier<T> path, RetrievalStrategy strategy) { final SchemaContext schemaContext = client.getSchemaContext(); final BindingNormalizedNodeCodecRegistry mappingService = client.getMappingService(); final YangInstanceIdentifier domPath = mappingService.toYangInstanceIdentifier(path); final Entry<String, DataSchemaNode> pathWithSchema = RestconfUtils.toRestconfIdentifier(domPath,schemaContext); String restconfPath = getStorePrefix() + pathWithSchema.getKey(); return client.get(restconfPath, "application/xml",new Function<ClientResponse, Optional<T>>() { @SuppressWarnings("unchecked") @Override public com.google.common.base.Optional<T> apply(ClientResponse response) { switch (response.getStatus()) { case 200: // Status OK DataObject dataObject = deserialize(domPath,response.getEntityInputStream()); return (Optional<T>) Optional.of(dataObject); case 404: // Status Not Found return Optional.<T> absent(); default: throw new IllegalStateException("Failed : HTTP error code : " + response.getStatus()); } } }); }
@Override public ListenableFuture<RpcResult<Boolean>> deleteData(final InstanceIdentifier<?> path) { final SchemaContext schemaContext = getClient().getSchemaContext(); final BindingNormalizedNodeCodecRegistry mappingService = getClient().getMappingService(); final YangInstanceIdentifier domPath = mappingService.toYangInstanceIdentifier(path); final Map.Entry<String, DataSchemaNode> pathWithSchema = RestconfUtils.toRestconfIdentifier(domPath, schemaContext); final String restconfPath = getStorePrefix() + pathWithSchema.getKey(); return getClient().delete(restconfPath,MediaType.APPLICATION_XML,new Function<ClientResponse, RpcResult<Boolean>>() { @SuppressWarnings("unchecked") @Override public RpcResult<Boolean> apply(ClientResponse clientResponse) { if (clientResponse.getStatus() != 200) { RpcError rpcError = new RestRpcError(RpcError.ErrorSeverity.ERROR,RpcError.ErrorType.RPC,null,null,"HTTP status "+clientResponse.getStatus(),null,null); Collection<RpcError> errors = new ArrayList<RpcError>(); errors.add(rpcError); RestRpcResult rpcResult = new RestRpcResult(false,null,errors); return (RpcResult<Boolean>) Optional.of(rpcResult); } DataObject dataObject = deserialize(domPath, clientResponse.getEntityInputStream()); RestRpcResult rpcResult = new RestRpcResult(true,dataObject,null); return (RpcResult<Boolean>) Optional.of(rpcResult); } }); }
@Override public ListenableFuture<RpcResult<Boolean>> putData(final InstanceIdentifier<?> path) { final SchemaContext schemaContext = getClient().getSchemaContext(); final BindingNormalizedNodeCodecRegistry mappingService = getClient().getMappingService(); final YangInstanceIdentifier domPath = mappingService.toYangInstanceIdentifier(path); final Map.Entry<String, DataSchemaNode> pathWithSchema = RestconfUtils.toRestconfIdentifier(domPath, schemaContext); final String restconfPath = getStorePrefix() + pathWithSchema.getKey(); return getClient().put(restconfPath,MediaType.APPLICATION_XML,new Function<ClientResponse, RpcResult<Boolean>>() { @SuppressWarnings("unchecked") @Override public RpcResult<Boolean> apply(ClientResponse clientResponse) { if (clientResponse.getStatus() != 200) { RpcError rpcError = new RestRpcError(RpcError.ErrorSeverity.ERROR,RpcError.ErrorType.RPC,null,null,"HTTP status "+clientResponse.getStatus(),null,null); Collection<RpcError> errors = new ArrayList<RpcError>(); errors.add(rpcError); RestRpcResult rpcResult = new RestRpcResult(false,null,errors); return (RpcResult<Boolean>) Optional.of(rpcResult); } DataObject dataObject = deserialize(domPath, clientResponse.getEntityInputStream()); RestRpcResult rpcResult = new RestRpcResult(true,dataObject); return (RpcResult<Boolean>) Optional.of(rpcResult); } }); } }