void addIdSchemaNode(IdentitySchemaNode node) { String name = node.getQName().getLocalName(); Preconditions.checkState(!identityNameToSchemaNode.containsKey(name)); identityNameToSchemaNode.put(name, node); }
private void emitBaseIdentities(final Set<IdentitySchemaNode> identities) { for (final IdentitySchemaNode identitySchemaNode : identities) { emitBase(identitySchemaNode.getQName()); } }
private static IdentitySchemaNode findIdentityByName(final Set<IdentitySchemaNode> identities, final String name) { for (final IdentitySchemaNode id : identities) { if (id.getQName().getLocalName().equals(name)) { return id; } } return null; }
private IdentitySchemaNode findIdentityByName(final Set<IdentitySchemaNode> identities, final String name) { for (final IdentitySchemaNode id : identities) { if (id.getQName().getLocalName().equals(name)) { return id; } } return null; }
private static IdentitySchemaNode findIdentitySchemaNodeInModule(final Module module, final QName identityQName) { for (final IdentitySchemaNode id : module.getIdentities()) { if (identityQName.equals(id.getQName())) { return id; } } throw new IllegalArgumentException(String.format("Identity %s does not have a corresponding" + " identity schema node in the module %s.", identityQName, module)); }
private static IdentitySchemaNode findIdentitySchemaNodeInModule(final Module module, final QName identityQName) { for (final IdentitySchemaNode id : module.getIdentities()) { if (identityQName.equals(id.getQName())) { return id; } } throw new IllegalArgumentException(String.format("Identity %s does not have a corresponding" + " identity schema node in the module %s.", identityQName, module)); }
@Override public QName parseValue(final NamespaceContext ctx, final String str) { return IdentityCodecUtil.parseIdentity(str, schemaContext, prefix -> { if (prefix.isEmpty()) { return parentModule; } final String prefixedNS = ctx.getNamespaceURI(prefix); final Iterator<Module> modules = schemaContext.findModules(URI.create(prefixedNS)).iterator(); checkArgument(modules.hasNext(), "Could not find module for namespace %s", prefixedNS); return modules.next().getQNameModule(); }).getQName(); }
@Override public QName parseValue(final Object ctx, final String value) { return IdentityCodecUtil.parseIdentity(value, schemaContext, prefix -> { if (prefix.isEmpty()) { return parentModule; } final Iterator<Module> modules = schemaContext.findModules(prefix).iterator(); checkArgument(modules.hasNext(), "Could not find module %s", prefix); return modules.next().getQNameModule(); }).getQName(); }
@Override public QName parseValue(final Object ctx, final String value) { return IdentityCodecUtil.parseIdentity(value, schemaContext, prefix -> { if (prefix.isEmpty()) { return parentModule; } final Iterator<Module> modules = schemaContext.findModules(prefix).iterator(); checkArgument(modules.hasNext(), "Could not find module %s", prefix); return modules.next().getQNameModule(); }).getQName(); }
@Override protected final QName createQName(final String prefix, final String localName) { final Module module = moduleForPrefix(prefix); checkArgument(module != null, "Failed to lookup prefix %s", prefix); final QName qname = QName.create(module.getQNameModule(), localName); for (IdentitySchemaNode identity : module.getIdentities()) { if (qname.equals(identity.getQName())) { return identity.getQName(); } } throw new IllegalArgumentException("Failed to find identity matching " + qname); } }
@Override protected final QName createQName(final String prefix, final String localName) { final Module module = moduleForPrefix(prefix); checkArgument(module != null, "Failed to lookup prefix %s", prefix); final QName qname = QName.create(module.getQNameModule(), localName); for (IdentitySchemaNode identity : module.getIdentities()) { if (qname.equals(identity.getQName())) { return identity.getQName(); } } throw new IllegalArgumentException("Failed to find identity matching " + qname); } }
public static String writeIdentityNs(final IdentitySchemaNode identity) { boolean _equals = Objects.equal(YangTemplate.module, null); if (_equals) { return ""; } QName _qName = identity.getQName(); final URI identityNs = _qName.getNamespace(); URI _namespace = YangTemplate.module.getNamespace(); boolean _equals_1 = _namespace.equals(identityNs); boolean _not = (!_equals_1); if (_not) { return (identityNs + ":"); } return ""; }
public void addIdentityType(final IdentitySchemaNode def, final GeneratedTypeBuilder builder) { checkNamingConflict(def, builder.getIdentifier()); identities.put(def.getQName(), builder); }
public ModuleMXBeanEntryInitialBuilder setIdSchemaNode(IdentitySchemaNode idSchemaNode) { this.localName = idSchemaNode.getQName().getLocalName(); this.description = idSchemaNode.getDescription(); return this; }
/** * Parse a string into a QName using specified prefix-to-QNameModule mapping function, interpreting the result * as an IdentitySchemaNode existing in specified SchemaContext. * * @param value string value to parse * @param schemaContext Parent schema context * @param prefixToModule prefix-to-QNameModule mapping function * @return Corresponding IdentitySchemaNode. * @throws IllegalArgumentException if the value is invalid or does not refer to an existing identity */ public static IdentitySchemaNode parseIdentity(final String value, final SchemaContext schemaContext, final Function<String, QNameModule> prefixToModule) { final QName qname = QNameCodecUtil.decodeQName(value, prefixToModule); final Optional<Module> optModule = schemaContext.findModule(qname.getModule()); checkState(optModule.isPresent(), "Parsed QName %s refers to a non-existent module", qname); for (IdentitySchemaNode identity : optModule.get().getIdentities()) { if (qname.equals(identity.getQName())) { return identity; } } throw new IllegalArgumentException("Parsed QName " + qname + " does not refer to a valid identity"); } }
/** * Parse a string into a QName using specified prefix-to-QNameModule mapping function, interpreting the result * as an IdentitySchemaNode existing in specified SchemaContext. * * @param value string value to parse * @param schemaContext Parent schema context * @param prefixToModule prefix-to-QNameModule mapping function * @return Corresponding IdentitySchemaNode. * @throws IllegalArgumentException if the value is invalid or does not refer to an existing identity */ public static IdentitySchemaNode parseIdentity(final String value, final SchemaContext schemaContext, final Function<String, QNameModule> prefixToModule) { final QName qname = QNameCodecUtil.decodeQName(value, prefixToModule); final Optional<Module> optModule = schemaContext.findModule(qname.getModule()); checkState(optModule.isPresent(), "Parsed QName %s refers to a non-existent module", qname); for (IdentitySchemaNode identity : optModule.get().getIdentities()) { if (qname.equals(identity.getQName())) { return identity; } } throw new IllegalArgumentException("Parsed QName " + qname + " does not refer to a valid identity"); } }
/** * Returns value namespace for leaf value. * * @param value value of the leaf * @param ctx schema context * @return value namespace * @throws SvcLogicException if identity/module could not be found */ static Namespace getValueNamespace(String value, SchemaContext ctx) throws SvcLogicException { String prefix = getPrefixFromValue(value); if (prefix == null) { return null; } IdentitySchemaNode id = IdentityCodecUtil.parseIdentity(value, ctx, prefixToModule -> { final Iterator<Module> modules = ctx.findModules(prefix).iterator(); checkArgument(modules.hasNext(), "Could not find " + "module %s", prefix); return modules.next().getQNameModule(); }); if (id == null) { throw new SvcLogicException("Could not find identity"); } return getModuleNamespace(id.getQName(), ctx); }
/** * Seeks for identity reference <code>idref</code> the JAVA <code>type</code>. * * <p> * <i>Example:<br /> * If identy which is referenced via <code>idref</code> has name <b>Idn</b> * then returning type is <b>{@code Class<? extends Idn>}</b></i> * * @param idref identityref type definition for which JAVA <code>Type</code> is sought * @return JAVA <code>Type</code> of the identity which is referenced through <code>idref</code> */ private Type provideTypeForIdentityref(final IdentityrefTypeDefinition idref) { final Collection<IdentitySchemaNode> identities = idref.getIdentities(); if (identities.size() > 1) { LOG.warn("Identity reference {} has multiple identities, using only the first one", idref); } final QName baseIdQName = identities.iterator().next().getQName(); final Module module = schemaContext.findModule(baseIdQName.getModule()).orElse(null); IdentitySchemaNode identity = null; for (IdentitySchemaNode id : module.getIdentities()) { if (id.getQName().equals(baseIdQName)) { identity = id; } } Preconditions.checkArgument(identity != null, "Target identity '" + baseIdQName + "' do not exists"); final String basePackageName = BindingMapping.getRootPackageName(module.getQNameModule()); final JavaTypeName identifier = JavaTypeName.create(BindingGeneratorUtil.packageNameForGeneratedType( basePackageName, identity.getPath()), BindingMapping.getClassName(identity.getQName())); return Types.classType(Types.wildcardTypeFor(identifier)); }
private void emitIdentity(final IdentitySchemaNode identity) { super.writer.startIdentityNode(identity.getQName()); emitBaseIdentities(identity.getBaseIdentities()); emitDocumentedNode(identity); super.writer.endNode(); }
private void processTypeDef(final TypeDefinition<?> leafTypeDef, final JSONObject property) throws JSONException { if (leafTypeDef instanceof BinaryTypeDefinition) { processBinaryType((BinaryTypeDefinition) leafTypeDef, property); } else if (leafTypeDef instanceof BitsTypeDefinition) { processBitsType((BitsTypeDefinition) leafTypeDef, property); } else if (leafTypeDef instanceof EnumTypeDefinition) { processEnumType((EnumTypeDefinition) leafTypeDef, property); } else if (leafTypeDef instanceof IdentityrefTypeDefinition) { property.putOpt(TYPE_KEY, ((IdentityrefTypeDefinition) leafTypeDef).getIdentity().getQName().getLocalName()); } else if (leafTypeDef instanceof StringTypeDefinition) { processStringType((StringTypeDefinition) leafTypeDef, property); } else if (leafTypeDef instanceof UnionTypeDefinition) { processUnionType((UnionTypeDefinition) leafTypeDef, property); } else { String jsonType = jsonTypeFor(leafTypeDef); if (jsonType == null) { jsonType = "object"; } property.putOpt(TYPE_KEY, jsonType); } }