public static Date readDate(final String s) throws ParseException { return getRevisionFormat().parse(s); }
public static String writeDate(final Date date) { return getRevisionFormat().format(date); }
@Override public int addRevision(Date revision) { if(revision == null){ return -1; } int revisionInt = getCode(revision); if(revisionInt == -1) { String formattedRevision = SimpleDateFormatUtil.getRevisionFormat().format(revision); revisionInt = addCode(revision, formattedRevision); } return revisionInt; }
private QName getModuleNameAndRevision(final String identifier) { final int mountIndex = identifier.indexOf(ControllerContext.MOUNT); String moduleNameAndRevision = ""; if (mountIndex >= 0) { moduleNameAndRevision = identifier.substring(mountIndex + ControllerContext.MOUNT.length()); } else { moduleNameAndRevision = identifier; } final Splitter splitter = Splitter.on("/").omitEmptyStrings(); final Iterable<String> split = splitter.split(moduleNameAndRevision); final List<String> pathArgs = Lists.<String> newArrayList(split); if (pathArgs.size() < 2) { LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier); throw new RestconfDocumentedException( "URI has bad format. End of URI should be in format \'moduleName/yyyy-MM-dd\'", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); } try { final String moduleName = pathArgs.get(0); final String revision = pathArgs.get(1); final Date moduleRevision = SimpleDateFormatUtil.getRevisionFormat().parse(revision); return QName.create(null, moduleRevision, moduleName); } catch (final ParseException e) { LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier); throw new RestconfDocumentedException("URI has bad format. It should be \'moduleName/yyyy-MM-dd\'", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); } }
private static String toCapabilityURI(final Module module) { return String.valueOf(module.getNamespace()) + "?module=" + module.getName() + "&revision=" + SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()); }
private static String toCapabilityURI(final Module module) { return String.valueOf(module.getNamespace()) + "?module=" + module.getName() + "&revision=" + SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()); }
public YangModuleCapability(final Module module, final String moduleContent) { super(toCapabilityURI(module)); this.content = moduleContent; this.moduleName = module.getName(); this.moduleNamespace = module.getNamespace().toString(); this.revision = SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()); }
public YangModuleCapability(final Module module, final String moduleContent) { super(toCapabilityURI(module)); this.content = moduleContent; this.moduleName = module.getName(); this.moduleNamespace = module.getNamespace().toString(); this.revision = SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()); }
private SchemaExportContext getExportUsingNameAndRevision(final SchemaContext schemaContext, final String moduleName, final String revisionStr) { try { final Date revision = SimpleDateFormatUtil.getRevisionFormat().parse(revisionStr); final Module module = schemaContext.findModuleByName(moduleName, revision); return new SchemaExportContext(schemaContext, RestconfValidationUtils.checkNotNullDocumented(module, moduleName)); } catch (final ParseException e) { throw new RestconfDocumentedException("Supplied revision is not in expected date format YYYY-mm-dd", e); } }
private static Optional<YangModuleCapability> moduleToCapability( final Module module, final SchemaSourceProvider<YangTextSchemaSource> rootSchemaSourceProviderDependency) { final SourceIdentifier moduleSourceIdentifier = SourceIdentifier.create(module.getName(), (SimpleDateFormatUtil.DEFAULT_DATE_REV == module.getRevision() ? Optional.<String>absent() : Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())))); InputStream sourceStream = null; String source; try { sourceStream = rootSchemaSourceProviderDependency.getSource(moduleSourceIdentifier).checkedGet().openStream(); source = CharStreams.toString(new InputStreamReader(sourceStream, StandardCharsets.UTF_8)); } catch (IOException | SchemaSourceException e) { LOG.warn("Ignoring source for module {}. Unable to read content", moduleSourceIdentifier, e); source = null; } try { if (sourceStream != null) { sourceStream.close(); } } catch (IOException e) { LOG.warn("Error closing yang source stream {}. Ignoring", moduleSourceIdentifier, e); } if(source !=null) { return Optional.of(new YangModuleCapability(module, source)); } else { LOG.warn("Missing source for module {}. This module will not be available from netconf server", moduleSourceIdentifier); } return Optional.absent(); }
@Override protected void handleSalInitializationSuccess(SchemaContext result, NetconfSessionPreferences remoteSessionCapabilities, DOMRpcService deviceRpc) { super.handleSalInitializationSuccess(result, remoteSessionCapabilities, deviceRpc); final Set<SourceIdentifier> sourceIds = Sets.newHashSet(); for(ModuleIdentifier id : result.getAllModuleIdentifiers()) { sourceIds.add(SourceIdentifier.create(id.getName(), (SimpleDateFormatUtil.DEFAULT_DATE_REV == id.getRevision() ? Optional.<String>absent() : Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(id.getRevision()))))); } //TODO extract string constant to util class LOG.debug("Creating master source provider"); masterSourceProvider = TypedActor.get(cachedContext).typedActorOf( new TypedProps<>(MasterSourceProvider.class, new Creator<MasterSourceProviderImpl>() { @Override public MasterSourceProviderImpl create() throws Exception { return new MasterSourceProviderImpl(schemaRepo, sourceIds, actorSystem, topologyId, nodeId); } }), NetconfTopologyPathCreator.MASTER_SOURCE_PROVIDER); }
private Submodules createSubmodulesForModule(final Module module) { final List<Submodule> submodulesList = Lists.newArrayList(); for (final Module subModule : module.getSubmodules()) { final SubmoduleBuilder subModuleEntryBuilder = new SubmoduleBuilder(); subModuleEntryBuilder.setName(new YangIdentifier(subModule.getName())) .setRevision(new OptionalRevision(SimpleDateFormatUtil.getRevisionFormat().format(subModule.getRevision()))); submodulesList.add(subModuleEntryBuilder.build()); } return new SubmodulesBuilder().setSubmodule(submodulesList).build(); } }
private org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list.Module createModuleEntryFromModule(final Module module) { final ModuleBuilder moduleBuilder = new ModuleBuilder(); // TODO Conformance type is always set to Implement value, but it should it really be like this? // TODO Add also deviations and features lists to module entries moduleBuilder.setName(new YangIdentifier(module.getName())) .setRevision(new OptionalRevision(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()))) .setNamespace(new Uri(module.getNamespace().toString())) .setConformanceType(ConformanceType.Implement) .setSubmodules(createSubmodulesForModule(module)); return moduleBuilder.build(); }
final DataSchemaNode revisionSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null); Preconditions.checkState(revisionSchemaNode instanceof LeafSchemaNode); final String revision = SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()); moduleNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) revisionSchemaNode).withValue(revision) .build());
public static CharSequence writeRevision(final Date moduleRevision, final String moduleDescription) { CharSequence _xblockexpression = null; { final int revisionIndent = 12; StringConcatenation _builder = new StringConcatenation(); _builder.append("revision "); SimpleDateFormat _revisionFormat = SimpleDateFormatUtil.getRevisionFormat(); String _format = _revisionFormat.format(moduleRevision); _builder.append(_format, ""); _builder.append(" {"); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("description \""); String _formatToParagraph = YangTemplate.formatToParagraph(moduleDescription, revisionIndent); _builder.append(_formatToParagraph, " "); _builder.append("\";"); _builder.newLineIfNotEmpty(); _builder.append("}"); _builder.newLine(); _xblockexpression = _builder; } return _xblockexpression; }