Skip to content

Commit

Permalink
Use freemarker updates (#1187)
Browse files Browse the repository at this point in the history
* Freemarker - enable Iterable support

* Freemarker - enable Iterable support, remove .iterator() and .list() workarounds. More to go.

* Freemarker - enable Iterable support, expect DefaultIterableAdapter

* Freemarker - enable Iterable support, fix back removed ()

* Freemarker - enable Iterable support, remove remaining .list

* Freemarker - enable Iterable support, use DefaultIterableAdapter for Sort*Method() args

* Freemarker - enable Iterable support, fix few Freemarker functions.
  • Loading branch information
OndraZizka authored and mareknovotny committed Oct 17, 2017
1 parent d2dc408 commit 13d8ea9
Show file tree
Hide file tree
Showing 25 changed files with 129 additions and 97 deletions.
Expand Up @@ -31,9 +31,10 @@ public class FreeMarkerUtil
*/
public static Configuration getDefaultFreemarkerConfiguration()
{
freemarker.template.Configuration configuration = new freemarker.template.Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
DefaultObjectWrapperBuilder objectWrapperBuilder = new DefaultObjectWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
freemarker.template.Configuration configuration = new freemarker.template.Configuration(Configuration.VERSION_2_3_26);
DefaultObjectWrapperBuilder objectWrapperBuilder = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_26);
objectWrapperBuilder.setUseAdaptersForContainers(true);
objectWrapperBuilder.setIterableSupport(true);
configuration.setObjectWrapper(objectWrapperBuilder.build());
configuration.setAPIBuiltinEnabled(true);

Expand Down
Expand Up @@ -2,6 +2,7 @@

import java.util.List;

import freemarker.template.DefaultIterableAdapter;
import org.jboss.windup.config.GraphRewrite;
import org.jboss.windup.util.ExecutionStatistics;

Expand Down Expand Up @@ -33,8 +34,11 @@ public Object exec(@SuppressWarnings("rawtypes") List arguments) throws Template
if (arguments.size() != 1)
throw new TemplateModelException("Error, method expects one argument (an Iterable)");

BeanModel iterableModelArg = (BeanModel) arguments.get(0);
Iterable iterable = (Iterable) iterableModelArg.getWrappedObject();
///BeanModel iterableModelArg = (BeanModel) arguments.get(0);
DefaultIterableAdapter argModel = (DefaultIterableAdapter) arguments.get(0);


Iterable iterable = (Iterable) argModel.getAdaptedObject(Iterable.class);
List list = new ArrayList();
iterable.iterator().forEachRemaining(list::add);
ExecutionStatistics.get().end(NAME);
Expand Down
Expand Up @@ -5,6 +5,7 @@
import java.util.SortedSet;
import java.util.TreeSet;

import freemarker.template.DefaultIterableAdapter;
import org.jboss.windup.config.GraphRewrite;
import org.jboss.windup.graph.model.comparator.FilePathComparator;
import org.jboss.windup.graph.model.resource.FileModel;
Expand All @@ -18,25 +19,25 @@

/**
* Sorts file paths according to their alphabetical order.
*
*
* For example:
* <ul>
* <li>/foo/bar/baz.class</li>
* <li>/foo/car/caz.class</li>
* <li>/foo/hat.class</li>
* </ul>
*
*
* Would become:
* <ul>
* <li>/foo/hat.class</li>
* <li>/foo/bar/baz.class</li>
* <li>/foo/car/caz.class</li>
* </ul>
*
*
* Can be called as follows: sortFilesByPathAscending(Iterable<FileModel>) or sortFilesByPathAscending(Iterable<String>)
*
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*
*
*/
public class SortFilesByPathMethod implements WindupFreeMarkerMethod
{
Expand Down Expand Up @@ -110,6 +111,11 @@ else if (arg instanceof SimpleSequence)
SimpleSequence simpleSequence = (SimpleSequence) arg;
return (Iterable<Object>) simpleSequence.toList();
}
else if (arg instanceof DefaultIterableAdapter)
{
DefaultIterableAdapter adapter = (DefaultIterableAdapter) arg;
return (Iterable<Object>) adapter.getAdaptedObject(Iterable.class);
}
else if (arg instanceof DefaultListAdapter)
{
DefaultListAdapter defaultListAdapter = (DefaultListAdapter) arg;
Expand Down
Expand Up @@ -4,6 +4,7 @@
import java.util.Collections;
import java.util.List;

import freemarker.template.DefaultIterableAdapter;
import org.jboss.windup.config.GraphRewrite;
import org.jboss.windup.graph.traversal.ProjectModelTraversal;
import org.jboss.windup.graph.model.comparator.ProjectTraversalRootFileComparator;
Expand Down Expand Up @@ -56,9 +57,11 @@ public Object exec(@SuppressWarnings("rawtypes") List arguments) throws Template
{
throw new TemplateModelException("Error, method expects one argument (Iterable<ProjectModelTraversal>)");
}
StringModel stringModelArg = (StringModel) arguments.get(0);

DefaultIterableAdapter argModel = (DefaultIterableAdapter) arguments.get(0);
@SuppressWarnings("unchecked")
Iterable<ProjectModelTraversal> projectTraversalIterable = (Iterable<ProjectModelTraversal>) stringModelArg.getWrappedObject();
///Iterable<ProjectModelTraversal> projectTraversalIterable = (Iterable<ProjectModelTraversal>) argModel.getWrappedObject();
Iterable<ProjectModelTraversal> projectTraversalIterable = (Iterable<ProjectModelTraversal>) argModel.getAdaptedObject(ProjectModelTraversal.class);
List<ProjectModelTraversal> projectTraversalList = new ArrayList<>();
for (ProjectModelTraversal traversal : projectTraversalIterable)
{
Expand Down
Expand Up @@ -4,6 +4,7 @@
import java.util.Collections;
import java.util.List;

import freemarker.template.DefaultIterableAdapter;
import org.jboss.windup.config.GraphRewrite;
import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.model.comparator.ProjectModelByRootFileComparator;
Expand All @@ -14,23 +15,23 @@

/**
* Takes a list of ProjectModels and orders them according to their path.
*
*
* For example, ProjectModels with this structure:
*
*
* <ul>
* <li>/CProject</li>
* <li>/BProject</li>
* <li>/AProject</li>
* </ul>
*
*
* Will be returned as:
*
*
* <ul>
* <li>/AProject</li>
* <li>/BProject</li>
* <li>/CProject</li>
* </ul>
*
*
*/
public class SortProjectsByPathMethod implements WindupFreeMarkerMethod
{
Expand All @@ -56,9 +57,11 @@ public Object exec(@SuppressWarnings("rawtypes") List arguments) throws Template
{
throw new TemplateModelException("Error, method expects one argument (Iterable<ProjectModel>)");
}
StringModel stringModelArg = (StringModel) arguments.get(0);

DefaultIterableAdapter argModel = (DefaultIterableAdapter) arguments.get(0);

@SuppressWarnings("unchecked")
Iterable<ProjectModel> projectModelIterable = (Iterable<ProjectModel>) stringModelArg.getWrappedObject();
Iterable<ProjectModel> projectModelIterable = (Iterable<ProjectModel>) argModel.getAdaptedObject(ProjectModel.class);
List<ProjectModel> projectModelList = new ArrayList<>();
for (ProjectModel pm : projectModelIterable)
{
Expand Down
Expand Up @@ -181,9 +181,9 @@
<div class="real">
<#-- See CreateApplicationListReportRuleProvider -->
<#--
<#list iterableToList(reportModel.relatedResources.applications.list)?sort_by(["projectModel","rootFileModel","fileName"]) as applicationReport>
<#list iterableToList(reportModel.relatedResources.applications)?sort_by(["projectModel","rootFileModel","fileName"]) as applicationReport>
-->
<#list sortApplicationsList(iterableToList(reportModel.relatedResources.applications.list)) as applicationReport>
<#list sortApplicationsList(iterableToList(reportModel.relatedResources.applications)) as applicationReport>
<#if applicationReport.projectModel.projectType! != "VIRTUAL" >
<@applicationReportRenderer applicationReport/>
<#else>
Expand All @@ -206,7 +206,7 @@
</div>
<section class="apps">
<div class="virtual">
<#list iterableToList(reportModel.relatedResources.applications.list)?sort_by(["projectModel","name"]) as applicationReport>
<#list iterableToList(reportModel.relatedResources.applications)?sort_by(["projectModel","name"]) as applicationReport>
<#if applicationReport.projectModel.projectType! = "VIRTUAL" >
<@applicationReportRenderer applicationReport/>
</#if>
Expand Down
20 changes: 10 additions & 10 deletions reporting/impl/src/main/resources/reports/templates/source.ftl
Expand Up @@ -21,7 +21,7 @@

<#include "include/navbar_macro.ftl">

<#list reportModel.projectEdges.iterator() as toProjectEdge>
<#list reportModel.projectEdges as toProjectEdge>
<#assign applicationIndex = projectModelToApplicationIndex(toProjectEdge.projectModel)/>
<#if applicationIndex??>
<div class="navbar-collapse collapse navbar-responsive-collapse project-specific" data-project-id="${toProjectEdge.projectModel.asVertex().id?c}">
Expand All @@ -38,7 +38,7 @@
<h1>
<div class="main">Source Report</div>

<#list reportModel.projectEdges.iterator() as toProjectEdge>
<#list reportModel.projectEdges as toProjectEdge>
<div class="path project-specific" data-project-id="${toProjectEdge.projectModel.asVertex().id?c}">
${toProjectEdge.fullPath?html}
</div>
Expand All @@ -55,7 +55,7 @@
<div class="row">
<div class="container-fluid theme-showcase" role="main">

<#if reportModel.sourceFileModel.classificationModels.iterator()?has_content || getTechnologyTagsForFile(reportModel.sourceFileModel).iterator()?has_content>
<#if reportModel.sourceFileModel.classificationModels?has_content || getTechnologyTagsForFile(reportModel.sourceFileModel)?has_content>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Information</h3>
Expand All @@ -70,7 +70,7 @@

<div class="info" style="margin-left: 95pt;">

<#list getTechnologyTagsForFile(reportModel.sourceFileModel).iterator()>
<#list getTechnologyTagsForFile(reportModel.sourceFileModel)>
<h4>Technologies</h4>
<div class="technologies" style="overflow: auto"><!-- "auto" to contain all the tags. -->
<#items as techTag>
Expand All @@ -79,7 +79,7 @@
</div>
</#list>

<#list reportModel.sourceFileModel.classificationModels.iterator()>
<#list reportModel.sourceFileModel.classificationModels>
<ul class="classifications">
<#items as item>
<#if item.classification??>
Expand All @@ -96,7 +96,7 @@
</ul>
</#list>

<#list reportModel.sourceFileModel.linksToTransformedFiles.iterator() >
<#list reportModel.sourceFileModel.linksToTransformedFiles >
<h4>Automatically Translated Files</h4>
<ul>
<#items as link>
Expand Down Expand Up @@ -150,12 +150,12 @@
$(document).ready(function(){
$("pre").snippet("${reportModel.sourceType}",{style:"ide-eclipse", showNum:true,boxFill:"#ffeeb9", box: "${reportModel.sourceBlock}" });
<#list reportModel.sourceFileModel.inlineHints.iterator() as hintLine>
<#list reportModel.sourceFileModel.inlineHints as hintLine>
<#assign lineNumber = hintLine.lineNumber>
$("<div id='${lineNumber?c}-inlines' class='inline-source-hint-group'/>").appendTo('ol.snippet-num li:nth-child(${lineNumber?c})');
</#list>
<#list reportModel.sourceFileModel.inlineHints.iterator() as hintLine >
<#list reportModel.sourceFileModel.inlineHints as hintLine >
<#assign lineNumber = hintLine.lineNumber>
<#assign hintClasses = hintLine.tags?join(" tag-","none")>
Expand All @@ -172,9 +172,9 @@
</div><#t>
<div class='inline-comment-body'><#t>
${markdownToHtml(hintLine.hint)?js_string}<#t>
<#if hintLine.links?? && hintLine.links.iterator()?has_content>
<#if hintLine.links?? && hintLine.links?has_content>
<ul><#t>
<#list hintLine.links.iterator() as link>
<#list hintLine.links as link>
<li><#t>
<a href='${link.link}' target='_blank'>${link.description}</a><#t>
</li><#t>
Expand Down
10 changes: 5 additions & 5 deletions rules-java-ee/addon/src/main/resources/reports/templates/ejb.ftl
Expand Up @@ -88,7 +88,7 @@
<div class="row">
<div class="container-fluid theme-showcase" role="main">

<#if !reportModel.relatedResources.mdb.list.iterator()?has_content && !reportModel.relatedResources.stateless.list.iterator()?has_content && !reportModel.relatedResources.stateful.list.iterator()?has_content && !reportModel.relatedResources.entity.list.iterator()?has_content>
<#if !reportModel.relatedResources.mdb?has_content && !reportModel.relatedResources.stateless?has_content && !reportModel.relatedResources.stateful?has_content && !reportModel.relatedResources.entity?has_content>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">EJB Report</h3>
Expand All @@ -99,7 +99,7 @@
</div>
</#if>

<#list reportModel.relatedResources.mdb.list.iterator()>
<#list reportModel.relatedResources.mdb>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Message Driven Beans</h3>
Expand All @@ -116,7 +116,7 @@
</#list>


<#list reportModel.relatedResources.stateless.list.iterator()>
<#list reportModel.relatedResources.stateless>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Stateless Session Beans</h3>
Expand All @@ -132,7 +132,7 @@
</div>
</#list>

<#list reportModel.relatedResources.stateful.list.iterator()>
<#list reportModel.relatedResources.stateful>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Stateful Session Beans</h3>
Expand All @@ -148,7 +148,7 @@
</div>
</#list>

<#list reportModel.relatedResources.entity.list.iterator()>
<#list reportModel.relatedResources.entity>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Entity Beans</h3>
Expand Down
Expand Up @@ -40,8 +40,8 @@
<div class="row">
<div class="container-fluid theme-showcase" role="main">

<#list reportModel.relatedResources.hibernateConfiguration.list.iterator() as hibernateConfiguration>
<#list hibernateConfiguration.hibernateSessionFactories.iterator() as sessionFactory>
<#list reportModel.relatedResources.hibernateConfiguration as hibernateConfiguration>
<#list hibernateConfiguration.hibernateSessionFactories as sessionFactory>
<#if iterableHasContent(sessionFactory.sessionFactoryProperties?keys)>
<div class="panel panel-primary">
<div class="panel-heading">
Expand All @@ -63,7 +63,7 @@
</#list>
</#list>

<#list reportModel.relatedResources.hibernateEntities.list.iterator()>
<#list reportModel.relatedResources.hibernateEntities>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Entities</h3>
Expand Down Expand Up @@ -92,4 +92,4 @@
<script src="resources/js/jquery-1.10.1.min.js"></script>
<script src="resources/js/bootstrap.min.js"></script>
</body>
</html>
</html>
Expand Up @@ -78,21 +78,21 @@
<enterprise-beans>

<#if iterableHasContent(reportModel.relatedResources.sessionBeans)>
<#list reportModel.relatedResources.sessionBeans.list.iterator() as sessionBean>
<#list reportModel.relatedResources.sessionBeans as sessionBean>
<session>
<ejb-name>${sessionBean.beanName}</ejb-name>
<#if sessionBean.sessionType??><session-type>${sessionBean.sessionType}</session-type></#if>

<#if iterableHasContent(sessionBean.environmentReferences)>
<#list sessionBean.environmentReferences.iterator() as environmentRef>
<#list sessionBean.environmentReferences as environmentRef>
<@processEnvRef environmentRef />
</#list>
</#if>
</session>
</#list>
</#if>

<#list reportModel.relatedResources.messageDriven.list.iterator() as mdb>
<#list reportModel.relatedResources.messageDriven as mdb>
<message-driven>
<ejb-name>${mdb.beanName}</ejb-name>
<activation-config>
Expand All @@ -105,7 +105,7 @@
</activation-config>

<#if iterableHasContent(mdb.environmentReferences)>
<#list mdb.environmentReferences.iterator() as environmentRef>
<#list mdb.environmentReferences as environmentRef>
<@processEnvRef environmentRef />
</#list>
</#if>
Expand All @@ -115,7 +115,7 @@

<assembly-descriptor>
<#if iterableHasContent(reportModel.relatedResources.sessionBeans)>
<#list reportModel.relatedResources.sessionBeans.list.iterator() as sessionBean>
<#list reportModel.relatedResources.sessionBeans as sessionBean>
<@processTxTimeout sessionBean />
<#if sessionBean.clustered?? && sessionBean.clustered>
<c:clustering>
Expand All @@ -125,7 +125,7 @@
</#if>
</#list>
</#if>
<#list reportModel.relatedResources.messageDriven.list.iterator()>
<#list reportModel.relatedResources.messageDriven>
<#items as mdb>
<@processTxTimeout mdb />
<@processPool mdb />
Expand All @@ -135,4 +135,4 @@
</assembly-descriptor>


</jboss:ejb-jar>
</jboss:ejb-jar>

0 comments on commit 13d8ea9

Please sign in to comment.