Bumping ONOS to point to ONOS YANG Tools 2.2.0-b2

Change-Id: I23b2ed67ed0fb5ef4ec0731a37dcd8b058102298
diff --git a/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java
index 09b04a7..9b90d5e 100644
--- a/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java
+++ b/apps/yang-gui/src/main/java/org/onosproject/yang/gui/YangModelMessageHandler.java
@@ -110,7 +110,7 @@
         protected void populateTable(TableModel tm, ObjectNode payload) {
             for (YangModel model : modelRegistry.getModels()) {
                 for (YangModuleId id : model.getYangModulesId()) {
-                    populateRow(tm.addRow(), modelId(model), id);
+                    populateRow(tm.addRow(), model.getYangModelId(), id);
                 }
             }
         }
@@ -172,7 +172,7 @@
         int nid = Integer.parseInt(modelId.substring(2));
         log.info("Got {}; {}", modelId, nid);
         YangModel model = modelRegistry.getModels().stream()
-                .filter(m -> modelId(m).equals(modelId))
+                .filter(m -> m.getYangModelId().equals(modelId))
                 .findFirst().orElse(null);
         if (model != null) {
             log.info("Got model");
@@ -183,7 +183,4 @@
         return null;
     }
 
-    private String modelId(YangModel m) {
-        return "YM" + Math.abs(m.hashCode());
-    }
 }
diff --git a/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.html b/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.html
index 2088b66..b49bcd8 100644
--- a/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.html
+++ b/apps/yang-gui/src/main/resources/app/view/yangModel/yangModel.html
@@ -15,9 +15,9 @@
         <div class="table-header" onos-sortable-header>
             <table>
                 <tr>
-                    <td colId="id" sortable>Module</td>
+                    <td colId="modelId" col-width="450px" sortable>Model ID</td>
+                    <td colId="id" col-width="450px" sortable>Module</td>
                     <td colId="revision" sortable>Revision</td>
-                    <td colId="modelId" col-width="130px" sortable>Model ID</td>
                     <!-- TODO: More columns to be added -->
                 </tr>
             </table>
@@ -36,9 +36,9 @@
                     ng-click="selectCallback($event, ymodel)"
                     ng-class="{selected: ymodel.id === selId}"
                     ng-repeat-complete row-id="{{ymodel.id}}">
+                    <td>{{ymodel.modelId}}</td>
                     <td>{{ymodel.id}}</td>
                     <td>{{ymodel.revision}}</td>
-                    <td>{{ymodel.modelId}}</td>
                     <!-- TODO: add more columns here -->
                 </tr>
             </table>
diff --git a/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java b/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
index b1867f6..063051b 100644
--- a/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
+++ b/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
@@ -29,9 +29,12 @@
 import org.onosproject.yang.model.NodeKey;
 import org.onosproject.yang.model.ResourceData;
 import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.model.RpcContext;
 import org.onosproject.yang.model.SchemaContext;
 import org.onosproject.yang.model.SchemaContextProvider;
 import org.onosproject.yang.model.YangModel;
+import org.onosproject.yang.model.YangModule;
+import org.onosproject.yang.model.YangModuleId;
 import org.onosproject.yang.runtime.CompositeData;
 import org.onosproject.yang.runtime.CompositeStream;
 import org.onosproject.yang.runtime.ModelRegistrationParam;
@@ -41,6 +44,7 @@
 import org.onosproject.yang.runtime.YangSerializer;
 import org.onosproject.yang.runtime.YangSerializerRegistry;
 import org.onosproject.yang.runtime.impl.DefaultModelConverter;
+import org.onosproject.yang.runtime.impl.DefaultSchemaContextProvider;
 import org.onosproject.yang.runtime.impl.DefaultYangModelRegistry;
 import org.onosproject.yang.runtime.impl.DefaultYangRuntimeHandler;
 import org.onosproject.yang.runtime.impl.DefaultYangSerializerRegistry;
@@ -73,14 +77,15 @@
     private DefaultYangSerializerRegistry serializerRegistry;
     private DefaultYangRuntimeHandler runtimeService;
     private DefaultModelConverter modelConverter;
+    private DefaultSchemaContextProvider schemaContextProvider;
 
     @Activate
     public void activate() {
         coreService.registerApplication(APP_ID);
         serializerRegistry = new DefaultYangSerializerRegistry();
         modelRegistry = new DefaultYangModelRegistry();
-        runtimeService =
-                new DefaultYangRuntimeHandler(serializerRegistry, modelRegistry);
+        runtimeService = new DefaultYangRuntimeHandler(serializerRegistry, modelRegistry);
+        schemaContextProvider = new DefaultSchemaContextProvider(modelRegistry);
         serializerRegistry.registerSerializer(new JsonSerializer());
         serializerRegistry.registerSerializer(new XmlSerializer());
         modelConverter = new DefaultModelConverter(modelRegistry);
@@ -109,6 +114,16 @@
     }
 
     @Override
