/** * Same as {@link #unwrap(TemplateModel)}, but it doesn't throw exception * if it doesn't know how to unwrap the model, but rather returns it as-is. * @since 2.3.14 */ public static Object permissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }
private Map<String, Object> getTemplateModelDump(TemplateModel model) throws TemplateModelException { // One of the more specific cases should have applied. Track whether this actually occurs. log.debug("Found template model of type " + model.getClass().getName()); Map<String, Object> map = new HashMap<String, Object>(); Object unwrappedModel = DeepUnwrap.permissiveUnwrap(model); map.put(Key.TYPE.toString(), unwrappedModel.getClass().getName()); map.put(Key.VALUE.toString(), unwrappedModel.toString()); return map; }
SortedMap<String, Object> getDataModelDump(Environment env) throws TemplateModelException { SortedMap<String, Object> dump = new TreeMap<String, Object>(); TemplateHashModel dataModel = env.getDataModel(); // Need to unwrap in order to iterate through the variables @SuppressWarnings("unchecked") Map<String, Object> unwrappedDataModel = (Map<String, Object>) DeepUnwrap.permissiveUnwrap(dataModel); List<String> varNames = new ArrayList<String>(unwrappedDataModel.keySet()); for (String varName : varNames) { dump.putAll(getTemplateVariableDump(varName, dataModel.get(varName))); } return dump; }
/** * @deprecated the name of this method is mistyped. Use * {@link #permissiveUnwrap(TemplateModel)} instead. */ @Deprecated public static Object premissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }
private Map<String, Object> getTemplateModelDump(TemplateHashModelEx model) throws TemplateModelException { Object unwrappedModel = DeepUnwrap.permissiveUnwrap(model); // This seems to be the most reliable way of distinguishing a wrapped map from a wrapped object. // A map may be wrapped as a SimpleHash, and an object may be wrapped as a StringModel, but they could // be wrapped as other types as well. if ( unwrappedModel instanceof Map ) { return getMapDump(model); } // Java objects are wrapped as TemplateHashModelEx-s. return getObjectDump(model, unwrappedModel); }
return unwrap(model, false);
Map<String, Object> configUrls = (Map<String, Object>) DeepUnwrap.permissiveUnwrap(urlModel); requestUrls.putAll(configUrls);
private static Object unwrap(TemplateModel model, boolean permissive) throws TemplateModelException { Environment env = Environment.getCurrentEnvironment(); TemplateModel nullModel = null; if (env != null) { ObjectWrapper wrapper = env.getObjectWrapper(); if (wrapper != null) { nullModel = wrapper.wrap(null); } } return unwrap(model, nullModel, permissive); }
/** * Find the DataGetters for this template, and apply them to the Freemarker * environment. */ public static void retrieveAndRunDataGetters(Environment env, String templateName) { HttpServletRequest req = (HttpServletRequest) env .getCustomAttribute("request"); VitroRequest vreq = new VitroRequest(req); if (dataGettersAlreadyApplied(env, templateName)) { log.debug("DataGetters for '" + templateName + "' have already been applied"); return; } try { List<DataGetter> dgList = DataGetterUtils .getDataGettersForTemplate(vreq, vreq.getDisplayModel(), templateName); log.debug("Retrieved " + dgList.size() + " data getters for template '" + templateName + "'"); @SuppressWarnings("unchecked") Map<String, Object> dataMap = (Map<String, Object>) DeepUnwrap .permissiveUnwrap(env.getDataModel()); for (DataGetter dg : dgList) { applyDataGetter(dg, env, dataMap); } } catch (Exception e) { log.warn(e, e); } }
ArrayList list = new ArrayList(size); for (int i = 0; i < size; ++i) { list.add(unwrap(seq.get(i), nullModel, permissive)); TemplateModelIterator it = coll.iterator(); while (it.hasNext()) { list.add(unwrap(it.next(), nullModel, permissive)); KeyValuePair kvp = kvps.next(); map.put( unwrap(kvp.getKey(), nullModel, permissive), unwrap(kvp.getValue(), nullModel, permissive)); String key = (String) unwrap(keys.next(), nullModel, permissive); map.put(key, unwrap(hash.get(key), nullModel, permissive));
Object unwrappedModel = DeepUnwrap.permissiveUnwrap(valueToDump);
if (paramsModel != null) { final Object unwrapped = DeepUnwrap.unwrap(paramsModel); if (!(unwrapped instanceof Map)) { throw new _MiscTemplateException(env,
Map<String, Object> dm = (Map<String, Object>) DeepUnwrap.permissiveUnwrap(dataModel); User user = (User) dm.get("user"); values.put("user", user);
for (TemplateModelIterator it = keys.iterator(); it.hasNext();) { String attName = ((TemplateScalarModel) it.next()).getAsString(); Object attValue = DeepUnwrap.unwrap(attributeMap.get(attName)); template.setCustomAttribute(attName, attValue);
/** * Same as {@link #unwrap(TemplateModel)}, but it doesn't throw exception * if it doesn't know how to unwrap the model, but rather returns it as-is. * @since 2.3.14 */ public static Object permissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }
/** * Same as {@link #unwrap(TemplateModel)}, but it doesn't throw exception * if it doesn't know how to unwrap the model, but rather returns it as-is. * @since 2.3.14 */ public static Object permissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }
/** * @deprecated the name of this method is mistyped. Use * {@link #permissiveUnwrap(TemplateModel)} instead. */ public static Object premissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }
/** * Same as {@link #unwrap(TemplateModel)}, but it doesn't throw exception * if it doesn't know how to unwrap the model, but rather returns it as-is. * @since 2.3.14 */ public static Object permissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }
@SuppressWarnings("rawtypes") @Override public Object exec(List arguments) throws TemplateModelException { Stub stub = (Stub) DeepUnwrap.unwrap((TemplateModel) arguments.get(0)); return getStubNameConsideringMultiple(stub); } }
/** * @deprecated the name of this method is mistyped. Use * {@link #permissiveUnwrap(TemplateModel)} instead. */ @Deprecated public static Object premissiveUnwrap(TemplateModel model) throws TemplateModelException { return unwrap(model, true); }