/** * Writes an attribute in URISyntax into the stream. * @param attribute the attribute * @param out the stream to write to * @throws IOException if thrown by the stream */ private void write(URISyntax attribute) throws IOException { // only uriScheme syntax type should not appear // in a request (reference-uri-schemes-supported) String name = ((Attribute) attribute).getName(); String uriAscii = attribute.getURI().toASCIIString(); out.writeByte(IppValueTag.URI); out.writeShort(name.length()); out.write(name.getBytes()); out.writeShort(uriAscii.length()); out.write(uriAscii.getBytes()); }
/** * Writes the given attribute groups of the given map instance * (key=group, values=set of attributes) into the supplied data * output stream. * * @param attributes the set with the attributes. * * @throws IOException if thrown by the used DataOutputStream. * @throws IppException if unknown attributes occur. */ public void writeAttributes(AttributeSet attributes) throws IOException, IppException { Attribute[] attributeArray = attributes.toArray(); for (int i = 0; i < attributeArray.length; i++) { logger.log(Component.IPP, "Attribute: Name: <" + attributeArray[i] .getCategory().getName() + "> Value: <" + attributeArray[i].toString() + ">"); if (attributeArray[i] instanceof IntegerSyntax) write((IntegerSyntax) attributeArray[i]); else if (attributeArray[i] instanceof TextSyntax) write((TextSyntax) attributeArray[i]); else if (attributeArray[i] instanceof DateTimeSyntax) write((DateTimeSyntax) attributeArray[i]); else if (attributeArray[i] instanceof ResolutionSyntax) write((ResolutionSyntax) attributeArray[i]); else if (attributeArray[i] instanceof SetOfIntegerSyntax) write((SetOfIntegerSyntax) attributeArray[i]); else if (attributeArray[i] instanceof EnumSyntax) write((EnumSyntax) attributeArray[i]); else if (attributeArray[i] instanceof URISyntax) write((URISyntax) attributeArray[i]); else if (attributeArray[i] instanceof CharsetSyntax) write((CharsetSyntax) attributeArray[i]); else if (attributeArray[i] instanceof NaturalLanguageSyntax) write((NaturalLanguageSyntax) attributeArray[i]); else if (attributeArray[i] instanceof RequestedAttributes) write((RequestedAttributes) attributeArray[i]); else throw new IppException("Unknown syntax type"); } }
public static Object getIppValue(Attribute attr, byte ippvtag) { Object o = null; switch (ippvtag) { // integer values for the "value-tag" field. case IppAttribute.TAG_BOOLEAN: case IppAttribute.TAG_INTEGER: case IppAttribute.TAG_ENUM: if (attr instanceof IntegerSyntax) { o = new Integer(((IntegerSyntax) attr).getValue()); } else if (attr instanceof EnumSyntax) { o = new Integer(((EnumSyntax) attr).getValue()); } else if (attr instanceof DateTimeSyntax || attr instanceof ResolutionSyntax || attr instanceof SetOfIntegerSyntax || attr instanceof Size2DSyntax || attr instanceof TextSyntax || attr instanceof URISyntax) { // TODO - process other attr's types } break; // octetString values for the "value-tag" field. case IppAttribute.TAG_DATETIME: case IppAttribute.TAG_RESOLUTION: case IppAttribute.TAG_RANGEOFINTEGER: case IppAttribute.TAG_OCTETSTRINGUNSPECIFIEDFORMAT: case IppAttribute.TAG_TEXTWITHLANGUAGE: case IppAttribute.TAG_NAMEWITHLANGUAGE: if (attr instanceof IntegerSyntax) { // TODO - it seems that this needs to be fixed o = new Integer(((IntegerSyntax) attr).toString()); } else if (attr instanceof EnumSyntax) { // TODO - it seems that this needs to be fixed o = new Integer(((EnumSyntax) attr).toString()); } else if (attr instanceof DateTimeSyntax || attr instanceof ResolutionSyntax || attr instanceof SetOfIntegerSyntax || attr instanceof Size2DSyntax) { // TODO - process other attr's types } else if (attr instanceof TextSyntax) { // TODO - it seems that this needs to be fixed o = new Integer(((TextSyntax) attr).toString()); } else if (attr instanceof URISyntax) { // TODO - it seems that this needs to be fixed o = new Integer(((URISyntax) attr).toString()); } break; // character-string values for the "value-tag" field case IppAttribute.TAG_TEXTWITHOUTLANGUAGE: case IppAttribute.TAG_NAMEWITHOUTLANGUAGE: case IppAttribute.TAG_KEYWORD: case IppAttribute.TAG_URI: case IppAttribute.TAG_URISCHEME: case IppAttribute.TAG_CHARSET: case IppAttribute.TAG_NATURAL_LANGUAGE: case IppAttribute.TAG_MIMEMEDIATYPE: if (attr instanceof IntegerSyntax) { o = ((IntegerSyntax) attr).toString(); } else if (attr instanceof EnumSyntax) { o = ((EnumSyntax) attr).toString(); } else if (attr instanceof DateTimeSyntax || attr instanceof ResolutionSyntax || attr instanceof SetOfIntegerSyntax || attr instanceof Size2DSyntax) { // TODO - process other attr's types } else if (attr instanceof TextSyntax) { o = ((TextSyntax) attr).toString(); } else if (attr instanceof URISyntax) { o = ((URISyntax) attr).toString(); } break; default: break; } return o; }