blob: b3a197abeaad5842af0e744912587546a9469360 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="chedirfactories, chedir, factories">
<title>Factories JSON Reference | Eclipse Che Documentation</title>
<link rel="stylesheet" href="css/syntax.css">
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
<!--<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">-->
<link rel="stylesheet" href="css/modern-business.css">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="css/customstyles.css">
<link rel="stylesheet" href="css/boxshadowproperties.css">
<!-- most color styles are extracted out to here -->
<link rel="stylesheet" href="css/theme-che.css">
<link rel="stylesheet" href="/css/coderay.css" media="screen" type="text/css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" crossorigin="anonymous"></script>
<script src="js/jquery.navgoco.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- Anchor.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js" crossorigin="anonymous"></script>
<script src="js/toc.js"></script>
<script src="js/customscripts.js"></script>
<link rel="shortcut icon" href="che/docs/images/favicon.ico">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<link rel="alternate" type="application/rss+xml" title="che" href="http://0.0.0.0:4000/feed.xml">
<script>
$(document).ready(function() {
// Initialize navgoco with default options
$("#mysidebar").navgoco({
caretHtml: '',
accordion: true,
openClass: 'active', // open
save: false, // leave false or nav highlighting doesn't work right
cookie: {
name: 'navgoco',
expires: false,
path: '/'
},
slide: {
duration: 400,
easing: 'swing'
}
});
$("#collapseAll").click(function(e) {
e.preventDefault();
$("#mysidebar").navgoco('toggle', false);
});
$("#expandAll").click(function(e) {
e.preventDefault();
$("#mysidebar").navgoco('toggle', true);
});
});
</script>
<script>
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
</script>
<script>
$(document).ready(function() {
$("#tg-sb-link").click(function() {
$("#tg-sb-sidebar").toggle();
$("#tg-sb-content").toggleClass('col-md-9');
$("#tg-sb-content").toggleClass('col-md-12');
$("#tg-sb-icon").toggleClass('fa-toggle-on');
$("#tg-sb-icon").toggleClass('fa-toggle-off');
});
});
</script>
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container topnavlinks">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="fa fa-home fa-lg navbar-brand" href="index.html">&nbsp;<span class="projectTitle"> Eclipse Che Documentation</span></a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<!-- toggle sidebar button -->
<li><a id="tg-sb-link" href="#"><i id="tg-sb-icon" class="fa fa-toggle-on"></i> Nav</a></li>
<!-- entries without drop-downs appear here -->
<li><a href="https://medium.com/eclipse-che-blog/" target="_blank">Blog</a></li>
<li><a href="https://github.com/eclipse/che" target="_blank">Source Code</a></li>
<!-- entries with drop-downs appear here -->
<!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Support<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="https://github.com/eclipse/che/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Akind%2Fbug" target="_blank">Known Bugs</a></li>
<li><a href="https://github.com/eclipse/che/issues/new" target="_blank">File an Issue</a></li>
<li><a href="https://stackoverflow.com/questions/tagged/eclipse-che" target="_blank">Che on StackOverflow</a></li>
</ul>
</li>
<!--
<li>
<a class="email" title="Submit feedback" href="#" onclick="javascript:window.location='mailto:?subject= feedback&body=I have some feedback about the Factories JSON Reference page: ' + window.location.href;"><i class="fa fa-envelope-o"></i> Feedback</a>
</li>
-->
<!--comment out this block if you want to hide search-->
<li>
<!--start search-->
<div id="search-demo-container">
<input type="text" id="search-input" placeholder="search...">
<ul id="results-container"></ul>
</div>
<script src="js/jekyll-search.js" type="text/javascript"></script>
<script type="text/javascript">
SimpleJekyllSearch.init({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
dataSource: 'search.json',
searchResultTemplate: '<li><a href="{url}" title="Factories JSON Reference">{title}</a></li>',
noResultsText: 'No results found.',
limit: 10,
fuzzy: true,
})
</script>
<!--end search-->
</li>
</ul>
</div>
</div>
<!-- /.container -->
</nav>
<!-- Page Content -->
<div class="container">
<div id="main">
<!-- Content Row -->
<div class="row">
<!-- Sidebar Column -->
<div class="col-md-3" id="tg-sb-sidebar">
<ul id="mysidebar" class="nav">
<li class="sidebarTitle"> </li>
<li>
<a href="#">Overview</a>
<ul>
<li><a href="index.html">Introduction</a></li>
<li><a href="quick-start.html">Getting Started</a></li>
<li><a href="single-multi-user.html">Single and Multi-User Flavors</a></li>
<li><a href="infra-support.html">Supported Infrastructures</a></li>
</ul>
</li>
<li>
<a href="#">Che on Docker</a>
<ul>
<li><a href="docker-single-user.html">Docker - Single User</a></li>
<li><a href="docker-multi-user.html">Docker - Multi User</a></li>
<li><a href="docker-config.html">Docker - Configuration</a></li>
<li><a href="docker-cli.html">Docker - CLI Reference</a></li>
</ul>
</li>
<li>
<a href="#">Che on Kubernetes</a>
<ul>
<li><a href="kubernetes-single-user.html">Kubernetes - Single User</a></li>
<li><a href="kubernetes-multi-user.html">Kubernetes - Multi User</a></li>
<li><a href="kubernetes-config.html">Kubernetes - Configuration</a></li>
<li><a href="kubernetes-admin-guide.html">Kubernetes - Admin Guide</a></li>
</ul>
</li>
<li>
<a href="#">Che on OpenShift</a>
<ul>
<li><a href="openshift-single-user.html">OpenShift - Single User</a></li>
<li><a href="openshift-multi-user.html">OpenShift - Multi User</a></li>
<li><a href="openshift-config.html">OpenShift - Configuration</a></li>
<li><a href="openshift-admin-guide.html">OpenShift - Admin Guide</a></li>
</ul>
</li>
<li>
<a href="#">User Management</a>
<ul>
<li><a href="user-management.html">Authentication and Authorization</a></li>
<li><a href="authentication.html">Security Model</a></li>
<li><a href="permissions.html">Permissions</a></li>
<li><a href="organizations.html">Organizations in UD</a></li>
<li><a href="resource-management.html">Resource Management</a></li>
</ul>
</li>
<li>
<a href="#">User Guides</a>
<ul>
<li><a href="creating-starting-workspaces.html">Creating and starting Workspaces</a></li>
<li><a href="ide-projects.html">Projects</a></li>
<li><a href="editor-code-assistance.html">Editor and Code-Assistance</a></li>
<li><a href="dependency-management.html">Dependency Management</a></li>
<li><a href="commands-ide-macro.html">Commands and IDE Macros</a></li>
<li><a href="version-control.html">Version Control</a></li>
<li><a href="debug.html">Debug</a></li>
</ul>
</li>
<li>
<a href="#">Workspace Administration</a>
<ul>
<li><a href="what-are-workspaces.html">Workspace Overview</a></li>
<li><a href="stacks.html">Workspace - Stacks</a></li>
<li><a href="recipes.html">Workspace - Recipes</a></li>
<li><a href="servers.html">Workspace - Servers</a></li>
<li><a href="installers.html">Workspace - Installers</a></li>
<li><a href="volumes.html">Workspace - Volumes Mount</a></li>
<li><a href="env-variables.html">Workspace - Environment Variables</a></li>
<li><a href="projects.html">Workspace - Projects</a></li>
<li><a href="workspaces-troubleshooting.html">Workspace - Troubleshooting</a></li>
<li><a href="workspace-data-model.html">Workspace Data Model</a></li>
</ul>
</li>
<li>
<a href="#">Portable Workspaces</a>
<ul>
<li><a href="chedir-getting-started.html">Chedir - Getting Started</a></li>
<li><a href="why-chedir.html">Chedir - Why Chedir?</a></li>
<li><a href="chedir-installation.html">Chedir - Installation</a></li>
<li><a href="chedir-project-setup.html">Chedir - Project Setup</a></li>
<li><a href="chedir-up-and-down.html">Chedir - Up and Down</a></li>
<li><a href="chefile.html">Chedir - Chefile</a></li>
<li><a href="chedir-ssh.html">Chedir - SSH</a></li>
<li><a href="factories-getting-started.html">Factory - Getting Started</a></li>
<li><a href="creating-factories.html">Factory - Creating</a></li>
<li class="active"><a href="factories_json_reference.html">Factory - JSON Reference</a></li>
</ul>
</li>
<li>
<a href="#">Developer Guides</a>
<ul>
<li><a href="framework-overview.html">Overview</a></li>
<li><a href="rest-api.html">SDK - REST API</a></li>
<li><a href="che-in-che-quickstart.html">SDK - Your First Plugin</a></li>
<li><a href="build-reqs.html">SDK - Building Che</a></li>
<li><a href="assemblies.html">SDK - Assemblies</a></li>
<li><a href="logging.html">SDK - Logging</a></li>
<li><a href="ide-extensions-gwt.html">SDK - GWT IDE Extensions</a></li>
<li><a href="server-side-extensions.html">SDK - Server Side Extensions</a></li>
<li><a href="custom-installers.html">SDK - Installers</a></li>
<li><a href="project-types.html">SDK - Project Types</a></li>
<li><a href="language-servers.html">SDK - Language Support</a></li>
<li><a href="parts.html">IDE UI&#58 Parts</a></li>
<li><a href="actions.html">IDE UI&#58 Actions</a></li>
</ul>
</li>
<li>
<a href="#">Dev Essentials</a>
<ul>
<li><a href="guice.html">Dependency Injection</a></li>
<li><a href="dto.html">Transport&#58 DTO</a></li>
<li><a href="json-rpc.html">Communication&#58 JSON-RPC</a></li>
<li><a href="handling-projects-in-plugins.html">Handling Projects in Plugins</a></li>
<li><a href="dao.html">Persistence, DAO</a></li>
<li><a href="properties.html">Properties</a></li>
</ul>
</li>
<li>
<a href="#">Infrastructure and SPI</a>
<ul>
<li><a href="spi_overview.html">Overview</a></li>
<li><a href="spi-implementation.html">Implementation Notes</a></li>
</ul>
</li>
<!-- if you aren't using the accordion, uncomment this block:
<p class="external">
<a href="#" id="collapseAll">Collapse All</a> | <a href="#" id="expandAll">Expand All</a>
</p>
-->
</ul>
<!-- this highlights the active parent class in the navgoco sidebar. this is critical so that the parent expands when you're viewing a page. This must appear below the sidebar code above. Otherwise, if placed inside customscripts.js, the script runs before the sidebar code runs and the class never gets inserted.-->
<script>$("li.active").parents('li').toggleClass("active");</script>
</div>
<!-- Content Column -->
<div class="col-md-9" id="tg-sb-content">
<div class="post-header">
<h1 class="post-title-main">Factories JSON Reference</h1>
</div>
<div class="post-content">
<!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
<script>
$( document ).ready(function() {
// Handler for .ready() called.
$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2' });
/* this offset helps account for the space taken up by the floating toolbar. */
$('#toc').on('click', 'a', function() {
var target = $(this.getAttribute('href'))
, scroll_target = target.offset().top
$(window).scrollTop(scroll_target - 10);
return false
})
});
</script>
<div id="toc"></div>
<!--
-->
<div class="sect1">
<h2 id="overview">Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A Factory configuration is a JSON snippet either stored within Che or as a <code>.factory.json</code> file. You can create Factories within the IDE using our URL syntax, within the dashboard, or on the command line with the API and CLI.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json"><span class="error">f</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">v</span><span class="delimiter">&quot;</span></span> : <span class="float">4.0</span>, <span class="error">/</span><span class="error">/</span> <span class="error">V</span><span class="error">e</span><span class="error">r</span><span class="error">s</span><span class="error">i</span><span class="error">o</span><span class="error">n</span> <span class="error">o</span><span class="error">f</span> <span class="error">c</span><span class="error">o</span><span class="error">n</span><span class="error">f</span><span class="error">i</span><span class="error">g</span><span class="error">u</span><span class="error">r</span><span class="error">a</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span> <span class="error">f</span><span class="error">o</span><span class="error">r</span><span class="error">m</span><span class="error">a</span><span class="error">t</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">workspace</span><span class="delimiter">&quot;</span></span> : {}, <span class="error">/</span><span class="error">/</span> <span class="error">I</span><span class="error">d</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">i</span><span class="error">c</span><span class="error">a</span><span class="error">l</span> <span class="error">t</span><span class="error">o</span> <span class="error">w</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">s</span><span class="error">p</span><span class="error">a</span><span class="error">c</span><span class="error">e</span>:{} <span class="error">o</span><span class="error">b</span><span class="error">j</span><span class="error">e</span><span class="error">c</span><span class="error">t</span> <span class="error">f</span><span class="error">o</span><span class="error">r</span> <span class="error">E</span><span class="error">c</span><span class="error">l</span><span class="error">i</span><span class="error">p</span><span class="error">s</span><span class="error">e</span> <span class="error">C</span><span class="error">h</span><span class="error">e</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">policies</span><span class="delimiter">&quot;</span></span> : {}, <span class="error">/</span><span class="error">/</span> <span class="error">(</span><span class="error">O</span><span class="error">p</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">a</span><span class="error">l</span><span class="error">)</span> <span class="error">R</span><span class="error">e</span><span class="error">s</span><span class="error">t</span><span class="error">r</span><span class="error">i</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">s</span> <span class="error">t</span><span class="error">h</span><span class="error">a</span><span class="error">t</span> <span class="error">l</span><span class="error">i</span><span class="error">m</span><span class="error">i</span><span class="error">t</span> <span class="error">b</span><span class="error">e</span><span class="error">h</span><span class="error">a</span><span class="error">v</span><span class="error">i</span><span class="error">o</span><span class="error">r</span><span class="error">s</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">ide</span><span class="delimiter">&quot;</span></span> : {}, <span class="error">/</span><span class="error">/</span> <span class="error">(</span><span class="error">O</span><span class="error">p</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">a</span><span class="error">l</span><span class="error">)</span> <span class="error">T</span><span class="error">r</span><span class="error">i</span><span class="error">g</span><span class="error">g</span><span class="error">e</span><span class="error">r</span> <span class="error">I</span><span class="error">D</span><span class="error">E</span> <span class="error">U</span><span class="error">I</span> <span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">s</span> <span class="error">t</span><span class="error">i</span><span class="error">e</span><span class="error">d</span> <span class="error">t</span><span class="error">o</span> <span class="error">w</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">s</span><span class="error">p</span><span class="error">a</span><span class="error">c</span><span class="error">e</span> <span class="error">e</span><span class="error">v</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">s</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">creator</span><span class="delimiter">&quot;</span></span> : {}, <span class="error">/</span><span class="error">/</span> <span class="error">(</span><span class="error">O</span><span class="error">p</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">a</span><span class="error">l</span><span class="error">)</span> <span class="error">I</span><span class="error">d</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">i</span><span class="error">f</span><span class="error">y</span><span class="error">i</span><span class="error">n</span><span class="error">g</span> <span class="error">i</span><span class="error">n</span><span class="error">f</span><span class="error">o</span><span class="error">r</span><span class="error">m</span><span class="error">a</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span> <span class="error">o</span><span class="error">f</span> <span class="error">a</span><span class="error">u</span><span class="error">t</span><span class="error">h</span><span class="error">o</span><span class="error">r</span>
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>The <code>factory.workspace</code> is identical to the <code>workspace:{}</code> object for Eclipse Che and contains the structure of the workspace. Learn more about <a href="workspace-data-model.html">the workspace JSON object</a>.</p>
</div>
<div class="paragraph">
<p>You can export Che workspaces and then reuse the workspace definition within a Factory. Che workspaces are composed of:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>0..n projects</p>
</li>
<li>
<p>0..n environments which contain machines to run the code</p>
</li>
<li>
<p>0..n commands to execute against the code and machines</p>
</li>
<li>
<p>a type</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The <code>factory.policies</code>, <code>factory.ide</code> and <code>factory.creator</code> objects are unique to Factories. They provide meta information to the automation engine that alter the presentation of the Factory URL or the behavior of the provisioning.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="mixins">Mixins</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A mixin adds additional behaviors to a project as a set of new project type attributes. Mixins are reusable across any project type. You define the mixins to add to a project by specifying an array of strings, with each string containing the identifier for the mixin. For example, <code>"mixins" : [ "pullrequest" ]</code>.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Mixin ID</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>pullrequest</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables pull request workflow where Che handles local &amp; remote branching, forking, and pull request issuance. Pull requests generated from within Che have another Factory placed into the comments of pull requests that a PR reviewer can consume. Adds contribution panel to the IDE. If this mixin is set, then it uses attribute values for <code>project.attributes.local_branch</code> and <code>project.attributes.contribute_to_branch</code>.<br></p></td>
</tr>
</tbody>
</table>
<div class="ulist">
<ul>
<li>
<p>The <code>pullrequest</code> mixin requires additional configuration from the <code>attributes</code> object of the project. If present, Che will use the project attributes as defined in the Factory. If not provided, Che will set defaults for the attributes.<br></p>
</li>
<li>
<p>Learn more about other link:TODO: link to project API docs[mixins]</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="pull-request-mixin-attributes">Pull Request Mixin Attributes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Project attributes alter the behavior of the IDE or workspace.</p>
</div>
<div class="paragraph">
<p>Different Eclipse Che and Codenvy plug-ins can add their own attributes to affect the behavior for the system. Attribute configuration is always optional and if not provided within a Factory definition, the system will set itself.</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Attribute</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>local_branch</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Used in conjunction with the <code>pullrequest</code> mixin. If provided, the local branch for the project is set with this value. If not provided, then the local branch is set with the value of <code>project.source.parameters.branch</code> (the name of the branch from the remote). If <code>local_branch</code> and <code>project.source.parameters.branch</code> are both not provided, then the local branch is set to the name of the checked out branch.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>contribute_to_branch</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Name of the branch that a pull request will be contributed to. Default is the value of <code>project.source.parameters.branch</code>, which is the name of the branch this project was cloned from.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>*</p>
</div>
<div class="paragraph">
<p>Here is a snippet that demonstrates full configuration of the contribution mixin.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json"><span class="error">f</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span><span class="error">.</span><span class="error">w</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">s</span><span class="error">p</span><span class="error">a</span><span class="error">c</span><span class="error">e</span><span class="error">.</span><span class="error">p</span><span class="error">r</span><span class="error">o</span><span class="error">j</span><span class="error">e</span><span class="error">c</span><span class="error">t</span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">mixins</span><span class="delimiter">&quot;</span></span> : [ <span class="string"><span class="delimiter">&quot;</span><span class="content">pullrequest</span><span class="delimiter">&quot;</span></span> ],
<span class="key"><span class="delimiter">&quot;</span><span class="content">attributes</span><span class="delimiter">&quot;</span></span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">local_branch</span><span class="delimiter">&quot;</span></span> : [ <span class="string"><span class="delimiter">&quot;</span><span class="content">timing</span><span class="delimiter">&quot;</span></span> ],
<span class="key"><span class="delimiter">&quot;</span><span class="content">contribute_to_branch</span><span class="delimiter">&quot;</span></span> : [ <span class="string"><span class="delimiter">&quot;</span><span class="content">master</span><span class="delimiter">&quot;</span></span> ]
},
<span class="key"><span class="delimiter">&quot;</span><span class="content">source</span><span class="delimiter">&quot;</span></span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">type</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">git</span><span class="delimiter">&quot;</span></span>,
<span class="key"><span class="delimiter">&quot;</span><span class="content">location</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">https://github.com/codenvy/che.git</span><span class="delimiter">&quot;</span></span>,
<span class="key"><span class="delimiter">&quot;</span><span class="content">parameters</span><span class="delimiter">&quot;</span></span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">keepVcs</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">true</span><span class="delimiter">&quot;</span></span>
}
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="policies">Policies</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json"><span class="error">f</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span><span class="error">.</span><span class="error">p</span><span class="error">o</span><span class="error">l</span><span class="error">i</span><span class="error">c</span><span class="error">i</span><span class="error">e</span><span class="error">s</span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">referer</span><span class="delimiter">&quot;</span></span> : <span class="error">S</span><span class="error">T</span><span class="error">R</span><span class="error">I</span><span class="error">N</span><span class="error">G</span>, <span class="error">/</span><span class="error">/</span> <span class="error">W</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">s</span> <span class="error">o</span><span class="error">n</span><span class="error">l</span><span class="error">y</span> <span class="error">f</span><span class="error">o</span><span class="error">r</span> <span class="error">c</span><span class="error">l</span><span class="error">i</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">s</span> <span class="error">f</span><span class="error">r</span><span class="error">o</span><span class="error">m</span> <span class="error">r</span><span class="error">e</span><span class="error">f</span><span class="error">e</span><span class="error">r</span><span class="error">e</span><span class="error">r</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">since</span><span class="delimiter">&quot;</span></span> : <span class="error">E</span><span class="error">P</span><span class="error">O</span><span class="error">C</span><span class="error">H</span><span class="error">T</span><span class="error">I</span><span class="error">M</span><span class="error">E</span>, <span class="error">/</span><span class="error">/</span> <span class="error">F</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span> <span class="error">w</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">s</span> <span class="error">o</span><span class="error">n</span><span class="error">l</span><span class="error">y</span> <span class="error">a</span><span class="error">f</span><span class="error">t</span><span class="error">e</span><span class="error">r</span> <span class="error">t</span><span class="error">h</span><span class="error">i</span><span class="error">s</span> <span class="error">d</span><span class="error">a</span><span class="error">t</span><span class="error">e</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">until</span><span class="delimiter">&quot;</span></span> : <span class="error">E</span><span class="error">P</span><span class="error">O</span><span class="error">C</span><span class="error">H</span><span class="error">T</span><span class="error">I</span><span class="error">M</span><span class="error">E</span>, <span class="error">/</span><span class="error">/</span> <span class="error">F</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span> <span class="error">w</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">s</span> <span class="error">o</span><span class="error">n</span><span class="error">l</span><span class="error">y</span> <span class="error">b</span><span class="error">e</span><span class="error">f</span><span class="error">o</span><span class="error">r</span><span class="error">e</span> <span class="error">t</span><span class="error">h</span><span class="error">i</span><span class="error">s</span> <span class="error">d</span><span class="error">a</span><span class="error">t</span><span class="error">e</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">create</span><span class="delimiter">&quot;</span></span> : [<span class="error">p</span><span class="error">e</span><span class="error">r</span><span class="error">C</span><span class="error">l</span><span class="error">i</span><span class="error">c</span><span class="error">k</span> <span class="error">|</span> <span class="error">p</span><span class="error">e</span><span class="error">r</span><span class="error">U</span><span class="error">s</span><span class="error">e</span><span class="error">r</span>] <span class="error">/</span><span class="error">/</span> <span class="error">C</span><span class="error">r</span><span class="error">e</span><span class="error">a</span><span class="error">t</span><span class="error">e</span> <span class="error">o</span><span class="error">n</span><span class="error">e</span> <span class="error">w</span><span class="error">o</span><span class="error">r</span><span class="error">k</span><span class="error">p</span><span class="error">a</span><span class="error">c</span><span class="error">e</span> <span class="error">p</span><span class="error">e</span><span class="error">r</span> <span class="error">c</span><span class="error">l</span><span class="error">i</span><span class="error">c</span><span class="error">k</span>, <span class="error">u</span><span class="error">s</span><span class="error">e</span><span class="error">r</span> <span class="error">o</span><span class="error">r</span> <span class="error">a</span><span class="error">c</span><span class="error">c</span><span class="error">o</span><span class="error">u</span><span class="error">n</span><span class="error">t</span>
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="limitations">Limitations</h2>
<div class="sectionbody">
<div class="paragraph">
<p>You can use <code>since : EPOCHTIME</code>, <code>until : EPOCHTIME</code> and <code>referer</code> as a way to prevent the Factory from executing under certain conditions. <code>since</code> and <code>until</code> represent a valid time window that will allow the Factory to activate. The <code>referer</code> will check the hostname of the acceptor and only allow the Factory to execute if there is a match.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="multiplicity">Multiplicity</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If <code>create : perClick</code> is used, then every click of the Factory URL will generate a new workspace, each with its own identifier, name and resources. If <code>create : perUser</code> is used, then only one workspace will be generated for each unique user that clicks on the Factory URL. If the workspace has previously been generated, we will reopen the existing workspace.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="ide-customization">IDE Customization</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json"><span class="error">f</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span><span class="error">.</span><span class="error">i</span><span class="error">d</span><span class="error">e</span><span class="error">.</span>{<span class="error">e</span><span class="error">v</span><span class="error">e</span><span class="error">n</span><span class="error">t</span>} : { <span class="error">/</span><span class="error">/</span> <span class="error">e</span><span class="error">v</span><span class="error">e</span><span class="error">n</span><span class="error">t</span> <span class="error">=</span> <span class="error">o</span><span class="error">n</span><span class="error">A</span><span class="error">p</span><span class="error">p</span><span class="error">L</span><span class="error">o</span><span class="error">a</span><span class="error">d</span><span class="error">e</span><span class="error">d</span>, <span class="error">o</span><span class="error">n</span><span class="error">P</span><span class="error">r</span><span class="error">o</span><span class="error">j</span><span class="error">e</span><span class="error">c</span><span class="error">t</span><span class="error">s</span><span class="error">L</span><span class="error">o</span><span class="error">a</span><span class="error">d</span><span class="error">e</span><span class="error">d</span>, <span class="error">o</span><span class="error">n</span><span class="error">A</span><span class="error">p</span><span class="error">p</span><span class="error">C</span><span class="error">l</span><span class="error">o</span><span class="error">s</span><span class="error">e</span><span class="error">d</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">actions</span><span class="delimiter">&quot;</span></span> : [{}] <span class="error">/</span><span class="error">/</span> <span class="error">L</span><span class="error">i</span><span class="error">s</span><span class="error">t</span> <span class="error">o</span><span class="error">f</span> <span class="error">I</span><span class="error">D</span><span class="error">E</span> <span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">s</span> <span class="error">t</span><span class="error">o</span> <span class="error">e</span><span class="error">x</span><span class="error">e</span><span class="error">c</span><span class="error">u</span><span class="error">t</span><span class="error">e</span> <span class="error">w</span><span class="error">h</span><span class="error">e</span><span class="error">n</span> <span class="error">e</span><span class="error">v</span><span class="error">e</span><span class="error">n</span><span class="error">t</span> <span class="error">t</span><span class="error">r</span><span class="error">i</span><span class="error">g</span><span class="error">g</span><span class="error">e</span><span class="error">r</span><span class="error">e</span><span class="error">d</span>
}
<span class="error">f</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span><span class="error">.</span><span class="error">i</span><span class="error">d</span><span class="error">e</span><span class="error">.</span>{<span class="error">e</span><span class="error">v</span><span class="error">e</span><span class="error">n</span><span class="error">t</span>}<span class="error">.</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">s</span> : [{
<span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span> : <span class="error">S</span><span class="error">t</span><span class="error">r</span><span class="error">i</span><span class="error">n</span><span class="error">g</span>, <span class="error">/</span><span class="error">/</span> <span class="error">A</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span> <span class="error">f</span><span class="error">o</span><span class="error">r</span> <span class="error">I</span><span class="error">D</span><span class="error">E</span> <span class="error">t</span><span class="error">o</span> <span class="error">p</span><span class="error">e</span><span class="error">r</span><span class="error">f</span><span class="error">o</span><span class="error">r</span><span class="error">m</span> <span class="error">w</span><span class="error">h</span><span class="error">e</span><span class="error">n</span> <span class="error">e</span><span class="error">v</span><span class="error">e</span><span class="error">n</span><span class="error">t</span> <span class="error">t</span><span class="error">r</span><span class="error">i</span><span class="error">g</span><span class="error">g</span><span class="error">e</span><span class="error">r</span><span class="error">e</span><span class="error">d</span>
<span class="error">p</span><span class="error">r</span><span class="error">o</span><span class="error">p</span><span class="error">e</span><span class="error">r</span><span class="error">t</span><span class="error">i</span><span class="error">e</span><span class="error">s</span> : {} <span class="error">/</span><span class="error">/</span> <span class="error">P</span><span class="error">r</span><span class="error">o</span><span class="error">p</span><span class="error">e</span><span class="error">r</span><span class="error">t</span><span class="error">i</span><span class="error">e</span><span class="error">s</span> <span class="error">t</span><span class="error">o</span> <span class="error">c</span><span class="error">u</span><span class="error">s</span><span class="error">t</span><span class="error">o</span><span class="error">m</span><span class="error">i</span><span class="error">z</span><span class="error">e</span> <span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span> <span class="error">b</span><span class="error">e</span><span class="error">h</span><span class="error">a</span><span class="error">v</span><span class="error">i</span><span class="error">o</span><span class="error">r</span>
}]</code></pre>
</div>
</div>
<div class="paragraph">
<p>You can instruct the Factory to invoke a series of IDE actions based upon events in the lifecycle of the workspace.</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>onAppLoaded</code></dt>
<dd>
<p>Triggered when the IDE is loaded.</p>
</dd>
<dt class="hdlist1"><code>onProjectsLoaded</code></dt>
<dd>
<p>Triggered when the workspace and all projects have been activated/imported.</p>
</dd>
<dt class="hdlist1"><code>onAppClosed</code></dt>
<dd>
<p>Triggered when the IDE is closed.</p>
</dd>
</dl>
</div>
<div class="paragraph">
<p>This is an example that associates a variety of actions with all of the events.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json"><span class="key"><span class="delimiter">&quot;</span><span class="content">ide</span><span class="delimiter">&quot;</span></span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">onProjectsLoaded</span><span class="delimiter">&quot;</span></span> : { <span class="error">/</span><span class="error">/</span> <span class="error">A</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">s</span> <span class="error">t</span><span class="error">r</span><span class="error">i</span><span class="error">g</span><span class="error">g</span><span class="error">e</span><span class="error">r</span><span class="error">e</span><span class="error">d</span> <span class="error">w</span><span class="error">h</span><span class="error">e</span><span class="error">n</span> <span class="error">a</span> <span class="error">p</span><span class="error">r</span><span class="error">o</span><span class="error">j</span><span class="error">e</span><span class="error">c</span><span class="error">t</span> <span class="error">i</span><span class="error">s</span> <span class="error">o</span><span class="error">p</span><span class="error">e</span><span class="error">n</span><span class="error">e</span><span class="error">d</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">actions</span><span class="delimiter">&quot;</span></span> : [{
<span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">openFile</span><span class="delimiter">&quot;</span></span>, <span class="error">/</span><span class="error">/</span> <span class="error">O</span><span class="error">p</span><span class="error">e</span><span class="error">n</span><span class="error">s</span> <span class="error">a</span> <span class="error">f</span><span class="error">i</span><span class="error">l</span><span class="error">e</span> <span class="error">i</span><span class="error">n</span> <span class="error">e</span><span class="error">d</span><span class="error">i</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">.</span> <span class="error">C</span><span class="error">a</span><span class="error">n</span> <span class="error">a</span><span class="error">d</span><span class="error">d</span> <span class="error">m</span><span class="error">u</span><span class="error">l</span><span class="error">t</span><span class="error">i</span><span class="error">p</span><span class="error">l</span><span class="error">e</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span> : { <span class="error">/</span><span class="error">/</span> <span class="error">T</span><span class="error">h</span><span class="error">e</span> <span class="error">f</span><span class="error">i</span><span class="error">l</span><span class="error">e</span> <span class="error">t</span><span class="error">o</span> <span class="error">o</span><span class="error">p</span><span class="error">e</span><span class="error">n</span> <span class="error">(</span><span class="error">i</span><span class="error">n</span><span class="error">c</span><span class="error">l</span><span class="error">u</span><span class="error">d</span><span class="error">e</span> <span class="error">p</span><span class="error">r</span><span class="error">o</span><span class="error">j</span><span class="error">e</span><span class="error">c</span><span class="error">t</span> <span class="error">n</span><span class="error">a</span><span class="error">m</span><span class="error">e</span><span class="error">)</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">file</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">/my-project/pom.xml</span><span class="delimiter">&quot;</span></span>
}
},
{
<span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">runCommand</span><span class="delimiter">&quot;</span></span>, <span class="error">/</span><span class="error">/</span> <span class="error">L</span><span class="error">a</span><span class="error">u</span><span class="error">n</span><span class="error">c</span><span class="error">h</span> <span class="error">c</span><span class="error">o</span><span class="error">m</span><span class="error">m</span><span class="error">a</span><span class="error">n</span><span class="error">d</span> <span class="error">a</span><span class="error">f</span><span class="error">t</span><span class="error">e</span><span class="error">r</span> <span class="error">I</span><span class="error">D</span><span class="error">E</span> <span class="error">o</span><span class="error">p</span><span class="error">e</span><span class="error">n</span><span class="error">s</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">MCI</span><span class="delimiter">&quot;</span></span> <span class="error">/</span><span class="error">/</span> <span class="error">C</span><span class="error">o</span><span class="error">m</span><span class="error">m</span><span class="error">a</span><span class="error">n</span><span class="error">d</span> <span class="error">n</span><span class="error">a</span><span class="error">m</span><span class="error">e</span>
}
}
]},
<span class="key"><span class="delimiter">&quot;</span><span class="content">onAppLoaded</span><span class="delimiter">&quot;</span></span>: {
<span class="key"><span class="delimiter">&quot;</span><span class="content">actions</span><span class="delimiter">&quot;</span></span>: [
{
<span class="string"><span class="delimiter">&quot;</span><span class="content">properties:{
</span><span class="delimiter">&quot;</span></span><span class="error">g</span><span class="error">r</span><span class="error">e</span><span class="error">e</span><span class="error">t</span><span class="error">i</span><span class="error">n</span><span class="error">g</span><span class="error">T</span><span class="error">i</span><span class="error">t</span><span class="error">l</span><span class="error">e</span><span class="string"><span class="delimiter">&quot;</span><span class="content">: </span><span class="delimiter">&quot;</span></span><span class="error">G</span><span class="error">e</span><span class="error">t</span><span class="error">t</span><span class="error">i</span><span class="error">n</span><span class="error">g</span> <span class="error">S</span><span class="error">t</span><span class="error">a</span><span class="error">r</span><span class="error">t</span><span class="error">e</span><span class="error">d</span><span class="string"><span class="delimiter">&quot;</span><span class="content">, // Title of a Welcome tab
</span><span class="delimiter">&quot;</span></span><span class="error">g</span><span class="error">r</span><span class="error">e</span><span class="error">e</span><span class="error">t</span><span class="error">i</span><span class="error">n</span><span class="error">g</span><span class="error">C</span><span class="error">o</span><span class="error">n</span><span class="error">t</span><span class="error">e</span><span class="error">n</span><span class="error">t</span><span class="error">U</span><span class="error">r</span><span class="error">l</span><span class="string"><span class="delimiter">&quot;</span><span class="content">: </span><span class="delimiter">&quot;</span></span><span class="error">h</span><span class="error">t</span><span class="error">t</span><span class="error">p</span>:<span class="error">/</span><span class="error">/</span><span class="error">e</span><span class="error">x</span><span class="error">a</span><span class="error">m</span><span class="error">p</span><span class="error">l</span><span class="error">e</span><span class="error">.</span><span class="error">c</span><span class="error">o</span><span class="error">m</span><span class="error">/</span><span class="error">R</span><span class="error">E</span><span class="error">A</span><span class="error">D</span><span class="error">M</span><span class="error">E</span><span class="error">.</span><span class="error">h</span><span class="error">t</span><span class="error">m</span><span class="error">l</span><span class="string"><span class="delimiter">&quot;</span><span class="content"> // HTML to be loaded into a tab
},
</span><span class="delimiter">&quot;</span></span><span class="error">i</span><span class="error">d</span><span class="string"><span class="delimiter">&quot;</span><span class="content">: </span><span class="delimiter">&quot;</span></span><span class="error">o</span><span class="error">p</span><span class="error">e</span><span class="error">n</span><span class="error">W</span><span class="error">e</span><span class="error">l</span><span class="error">c</span><span class="error">o</span><span class="error">m</span><span class="error">e</span><span class="error">P</span><span class="error">a</span><span class="error">g</span><span class="error">e</span><span class="string"><span class="delimiter">&quot;</span><span class="content">
}
]
},
</span><span class="delimiter">&quot;</span></span><span class="error">o</span><span class="error">n</span><span class="error">A</span><span class="error">p</span><span class="error">p</span><span class="error">C</span><span class="error">l</span><span class="error">o</span><span class="error">s</span><span class="error">e</span><span class="error">d</span><span class="string"><span class="delimiter">&quot;</span><span class="content"> : { // Actions to be triggered when IDE is closed
</span><span class="delimiter">&quot;</span></span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span><span class="error">s</span><span class="string"><span class="delimiter">&quot;</span><span class="content"> : [{
</span><span class="delimiter">&quot;</span></span><span class="error">i</span><span class="error">d</span><span class="string"><span class="delimiter">&quot;</span><span class="content"> : </span><span class="delimiter">&quot;</span></span><span class="error">w</span><span class="error">a</span><span class="error">r</span><span class="error">n</span><span class="error">O</span><span class="error">n</span><span class="error">C</span><span class="error">l</span><span class="error">o</span><span class="error">s</span><span class="error">e</span><span class="string"><span class="delimiter">&quot;</span><span class="content"> // Show warning when closing browser tab
}]
}
}</span></span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Each event type has a set of actions that can be triggered. There is no ordering of actions executed when you provide a list; Che will asynchronously invoke multiple actions if appropriate. Some actions can be configured in how they perform and will have an associated <code>properties : {}</code> object.</p>
</div>
<div class="paragraph">
<p><strong>onProjectsLoaded Event</strong></p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 34%;">
<col style="width: 33%;">
<col style="width: 33%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Action</th>
<th class="tableblock halign-left valign-top">Properties?</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>runCommand</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specify the name of the command to invoke after the IDE is loaded. Specify the commands in the <code>factory.workspace.commands : []</code> array.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>openFile</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Open project files as a tab in the editor.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p><strong>onAppLoaded Event</strong></p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 34%;">
<col style="width: 33%;">
<col style="width: 33%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Action</th>
<th class="tableblock halign-left valign-top">Properties?</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>openWelcomePage</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Customize the content of the welcome panel when the workspace is loaded. Note that browsers block http resources that are loaded into https pages.</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p><strong>onAppClosed Event</strong></p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 34%;">
<col style="width: 33%;">
<col style="width: 33%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Action</th>
<th class="tableblock halign-left valign-top">Properties?</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>warnOnClose</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Opens a warning popup when the user closes the browser tab with a project that has uncommitted changes. Requires <code>project.parameters.keepVcs</code> to be <code>true</code>.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="action-open-file">Action: Open File</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This action will open a file as a tab in the editor. You can provide this action multiple times to have multiple files open. The file property is a relative reference to a file in the project’s source tree. The <code>file</code> parameter is the relative path within the workspace to the file that should be opened by the editor. The <code>line</code> parameter is optional and can be used to move the editor cursor to a specific line when the file is opened. Note that projects are located in the workspaces <code>/projects</code> folder.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json">{
<span class="key"><span class="delimiter">&quot;</span><span class="content">id</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">openFile</span><span class="delimiter">&quot;</span></span>,
<span class="key"><span class="delimiter">&quot;</span><span class="content">properties</span><span class="delimiter">&quot;</span></span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">file</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">/my-project/pom.xml</span><span class="delimiter">&quot;</span></span>,
<span class="key"><span class="delimiter">&quot;</span><span class="content">line</span><span class="delimiter">&quot;</span></span> : <span class="string"><span class="delimiter">&quot;</span><span class="content">50</span><span class="delimiter">&quot;</span></span>
}
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="action-find-and-replace">Action: Find and Replace</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If you create a project from a factory, you can have Che perform a find / replace on values in the imported source code after it is imported into the project tree. This essentially lets you parameterize your source code. Find and replace can be run as a <strong>Run Command</strong> during <code>onProjectsLoaded</code> event. You can use <code>sed</code>, <code>awk</code> or any other tools that are available in your workspace environment.</p>
</div>
<div class="paragraph">
<p>Define a command for your workspace in <code>factory.workspace.workspaceConfig.commands</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>{
"commandLine": "sed -i 's/***/userId984hfy6/g' /projects/console-java-simple/README.md",
"name": "replace",
"attributes": {
"goal": "Common",
"previewUrl": ""
},
"type": "custom"
}</pre>
</div>
</div>
<div class="paragraph">
<p>In this example, we have created a named command <code>replace</code> which replaces <code><strong>*</strong></code> with a string in project’s README.md.</p>
</div>
<div class="paragraph">
<p>Then register this command to the execution list linked to <code>onProjectsLoaded</code> event. In this example, <code>replace</code> command is executed after project is imported into a workspace:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>"ide": {
"onProjectsLoaded": {
"actions": [
{
"properties": {
"name": "replace"
},
"id": "runCommand"
}
]
}
}</pre>
</div>
</div>
<div class="paragraph">
<p>Use <a href="https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html">regular expressions</a> in sed, both in find/replace and file/file types patterns.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="creator">Creator</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This object has meta information that you can embed within the Factory. These attributes do not affect the automation behavior or the behavior of the generated workspace.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="json"><span class="error">f</span><span class="error">a</span><span class="error">c</span><span class="error">t</span><span class="error">o</span><span class="error">r</span><span class="error">y</span><span class="error">.</span><span class="error">c</span><span class="error">r</span><span class="error">e</span><span class="error">a</span><span class="error">t</span><span class="error">o</span><span class="error">r</span> : {
<span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span> : <span class="error">S</span><span class="error">T</span><span class="error">R</span><span class="error">I</span><span class="error">N</span><span class="error">G</span>, <span class="error">/</span><span class="error">/</span> <span class="error">N</span><span class="error">a</span><span class="error">m</span><span class="error">e</span> <span class="error">o</span><span class="error">f</span> <span class="error">a</span><span class="error">u</span><span class="error">t</span><span class="error">h</span><span class="error">o</span><span class="error">r</span> <span class="error">o</span><span class="error">f</span> <span class="error">t</span><span class="error">h</span><span class="error">i</span><span class="error">s</span> <span class="error">c</span><span class="error">o</span><span class="error">n</span><span class="error">f</span><span class="error">i</span><span class="error">g</span><span class="error">u</span><span class="error">r</span><span class="error">a</span><span class="error">t</span><span class="error">i</span><span class="error">o</span><span class="error">n</span> <span class="error">f</span><span class="error">i</span><span class="error">l</span><span class="error">e</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">email</span><span class="delimiter">&quot;</span></span> : <span class="error">S</span><span class="error">T</span><span class="error">R</span><span class="error">I</span><span class="error">N</span><span class="error">G</span>, <span class="error">/</span><span class="error">/</span> <span class="error">E</span><span class="error">m</span><span class="error">a</span><span class="error">i</span><span class="error">l</span> <span class="error">a</span><span class="error">d</span><span class="error">d</span><span class="error">r</span><span class="error">e</span><span class="error">s</span><span class="error">s</span> <span class="error">o</span><span class="error">f</span> <span class="error">a</span><span class="error">u</span><span class="error">t</span><span class="error">h</span><span class="error">o</span><span class="error">r</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span> : <span class="error">E</span><span class="error">P</span><span class="error">O</span><span class="error">C</span><span class="error">H</span><span class="error">T</span><span class="error">I</span><span class="error">M</span><span class="error">E</span>, <span class="error">/</span><span class="error">/</span> <span class="error">S</span><span class="error">e</span><span class="error">t</span> <span class="error">b</span><span class="error">y</span> <span class="error">t</span><span class="error">h</span><span class="error">e</span> <span class="error">s</span><span class="error">y</span><span class="error">s</span><span class="error">t</span><span class="error">e</span><span class="error">m</span>
<span class="key"><span class="delimiter">&quot;</span><span class="content">userId</span><span class="delimiter">&quot;</span></span> : <span class="error">S</span><span class="error">T</span><span class="error">R</span><span class="error">I</span><span class="error">N</span><span class="error">G</span> <span class="error">/</span><span class="error">/</span> <span class="error">S</span><span class="error">e</span><span class="error">t</span> <span class="error">b</span><span class="error">y</span> <span class="error">t</span><span class="error">h</span><span class="error">e</span> <span class="error">s</span><span class="error">y</span><span class="error">s</span><span class="error">t</span><span class="error">e</span><span class="error">m</span>
}</code></pre>
</div>
</div>
</div>
</div>
<div class="tags">
<b>Tags: </b>
<a href="tag_chedir.html" class="btn btn-default navbar-btn cursorNorm" role="button">chedir</a>
<a href="tag_factories.html" class="btn btn-default navbar-btn cursorNorm" role="button">factories</a>
</div>
<!--
-->
</div>
<hr class="shaded"/>
<footer>
<div class="row">
<div class="col-lg-12 footer">
Eclipse Che - Documentation <br/>
Site last generated: Sep 13, 2018 <br/>
<hr>
<a href="http://www.eclipse.org" target="_blank">Eclipse Foundation</a><br/>
<a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a><br/>
<a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a><br/>
<a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank">Eclipse Public License</a><br/>
<a href="http://www.eclipse.org/legal" target="_blank">Legal Resources</a><br/>
</div>
</div>
</footer>
<!-- /.row -->
</div>
<!-- /.container -->
</div>
<!-- /#main -->
</div>
</body>
</html>