What's New in Intershop Studio 4.4.0

1 Introduction

The most noticable change of this release is the new branding of Intershop Studio.
Besides this there are a lot of smart modifications that facilitate working with the Intershop Studio IDE.

2 New Branding

2.1 Splash Screen

A new splash screen is available:

2.2 Welcome Screen

The newly designed Welcome looks as follows:


3 Support for
Continuous Integration

3.1 Development Home Preference

Use the environment script of the developers home or the developer home folder to configure Intershop Studio.

The developers home script is usually called gradle_environment.(bat|sh). It is used to compute the necessary environment variables.

3.2 Refresh Gradle Dependencies

The command (action): Refresh Gradle Dependencies allows to refresh the dependencies of cartridges.

The action is located in the menu Project. Alternatively you can call it from the context menu.

A dialog allows to select multiple cartridges in order to allow batch processing of such dependencies.

If the dependency of cartridges changed the class pathes will be refreshed accordingly.

3.3 Java Extension Points

Java extension points are now available not only for source cartridges but also for server and Gradle repository cartridges.

They are now also displayed in the Cartridge Explorer.

3.3.1 Terminal View

Some actions and tools are available as a plug-in and need to be performed in a shell or terminal. This view allows to open local as well as remote shells and terminals.

Intershop Studio provides an access to your system terminal directly from within the IDE and helps you to stay focused on you development tasks.

A special shell Intershop Developer Shell is avaiable that automatically uses the developer home folder and is set up using an gradle_enviroment script.

Open View 'Terminals':

Create 'Intershop Developer Shell':

3.4 Gradle Model View

The Gradle Model View (Window | Show View... | Intershop | Gradle Model) displays Gradle projects.

It shows details about the hierarchy, tasks, and dependencies. These information are used to compute class paath containers and cartridge inter dependencies.


4 REST Service
View and

4.1 REST JAX-RS Services in Cartridge Documentation

The cartridge documentation now contains REST services.

To create a documentation you can use the export wizard Cartridge API Model, Documentation and Usage Reports.

Open the export wizard from Cartridge Explorer:

Select HTML export:

The Javadoc like documentation of cartridge artifacts:

4.2 REST JAX-RS Services View

The REST JAX-RS Services View shows resources and services that contribute to Intershop REST-based Synaptic API.

Developers can see details about paths, parameters, return values, supported mime-types and others.

Services grouped by their path:

Showing services provided by resources:

4.2.1 Resource Object Parameters

The details area of the view shows samples and schema information for RO types, if available.

Developers can use such schema information in order to create Java stubs.

The examples are also handy when using the JSON services.

JSON Example of type ContactRO:

JSON Schema information of ContactRO:

XSD of ContactRO opened in an XSD editor:

5 Improved Handling
of ISML Templates

5.1 Hyperlink for ISML Templates in Build Console

ISML templates are processed from the build tools.

Now a hyperlink is available to open erroneous ISML files reported by the ISML2JSP compiler.

5.2 Template with Content of Overridden Template

When creating an ISML template you may override an existing one using the 'Override Existing...' button.

Now you can use the existing content as initial content for the new template.

6 Clarity of Pipelines

6.1 Quick Fix for Missing Description Problem

A quick fix is available for the problem type Missing Description.

No big deal: It just provides a dialog to enter a comment.

6.2 Pipeline Node Appearance Enhancements

The appearance of pipeline nodes has been enhanced.

Connectors now can have labels and their own image and the node icon of the node can be changed.

In order to change the icon of a node the description annotation @Icon or Icon attribute can be used.

Following example would use: pipelet_icons/pipelet_smile.png that needs to be located in the cartridges content folder:

 * A pipelet that shows emotion dependent on its configuration.
