package org.osgi.service.indexer.impl.types; import org.osgi.service.indexer.impl.Schema; import org.osgi.service.indexer.impl.util.Tag; public class TypedAttribute { private final String name; private final Type type; private final Object value; public TypedAttribute(String name, Type type, Object value) { this.name = name; this.type = type; this.value = value; } public static TypedAttribute create(String name, Object value) { return new TypedAttribute(name, Type.typeOf(value), value); } public Tag toXML() { Tag tag = new Tag(Schema.ELEM_ATTRIBUTE); tag.addAttribute(Schema.ATTR_NAME, name); if (type.isList() || type.getType() != ScalarType.String) { tag.addAttribute(Schema.ATTR_TYPE, type.toString()); } tag.addAttribute(Schema.ATTR_VALUE, type.convertToString(value)); return tag; } }