Upgraded artifacts in generated projects to 0.8.0-Beryllium.
Change-Id: Ice191b5182b928d50d075627333166fb26bd0d73
Signed-off-by: David M. Karr <davidmichaelkarr@gmail.com>
/.settings/
bin/
libs/
+*~
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="com.cisco.yangide.yangparser"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry including="**/*.java" kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
<type>jar</type>
</dependency>
</dependencies>
</build>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
</dependencies>
</project>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
<type>jar</type>
</dependency>
</dependencies>
</build>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
</dependencies>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry including="**/*.java" kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-parser-impl-0.6.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-model-api-0.6.1.jar"/>
<classpathentry exported="true" kind="lib" path="libs/antlr4-runtime-4.0.jar"/>
<classpathentry exported="true" kind="lib" path="libs/mapdb-1.0.4.jar"/>
- <classpathentry exported="true" kind="lib" path="libs/yang-model-api-0.6.1.jar"/>
- <classpathentry exported="true" kind="lib" path="libs/yang-parser-impl-0.6.1.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="output" path="bin"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
</classpath>
org.eclipse.jface.databinding,
org.eclipse.core.databinding,
org.eclipse.core.databinding.property,
- org.eclipse.emf.databinding
+ org.eclipse.emf.databinding,
+ org.eclipse.wst.sse.ui;bundle-version="1.3.400",
+ com.cisco.yangide.yangparser;bundle-version="1.1.1",
+ com.google.guava;bundle-version="15.0.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2016 AT&T, Inc. 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 com.cisco.yangide.ext.model.editor;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Deviation;
+import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
+import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.ModuleImport;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
+import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.model.util.ModuleImportImpl;
+
+import com.cisco.yangide.core.YangCorePlugin;
+import com.cisco.yangide.core.dom.ASTNode;
+import com.cisco.yangide.core.dom.ContrainerSchemaNode;
+import com.cisco.yangide.core.dom.LeafListSchemaNode;
+import com.cisco.yangide.core.dom.LeafSchemaNode;
+import com.cisco.yangide.core.dom.ListSchemaNode;
+import com.cisco.yangide.core.dom.RevisionNode;
+
+public class ModuleApiProxy implements org.opendaylight.yangtools.yang.model.api.Module {
+ private com.cisco.yangide.core.dom.Module module;
+
+ public ModuleApiProxy(com.cisco.yangide.core.dom.Module module) {
+ this.module = module;
+ }
+
+ private static Date revisionStringToDate(String revision) {
+ Date result = null;
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
+ try {
+ result = sdf.parse(revision);
+ }
+ catch (ParseException ex) {
+ YangCorePlugin.log(ex);
+ }
+ return result;
+ }
+
+ @Override
+ public Collection<DataSchemaNode> getChildNodes() {
+ Collection<DataSchemaNode> childNodes = new ArrayList<>();
+ for (ASTNode node : module.getChildren()) {
+ //System.out.println("node.type[" + node.getClass().getName() + "]");
+ if (node instanceof RevisionNode) {
+ RevisionNode revisionNode = (RevisionNode) node;
+ //System.out.println("revisionNode[" + revisionNode + "]");
+ }
+ else if (node instanceof ContrainerSchemaNode) {
+ ContrainerSchemaNode containerNode = (ContrainerSchemaNode) node;
+ //System.out.println("containerNode[" + containerNode + "]");
+ // Create ContainerSchemaNode.
+ ContainerSchemaNode containerSchemaNode =
+ constructContainerSchemaNode(getQNameModule(), containerNode);
+ childNodes.add(containerSchemaNode);
+ }
+ else {
+ //System.out.println("Actual type is not handled: " + node.getClass().getName());
+ }
+ }
+ return childNodes;
+ }
+
+ @Override
+ public DataSchemaNode getDataChildByName(QName name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public DataSchemaNode getDataChildByName(String name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<GroupingDefinition> getGroupings() {
+ Set<GroupingDefinition> groupings = new HashSet<>();
+ // TODO populate this.
+ return groupings;
+ }
+
+ @Override
+ public Set<TypeDefinition<?>> getTypeDefinitions() {
+ Set<TypeDefinition<?>> typeDefinitions = new HashSet<>();
+ // TODO populate this.
+ return typeDefinitions;
+ }
+
+ @Override
+ public Set<UsesNode> getUses() {
+ Set<UsesNode> uses = new HashSet<>();
+ // TODO populate this.
+ return uses;
+ }
+
+ @Override
+ public String getModuleSourcePath() { return module.getSourcePath().getValue(); }
+
+ @Override
+ public String getName() { return module.getName(); }
+
+ @Override
+ public java.net.URI getNamespace() { return java.net.URI.create(module.getNamespace()); }
+
+ @Override
+ public QNameModule getQNameModule() {
+ return QNameModule.create(java.net.URI.create(module.getNamespace()),
+ revisionStringToDate(module.getRevision()));
+ }
+
+ @Override
+ public Date getRevision() {
+ return revisionStringToDate(module.getRevision());
+ }
+
+ @Override
+ public Set<AugmentationSchema> getAugmentations() {
+ Set<AugmentationSchema> augmentations = new HashSet<>();
+ // TODO populate this.
+ return augmentations;
+ }
+
+ @Override
+ public String getContact() { return module.getContact().getValue(); }
+
+ @Override
+ public String getDescription() { return module.getDescription(); }
+
+ @Override
+ public Set<Deviation> getDeviations() {
+ Set<Deviation> deviations = new HashSet<>();
+ // TODO populate this.
+ return deviations;
+ }
+
+ @Override
+ public List<ExtensionDefinition> getExtensionSchemaNodes() {
+ List<ExtensionDefinition> extensionSchemaNodes = new ArrayList<>();
+ // TODO Populate this.
+ return extensionSchemaNodes;
+ }
+
+ @Override
+ public Set<FeatureDefinition> getFeatures() {
+ Set<FeatureDefinition> features = new HashSet<>();
+ // TODO populate this.
+ return features;
+ }
+
+ @Override
+ public Set<IdentitySchemaNode> getIdentities() {
+ Set<IdentitySchemaNode> identities = new HashSet<>();
+ // TODO populate this.
+ return identities;
+ }
+
+ @Override
+ public Set<org.opendaylight.yangtools.yang.model.api.ModuleImport> getImports() {
+ Set<org.opendaylight.yangtools.yang.model.api.ModuleImport> imports = new HashSet<>();
+ for (Map.Entry<String, com.cisco.yangide.core.dom.ModuleImport> entry : module.getImports().entrySet()) {
+ imports.add(new ModuleImportImpl(entry.getValue().getName(),
+ revisionStringToDate(entry.getValue().getRevision()),
+ entry.getValue().getPrefix()));
+ }
+ return imports;
+ }
+
+ @Override
+ public Set<NotificationDefinition> getNotifications() {
+ Set<NotificationDefinition> notifications = new HashSet<>();
+ // TODO populate this.
+ return notifications;
+ }
+
+ @Override
+ public String getOrganization() { return module.getOrganization().getValue(); }
+
+ @Override
+ public String getPrefix() { return module.getPrefix().getValue(); }
+
+ @Override
+ public String getReference() { return module.getReference(); }
+
+ @Override
+ public Set<RpcDefinition> getRpcs() {
+ Set<RpcDefinition> rpcs = new HashSet<>();
+ // TODO populate this.
+ return rpcs;
+ }
+
+ @Override
+ public String getSource() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<org.opendaylight.yangtools.yang.model.api.Module> getSubmodules() {
+ Set<org.opendaylight.yangtools.yang.model.api.Module> subModules = new HashSet<>();
+ // TODO populate this.
+ return subModules;
+ }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public String getYangVersion() {
+ // The RFC says that "yang-version" is OPTIONAL, but the yangtools machinery expects a parsed module to contain
+ // the default value of "1" if it doesn't find it.
+ if (module.getYangVersion() != null)
+ return module.getYangVersion().getValue();
+ else
+ return "1";
+ }
+
+ private org.opendaylight.yangtools.yang.model.api.Status constructStatus(String status) {
+ if (status == null)
+ return null;
+ switch (status) {
+ case "CURRENT": return org.opendaylight.yangtools.yang.model.api.Status.CURRENT;
+ case "DEPRECATED": return org.opendaylight.yangtools.yang.model.api.Status.DEPRECATED;
+ case "OBSOLETE": return org.opendaylight.yangtools.yang.model.api.Status.OBSOLETE;
+ default:
+ return null;
+ }
+ }
+
+ private ContainerSchemaNode constructContainerSchemaNode(final QNameModule qnameModule,
+ final ContrainerSchemaNode containerNode) {
+ return new ContainerSchemaNode() {
+ @Override
+ public org.opendaylight.yangtools.yang.model.api.Status getStatus() {
+ return constructStatus(containerNode.getStatus());
+ }
+
+ @Override
+ public String getReference() { return containerNode.getReference(); }
+
+ @Override
+ public String getDescription() { return containerNode.getDescription(); }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public QName getQName() { return QName.create(qnameModule, containerNode.getName()); }
+
+ @Override
+ public SchemaPath getPath() {
+ SchemaPath schemaPath = SchemaPath.create(true, getQName());
+ // TODO fix this.
+ return schemaPath;
+ }
+
+ @Override
+ public boolean isConfiguration() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAugmenting() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAddedByUses() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public ConstraintDefinition getConstraints() {
+ return constructConstraints(qnameModule, containerNode);
+ }
+
+ @Override
+ public Set<AugmentationSchema> getAvailableAugmentations() {
+ Set<AugmentationSchema> availableAugmentations = new HashSet<>();
+ // TODO populate this.
+ return availableAugmentations;
+ }
+
+ @Override
+ public Set<UsesNode> getUses() {
+ Set<UsesNode> uses = new HashSet<>();
+ // TODO populate this.
+ return uses;
+ }
+
+ @Override
+ public Set<TypeDefinition<?>> getTypeDefinitions() {
+ Set<TypeDefinition<?>> typeDefinitions = new HashSet<>();
+ // TODO populate this.
+ return typeDefinitions;
+ }
+
+ @Override
+ public Set<GroupingDefinition> getGroupings() {
+ Set<GroupingDefinition> groupings = new HashSet<>();
+ // TODO populate this.
+ return groupings;
+ }
+
+ @Override
+ public DataSchemaNode getDataChildByName(String paramString) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public DataSchemaNode getDataChildByName(QName paramQName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Collection<DataSchemaNode> getChildNodes() {
+ Collection<DataSchemaNode> childNodes = new ArrayList<>();
+ for (ASTNode node : containerNode.getChildren()) {
+ if (node instanceof ContrainerSchemaNode) {
+ ContrainerSchemaNode containerNode = (ContrainerSchemaNode) node;
+ ContainerSchemaNode containerSchemaNode =
+ constructContainerSchemaNode(qnameModule, containerNode);
+ childNodes.add(containerSchemaNode);
+ }
+ else if (node instanceof LeafSchemaNode) {
+ LeafSchemaNode leafNode = (LeafSchemaNode) node;
+ org.opendaylight.yangtools.yang.model.api.LeafSchemaNode leafSchemaNode =
+ constructLeafSchemaNode(qnameModule, leafNode);
+ childNodes.add(leafSchemaNode);
+ }
+ else if (node instanceof LeafListSchemaNode) {
+ LeafListSchemaNode leafListNode = (LeafListSchemaNode) node;
+ org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode leafListSchemaNode =
+ constructLeafListSchemaNode(qnameModule, leafListNode);
+ childNodes.add(leafListSchemaNode);
+ }
+ else if (node instanceof ListSchemaNode) {
+ ListSchemaNode listNode = (ListSchemaNode) node;
+ org.opendaylight.yangtools.yang.model.api.ListSchemaNode listSchemaNode =
+ constructListSchemaNode(qnameModule, listNode);
+ childNodes.add(listSchemaNode);
+ }
+ else {
+ //System.out.println("Unexpected node type of \"" + node.getClass().getName() + "\".");
+ }
+
+ }
+ return childNodes;
+ }
+
+ @Override
+ public boolean isPresenceContainer() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+ };
+ }
+
+ private ConstraintDefinition constructConstraints(QNameModule qnameModule, ContrainerSchemaNode containerNode) {
+ return new ConstraintDefinition() {
+ @Override
+ public boolean isMandatory() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RevisionAwareXPath getWhenCondition() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<MustDefinition> getMustConstraints() {
+ Set<MustDefinition> mustConstraints = new HashSet<>();
+ // TODO populate this.
+ return mustConstraints;
+ }
+
+ @Override
+ public Integer getMinElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Integer getMaxElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ private ConstraintDefinition constructConstraints(QNameModule qnameModule, LeafSchemaNode leafNode) {
+ return new ConstraintDefinition() {
+ @Override
+ public boolean isMandatory() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RevisionAwareXPath getWhenCondition() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<MustDefinition> getMustConstraints() {
+ Set<MustDefinition> mustConstraints = new HashSet<>();
+ return mustConstraints;
+ }
+
+ @Override
+ public Integer getMinElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Integer getMaxElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ private ConstraintDefinition constructConstraints(QNameModule qnameModule, LeafListSchemaNode leafListNode) {
+ return new ConstraintDefinition() {
+ @Override
+ public boolean isMandatory() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RevisionAwareXPath getWhenCondition() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<MustDefinition> getMustConstraints() {
+ Set<MustDefinition> mustConstraints = new HashSet<>();
+ return mustConstraints;
+ }
+
+ @Override
+ public Integer getMinElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Integer getMaxElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ private ConstraintDefinition constructConstraints(QNameModule qnameModule, ListSchemaNode listNode) {
+ return new ConstraintDefinition() {
+ @Override
+ public boolean isMandatory() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public RevisionAwareXPath getWhenCondition() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<MustDefinition> getMustConstraints() {
+ Set<MustDefinition> mustConstraints = new HashSet<>();
+ return mustConstraints;
+ }
+
+ @Override
+ public Integer getMinElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Integer getMaxElements() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ private org.opendaylight.yangtools.yang.model.api.LeafSchemaNode constructLeafSchemaNode(final QNameModule qnameModule, final LeafSchemaNode leafNode) {
+ return new org.opendaylight.yangtools.yang.model.api.LeafSchemaNode() {
+ @Override
+ public org.opendaylight.yangtools.yang.model.api.Status getStatus() {
+ return constructStatus(leafNode.getStatus());
+ }
+
+ @Override
+ public String getReference() { return leafNode.getReference(); }
+
+ @Override
+ public String getDescription() { return leafNode.getDescription(); }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public QName getQName() { return QName.create(qnameModule, leafNode.getName()); }
+
+ @Override
+ public SchemaPath getPath() {
+ SchemaPath schemaPath = SchemaPath.create(true, getQName());
+ // TODO fix this.
+ return schemaPath;
+ }
+
+ @Override
+ public boolean isConfiguration() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAugmenting() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAddedByUses() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public ConstraintDefinition getConstraints() { return constructConstraints(qnameModule, leafNode); }
+
+ @Override
+ public String getUnits() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public TypeDefinition<?> getType() {
+ for (ASTNode node : leafNode.getChildren()) {
+ if (node instanceof com.cisco.yangide.core.dom.TypeReference) {
+ com.cisco.yangide.core.dom.TypeReference typeReferenceNode = (com.cisco.yangide.core.dom.TypeReference) node;
+ return constructTypeDefinitionSchemaNode(qnameModule, typeReferenceNode);
+ }
+ }
+ // TODO fix this.
+ return null;
+ }
+
+ @Override
+ public String getDefault() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ private org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode constructLeafListSchemaNode(final QNameModule qnameModule, final LeafListSchemaNode leafListNode) {
+ return new org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode() {
+ @Override
+ public org.opendaylight.yangtools.yang.model.api.Status getStatus() {
+ return constructStatus(leafListNode.getStatus());
+ }
+
+ @Override
+ public String getReference() { return leafListNode.getReference(); }
+
+ @Override
+ public String getDescription() { return leafListNode.getDescription(); }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public QName getQName() { return QName.create(qnameModule, leafListNode.getName()); }
+
+ @Override
+ public SchemaPath getPath() {
+ SchemaPath schemaPath = SchemaPath.create(true, getQName());
+ // TODO fix this.
+ return schemaPath;
+ }
+
+ @Override
+ public boolean isConfiguration() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAugmenting() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAddedByUses() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public ConstraintDefinition getConstraints() { return constructConstraints(qnameModule, leafListNode); }
+
+ @Override
+ public TypeDefinition<?> getType() {
+ for (ASTNode node : leafListNode.getChildren()) {
+ if (node instanceof com.cisco.yangide.core.dom.TypeReference) {
+ com.cisco.yangide.core.dom.TypeReference typeReferenceNode = (com.cisco.yangide.core.dom.TypeReference) node;
+ return constructTypeDefinitionSchemaNode(qnameModule, typeReferenceNode);
+ }
+ }
+ // TODO fix this.
+ return null;
+ }
+
+ @Override
+ public boolean isUserOrdered() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+ };
+ }
+
+ private org.opendaylight.yangtools.yang.model.api.ListSchemaNode constructListSchemaNode(final QNameModule qnameModule,
+ final ListSchemaNode listNode) {
+ return new org.opendaylight.yangtools.yang.model.api.ListSchemaNode() {
+ @Override
+ public org.opendaylight.yangtools.yang.model.api.Status getStatus() {
+ return constructStatus(listNode.getStatus());
+ }
+
+ @Override
+ public String getReference() { return listNode.getReference(); }
+
+ @Override
+ public String getDescription() { return listNode.getDescription(); }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public QName getQName() { return QName.create(qnameModule, listNode.getName()); }
+
+ @Override
+ public SchemaPath getPath() {
+ SchemaPath schemaPath = SchemaPath.create(true, getQName());
+ // TODO fix this.
+ return schemaPath;
+ }
+
+ @Override
+ public boolean isConfiguration() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAugmenting() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isAddedByUses() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public ConstraintDefinition getConstraints() { return constructConstraints(qnameModule, listNode); }
+
+ @Override
+ public boolean isUserOrdered() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public Set<TypeDefinition<?>> getTypeDefinitions() {
+ Set<TypeDefinition<?>> typeDefinitions = new HashSet<>();
+ // TODO populate this.
+ return typeDefinitions;
+ }
+
+ @Override
+ public Collection<DataSchemaNode> getChildNodes() {
+ Collection<DataSchemaNode> childNodes = new ArrayList<>();
+ for (ASTNode node : listNode.getChildren()) {
+ //System.out.println("node.type[" + node.getClass().getName() + "]");
+ if (node instanceof ContrainerSchemaNode) {
+ ContrainerSchemaNode containerNode = (ContrainerSchemaNode) node;
+ ContainerSchemaNode containerSchemaNode =
+ constructContainerSchemaNode(getQNameModule(), containerNode);
+ childNodes.add(containerSchemaNode);
+ }
+ else if (node instanceof LeafSchemaNode) {
+ LeafSchemaNode leafNode = (LeafSchemaNode) node;
+ org.opendaylight.yangtools.yang.model.api.LeafSchemaNode leafSchemaNode =
+ constructLeafSchemaNode(getQNameModule(), leafNode);
+ childNodes.add(leafSchemaNode);
+ }
+ else {
+ //System.out.printlns("Actual type is not handled: " + node.getClass().getName());
+ }
+ }
+ return childNodes;
+ }
+
+ @Override
+ public Set<GroupingDefinition> getGroupings() {
+ Set<GroupingDefinition> groupings = new HashSet<>();
+ // TODO populate this.
+ return groupings;
+ }
+
+ @Override
+ public DataSchemaNode getDataChildByName(QName paramQName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public DataSchemaNode getDataChildByName(String paramString) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<UsesNode> getUses() {
+ Set<UsesNode> uses = new HashSet<>();
+ // TODO populate this.
+ return uses;
+ }
+
+ @Override
+ public Set<AugmentationSchema> getAvailableAugmentations() {
+ Set<AugmentationSchema> availableAugmentations = new HashSet<>();
+ // TODO populate this.
+ return availableAugmentations;
+ }
+
+ @Override
+ public List<QName> getKeyDefinition() {
+ List<QName> keyDefinitionList = new ArrayList<>();
+ keyDefinitionList.add(QName.create(listNode.getKey().getName()));
+ return keyDefinitionList;
+ }
+ };
+ }
+
+ public TypeDefinition<?> constructTypeDefinitionSchemaNode(final QNameModule qnameModule, final com.cisco.yangide.core.dom.TypeDefinition typeDefinitionNode) {
+ return new TypeDefinition() {
+ @Override
+ public QName getQName() { return QName.create(qnameModule, typeDefinitionNode.getName()); }
+
+ @Override
+ public SchemaPath getPath() {
+ SchemaPath schemaPath = SchemaPath.create(true, getQName());
+ // TODO fix this.
+ return schemaPath;
+ }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public String getDescription() { return typeDefinitionNode.getDescription(); }
+
+ @Override
+ public String getReference() { return typeDefinitionNode.getReference(); }
+
+ @Override
+ public org.opendaylight.yangtools.yang.model.api.Status getStatus() { return constructStatus(typeDefinitionNode.getStatus()); }
+
+ @Override
+ public TypeDefinition getBaseType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getUnits() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Object getDefaultValue() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+ public TypeDefinition<?> constructTypeDefinitionSchemaNode(final QNameModule qnameModule, final com.cisco.yangide.core.dom.TypeReference typeReferenceNode) {
+ return new TypeDefinition() {
+ @Override
+ public QName getQName() { return QName.create(qnameModule, typeReferenceNode.getName()); }
+
+ @Override
+ public SchemaPath getPath() {
+ SchemaPath schemaPath = SchemaPath.create(true, getQName());
+ // TODO fix this.
+ return schemaPath;
+ }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ List<UnknownSchemaNode> unknownSchemaNodes = new ArrayList<>();
+ // TODO populate this.
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public String getDescription() { return typeReferenceNode.getDescription(); }
+
+ @Override
+ public String getReference() { return typeReferenceNode.getReference(); }
+
+ @Override
+ public org.opendaylight.yangtools.yang.model.api.Status getStatus() { return constructStatus(typeReferenceNode.getStatus()); }
+
+ @Override
+ public TypeDefinition getBaseType() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getUnits() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Object getDefaultValue() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+
+}
\ No newline at end of file
*******************************************************************************/
package com.cisco.yangide.ext.model.editor;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.MultiPageEditorPart;
import org.eclipse.ui.part.MultiPageEditorSite;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
import com.cisco.yangide.core.YangCorePlugin;
import com.cisco.yangide.editor.YangEditorPlugin;
import com.cisco.yangide.ext.model.editor.editors.YangDiagramEditorInput;
import com.cisco.yangide.ext.model.editor.sync.ModelSynchronizer;
+import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
+
/**
* @author Konstantin Zaitsev
* date: Aug 7, 2014
private YangSourceViewer yangSourceViewer;
private YangDiagramEditor yangDiagramEditor;
private ModelSynchronizer modelSynchronizer;
-
+ private StructuredTextEditor yinSourcePage;
+ private YinViewInput yinViewInput;
+ private boolean disposed;
+
+ private static final int INDEX_SOURCE_PAGE = 0;
+ private static final int INDEX_DIAGRAM_PAGE = 1;
+ private static final int INDEX_YIN_PAGE = 2;
+ private static final String MSG_LOADING_YIN_VIEW = "Loading Yin View ...";
+
@Override
protected void createPages() {
yangSourceEditor = new YangEditor();
yangDiagramEditor = new YangDiagramEditor(yangSourceEditor);
modelSynchronizer = new ModelSynchronizer(yangSourceEditor, yangDiagramEditor);
+ yinSourcePage = new StructuredTextEditor();
initSourcePage();
initDiagramPage();
+ initYinPage();
modelSynchronizer.init();
modelSynchronizer.enableNotification();
}
Module diagModule = modelSynchronizer.getDiagramModule();
YangDiagramEditorInput input = new YangDiagramEditorInput(URI.createURI("tmp:/local"), getFile(),
"com.cisco.yangide.ext.model.editor.editorDiagramTypeProvider", diagModule);
- addPage(1, yangDiagramEditor, input);
- setPageText(1, "Diagram");
+ addPage(INDEX_DIAGRAM_PAGE, yangDiagramEditor, input);
+ setPageText(INDEX_DIAGRAM_PAGE, "Diagram");
yangDiagramEditor.setSourceModelManager(modelSynchronizer.getSourceModelManager());
} catch (PartInitException e) {
private void initSourcePage() {
try {
- addPage(0, yangSourceEditor, getEditorInput());
- setPageText(0, "Source");
+ addPage(INDEX_SOURCE_PAGE, yangSourceEditor, getEditorInput());
+ setPageText(INDEX_SOURCE_PAGE, "Source");
yangSourceViewer = (YangSourceViewer) yangSourceEditor.getViewer();
} catch (PartInitException e) {
YangEditorPlugin.log(e);
setPartName(yangSourceEditor.getPartName());
}
+ private void initYinPage() {
+ yinSourcePage.setEditorPart(this);
+ try {
+ // Second parameter is an IEditorPart. Third parameter is an IEditorInput.
+ addPage(INDEX_YIN_PAGE, yinSourcePage, getYinViewInput());
+ setPageText(INDEX_YIN_PAGE, "Yin");
+ } catch (PartInitException e) {
+ YangEditorPlugin.log(e);
+ }
+ }
+
+ private IEditorInput getYinViewInput() {
+ if (yinViewInput == null) {
+ String content = MSG_LOADING_YIN_VIEW;
+ String name = getPartName() + "yin";
+ try {
+ yinViewInput = new YinViewInput(name, name, content.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ yinViewInput = new YinViewInput(name, name, content.getBytes());
+ }
+ }
+ return yinViewInput;
+ }
+
@Override
protected void pageChange(int newPageIndex) {
- if (newPageIndex == 1) {
+ if (newPageIndex != INDEX_DIAGRAM_PAGE) {
+ yangDiagramEditor.stopSourceSelectionUpdater();
+ }
+ else if (newPageIndex != INDEX_SOURCE_PAGE) {
+ yangSourceViewer.disableProjection();
+ if (yangSourceViewer.getReconciler() != null) {
+ yangSourceViewer.getReconciler().uninstall();
+ }
+ yangSourceViewer.disableTextListeners();
+ }
+
+ if (newPageIndex == INDEX_DIAGRAM_PAGE) {
modelSynchronizer.syncWithSource();
if (modelSynchronizer.isSourceInvalid()) {
MessageDialog.openWarning(getSite().getShell(), "Yang source is invalid",
"Yang source has syntax error and diagram view cannot be synchronized correctly.\n"
+ "Please correct syntax error first.");
}
- yangSourceViewer.disableProjection();
- if (yangSourceViewer.getReconciler() != null) {
- yangSourceViewer.getReconciler().uninstall();
- }
- yangSourceViewer.disableTextListeners();
+// yangSourceViewer.disableProjection();
+// if (yangSourceViewer.getReconciler() != null) {
+// yangSourceViewer.getReconciler().uninstall();
+// }
+// yangSourceViewer.disableTextListeners();
try {
getEditorSite().getPage().showView("org.eclipse.ui.views.PropertySheet");
} catch (PartInitException e) {
YangEditorPlugin.log(e);
}
yangDiagramEditor.startSourceSelectionUpdater();
- } else {
- yangDiagramEditor.stopSourceSelectionUpdater();
+ }
+ else if (newPageIndex == INDEX_SOURCE_PAGE) {
+// yangDiagramEditor.stopSourceSelectionUpdater();
IRegion highlightRange = yangSourceEditor.getHighlightRange();
yangSourceViewer.enableTextListeners();
yangSourceViewer.updateDocument();
}
setSourceSelection(highlightRange);
}
+ else if (newPageIndex == INDEX_YIN_PAGE) {
+ storeContentInYinView(MSG_LOADING_YIN_VIEW);
+ loadYinView();
+ }
super.pageChange(newPageIndex);
}
+ public void loadYinView() {
+ if (disposed)
+ return;
+
+ LoadYinViewJob job = new LoadYinViewJob(this, yangSourceEditor, "loadYinView");
+ job.schedule();
+ }
+
+ public void storeContentInYinView(String content) {
+ IDocument doc = yinSourcePage.getDocumentProvider().getDocument(getYinViewInput());
+ doc.set(content);
+ }
+
private void setSourceSelection(IRegion highlightRange) {
if (highlightRange != null) {
Point selectedRange = yangSourceViewer.getSelectedRange();
@Override
public void dispose() {
+ disposed = true;
try {
modelSynchronizer.dispose();
} catch (Exception e) {
public void selectAndReveal(int offset, int length) {
yangSourceEditor.selectAndReveal(offset, length);
}
+
+ public static class YinViewInput implements IStorageEditorInput {
+ private final String name;
+ private final String tooltip;
+ private final byte[] content;
+
+ public YinViewInput(String name, String tooltip, byte[] content) {
+ this.name = name;
+ this.tooltip = tooltip;
+ this.content = content;
+ }
+
+ @Override
+ public boolean exists() { return true; }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() { return null; }
+
+ @Override
+ public String getName() { return this.name; }
+
+ @Override
+ public IPersistableElement getPersistable() { return null; }
+
+ @Override
+ public String getToolTipText() { return this.tooltip; }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) { return null; }
+
+ @Override
+ public IStorage getStorage() throws CoreException { return new YinStorage(name, content); }
+ }
+
+ public static class YinStorage implements IStorage {
+ private String name;
+ private byte[] content;
+
+ public YinStorage(String name, byte[] content) {
+ this.name = name;
+ this.content = content;
+ }
+
+ @Override
+ public <T> T getAdapter(Class<T> adapter) { return null; }
+
+ @Override
+ public InputStream getContents() throws CoreException { return new ByteArrayInputStream(this.content); }
+
+ @Override
+ public IPath getFullPath() { return null; }
+
+ @Override
+ public String getName() { return this.name; }
+
+ @Override
+ public boolean isReadOnly() { return true; }
+ }
+
+ public static class LoadYinViewJob extends Job {
+ private YinBuilder yinBuilder;
+ private YangMultiPageEditorPart editor;
+ public LoadYinViewJob(YangMultiPageEditorPart editor, YangEditor yangSourceEditor, String name) {
+ super(name);
+ this.editor = editor;
+ this.yinBuilder = new YinBuilder(yangSourceEditor);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ // Now we start the real work of generating the Yin view.
+ // Get the module from parsing the content of the source view. If that fails, present
+ // simple content that says it failed.
+ // There's a YangIDE "Module" class and a Yangtools "Module" class. Convert from the former
+ // to the latter to use it.
+ // Construct a SharedSchemaRepository.
+ // This will use YinExportUtils to write the Yin file to an OutputStream.
+ // Specifically, YinExportUtils.writeModuleToOutputStream(SchemaContext, Module, OutputStream)
+
+ try {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ yinBuilder.build(baos);
+ editor.storeContentInYinView(prettyPrintXML(baos.toString()));
+ }
+ catch (XMLStreamException | SchemaSourceException | IOException | YangSyntaxErrorException ex) {
+ YangCorePlugin.log(ex);
+ return new Status(Status.ERROR, YangCorePlugin.PLUGIN_ID, "Failed to generate Yin file");
+ }
+
+// YangTextSchemaContextResolver resolver = YangTextSchemaContextResolver.create("yangide");
+//
+// try {
+// com.cisco.yangide.core.dom.Module module =
+// YangParserUtil.parseYangFile(this.getDocument().get().toCharArray());
+// List<SourceIdentifier> sourceIdentifiers = collectSourceIds(module);
+// if (sourceIdentifiers.size() == 1) {
+// resolver.registerSource(YangTextSchemaSource.delegateForByteSource(sourceIdentifiers.get(0),
+// ByteSource.wrap(data.yangSourceEditor.getDocument().get().getBytes())));
+// }
+// else {
+// for (SourceIdentifier id : sourceIdentifiers) {
+// System.out.println("id[" + id + "]");
+// // delegate will be a ByteArrayByteSource.
+// // YangTextSchemaSource source = YangTextSchemaSource.delegateForByteSource(id, delegate);
+// // resolver.registerSource(source);
+// }
+// }
+// ByteArrayOutputStream baos = new ByteArrayOutputStream();
+// YinExportUtils.writeModuleToOutputStream(resolver.getSchemaContext().get(), new ModuleApiProxy(module), baos);
+// data.editor.storeContentInYinView(prettyPrintXML(baos.toString()));
+// }
+// catch (XMLStreamException | SchemaSourceException | IOException | YangSyntaxErrorException ex) {
+// YangCorePlugin.log(ex);
+// return new Status(Status.ERROR, YangCorePlugin.PLUGIN_ID, "Failed to generate Yin file");
+// }
+
+ return Status.OK_STATUS;
+ }
+
+ private String prettyPrintXML(String xml) {
+ String result = null;
+ try {
+ TransformerFactory factory = TransformerFactory.newInstance();
+ Transformer transformer = factory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
+ StringWriter formattedStringWriter = new StringWriter();
+ transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(formattedStringWriter));
+ result = formattedStringWriter.getBuffer().toString();;
+ } catch (TransformerException e) {
+ YangCorePlugin.log(e);
+ }
+ return result;
+ }
+
+// private List<SourceIdentifier> collectSourceIds(com.cisco.yangide.core.dom.Module module) {
+// List<SourceIdentifier> sourceIdList = new ArrayList<>();
+// sourceIdList.add(new SourceIdentifier(module.getName(), module.getRevision()));
+// for (ModuleImport moduleImport : module.getImports().values()) {
+// sourceIdList.add(new SourceIdentifier(moduleImport.getName(), moduleImport.getRevision()));
+// }
+// for (SubModuleInclude subModuleInclude : module.getIncludes().values()) {
+// sourceIdList.add(new SourceIdentifier(subModuleInclude.getName(), subModuleInclude.getRevision()));
+// }
+// return sourceIdList;
+// }
+ }
}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2016 AT&T, Inc. 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 com.cisco.yangide.ext.model.editor;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.opendaylight.yangtools.yang.model.export.YinExportUtils;
+import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.parser.repo.YangTextSchemaContextResolver;
+
+import com.cisco.yangide.core.dom.ModuleImport;
+import com.cisco.yangide.core.dom.SubModuleInclude;
+import com.cisco.yangide.core.parser.YangParserUtil;
+import com.cisco.yangide.editor.editors.YangEditor;
+import com.google.common.io.ByteSource;
+
+public class YinBuilder {
+ private YangEditor yangSourceEditor;
+
+ public YinBuilder(YangEditor yangSourceEditor) {
+ this.yangSourceEditor = yangSourceEditor;
+ }
+
+ public void build(OutputStream outputStream) throws XMLStreamException, SchemaSourceException, IOException, YangSyntaxErrorException {
+ YangTextSchemaContextResolver resolver = YangTextSchemaContextResolver.create("yangide");
+
+ com.cisco.yangide.core.dom.Module module =
+ YangParserUtil.parseYangFile(yangSourceEditor.getDocument().get().toCharArray());
+ List<SourceIdentifier> sourceIdentifiers = collectSourceIds(module);
+ if (sourceIdentifiers.size() == 1) {
+ resolver.registerSource(YangTextSchemaSource.delegateForByteSource(sourceIdentifiers.get(0),
+ ByteSource.wrap(yangSourceEditor.getDocument().get().getBytes())));
+ }
+ else {
+ for (SourceIdentifier id : sourceIdentifiers) {
+ //System.out.println("id[" + id + "]");
+ // delegate will be a ByteArrayByteSource.
+ // YangTextSchemaSource source = YangTextSchemaSource.delegateForByteSource(id, delegate);
+ // resolver.registerSource(source);
+ }
+ }
+ YinExportUtils.writeModuleToOutputStream(resolver.getSchemaContext().get(), new ModuleApiProxy(module), outputStream);
+ }
+
+ private List<SourceIdentifier> collectSourceIds(com.cisco.yangide.core.dom.Module module) {
+ List<SourceIdentifier> sourceIdList = new ArrayList<>();
+ sourceIdList.add(new SourceIdentifier(module.getName(), module.getRevision()));
+ for (ModuleImport moduleImport : module.getImports().values()) {
+ sourceIdList.add(new SourceIdentifier(moduleImport.getName(), moduleImport.getRevision()));
+ }
+ for (SubModuleInclude subModuleInclude : module.getIncludes().values()) {
+ sourceIdList.add(new SourceIdentifier(subModuleInclude.getName(), subModuleInclude.getRevision()));
+ }
+ return sourceIdList;
+ }
+}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="output" path="bin"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry including="**/*.java" kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
<type>jar</type>
</dependency>
</dependencies>
</build>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
</dependencies>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry including="**/*.java" kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src/"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
model.getProperties().put("maven.compiler.target", "1.8");
Dependency dependency2 = new Dependency();
- dependency2.setGroupId("org.opendaylight.yangtools");
+ dependency2.setGroupId("org.opendaylight.mdsal");
dependency2.setArtifactId("yang-binding");
dependency2.setVersion(yangVersion);
dependency2.setType("jar");
// add default values
// TODO KOS: load version from repository
- yangVersion.add("0.6.2-Helium");
- yangVersion.add("0.6.1");
- yangVersion.add("0.6.0");
- yangVersion.add("0.5.8");
+ yangVersion.add("0.8.0-Beryllium");
yangVersion.select(0);
// default generator
CodeGeneratorConfig config = new CodeGeneratorConfig();
- config.setGroupId("org.opendaylight.yangtools");
+ config.setGroupId("org.opendaylight.mdsal");
config.setArtifactId("maven-sal-api-gen-plugin");
config.setVersion(yangVersion.getText());
config.setGenClassName("org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl");
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src/"/>
+ <classpathentry exported="true" kind="lib" path="libs/concepts-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/object-cache-api-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/util-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-model-api-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-model-export-0.8.0-Beryllium.jar" sourcepath="/home/opnfv/git/opendaylight/yangtools/yang/yang-model-export/src/main/java"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-model-util-0.8.0-Beryllium.jar" sourcepath="/home/opnfv/git/opendaylight/yangtools/yang/yang-model-util/src/main/java"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-parser-impl-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-parser-api-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/yang-common-0.8.0-Beryllium.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/guava-18.0.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/antlr4-runtime-4.5.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="libs/jsr305-3.0.0.jar"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
--- /dev/null
+org.eclipse.osgi/resolver/debug=true
+org.eclipse.osgi/resolver/wiring=true
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>com.cisco.yangide.yangparser</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
--- /dev/null
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
--- /dev/null
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: com.cisco.yangide.yangparser
+Bundle-SymbolicName: com.cisco.yangide.yangparser;singleton:=true
+Bundle-Version: 1.1.1.qualifier
+Bundle-Activator: com.cisco.yangide.yangparser.YangParserPlugin
+Bundle-Vendor: Cisco Systems, Inc.
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.jdt.core;visibility:=reexport,
+ org.eclipse.text,
+ org.eclipse.core.resources,
+ org.eclipse.core.filesystem,
+ com.google.guava;bundle-version="15.0.0",
+ org.slf4j.api;bundle-version="1.7.2"
+Bundle-ClassPath: .,
+ libs/concepts-0.8.0-Beryllium.jar,
+ libs/object-cache-api-0.8.0-Beryllium.jar,
+ libs/util-0.8.0-Beryllium.jar,
+ libs/yang-model-api-0.8.0-Beryllium.jar,
+ libs/yang-model-export-0.8.0-Beryllium.jar,
+ libs/yang-model-util-0.8.0-Beryllium.jar,
+ libs/yang-parser-impl-0.8.0-Beryllium.jar,
+ libs/yang-parser-api-0.8.0-Beryllium.jar,
+ libs/yang-common-0.8.0-Beryllium.jar,
+ libs/guava-18.0.jar,
+ libs/antlr4-runtime-4.5.1.jar,
+ libs/jsr305-3.0.0.jar
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.antlr.v4.runtime,
+ org.opendaylight.yangtools.concepts,
+ org.opendaylight.yangtools.yang.common,
+ org.opendaylight.yangtools.yang.model.api,
+ org.opendaylight.yangtools.yang.model.api.meta,
+ org.opendaylight.yangtools.yang.model.api.stmt,
+ org.opendaylight.yangtools.yang.model.api.type,
+ org.opendaylight.yangtools.yang.model.export,
+ org.opendaylight.yangtools.yang.model.parser.api,
+ org.opendaylight.yangtools.yang.model.repo.api,
+ org.opendaylight.yangtools.yang.model.repo.spi,
+ org.opendaylight.yangtools.yang.model.repo.util,
+ org.opendaylight.yangtools.yang.model.util,
+ org.opendaylight.yangtools.yang.parser.repo
--- /dev/null
+###############################################################################
+# Copyright (c) 2014, 2015 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
+#
+###############################################################################
+source.. = src/
+output.. = target/classes
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ libs/concepts-0.8.0-Beryllium.jar,\
+ libs/object-cache-api-0.8.0-Beryllium.jar,\
+ libs/util-0.8.0-Beryllium.jar,\
+ libs/yang-model-api-0.8.0-Beryllium.jar,\
+ libs/yang-model-export-0.8.0-Beryllium.jar,\
+ libs/yang-model-util-0.8.0-Beryllium.jar,\
+ libs/yang-parser-impl-0.8.0-Beryllium.jar,\
+ libs/yang-parser-api-0.8.0-Beryllium.jar,\
+ libs/yang-common-0.8.0-Beryllium.jar,\
+ libs/guava-18.0.jar,\
+ libs/antlr4-runtime-4.5.1.jar,\
+ libs/jsr305-3.0.0.jar
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+ Copyright (c) 2014, 2015 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
+
+ -->
+<!-- -->
+<!-- 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 -->
+<!-- ============================================================================== -->
+<plugin>
+ <extension point="org.eclipse.core.contenttype.contentTypes">
+ <content-type
+ id="com.cisco.yangide.core.yangFile"
+ name="YANG File"
+ base-type="org.eclipse.core.runtime.text"
+ priority="high"/>
+ <file-association content-type="yangFile" file-extensions="yang"/>
+ </extension>
+
+ <extension point="org.eclipse.core.resources.markers"
+ id="problem"
+ name="YANG Problem">
+ <persistent value="true"/>
+ <super type="org.eclipse.core.resources.problemmarker"/>
+ <super type="org.eclipse.core.resources.textmarker"/>
+ </extension>
+
+ <extension point="org.eclipse.core.resources.markers"
+ id="syntaxproblem"
+ name="YANG Syntax Problem">
+ <super type="org.eclipse.core.resources.textmarker"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.editors.markerAnnotationSpecification">
+
+ <specification
+ annotationType="com.cisco.yangide.core.error"
+ symbolicIcon="error"
+ includeOnPreferencePage="true"
+ label="YANG Problem"
+ colorPreferenceKey="com.cisco.yangide.core.error.color"
+ colorPreferenceValue="192,255,192"
+ overviewRulerPreferenceKey="com.cisco.yangide.core.error.overview"
+ textPreferenceKey="com.cisco.yangide.core.error.text"
+ >
+ </specification>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.editors.annotationTypes">
+ <type
+ name="com.cisco.yangide.core.error"
+ super="org.eclipse.ui.workbench.texteditor.error"
+ markerType="com.cisco.yangide.core.problem"
+ markerSeverity="2">
+ </type>
+ <type
+ name="com.cisco.yangide.core.syntax"
+ super="org.eclipse.ui.workbench.texteditor.error"
+ markerType="com.cisco.yangide.core.syntaxproblem"
+ markerSeverity="2">
+ </type>
+ </extension>
+</plugin>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014, 2015 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
+
+ -->
+<!-- -->
+<!-- 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 -->
+<!-- ============================================================================== -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.opendaylight.yangide</groupId>
+ <artifactId>com.cisco.yangide.parent</artifactId>
+ <version>1.1.1-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+
+ <artifactId>com.cisco.yangide.yangparser</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <version>1.1.1-SNAPSHOT</version>
+ <properties>
+ <odl-version>0.8.0-Beryllium</odl-version>
+ </properties>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-clean-plugin</artifactId>
+ <configuration>
+ <filesets>
+ <fileset>
+ <directory>libs</directory>
+ </fileset>
+ </filesets>
+ </configuration>
+ </plugin>
+ <plugin>
+ <!-- Tycho cannot use Maven dependencies directly, and we can't store the jars directly
+ in the project (as they were originally), so we use this goal to copy the required
+ dependencies into the location expected in the manifest.
+ -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>./libs</outputDirectory>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-model-api</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>yang-model-api-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-model-util</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>yang-model-util-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-parser-impl</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>yang-parser-impl-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-parser-api</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>yang-parser-api-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>concepts</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>concepts-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>util</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>util-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>object-cache-api</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>object-cache-api-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-model-export</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>yang-model-export-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-common</artifactId>
+ <version>${odl-version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>yang-common-${odl-version}.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.antlr</groupId>
+ <artifactId>antlr4-runtime</artifactId>
+ <version>4.5.1</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>antlr4-runtime-4.5.1.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>18.0</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>guava-18.0.jar</destFileName>
+ </artifactItem>
+ <artifactItem>
+ <!-- The only reason to provide this artifact is so that calling methods in the
+ Eclipse debugger "Display" view can work. Otherwise, it reports errors about not finding
+ Nullable and other related classes.
+ -->
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>jsr305</artifactId>
+ <version>3.0.0</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <destFileName>jsr305-3.0.0.jar</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 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 com.cisco.yangide.yangparser;
+
+import java.io.File;
+
+import org.eclipse.core.filesystem.URIUtil;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class YangParserPlugin extends Plugin {
+
+ /** The plug-in ID */
+ public static final String PLUGIN_ID = "com.cisco.yangide.yangparser"; //$NON-NLS-1$
+
+ /** The shared instance */
+ private static YangParserPlugin plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static YangParserPlugin getDefault() {
+ return plugin;
+ }
+}
<modules>
<!-- plugins -->
+ <module>plugins/com.cisco.yangide.yangparser</module>
<module>plugins/com.cisco.yangide.core</module>
<module>plugins/com.cisco.yangide.ui</module>
<module>plugins/com.cisco.yangide.editor</module>
<?pde version="3.8"?><target includeMode="feature" name="YANG IDE Target Platform" sequenceNumber="26">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="com.google.guava" version="15.0.0.v201403281430"/>
-<unit id="com.google.guava.source" version="15.0.0.v201403281430"/>
<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="src" output="target/classes" path="src/main/yang">
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes>
- <attribute name="ignore_optional_problems" value="true"/>
- <attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="src" output="target/classes" path="target/generated-sources/sal">
+ <classpathentry kind="src" output="target/classes" path="src/main/yang">
<attributes>
- <attribute name="ignore_optional_problems" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="ignore_optional_problems" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+ <classpathentry kind="src" output="target/classes" path="target/generated-sources/sal">
<attributes>
+ <attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="ignore_optional_problems" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</properties>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
<dependency>
<groupId>yang-test</groupId>
</executions>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
-</project>
\ No newline at end of file
+</project>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
- <classpathentry kind="src" output="target/classes" path="src/main/yang">
- <attributes>
- <attribute name="ignore_optional_problems" value="true"/>
- <attribute name="optional" value="true"/>
- <attribute name="maven.pomderived" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="src" output="target/classes" path="target/generated-sources/sal">
- <attributes>
- <attribute name="ignore_optional_problems" value="true"/>
- <attribute name="optional" value="true"/>
- <attribute name="maven.pomderived" value="true"/>
- </attributes>
- </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
</properties>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
</dependencies>
<repositories>
</executions>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yangtools</groupId>
+ <groupId>org.opendaylight.mdsal</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.6.2-Helium</version>
+ <version>0.8.0-Beryllium</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
-</project>
\ No newline at end of file
+</project>
+ " </properties>\n"
+ " <dependencies>\n"
+ " <dependency>\n"
- + " <groupId>org.opendaylight.yangtools</groupId>\n"
+ + " <groupId>org.opendaylight.mdsal</groupId>\n"
+ " <artifactId>yang-binding</artifactId>\n"
- + " <version>0.6.1</version>\n"
+ + " <version>0.8.0-Beryllium</version>\n"
+ " </dependency>\n"
+ " </dependencies>\n"
+ " <repositories>\n"
+ " </executions>\n"
+ " <dependencies>\n"
+ " <dependency>\n"
- + " <groupId>org.opendaylight.yangtools</groupId>\n"
+ + " <groupId>org.opendaylight.mdsal</groupId>\n"
+ " <artifactId>maven-sal-api-gen-plugin</artifactId>\n"
- + " <version>0.6.1</version>\n"
+ + " <version>0.8.0-Beryllium</version>\n"
+ " </dependency>\n"
+ " </dependencies>\n"
+ " </plugin>\n"