*/
package org.opendaylight.yangtools.yang.parser.builder.impl;
-import java.lang.reflect.Method;
import java.util.List;
-
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.parser.builder.api.Builder;
+import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.yangtools.yang.parser.builder.api.DocumentedNodeBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder;
/**
* Utility class with helper methods to perform operations tied to refine
* process.
+ *
+ * @deprecated Pre-Beryllium implementation, scheduled for removal.
*/
+@Deprecated
public final class RefineUtils {
private RefineUtils() {
}
- public static void refineLeaf(final LeafSchemaNodeBuilder leaf, final RefineBuilder refine) {
+ private static void refineLeaf(final LeafSchemaNodeBuilder leaf, final RefineBuilder refine) {
String defaultStr = refine.getDefaultStr();
Boolean mandatory = refine.isMandatory();
MustDefinition must = refine.getMust();
List<UnknownSchemaNodeBuilder> unknownNodes = refine.getUnknownNodes();
- if (defaultStr != null && !("".equals(defaultStr))) {
+ if (defaultStr != null && !defaultStr.isEmpty()) {
leaf.setDefaultStr(defaultStr);
}
if (mandatory != null) {
}
}
- public static void refineContainer(final ContainerSchemaNodeBuilder container, final RefineBuilder refine) {
+ private static void refineContainer(final ContainerSchemaNodeBuilder container, final RefineBuilder refine) {
Boolean presence = refine.isPresence();
MustDefinition must = refine.getMust();
List<UnknownSchemaNodeBuilder> unknownNodes = refine.getUnknownNodes();
}
}
- public static void refineList(final ListSchemaNodeBuilder list, final RefineBuilder refine) {
+ private static void refineList(final ListSchemaNodeBuilder list, final RefineBuilder refine) {
MustDefinition must = refine.getMust();
Integer min = refine.getMinElements();
Integer max = refine.getMaxElements();
} else if (node instanceof ContainerSchemaNodeBuilder) {
checkRefineDefault(node, defaultStr, moduleName, line);
checkRefineMandatory(node, mandatory, moduleName, line);
- checkRefineMust(node, must, moduleName, line);
checkRefineMinMax(name, min, max, moduleName, line);
} else if (node instanceof LeafSchemaNodeBuilder) {
checkRefinePresence(node, presence, moduleName, line);
private static void refineDefault(final Builder node, final RefineBuilder refine) {
final String moduleName = refine.getModuleName();
final int line = refine.getLine();
- Class<? extends Builder> cls = node.getClass();
+
+
+ final DocumentedNodeBuilder documentedNode;
+ if (node instanceof DocumentedNodeBuilder) {
+ documentedNode = ((DocumentedNodeBuilder) node);
+ } else {
+ documentedNode = null;
+ }
String description = refine.getDescription();
+
+
if (description != null) {
- try {
- Method method = cls.getDeclaredMethod("setDescription", String.class);
- method.invoke(node, description);
- } catch (Exception e) {
- throw new YangParseException(moduleName, line, "Cannot refine description in " + cls.getName(), e);
+ if (documentedNode != null) {
+ documentedNode.setDescription(description);
+ } else {
+ throw new YangParseException(moduleName, line, String.format("Cannot refine description in of target %s",refine.getTargetPathString()));
}
+
}
String reference = refine.getReference();
if (reference != null) {
- try {
- Method method = cls.getDeclaredMethod("setReference", String.class);
- method.invoke(node, reference);
- } catch (Exception e) {
- throw new YangParseException(moduleName, line, "Cannot refine reference in " + cls.getName(), e);
+ if (documentedNode != null) {
+ documentedNode.setReference(reference);
+ } else {
+ throw new YangParseException(moduleName, line, String.format("Cannot refine reference in of target %s",refine.getTargetPathString()));
}
}
Boolean config = refine.isConfiguration();
if (config != null) {
- try {
- Method method = cls.getDeclaredMethod("setConfiguration", Boolean.TYPE);
- method.invoke(node, config);
- } catch (Exception e) {
- throw new YangParseException(moduleName, line, "Cannot refine config in " + cls.getName(), e);
+ if (node instanceof DataSchemaNodeBuilder) {
+ ((DataSchemaNodeBuilder) node).setConfiguration(config);
+ } else {
+ throw new YangParseException(moduleName, line, String.format("Cannot refine config of target %s ",refine.getTargetPathString()));
}
}
}