blob: a971ac4d7f3fb0dd36e35bbabea0e7fdc4dcb2a7 [file] [log] [blame]
package com.android.hotspot2.omadm;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
public class OMAScalar extends OMANode {
private final String mValue;
public OMAScalar(OMAConstructed parent, String name, String context, String value,
String ... avps) {
this(parent, name, context, value, buildAttributes(avps));
}
public OMAScalar(OMAConstructed parent, String name, String context, String value,
Map<String, String> avps) {
super(parent, name, context, avps);
mValue = value;
}
@Override
public OMAScalar reparent(OMAConstructed parent) {
return new OMAScalar(parent, getName(), getContext(), mValue, getAttributes());
}
public String getScalarValue(Iterator<String> path) throws OMAException {
return mValue;
}
@Override
public OMANode getListValue(Iterator<String> path) throws OMAException {
throw new OMAException("Scalar encountered in list path: " + getPathString());
}
@Override
public boolean isLeaf() {
return true;
}
@Override
public Collection<OMANode> getChildren() {
throw new UnsupportedOperationException();
}
@Override
public String getValue() {
return mValue;
}
@Override
public OMANode getChild(String name) throws OMAException {
throw new OMAException("'" + getName() + "' is a scalar node");
}
@Override
public OMANode addChild(String name, String context, String value, String path)
throws IOException {
throw new UnsupportedOperationException();
}
@Override
public void toString(StringBuilder sb, int level) {
sb.append(getPathString()).append('=').append(mValue);
if (getContext() != null) {
sb.append(" (").append(getContext()).append(')');
}
sb.append('\n');
}
@Override
public void marshal(OutputStream out, int level) throws IOException {
OMAConstants.indent(level, out);
OMAConstants.serializeString(getName(), out);
out.write((byte) '=');
OMAConstants.serializeString(getValue(), out);
out.write((byte) '\n');
}
@Override
public void fillPayload(StringBuilder sb) {
sb.append('<').append(MOTree.ValueTag).append('>');
sb.append(mValue);
sb.append("</").append(MOTree.ValueTag).append(">\n");
}
}