This documentation is not maintained. Please refer to doc.castsoftware.com/technologies to find the latest updates.

Extension Id

com.castsoftware.java.freemarker

What's new?

Please see Apache FreeMarker - 1.0 - Release Notes for more information.

Description

This extension provides support for Apache FreeMarker Framework

In what situation should you install this extension?

If your Java application uses the Apache FreeMarker Framework and you want to view these object types and their links, then you should install this extension. More specifically the extension will identify:

  • "callLink" from HTML source code objects (.ftl and similar files) to CallToFTL objects.
  • "callLink" from CallToFTL objects to Java methods.

Technology support

Component

Version

Supported

Supported Technology

Apache FreeMarker Framework

2.3.x

(tick)JAVA

AIP Core compatibility

This extension is compatible with:

AIP Core release

Supported

8.3.x(tick)

Download and installation instructions

The extension will not be automatically downloaded and installed in CAST Console. If you need to use it, should manually install the extension using the Application - Extensions interface:

What results can you expect?

Once the analysis/snapshot generation is completed, you can view the results. The following objects and  links will be displayed in CAST Enlighten:

Objects

Icon

Description

Java Freemarker FTL Parameter

Java Freemarker FTL Call 

HTML source code

Link Type

Source and destination of link

callLink 

Between HTML source code objects(.ftl and similar files) and CallToFTL objects.

callLinkBetween CallToFTL objects and JAVA methods.
relyonLinkBetween Java Freemarker FTLParameter and its JAVA class

Code Examples

MainTest.java
public static void main(String[] args) throws Exception {

        Configuration cfg = new Configuration();
        String content = null;

        cfg.setClassForTemplateLoading(MainTest.class, "templates");
        cfg.setIncompatibleImprovements(new Version(2, 3, 20));
        cfg.setDefaultEncoding("UTF-8");
        cfg.setLocale(Locale.US);
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

        Map<String, Object> input = new HashMap<String, Object>();

		input.put("title", "Dummy example");

        List<ValueExampleObject> systems = new ArrayList<ValueExampleObject>();
        systems.add(new ValueExampleObject("Android", "Google"));
        systems.add(new ValueExampleObject("iOS States", "Apple"));
        systems.add(new ValueExampleObject("Ubuntu", "Canonical"));
        systems.add(new ValueExampleObject("Windows7", "Microsoft"));
        input.put("systems", systems);

        Cal cal=new Cal();
		input.put("cal", cal);

        input.put("exampleObject", new ValueExampleObject("Java object", "me"));

		Template template = cfg.getTemplate("helloworld.ftl");

        template.process(input, consoleWriter);
}
Cal.java
public class Cal {
	public int add(int a, int b) {
		return a+b;
	}
	
	public int mul(int a, int b) {
		return a*b;
	}
}
helloworld.ftl
<html>
	
	<head>
	  <title>${title}
	</head>
	<body>
	  <h1>${title}</h1>
	
	  <p>${exampleObject.name} by ${exampleObject.developer}</p>
	
	  <ul>
	    <#list systems as system>
	      <li>${system_index + 1}. ${system.name} from ${system.developer}</li>
	    </#list>
	  </ul>
	
	<h1>
		2+3= ${cal.add(2,3)}
		10/2= ${cal.mul(10,2)}
	</h1>

	<#assign multiplied = cal.mul(40,20)>
	
	<h1>${multiplied}</h1>
	</body>
</html>