예제 #1
0
 public static void setProperty(CoreSession session, DocumentModel doc, String key, String value)
     throws Exception {
   if ("ecm:acl".equals(key)) {
     setLocalAcl(session, doc, value);
   }
   Property p = doc.getProperty(key);
   if (value == null || value.length() == 0) {
     p.setValue(null);
     return;
   }
   Type type = p.getField().getType();
   if (!type.isSimpleType()) {
     if (type.isListType()) {
       ListType ltype = (ListType) type;
       if (ltype.isScalarList()) {
         p.setValue(readStringList(value, (SimpleType) ltype.getFieldType()));
         return;
       } else if (ltype.getFieldType().isComplexType()) {
         Object val = ComplexTypeJSONDecoder.decodeList(ltype, value);
         p.setValue(val);
         return;
       }
     } else if (type.isComplexType()) {
       Object val = ComplexTypeJSONDecoder.decode((ComplexType) type, value);
       p.setValue(val);
       return;
     }
     throw new OperationException("Property type is not supported by this operation");
   } else {
     p.setValue(((SimpleType) type).getPrimitiveType().decode(value));
   }
 }