/* * 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.controller.yang.parser.impl; import java.net.URI; import java.util.Date; import java.util.HashSet; import java.util.Set; import org.opendaylight.controller.yang.model.api.DataSchemaNode; import org.opendaylight.controller.yang.model.api.ExtensionDefinition; import org.opendaylight.controller.yang.model.api.Module; import org.opendaylight.controller.yang.model.api.NotificationDefinition; import org.opendaylight.controller.yang.model.api.RpcDefinition; import org.opendaylight.controller.yang.model.api.SchemaContext; final class SchemaContextImpl implements SchemaContext { private final Set modules; SchemaContextImpl(final Set modules) { this.modules = modules; } @Override public Set getDataDefinitions() { final Set dataDefs = new HashSet(); for (Module m : modules) { dataDefs.addAll(m.getChildNodes()); } return dataDefs; } @Override public Set getModules() { return modules; } @Override public Set getNotifications() { final Set notifications = new HashSet(); for (Module m : modules) { notifications.addAll(m.getNotifications()); } return notifications; } @Override public Set getOperations() { final Set rpcs = new HashSet(); for (Module m : modules) { rpcs.addAll(m.getRpcs()); } return rpcs; } @Override public Set getExtensions() { final Set extensions = new HashSet(); for (Module m : modules) { extensions.addAll(m.getExtensionSchemaNodes()); } return extensions; } @Override public Module findModuleByName(final String name, final Date revision) { if (name != null) { for (final Module module : modules) { if (revision == null) { if (module.getName().equals(name)) { return module; } } else if (module.getName().equals(name) && module.getRevision().equals(revision)) { return module; } } } return null; } @Override public Module findModuleByNamespace(final URI namespace) { if (namespace != null) { for (final Module module : modules) { if (module.getNamespace().equals(namespace)) { return module; } } } return null; } }