Java tutorial
/* * Copyright (c) 2013 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.yangtools.yang.data.operations; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import com.google.common.base.Optional; final class LeafNodeModification implements Modification<LeafSchemaNode, LeafNode<?>> { @Override public Optional<LeafNode<?>> modify(LeafSchemaNode schema, Optional<LeafNode<?>> actualNode, Optional<LeafNode<?>> modificationNode, OperationStack operationStack) throws DataModificationException { operationStack.enteringNode(modificationNode); Optional<LeafNode<?>> result; // Returns either actual node, modification node or empty in case of removal switch (operationStack.getCurrentOperation()) { case MERGE: { result = modificationNode.isPresent() ? modificationNode : actualNode; break; } case CREATE: { DataModificationException.DataExistsException.check(schema.getQName(), actualNode, null); } case REPLACE: { result = modificationNode; break; } case DELETE: { DataModificationException.DataMissingException.check(schema.getQName(), actualNode); } case REMOVE: { result = Optional.absent(); break; } case NONE: { result = actualNode; break; } default: throw new UnsupportedOperationException(String.format("Unable to perform operation: %s on: %s, unknown", operationStack.getCurrentOperation(), schema)); } operationStack.exitingNode(modificationNode); return result; } }