import com.google.common.collect.Sets;
import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
import org.opendaylight.controller.config.yangjmxgenerator.TypeProviderWrapper;
+import org.opendaylight.yangtools.binding.generator.util.ReferencedTypeImpl;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import java.util.Map.Entry;
import java.util.Set;
-public class TOAttribute extends AbstractAttribute {
+public class TOAttribute extends AbstractAttribute implements TypedAttribute {
private final String nullableDescription, nullableDefault;
private final Map<String, AttributeIfc> yangNameToAttributeMap;
private final Map<String, String> attributeNameMap;
+ private final String packageName;
private static final Set<Class<? extends DataSchemaNode>> ALLOWED_CHILDREN = Sets
.newHashSet();
}
public static <T extends DataNodeContainer & AugmentationTarget & DataSchemaNode> TOAttribute create(
- T containerSchemaNode, TypeProviderWrapper typeProviderWrapper) {
+ T containerSchemaNode, TypeProviderWrapper typeProviderWrapper, String packageName) {
// Transfer Object: get the leaves
Map<String, AttributeIfc> map = new HashMap<>();
Map<String, String> attributeNameMap = new HashMap<>();
String yangName = dataSchemaNode.getQName().getLocalName();
map.put(yangName,
createInnerAttribute(dataSchemaNode,
- typeProviderWrapper));
+ typeProviderWrapper, packageName));
} catch (IllegalArgumentException e) {
throw new IllegalStateException("Unable to create TO", e);
}
}
return new TOAttribute(containerSchemaNode, map, attributeNameMap,
- containerSchemaNode.getDescription());
+ containerSchemaNode.getDescription(), packageName);
}
private static AttributeIfc createInnerAttribute(
DataSchemaNode dataSchemaNode,
- TypeProviderWrapper typeProviderWrapper) {
+ TypeProviderWrapper typeProviderWrapper, String packageName) {
Class<? extends DataSchemaNode> type = isAllowedType(dataSchemaNode);
if (type.equals(LeafSchemaNode.class))
typeProviderWrapper);
else if (type.equals(ListSchemaNode.class))
return ListAttribute.create((ListSchemaNode) dataSchemaNode,
- typeProviderWrapper);
+ typeProviderWrapper, packageName);
else if (type.equals(LeafListSchemaNode.class))
return ListAttribute.create((LeafListSchemaNode) dataSchemaNode,
typeProviderWrapper);
else if (type.equals(ContainerSchemaNode.class))
return TOAttribute.create((ContainerSchemaNode) dataSchemaNode,
- typeProviderWrapper);
+ typeProviderWrapper, packageName);
throw new IllegalStateException("This should never happen");
}
private TOAttribute(DataSchemaNode attrNode,
Map<String, AttributeIfc> transferObject,
- Map<String, String> attributeNameMap, String nullableDescription) {
+ Map<String, String> attributeNameMap, String nullableDescription, String packageName) {
super(attrNode);
yangNameToAttributeMap = transferObject;
this.attributeNameMap = attributeNameMap;
this.nullableDescription = nullableDescription;
nullableDefault = null;
+ this.packageName = packageName;
}
public Map<String, String> getAttributeNameMap() {
+ yangNameToAttributeMap + '}';
}
+ @Override
+ public Type getType() {
+ // TODO: ReferencedTypeImpl from Types
+ return new ReferencedTypeImpl(packageName, getUpperCaseCammelCase());
+ }
+
@Override
public CompositeType getOpenType() {
String description = getNullableDescription() == null ? getAttributeYangName()
}
}
+ public String getPackageName() {
+ return packageName;
+ }
+
private static final class FunctionImpl implements
Function<Entry<String, AttributeIfc>, OpenType<?>> {
private final String[] itemNames;