Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

SMILA/Documentation/Workspace Handling

Some SMILA bundles need a workspace, i.e. a directory in the local file system where they can store temporary or persistent data to. This space should be separated from the configuration directory to make the cleaning up of the workspace (i.e. resetting the application to its initial state) as well as the managing and updating of the configuration easier. To support this bundle org.eclipse.smila.utils provides the class WorkspaceHelper that manages the creation of workspace directories for other bundles.

The complete class name of this helper is org.eclipse.smila.utils.workspace.WorkspaceHelper.

It has basically two methods:

  • java.io.File createWorkingDir(String bundleName): This method ensures the existence of the working directory for the given bundle and creates a File object for it.
  • java.io.File createWorkingDir(String bundleName, String dirName): This method ensures the existence of the directory <dirName> inside the working directory of the named bundle and creates a File object for it.

The actual location of the bundle workspace is configurable as follows:

  1. If for a given bundle there is a system property (or environment variable) <bundleName>.workspace, its value describes the working directory for this bundle.
  2. Else, if there is a system property (or environment variable) org.eclipse.smila.utils.workspace.root, the working directory of a bundle will be <org.eclipse.smila.utils.workspace.root>/<bundleName>.
  3. Else, the working directory will be determined by org.eclipse.core.runtime.Platform.getStateLocation(bundleName). In a default installation this will be $SMILA_HOME/workspace/.metadata/.plugins/<bundleName>.

If both system properties and environment variables are set, the system property takes precedence.

All bundles that need a working directory should use this class, this makes it easier later to change the behavior for all bundles at once if we find a better strategy.

Back to the top