private static DataNodeContainer augmentationProxy( final AugmentationSchema augmentation, final DataNodeContainer schema) { final Set<DataSchemaNode> children = new HashSet<>(); for (final DataSchemaNode augNode : augmentation.getChildNodes()) { children.add(schema.getDataChildByName(augNode.getQName())); } return new EffectiveAugmentationSchema(augmentation, children); }
private static AugmentationIdentifier augmentationIdentifierFrom( final AugmentationSchema augmentation) { final ImmutableSet.Builder<QName> potentialChildren = ImmutableSet.builder(); for (final DataSchemaNode child : augmentation.getChildNodes()) { potentialChildren.add(child.getQName()); } return new AugmentationIdentifier(potentialChildren.build()); }
private void emitChildInner( final StringBuilder b, final String getterName, final Type childType, final DataSchemaNode child) { if (child instanceof LeafSchemaNode) { b.append(statement(leafNode(child.getQName().getLocalName(), getterName))); } else if (child instanceof AnyXmlSchemaNode) { b.append(statement(anyxmlNode(child.getQName().getLocalName(), getterName))); } else if (child instanceof LeafListSchemaNode) { b.append( statement(startLeafSet(child.getQName().getLocalName(), invoke(getterName, "size")))); final Type valueType = ((ParameterizedType) childType).getActualTypeArguments()[0]; b.append(forEach(getterName, valueType, statement(leafSetEntryNode(CURRENT)))); b.append(statement(endNode())); } else if (child instanceof ListSchemaNode) { final Type valueType = ((ParameterizedType) childType).getActualTypeArguments()[0]; final ListSchemaNode casted = (ListSchemaNode) child; emitList(b, getterName, valueType, casted); } else if (child instanceof ContainerSchemaNode) { b.append( tryToUseCacheElse(getterName, statement(staticInvokeEmitter(childType, getterName)))); } else if (child instanceof ChoiceSchemaNode) { final String propertyName = CHOICE_PREFIX + childType.getName(); staticConstant( propertyName, DataObjectSerializerImplementation.class, ChoiceDispatchSerializer.from(loadClass(childType))); b.append( tryToUseCacheElse( getterName, statement( invoke( propertyName, StreamWriterGenerator.SERIALIZE_METHOD_NAME, REGISTRY, cast(DataObject.class.getName(), getterName), STREAM)))); } }
private static final String getGetterName(final DataSchemaNode node) { final TypeDefinition<?> type; if (node instanceof LeafSchemaNode) { type = ((LeafSchemaNode) node).getType(); } else if (node instanceof LeafListSchemaNode) { type = ((LeafListSchemaNode) node).getType(); } else { type = null; } String prefix = "get"; if (type != null) { TypeDefinition<?> rootType = type; while (rootType.getBaseType() != null) { rootType = rootType.getBaseType(); } if (rootType instanceof BooleanTypeDefinition || rootType instanceof EmptyTypeDefinition) { prefix = "is"; } } return prefix + BindingMapping.getClassName(node.getQName().getLocalName()); }