+    public YangModel getModel(String s) {
+        return modelRegistry.getModel(s);
+    }
+
+    @Override
+    public YangModule getModule(YangModuleId yangModuleId) {
+        return modelRegistry.getModule(yangModuleId);
+    }
+
+    @Override
     public void registerSerializer(YangSerializer ys) {
         serializerRegistry.registerSerializer(ys);
     }
@@ -154,4 +169,9 @@
         log.info("To be implemented.");
         return null;
     }
+
+    @Override
+    public RpcContext getRpcContext(ResourceId resourceId) {
+        return schemaContextProvider.getRpcContext(resourceId);
+    }
 }
diff --git a/apps/yang/web/src/main/java/org/onosproject/yang/web/YangWebResource.java b/apps/yang/web/src/main/java/org/onosproject/yang/web/YangWebResource.java
index 471e891..41830fc 100644
--- a/apps/yang/web/src/main/java/org/onosproject/yang/web/YangWebResource.java
+++ b/apps/yang/web/src/main/java/org/onosproject/yang/web/YangWebResource.java
@@ -25,6 +25,7 @@
 import org.onosproject.yang.compiler.api.YangCompilerService;
 import org.onosproject.yang.compiler.datamodel.YangNode;
 import org.onosproject.yang.compiler.tool.DefaultYangCompilationParam;
+import org.onosproject.yang.compiler.tool.YangCompilerManager;
 import org.onosproject.yang.model.YangModel;
 import org.onosproject.yang.runtime.DefaultModelRegistrationParam;
 import org.onosproject.yang.runtime.ModelRegistrationParam;
@@ -48,9 +49,9 @@
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
-import static org.onosproject.yang.compiler.datamodel.utils.DataModelUtils.deSerializeDataModel;
+import static org.onosproject.yang.compiler.tool.YangCompilerManager.deSerializeDataModel;
+import static org.onosproject.yang.compiler.tool.YangCompilerManager.processYangModel;
 import static org.onosproject.yang.compiler.utils.io.impl.YangIoUtils.deleteDirectory;
-import static org.onosproject.yang.runtime.helperutils.YangApacheUtils.processYangModel;
 
 /**
  * Yang files upload resource.
@@ -141,39 +142,40 @@
 
     private YangCompilationParam createCompilationParam(List<File> inputFiles)
             throws IOException {
-        YangCompilationParam param = new DefaultYangCompilationParam();
+        DefaultYangCompilationParam.Builder builder = DefaultYangCompilationParam.builder();
         for (File file : inputFiles) {
             if (file.getName().endsWith(JAR_FILE_EXTENSION)
                     || file.getName().endsWith(ZIP_FILE_EXTENSION)) {
                 List<File> files = decompressFile(file);
 
                 for (File f : files) {
-                    param = addToParam(param, f);
+                    addToParam(builder, f);
                 }
             } else {
-                param = addToParam(param, file);
+                addToParam(builder, file);
             }
         }
-        param.setCodeGenDir(Paths.get(CODE_GEN_DIR));
-        param.setMetadataGenDir(Paths.get(YANG_RESOURCES));
-        return param;
+        builder.setCodeGenDir(Paths.get(CODE_GEN_DIR));
+        builder.setMetadataGenDir(Paths.get(YANG_RESOURCES));
+        return builder.build();
     }
 
-    private YangCompilationParam addToParam(YangCompilationParam param,
+    private void addToParam(DefaultYangCompilationParam.Builder builder,
                                             File file) {
         if (file.getName().endsWith(YANG_FILE_EXTENSION)) {
-            param.addYangFile(Paths.get(file.getAbsolutePath()));
+            builder.addYangFile(Paths.get(file.getAbsolutePath()));
         } else if (file.getName().endsWith(SER_FILE_EXTENSION)) {
-            param.addDependentSchema(Paths.get(file.getAbsolutePath()));
+            builder.addDependentSchema(Paths.get(file.getAbsolutePath()));
         }
-        return param;
     }
 
     private ModelRegistrationParam getModelRegParam() throws IOException {
         String metaPath = YANG_RESOURCES + SERIALIZED_FILE_NAME;
         List<YangNode> curNodes = getYangNodes(metaPath);
+        // FIXME: extract or derive the model id from the web request
+        String modelId = "unknown";
         if (curNodes != null && !curNodes.isEmpty()) {
-            YangModel model = processYangModel(metaPath, curNodes);
+            YangModel model = processYangModel(metaPath, curNodes, modelId, false);
             return DefaultModelRegistrationParam.builder()
                     .setYangModel(model).build();
         }
@@ -184,7 +186,7 @@
         List<YangNode> nodes = new LinkedList<>();
         File file = new File(path);
         if (file.getName().endsWith(SER_FILE_EXTENSION)) {
-            nodes.addAll(deSerializeDataModel(file.toString()));
+            nodes.addAll(YangCompilerManager.getYangNodes(deSerializeDataModel(file.toString())));
         }
         return nodes;
     }