1package com.android.server.wifi.hotspot2.omadm; 2 3import java.io.IOException; 4import java.io.OutputStream; 5import java.util.Collection; 6import java.util.Iterator; 7import java.util.Map; 8 9public class OMAScalar extends OMANode { 10 private final String mValue; 11 12 public OMAScalar(OMAConstructed parent, String name, String context, String value, 13 String ... avps) { 14 this(parent, name, context, value, buildAttributes(avps)); 15 } 16 17 public OMAScalar(OMAConstructed parent, String name, String context, String value, 18 Map<String, String> avps) { 19 super(parent, name, context, avps); 20 mValue = value; 21 } 22 23 @Override 24 public OMAScalar reparent(OMAConstructed parent) { 25 return new OMAScalar(parent, getName(), getContext(), mValue, getAttributes()); 26 } 27 28 public String getScalarValue(Iterator<String> path) throws OMAException { 29 return mValue; 30 } 31 32 @Override 33 public OMANode getListValue(Iterator<String> path) throws OMAException { 34 throw new OMAException("Scalar encountered in list path: " + getPathString()); 35 } 36 37 @Override 38 public boolean isLeaf() { 39 return true; 40 } 41 42 @Override 43 public Collection<OMANode> getChildren() { 44 throw new UnsupportedOperationException(); 45 } 46 47 @Override 48 public String getValue() { 49 return mValue; 50 } 51 52 @Override 53 public OMANode getChild(String name) throws OMAException { 54 throw new OMAException("'" + getName() + "' is a scalar node"); 55 } 56 57 @Override 58 public OMANode addChild(String name, String context, String value, String path) 59 throws IOException { 60 throw new UnsupportedOperationException(); 61 } 62 63 @Override 64 public void toString(StringBuilder sb, int level) { 65 sb.append(getPathString()).append('=').append(mValue); 66 if (getContext() != null) { 67 sb.append(" (").append(getContext()).append(')'); 68 } 69 sb.append('\n'); 70 } 71 72 @Override 73 public void marshal(OutputStream out, int level) throws IOException { 74 OMAConstants.indent(level, out); 75 OMAConstants.serializeString(getName(), out); 76 out.write((byte) '='); 77 OMAConstants.serializeString(getValue(), out); 78 out.write((byte) '\n'); 79 } 80 81 @Override 82 public void fillPayload(StringBuilder sb) { 83 sb.append('<').append(MOTree.ValueTag).append('>'); 84 sb.append(escape(mValue)); 85 sb.append("</").append(MOTree.ValueTag).append(">\n"); 86 } 87} 88