Use java.util.Optional
[netconf.git] / netconf / netconf-api / src / main / java / org / opendaylight / netconf / api / capability / YangModuleCapability.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.netconf.api.capability;
9
10 import java.util.Optional;
11 import org.opendaylight.yangtools.yang.common.Revision;
12 import org.opendaylight.yangtools.yang.model.api.Module;
13
14 /**
15  * Yang model representing capability.
16  */
17 public final class YangModuleCapability extends BasicCapability {
18
19     private final String content;
20     private final String revision;
21     private final String moduleName;
22     private final String moduleNamespace;
23
24     public YangModuleCapability(final Module module, final String moduleContent) {
25         super(toCapabilityURI(module));
26         this.content = moduleContent;
27         this.moduleName = module.getName();
28         this.moduleNamespace = module.getNamespace().toString();
29         this.revision = module.getRevision().map(Revision::toString).orElse(null);
30     }
31
32     @Override
33     public Optional<String> getCapabilitySchema() {
34         return Optional.of(content);
35     }
36
37     private static String toCapabilityURI(final Module module) {
38         final StringBuilder sb = new StringBuilder();
39         sb.append(module.getNamespace()).append("?module=").append(module.getName());
40
41         final java.util.Optional<Revision> rev = module.getRevision();
42         if (rev.isPresent()) {
43             sb.append("&revision=").append(rev.get());
44         }
45         return sb.toString();
46     }
47
48     @Override
49     public Optional<String> getModuleName() {
50         return Optional.of(moduleName);
51     }
52
53     @Override
54     public Optional<String> getModuleNamespace() {
55         return Optional.of(moduleNamespace);
56     }
57
58     @Override
59     public Optional<String> getRevision() {
60         return Optional.ofNullable(revision);
61     }
62 }