@Override public Object get(final Object property) { if (property instanceof String || property instanceof GString) { String key = property.toString(); try { put(key, extractors.extractAndTransform(db, key, model, new TemplateEngineAdapter.NoopAdapter())); } catch (NoModelExtractorException e) { // should never happen, as we iterate over existing extractors } } return super.get(property); } };
@Override public Object get(final Object property) { String key = property.toString(); try { return extractors.extractAndTransform(db, key, this, new TemplateEngineAdapter.NoopAdapter()); } catch(NoModelExtractorException e) { // fallback to parent model } return super.get(property); } };
@Override public Object get(final Object property) { if (property instanceof String || property instanceof GString) { String key = property.toString(); if ("include".equals(key)) { return new MethodClosure(GroovyTemplateEngine.this, "doInclude").curry(this); } try { return extractors.extractAndTransform(db, key, model, new TemplateEngineAdapter.NoopAdapter()); } catch (NoModelExtractorException e) { // fallback to parent model } } return super.get(property); } };
@Override public TemplateModel get(final String key) throws TemplateModelException { try { // GIT Issue#357: Accessing db in freemarker template throws exception // When content store is accessed with key "db" then wrap the ContentStore with BeansWrapper and return to template. // All methods on db are then accessible in template. Eg: ${db.getPublishedPostsByTag(tagName).size()} if(key.equals(Crawler.Attributes.DB)) { BeansWrapperBuilder bwb = new BeansWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); BeansWrapper bw = bwb.build(); return bw.wrap(db); } return extractors.extractAndTransform(db, key, eagerModel.toMap(), new TemplateEngineAdapter<TemplateModel>() { @Override public TemplateModel adapt(String key, Object extractedValue) { if(key.equals(Crawler.Attributes.ALLTAGS)) { return new SimpleCollection((Collection) extractedValue, wrapper); } else if(key.equals(Crawler.Attributes.PUBLISHED_DATE)) { return new SimpleDate((Date) extractedValue, TemplateDateModel.UNKNOWN); } else { // All other cases, as far as I know, are document collections return new SimpleSequence((Collection) extractedValue, wrapper); } } }); } catch(NoModelExtractorException e) { return eagerModel.get(key); } }
return extractors.extractAndTransform(db, key, model, new TemplateEngineAdapter<LazyContextVariable>() { @Override public LazyContextVariable adapt(String key, final Object extractedValue) {
@Override public Object get(final Object property) { if (property instanceof String || property instanceof GString) { String key = property.toString(); try { put(key, extractors.extractAndTransform(db, key, model, new TemplateEngineAdapter.NoopAdapter())); } catch (NoModelExtractorException e) { // should never happen, as we iterate over existing extractors } } return super.get(property); } };
@Override public Object get(final Object property) { String key = property.toString(); try { return extractors.extractAndTransform(db, key, this, new TemplateEngineAdapter.NoopAdapter()); } catch(NoModelExtractorException e) { // fallback to parent model } return super.get(property); } };
@Override public Object get(final Object property) { if (property instanceof String || property instanceof GString) { String key = property.toString(); if ("include".equals(key)) { return new MethodClosure(GroovyTemplateEngine.this, "doInclude").curry(this); } try { return extractors.extractAndTransform(db, key, model, new TemplateEngineAdapter.NoopAdapter()); } catch (NoModelExtractorException e) { // fallback to parent model } } return super.get(property); } };
@Override public TemplateModel get(final String key) throws TemplateModelException { try { // GIT Issue#357: Accessing db in freemarker template throws exception // When content store is accessed with key "db" then wrap the ContentStore with BeansWrapper and return to template. // All methods on db are then accessible in template. Eg: ${db.getPublishedPostsByTag(tagName).size()} if(key.equals(Crawler.Attributes.DB)) { BeansWrapperBuilder bwb = new BeansWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); BeansWrapper bw = bwb.build(); return bw.wrap(db); } return extractors.extractAndTransform(db, key, eagerModel.toMap(), new TemplateEngineAdapter<TemplateModel>() { @Override public TemplateModel adapt(String key, Object extractedValue) { if(key.equals(Crawler.Attributes.ALLTAGS)) { return new SimpleCollection((Collection) extractedValue, wrapper); } else if(key.equals(Crawler.Attributes.PUBLISHED_DATE)) { return new SimpleDate((Date) extractedValue, TemplateDateModel.UNKNOWN); } else { // All other cases, as far as I know, are document collections return new SimpleSequence((Collection) extractedValue, wrapper); } } }); } catch(NoModelExtractorException e) { return eagerModel.get(key); } }
return extractors.extractAndTransform(db, key, model, new TemplateEngineAdapter<LazyContextVariable>() { @Override public LazyContextVariable adapt(String key, final Object extractedValue) {