BUG-865: integrate SchemaAwareNormalizedNodeStreamWriter
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / util / ASTSchemaSource.java
index 5ff245962e11d94856e82c40834863959186fc2a..ab57ab74f9b57a4ae99376eab334885a65bbae77 100644 (file)
@@ -1,5 +1,6 @@
 /*
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2014 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
@@ -8,11 +9,8 @@ package org.opendaylight.yangtools.yang.parser.util;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
-
 import javax.annotation.Nonnull;
-
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
@@ -33,19 +31,22 @@ import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
 public final class ASTSchemaSource implements SchemaSourceRepresentation {
     public static final Function<ASTSchemaSource, SourceIdentifier> GET_IDENTIFIER = new Function<ASTSchemaSource, SourceIdentifier>() {
         @Override
-        public SourceIdentifier apply(final ASTSchemaSource input) {
+        public SourceIdentifier apply(@Nonnull final ASTSchemaSource input) {
+            Preconditions.checkNotNull(input);
             return input.getIdentifier();
         }
     };
     public static final Function<ASTSchemaSource, YangModelDependencyInfo> GET_DEPINFO = new Function<ASTSchemaSource, YangModelDependencyInfo>() {
         @Override
-        public YangModelDependencyInfo apply(final ASTSchemaSource input) {
+        public YangModelDependencyInfo apply(@Nonnull final ASTSchemaSource input) {
+            Preconditions.checkNotNull(input);
             return input.getDependencyInformation();
         }
     };
     public static final Function<ASTSchemaSource, ParserRuleContext> GET_AST = new Function<ASTSchemaSource, ParserRuleContext>() {
         @Override
-        public ParserRuleContext apply(final ASTSchemaSource input) {
+        public ParserRuleContext apply(@Nonnull final ASTSchemaSource input) {
+            Preconditions.checkNotNull(input);
             return input.getAST();
         }
     };
@@ -55,11 +56,11 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
     private final SourceIdentifier id;
     private final String text;
 
-    private ASTSchemaSource(final @Nonnull SourceIdentifier id, @Nonnull final ParserRuleContext tree, final @Nonnull YangModelDependencyInfo depInfo, final @Nonnull String text) {
+    private ASTSchemaSource(@Nonnull final SourceIdentifier id, @Nonnull final ParserRuleContext tree, @Nonnull final YangModelDependencyInfo depInfo, final String text) {
         this.depInfo = Preconditions.checkNotNull(depInfo);
         this.tree = Preconditions.checkNotNull(tree);
         this.id = Preconditions.checkNotNull(id);
-        this.text = Preconditions.checkNotNull(text);
+        this.text = text;
     }
 
     /**
@@ -71,27 +72,35 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
      * @return A new representation instance.
      * @throws YangSyntaxErrorException if we fail to extract dependency information.
      */
-    public static final ASTSchemaSource create(final @Nonnull String name, final @Nonnull ParserRuleContext tree) throws YangSyntaxErrorException {
+    public static ASTSchemaSource create(@Nonnull final String name, @Nonnull final ParserRuleContext tree) throws YangSyntaxErrorException {
         final YangModelDependencyInfo depInfo = YangModelDependencyInfo.fromAST(name, tree);
-        final SourceIdentifier id = new SourceIdentifier(depInfo.getName(), Optional.of(depInfo.getFormattedRevision()));
+        final SourceIdentifier id = getSourceId(depInfo);
         return new ASTSchemaSource(id, tree, depInfo, null);
     }
 
+    private static SourceIdentifier getSourceId(final YangModelDependencyInfo depInfo) {
+        final String name = depInfo.getName();
+        return depInfo.getFormattedRevision() == null
+                ? new SourceIdentifier(name)
+                : new SourceIdentifier(name, depInfo.getFormattedRevision());
+    }
+
     /**
      * Create a new instance of AST representation for a abstract syntax tree,
      * performing minimal semantic analysis to acquire dependency information.
      *
      * @param name YANG source name. Used only for error reporting.
      * @param tree ANTLR abstract syntax tree
+     * @param text YANG text source
      * @return A new representation instance.
      * @throws YangSyntaxErrorException if we fail to extract dependency information.
      *
      * @deprecated Migration only, will be removed as soon as the migration is completed.
      */
     @Deprecated
-    public static final ASTSchemaSource create(final @Nonnull String name, final @Nonnull ParserRuleContext tree, final String text) throws YangSyntaxErrorException {
+    public static ASTSchemaSource create(@Nonnull final String name, @Nonnull final ParserRuleContext tree, final String text) throws YangSyntaxErrorException {
         final YangModelDependencyInfo depInfo = YangModelDependencyInfo.fromAST(name, tree);
-        final SourceIdentifier id = new SourceIdentifier(depInfo.getName(), Optional.of(depInfo.getFormattedRevision()));
+        final SourceIdentifier id = getSourceId(depInfo);
         return new ASTSchemaSource(id, tree, depInfo, text);
     }
 
@@ -111,7 +120,7 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
      *
      * @return Underlying AST.
      */
-    public @Nonnull ParserRuleContext getAST() {
+    @Nonnull public ParserRuleContext getAST() {
         return tree;
     }
 
@@ -123,7 +132,7 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
      *
      * @return Dependency information.
      */
-    public @Nonnull YangModelDependencyInfo getDependencyInformation() {
+    @Nonnull public YangModelDependencyInfo getDependencyInformation() {
         return depInfo;
     }
 
@@ -136,7 +145,7 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
      *             choice. Will be removed as soon as the migration is completed.
      */
     @Deprecated
-    public @Nonnull String getYangText() {
+    @Nonnull public String getYangText() {
         return text;
     }
 }