+ // protected static Object getAttributeSpecValue(Node specAttrNode) {
+ // try {
+ // if (specAttrNode.isNodeType(SlcTypes.SLC_PRIMITIVE_SPEC_ATTRIBUTE)) {
+ // if (!specAttrNode.hasProperty(SLC_VALUE))
+ // return null;
+ // String type = specAttrNode.getProperty(SLC_TYPE).getString();
+ // // TODO optimize based on data type?
+ // Object value = PrimitiveUtils.convert(type, specAttrNode
+ // .getProperty(SLC_VALUE).getString());
+ // // log.debug(specAttrNode + ", type=" + type + ", value=" +
+ // // value);
+ // return value;
+ // } else if (specAttrNode.isNodeType(SlcTypes.SLC_REF_SPEC_ATTRIBUTE)) {
+ // if (specAttrNode.hasNode(SLC_VALUE)) {
+ // // return the index of the sub node
+ // // in the future we may manage reference as well
+ // return specAttrNode.getProperty(SLC_VALUE).getLong();
+ // } else
+ // return null;
+ // }
+ // return null;
+ // } catch (RepositoryException e) {
+ // throw new SlcException("Cannot get value", e);
+ // }
+ //
+ // }
+
+ protected static String getAttributeSpecText(Node specAttrNode) {