@PipelineNode(attributes = {
                @Attribute(name = "NodeType", value = "Decision"),
                @Attribute(name = "Label", value = "${Configuration[\"mood\"].value:Pipelet.Configuration[\"mood\"].description}"),
                @Attribute(name = "MinorLabel", value = "*++++*"),
                @Attribute(name = "CartridgeLabel", value = "[Cartridge: <b>${Pipelet.Cartridge.label}</b>]"),
                @Attribute(name = "Image", value = "pipelet_icons/pipelet_yellow.svg"),
                @Attribute(name = "DecorationImages", value = "${equals(Configuration[\"mood\"].value,\"angry\")?\"pipelet_icons/angry.svg\":equals(Configuration[\"mood\"].value,\"happy\")?\"pipelet_icons/happy.svg\":\"pipelet_icons/indifferent.svg\"}"),
                @Attribute(name = "DirectEditProperty", value = "mood"),
                @Attribute(name = "PipelineType", value = "view"),
                @Attribute(name = "Icon", value = "pipelet_icons/pipelet_smile.png"),

Now the pipeline node would be displayed using this icon. E.g. it would look as follows in the palette of the Visual Pipeline Editor:

In order to apply a label at a connector the @Label description annotation or Label attribute can be used (here we make use of the (Javadoc) annotation, just for demonstration):

     * @Label Happy!
    @PipelineNodeOutput(name = "Happy")
    private Out happyOut;
    private Out angryOut;

Now the node would be displayed as follows:

You can even make it appear more important because simple HTML is supported:

     * @Label <h2>Happy!</h2>
    @PipelineNodeOutput(name = "Happy")
    private Out happyOut;
    private Out angryOut;

Also SVG graphics are supported. So We created a little star that should be used for the happy output.


If the connector image should rotate dependent on which side of the node it is, the name has to end with Rotatable.

Btw: This is true for node images as well.

6.3 Next Connector Display of Pipeline Call Node

The representation of next (default) connector is made semantically more clear. The former representation might be missleading about the handling of other named connectors.

Now it is more clear that the connector actually handles all possible call node return states except the special handled ones.

6.3.1 Prior Design

Connector Error and A are connected. So, free B as well as next are shown:

6.3.2 New Design

All possible connectors are used. So no next connector is displayed:

Connectors A, Error, and next are connceted. The target of the next transition is the whole connector list:

Connectors next and Error:

7 New Pipeline

7.1 EMF Model Based Pipeline XML

The Visual Pipeline Editor now can edit EMF XML based pipeline files.

Next Intershop versions will support a new XML for pipelines. This format is much more compact and compare/merge friendly.

You can create such new files using: Save as... from the Visual Pipeline Editor. The new name has to end with .pipeline.

7.2 Migration

In order to migrate all pipelines of cartridges an export wizard is available:

In order to also remove the 'old' XML files you should select Remove XML files after export.

8 Pipeline Comparer

8.1 Toolbar Action to Configure How Elements Are Matched in Pipeline Comparer

The most crucial aspect of the model comparing is the matching of elements.

For example, the start nodes of the left pipeline need to be associated with the right one.

A possible strategy to do that is to use the nodeID. This works fine if you compare a history of a pipeline with already existing start nodes.
This requires that a renaming of a start node was properly detected.

But in other cases the start node id would be the wrong property.
E.g., there may be cases in which the name would lead to a much better difference result than node IDs, which actually state the order in which nodes were created.

Intershop Studio now supports different matching strategies.

8.2 Filter for Pipeline Structure Changes in Pipeline Comparer

The Pipeline Comparer now provides an action to ignore pipeline structure related changes (next and before node changes).

9 Testing

9.1 JUnit Cartridge Test Cases Now Consider Field Based Options in JUnit-Rules

JUnit cartridge test cases support paramerizations and options using static Java fields.

These options can be customized in the launch configuration.

This behaviour can now be used in Rule(s) and ClassRules(s) as well.

import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import com.intershop.tools.etest.server.TestCaseLoggerRule;
public class MySimpleTest
    public static TestCaseLoggerRule logger = new TestCaseLoggerRule();
     * A very simple thing :)
    public static String MY_SIMPLE_OPTION = "huch";
    public void mytest() throws Exception
        System.out.println("Loglevel:" + logger.getLevel());
        System.out.println("OPTION_SERVER_NAME:" + MY_SIMPLE_OPTION);
        logger.debug("Hello :)");

This code uses the TestCaseLoggerRule wich provide an option logLevel. You can set up the loglevel as you wish on the tab Test Case Field:

10 Miscellaneous

10.1 File Column in Extension Points View

The Extension Points view now has a column File which displays the file in which the actual element is located.

10.2 Application View Shows Extending Cartridges

Cartridges can extend existing cartridge lists in order to provide additional features for an application type.

These bindings are now not only shown for the cartridge but also for cartridge lists.


The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.

Customer Support
Knowledge Base
Product Resources
Support Tickets