| <!doctype html> |
| <html> |
| <head> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <!-- No caching headers --> |
| <meta http-equiv="cache-control" content="no-cache"> |
| <meta http-equiv="pragma" content="no-cache"> |
| <meta http-equiv="expires" content="-1"> |
| <title>Migration Notes</title> |
| <link rel="icon" type="image/png" href="../images/isis-favicon.png"> |
| <!-- |
| Based on DataNucleus' template, |
| that was in turn based on an earlier version of Apache Isis' template, |
| that was in turn based on Apache Deltaspike's template. |
| |
| This template uses |
| * Bootstrap v3.3.7 (https://getbootstrap.com/) for navbar. |
| * Bootstrap TOC plugin v0.4.1 (https://afeld.github.io/bootstrap-toc/) |
| for the table of contents. |
| * jQuery (necessary for Bootstrap's JavaScript plugins) |
| * Font-Awesome for some icons used by Asciidoctor |
| |
| Also: |
| * Bootswatch "flatly" theme for Bootstrap (https://bootswatch.com/flatly). |
| * slick.js (carousel) |
| * add a link to all headers (home-grown, adapted from blog posts) |
| * integration of elasticlunr.js (home-grown, adapted from blog posts) |
| --> |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/flatly/bootstrap.min.css" rel="stylesheet"> |
| <link href="../css/bootstrap-toc/0.4.1/bootstrap-toc.min.css" rel="stylesheet"> |
| <link href="../css/asciidoctor/foundation.css" rel="stylesheet"> |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"> |
| <link href="../css/slick/1.5.0/slick.css" rel="stylesheet"> |
| <link href="../css/slick/1.5.0/slick-theme.css" rel="stylesheet"> |
| <link href="../css/search-panel/search-panel.css" rel="stylesheet"> |
| <link href="../css/header-links/header-links.css" rel="stylesheet"> |
| <link href="../css/sticky-header/sticky-header.css" rel="stylesheet"> |
| <link href="../css/customisations.css" rel="stylesheet"> |
| <!-- Coderay syntax formatter --> |
| <style type="text/css"> |
| /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */ |
| /*pre.CodeRay {background-color:#f7f7f8;}*/ |
| .CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em} |
| .CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)} |
| .CodeRay .line-numbers strong{color:rgba(0,0,0,.4)} |
| table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none} |
| table.CodeRay td{vertical-align: top;line-height:1.45} |
| table.CodeRay td.line-numbers{text-align:right} |
| table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)} |
| table.CodeRay td.code{padding:0 0 0 .5em} |
| table.CodeRay td.code>pre{padding:0} |
| .CodeRay .debug{color:#fff !important;background:#000080 !important} |
| .CodeRay .annotation{color:#007} |
| .CodeRay .attribute-name{color:#000080} |
| .CodeRay .attribute-value{color:#700} |
| .CodeRay .binary{color:#509} |
| .CodeRay .comment{color:#998;font-style:italic} |
| .CodeRay .char{color:#04d} |
| .CodeRay .char .content{color:#04d} |
| .CodeRay .char .delimiter{color:#039} |
| .CodeRay .class{color:#458;font-weight:bold} |
| .CodeRay .complex{color:#a08} |
| .CodeRay .constant,.CodeRay .predefined-constant{color:#008080} |
| .CodeRay .color{color:#099} |
| .CodeRay .class-variable{color:#369} |
| .CodeRay .decorator{color:#b0b} |
| .CodeRay .definition{color:#099} |
| .CodeRay .delimiter{color:#000} |
| .CodeRay .doc{color:#970} |
| .CodeRay .doctype{color:#34b} |
| .CodeRay .doc-string{color:#d42} |
| .CodeRay .escape{color:#666} |
| .CodeRay .entity{color:#800} |
| .CodeRay .error{color:#808} |
| .CodeRay .exception{color:inherit} |
| .CodeRay .filename{color:#099} |
| .CodeRay .function{color:#900;font-weight:bold} |
| .CodeRay .global-variable{color:#008080} |
| .CodeRay .hex{color:#058} |
| .CodeRay .integer,.CodeRay .float{color:#099} |
| .CodeRay .include{color:#555} |
| .CodeRay .inline{color:#000} |
| .CodeRay .inline .inline{background:#ccc} |
| .CodeRay .inline .inline .inline{background:#bbb} |
| .CodeRay .inline .inline-delimiter{color:#d14} |
| .CodeRay .inline-delimiter{color:#d14} |
| .CodeRay .important{color:#555;font-weight:bold} |
| .CodeRay .interpreted{color:#b2b} |
| .CodeRay .instance-variable{color:#008080} |
| .CodeRay .label{color:#970} |
| .CodeRay .local-variable{color:#963} |
| .CodeRay .octal{color:#40e} |
| .CodeRay .predefined{color:#369} |
| .CodeRay .preprocessor{color:#579} |
| .CodeRay .pseudo-class{color:#555} |
| .CodeRay .directive{font-weight:bold} |
| .CodeRay .type{font-weight:bold} |
| .CodeRay .predefined-type{color:inherit} |
| .CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold} |
| .CodeRay .key{color:#808} |
| .CodeRay .key .delimiter{color:#606} |
| .CodeRay .key .char{color:#80f} |
| .CodeRay .value{color:#088} |
| .CodeRay .regexp .delimiter{color:#808} |
| .CodeRay .regexp .content{color:#808} |
| .CodeRay .regexp .modifier{color:#808} |
| .CodeRay .regexp .char{color:#d14} |
| .CodeRay .regexp .function{color:#404;font-weight:bold} |
| .CodeRay .string{color:#d20} |
| .CodeRay .string .string .string{background:#ffd0d0} |
| .CodeRay .string .content{color:#d14} |
| .CodeRay .string .char{color:#d14} |
| .CodeRay .string .delimiter{color:#d14} |
| .CodeRay .shell{color:#d14} |
| .CodeRay .shell .delimiter{color:#d14} |
| .CodeRay .symbol{color:#990073} |
| .CodeRay .symbol .content{color:#a60} |
| .CodeRay .symbol .delimiter{color:#630} |
| .CodeRay .tag{color:#008080} |
| .CodeRay .tag-special{color:#d70} |
| .CodeRay .variable{color:#036} |
| .CodeRay .insert{background:#afa} |
| .CodeRay .delete{background:#faa} |
| .CodeRay .change{color:#aaf;background:#007} |
| .CodeRay .head{color:#f8f;background:#505} |
| .CodeRay .insert .insert{color:#080} |
| .CodeRay .delete .delete{color:#800} |
| .CodeRay .change .change{color:#66f} |
| .CodeRay .head .head{color:#f4f} |
| </style> |
| </head> |
| <body data-spy="scroll" data-target="#toc"> |
| <div id="basedir" style="display:none;"> |
| ../ |
| </div> |
| <div id="docname" style="display:none;"> |
| migration-notes |
| </div> |
| <div id="filetype" style="display:none;"> |
| html |
| </div> |
| <!-- Navbar --> |
| <nav class="navbar navbar-default navbar-static-top header"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <!-- Three line menu button for use on mobile screens --> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <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="navbar-brand" href="../index.html"> <img alt="Brand" src="../images/isis-logo-48x48.png"> </a> |
| <a class="navbar-brand" href="../index.html">Apache Isis</a> |
| </div> |
| <!-- Navbar that will collapse on mobile screens --> |
| <div id="navbar" class="navbar-collapse collapse"> |
| <ul class="nav navbar-nav"> |
| <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Documentation<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li><a href="../documentation.html">Table of Contents</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">User Guides</li> |
| <li><a href="../guides/ugfun/ugfun.html">Fundamentals</a></li> |
| <li><a href="../guides/ugvw/ugvw.html">Wicket Viewer</a></li> |
| <li><a href="../guides/ugvro/ugvro.html">Restful Objects Viewer</a></li> |
| <li><a href="../guides/ugodn/ugodn.html">DataNucleus Object Store</a></li> |
| <li><a href="../guides/ugsec/ugsec.html">Security</a></li> |
| <li><a href="../guides/ugtst/ugtst.html">Testing</a></li> |
| <li><a href="../guides/ugbtb/ugbtb.html">Beyond the Basics</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">Reference Guides</li> |
| <li><a href="../guides/rgant/rgant.html">Annotations</a></li> |
| <li><a href="../guides/rgsvc/rgsvc.html">Domain Services</a></li> |
| <li><a href="../guides/rgcfg/rgcfg.html">Core Config' Properties</a></li> |
| <li><a href="../guides/rgcms/rgcms.html">Classes, Methods and Schema</a></li> |
| <li><a href="../guides/rgmvn/rgmvn.html">Maven plugin</a></li> |
| <li><a href="../guides/rgfis/rgfis.html">Framework Internal Services</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">Javadoc</li> |
| <li><a href="http://javadoc.io/doc/org.apache.isis.core/isis-core-applib">Applib</a></li> |
| </ul> </li> |
| <li class="dropdown hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Downloads<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li class="dropdown-header">Maven archetypes</li> |
| <li><a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">helloworld</a></li> |
| <li><a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">simpleapp</a></li> |
| <li role="separator" class="divider"></li> |
| <li><a href="../downloads.html">Downloads</a></li> |
| <li><a href="../release-notes/release-notes.html">Release Notes</a></li> |
| <li><a href="../migration-notes/migration-notes.html">Migration Notes</a></li> |
| <li role="separator" class="divider"></li> |
| <li><a href="https://github.com/apache/isis">Github mirror</a></li> |
| </ul> </li> |
| <li class="dropdown hidden-sm"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Support<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li class="dropdown-header">Guides</li> |
| <li><a href="../guides/dg/dg.html">Developers' Guide</a></li> |
| <li><a href="../guides/cgcom/cgcom.html">Committers' Guide</a></li> |
| <li><a href="../guides/htg.html">Hints-n-Tips Guide</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">Mailing Lists</li> |
| <li><a href="../support.html">How to subscribe</a></li> |
| <li><a href="https://lists.apache.org/list.html?users@isis.apache.org">Archives (ASF Pony mail)</a></li> |
| <li><a href="http://isis.markmail.org/search/?q=">Archives (Markmail)</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="dropdown-header">Other Resources</li> |
| <li><a href="https://issues.apache.org/jira/browse/ISIS">ASF JIRA</a></li> |
| <li><a href="https://stackoverflow.com/questions/tagged/isis">Stack Overflow</a></li> |
| <li><a href="../help.html">Wiki, Fisheye etc.</a></li> |
| </ul> </li> |
| <li class="dropdown hidden-sm hidden-md"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">@ASF<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li><a href="https://www.apache.org/">Apache Homepage</a></li> |
| <li><a href="https://www.apache.org/events/current-event">Events</a></li> |
| <li><a href="https://www.apache.org/licenses/">Licenses</a></li> |
| <li><a href="https://www.apache.org/security/">Security</a></li> |
| <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| <li role="separator" class="divider"></li> |
| <li><a href="https://whimsy.apache.org/board/minutes/Isis.html">PMC board minutes</a></li> |
| </ul> </li> |
| </ul> |
| <div class="nav navbar-nav navbar-right"> |
| <!-- 'style' added to fix height of input box. FIX THIS --> |
| <form class="navbar-form" role="search" id="search-form" style="padding: 1px 15px;"> |
| <div class="form-group"> |
| <input class="form-control" id="search-field" type="text" size="30" placeholder="Search"> |
| </div> |
| </form> |
| </div> |
| <p class="nav navbar-text navbar-right small">v2.0.0-M1</p> |
| </div> |
| </div> |
| </nav> |
| <div class="container"> |
| <div class="row-fluid"> |
| <div class="col-xs-12 col-sm-12 col-md-12 col-lg-9"> |
| <div id="search-panel"> |
| <div id="search-results"></div> |
| <div> |
| <br> |
| <a href="#" id="search-results-clear">clear</a> |
| </div> |
| </div> |
| <div class="page-title"> |
| <h1>Migration Notes</h1> |
| </div> |
| <div id="doc-content"> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/migration-notes.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Consult these notes when migrating to new versions of the framework.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.16.0-to-2.0.0-M1">From v1.16.x to 2.0.0-M1</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_meta-annotations">Meta annotations</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_meta-annotations.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_meta-annotations.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_meta-annotations.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_meta-annotations.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_meta-annotations.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Most of the Apache Isis annotations can now be associated with meta-annotations. Coupled with the fact that DataNucleus 5.x also supports meta annotations, this therefore allows a degree of reuse.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For example, instead of:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Column</span>(length=<span class="integer">30</span>) |
| <span class="annotation">@Property</span>(regex=...) |
| <span class="annotation">@Getter</span> <span class="annotation">@Setter</span> |
| <span class="directive">private</span> <span class="predefined-type">String</span> name; |
| |
| <span class="directive">public</span> Customer updateName( |
| <span class="annotation">@Parameter</span>(maxLength=<span class="integer">30</span>, regex=...) |
| <span class="predefined-type">String</span> name ) { |
| setName(name); |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>we can instead define a <code>@Name</code> annotation:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Column</span>(length=<span class="integer">30</span>) |
| <span class="annotation">@Property</span>(regex=...) |
| <span class="annotation">@Parameter</span>(maxLength=<span class="integer">30</span>, regex=...) |
| <span class="directive">public</span> <span class="annotation">@interface</span> <span class="annotation">@Name</span> {}</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>and then use this annotation:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Name</span> |
| <span class="annotation">@Getter</span> <span class="annotation">@Setter</span> |
| <span class="directive">private</span> <span class="predefined-type">String</span> name; |
| |
| <span class="directive">public</span> Customer updateName( |
| <span class="annotation">@Name</span> |
| <span class="predefined-type">String</span> name ) { |
| setName(name); |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The full list of Apache Isis annotations that can be used in meta-annotations is shown in the table below.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 1. Apache Isis annotations that can be used in meta-annotations |
| </caption> |
| <colgroup> |
| <col style="width: 33.3333%;"> |
| <col style="width: 33.3333%;"> |
| <col style="width: 33.3334%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top"></th> |
| <th class="tableblock halign-left valign-top">Domain layer</th> |
| <th class="tableblock halign-left valign-top">UI layer</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>domain service</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainService">@DomainService</a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainServiceLayout">@DomainServiceLayout</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>domain object</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObject">@DomainObject</a><br> <a href="../guides/rgant/rgant.html#_rgant-ViewModel">@ViewModel</a><br> <a href="../guides/rgant/rgant.html#_rgant-MemberGroupLayout">@MemberGroupLayout</a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObjectLayout">@DomainObjectLayout</a><br> <a href="../guides/rgant/rgant.html#_rgant-ViewModelLayout">@ViewModelLayout</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Action</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action">@Action</a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ActionLayout">@ActionLayout</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>action parameter</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Parameter">@Parameter</a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ParameterLayout">@ParameterLayout</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>property</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property">@Property</a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-PropertyLayout">@PropertyLayout</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>collection</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Collection">@Collection</a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-CollectionLayout">@CollectionLayout</a></p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_updated-annotations">Updated annotations</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-annotations.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-annotations.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-annotations.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-annotations.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-annotations.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Prior to v2.0.0, several annotation attributes were defined as booleans. In order to support <a href="#__migration-notes_1.15.0-to-1.16.0_meta-annotations">meta annotations</a>, these have been replaced by enums which also include a <code>NOT_SPECIFIED</code> value. Other enums have been extended (where necessary) to also have a <code>NOT_SPECIFIED</code> value. In all cases <code>NOT_SPECIFIED</code> is the new default.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 2. Updated annotations |
| </caption> |
| <colgroup> |
| <col style="width: 20%;"> |
| <col style="width: 20%;"> |
| <col style="width: 60%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Annotation</th> |
| <th class="tableblock halign-left valign-top">Updated attribute</th> |
| <th class="tableblock halign-left valign-top">Nature of change</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="7"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action"><code>@Action</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_command"><code>command</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_hidden"><code>hidden</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NOWHERE</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_invokeOn"><code>invokeOn</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>OBJECT_ONLY</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_publishing"><code>publishing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_publishing"><code>publishing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_restrictTo"><code>restrictTo</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NO_RESTRICTIONS</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Action_semantics"><code>semantics</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NON_IDEMPOTENT</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="3"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ActionLayout_bookmarking"><code>bookmarking</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NEVER</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ActionLayout_contributed"><code>contributed</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_BOTH</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ActionLayout_position"><code>position</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>BELOW</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="3"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Collection"><code>@Collection</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Collection_hidden"><code>hidden</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NOWHERE</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Collection_editing"><code>editing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Collection_mementoSerialization"><code>mementoSerialization</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Replaces <code>notPersisted</code>, taking values of <code>INCLUDED</code>, <code>EXCLUDED</code> or <code>NOT_SPECIFIED</code>. Defaults to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="4"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObject"><code>@DomainObject</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObject_auditing"><code>auditing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObject_bounding"><code>bounding</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Replaces <code>bounded</code>, taking values of <code>BOUNDED</code>, <code>UNBOUNDED</code> and <code>NOT_SPECIFIED</code>. Defaults to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObject_editing"><code>editing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObject_publishing"><code>publishing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-DomainObjectLayout_bookmarking"><code>bookmarking</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NEVER</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Parameter"><code>@Parameter</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Parameter_optionality"><code>optionality</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>DEFAULT</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="2"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ParameterLayout"><code>@ParameterLayout</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ParameterLayout_labelPosition"><code>labelPosition</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>DEFAULT</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ParameterLayout_renderDay"><code>renderDay</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Replaces <code>renderedAsDayBefore</code>, taking values of <code>AS_DAY</code>, <code>AS_DAY_BEFORE</code> or <code>NOT_SPECIFIED</code>. Defaults to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="6"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property"><code>@Property</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property_commandReification"><code>commandReification</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property_editing"><code>editing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property_hidden"><code>hidden</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>NOWHERE</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property_mementoSerialization"><code>mementoSerialization</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Replaces <code>notPersisted</code>, taking values of <code>INCLUDED</code>, <code>EXCLUDED</code> or <code>NOT_SPECIFIED</code>. Defaults to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property_optionality"><code>optionality</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>DEFAULT</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-Property_publishing"><code>publishing</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>AS_CONFIGURED</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="5"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-PropertyLayout_labelPosition"><code>labelPosition</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>DEFAULT</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-PropertyLayout_promptStyle"><code>promptStyle</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Default changed from <code>DEFAULT</code> to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-PropertyLayout_renderDay"><code>renderDay</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Replaces <code>notPersisted</code>, taking values of <code>AS_DAY</code>, <code>AS_DAY_BEFORE</code> or <code>NOT_SPECIFIED</code>. Defaults to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-PropertyLayout_repainting"><code>repainting</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Replaces <code>unchanging</code>, taking values of <code>REPAINT</code>, <code>NO_REPAINT</code> or <code>NOT_SPECIFIED</code>. Defaults to <code>NOT_SPECIFIED</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ViewModelLayout"><code>@ViewModelLayout</code></a></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant-ViewModelLayout_bookmarking"><code>bookmarking</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_removed-annotations">Removed annotations/attributes</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-annotations.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-annotations.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-annotations.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-annotations.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-annotations.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The following annotations, or attributes of annotations, have been removed</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 3. Removed annotations/attributes |
| </caption> |
| <colgroup> |
| <col style="width: 20%;"> |
| <col style="width: 20%;"> |
| <col style="width: 60%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Annotation</th> |
| <th class="tableblock halign-left valign-top">Attribute</th> |
| <th class="tableblock halign-left valign-top">Use instead</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Action</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>publishingPayloadFactory()</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, use the simpler <a href="../guides/rgsvc/rgsvc.html#PublisherService">PublisherService</a> SPI instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@ActionInteraction</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_domainEvent"><code>@Action#domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@ActionOrder</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_MemberOrder"><code>@MemberOrder()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Aggregated</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented internally in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Auditable |
| (JDO applib)</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_audited"><code>@DomainObject#auditing()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Audited</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_audited"><code>@DomainObject#auditing()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@AutoComplete</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_autoComplete"><code>@DomainObject#autoComplete()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@ActionSemantics</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_semantics"><code>@Action#semantics()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Bookmarkable</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_bookmarking"><code>@DomainObject#bookmarking()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Bounded</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_bounding"><code>@DomainObject#bounding()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Bulk</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_invokeOn"><code>@Action#invokeOn()</code></a></p> |
| </div> |
| <div class="paragraph"> |
| <p>Similarly, the <code>Bulk.InteractionContext</code> domain service is replaced with the <a href="../guides/rgsvc/rgsvc.html#ActionInvocationContext">ActionInvocationContext</a> domain service.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Collection</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>notPersisted</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, replaced with <a href="../guides/rgant/rgant.html#_rgant_Collection_mementoSerialization"><code>@Collection#mementoSerialization()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@CollectionInteraction</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Collection_domainEvent"><code>@Collection #domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@CollectionLayout</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>render()</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_defaultView"><code>@CollectionLayout#defaultView()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Command</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_command"><code>@Action#command()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@CssClass</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_ActionLayout_cssClass"><code>@ActionLayout#cssClass()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_cssClass"><code>@PropertyLayout#cssClass()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_cssClass"><code>@CollectionLayout#cssClass()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_ParameterLayout_cssClass"><code>@ParameterLayout#cssClass()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_DomainObjectLayout_cssClass"><code>@DomainObjectLayout#cssClass()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_ViewModelLayout_cssClass"><code>@ViewModelLayout#cssClass()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@CssClassFa</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_ActionLayout_cssClassFa"><code>@ActionLayout#cssClassFa()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_DomainObjectLayout_cssClassFa"><code>@DomainObjectLayout#cssClassFa()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_ViewModelLayout_cssClassFa"><code>@ViewModelLayout#cssClassFa()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Debug</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_restrictTo"><code>@Action#restrictTo()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@DescribedAs</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_ActionLayout_describedAs"><code>@ActionLayout#describedAs()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_describedAs"><code>@PropertyLayout#describedAs()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_describedAs"><code>@CollectionLayout#describedAs()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_ParameterLayout_describedAs"><code>@ParameterLayout#describedAs()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_DomainObjectLayout_describedAs"><code>@DomainObjectLayout#describedAs()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_ViewModelLayout_describedAs"><code>@ViewModelLayout#describedAs()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Disabled</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Property_editingDisabledReason"><code>@Property#editingDisabledReason()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="2"> |
| <div class="literal"> |
| <pre>@DomainObject</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>bounded</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Deleted (was a boolean attribute), replaced by <a href="../guides/rgant/rgant.html#_rgant_DomainObject_bounding"><code>@Property#bounding</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>publishingPayloadFactory</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Removed, use the simpler <a href="../guides/rgsvc/rgsvc.html#PublisherService">PublisherService</a> SPI instead.</pre> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Exploration</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_restrictTo"><code>@Action#restrictTo()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@FieldOrder</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_MemberOrder"><code>@MemberOrder()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Hidden</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>For actions by either <a href="../guides/rgant/rgant.html#_rgant_Action_hidden"><code>@Action#hidden()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_ActionLayout_hidden"><code>@ActionLayout#hidden()</code></a>, for properties by either <a href="../guides/rgant/rgant.html#_rgant_Property_hidden"><code>@Property#hidden()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_hidden"><code>@PropertyLayout#hidden()</code></a>, for collections by either <a href="../guides/rgant/rgant.html#_rgant_Collection_hidden"><code>@Collection#hidden()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_hidden"><code>@CollectionLayout#hidden()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Idempotent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_semantics"><code>@Action#semantics()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Ignore</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Programmatic"><code>@Programmatic</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Immutable</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_editing"><code>@DomainObject#editing()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Mandatory</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_Property_optionality"><code>@Property#optionality()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_Parameter_optionality"><code>@Parameter#optionality()</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For properties, can also use <a href="../guides/rgant/rgant.html#_rgant_Column_allowsNull"><code>@Column#allowsNull()</code></a> Can also use <a href="../guides/rgant/rgant.html#_rgant_Nullable"><code>@Nullable</code></a> for either properties or parameters.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Mask</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, never implemented internally in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@MaxLength</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_Property_maxLength"><code>@Property#maxLength()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_Parameter_maxLength"><code>@Parameter#maxLength()</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For properties, can also use <a href="../guides/rgant/rgant.html#_rgant_Column_length"><code>@Column#length()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@MemberGroups</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/ugvw/ugvw.html#_ugvw_layout_file-based">.layout.xml</a> file instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@MultiLine</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_multiLine"><code>@PropertyLayout#multiLine()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_ParameterLayout_multiLine"><code>@ParameterLayout#multiLine()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@MustSatisfy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_Property_mustSatisfy"><code>@Property#mustSatisfy()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_Parameter_mustSatisfy"><code>@Parameter#mustSatisfy()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@NotPersisted</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Property_notPersisted"><code>@Property#notPersisted()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Optional</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_Property_optionality"><code>@Property#optionality()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_Parameter_optionality"><code>@Parameter#optionality()</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For properties, can also use <a href="../guides/rgant/rgant.html#_rgant_Column_allowsNull"><code>@Column#allowsNull()</code></a> Can also use <a href="../guides/rgant/rgant.html#_rgant_Nullable"><code>@Nullable</code></a> for either properties or parameters.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Named</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_ActionLayout_named"><code>@ActionLayout#named()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_named"><code>@PropertyLayout#named()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_named"><code>@CollectionLayout#named()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_ParameterLayout_named"><code>@ParameterLayout#named()</code></a>, <a href="../guides/rgant/rgant.html#_rgant_DomainObjectLayout_named"><code>@DomainObjectLayout#named()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_ViewModelLayout_named"><code>@ViewModelLayout#named()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@NotInServiceMenu</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainService_nature"><code>@DomainService#nature()</code></a></p> |
| </div> |
| <div class="paragraph"> |
| <p>Specify nature of <code>VIEW_CONTRIBUTIONS_ONLY</code>. Alternatively, use a <a href="../guides/rgant/rgant.html#_rgant_Mixin">mixin</a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@NotContributed</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainService_nature"><code>@DomainService#nature()</code></a></p> |
| </div> |
| <div class="paragraph"> |
| <p>Specify nature of <code>VIEW_MENU_ONLY</code>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@NotPersistable</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented internally in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@ObjectType</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, <a href="../guides/rgant/rgant.html#_rgant_DomainObject_objectType"><code>@DomainObject#objectType()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_DomainService_objectType"><code>@DomainService#objectType()</code></a></p> |
| </div> |
| <div class="paragraph"> |
| <p>Alternatively, for domain entities either:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>the <a href="../guides/rgant/rgant.html#_rgant_Discriminator"><code>@Discriminator</code></a> annotation can be specified; the value is used as the object type, or</p> </li> |
| <li> <p>the <a href="../guides/rgant/rgant.html#_rgant_PersistenceCapable_schema"><code>@PersistenceCapable#schema()</code></a> can be specified; the value is used as the concatenated with the class name to create a two part object type.</p> </li> |
| </ul> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Parameter</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>minLength()</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented internally in Isis 1.x so no replacement.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Note that the <a href="../guides/rgant/rgant.html#_rgant_MinLength"><code>@MinLength</code></a> annotation is for use with autocomplete supporting methods (specifying the minimum number of characters to enter before an auto-complete search is performed).</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Paged</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_paged"><code>@CollectionLayout#paged()</code></a> (for parented collections), or <a href="../guides/rgant/rgant.html#_rgant_DomainObject_paged"><code>@DomainObject#paged()</code></a> (for standalone collections)</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@ParameterLayout</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>renderedAsDayBefore</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Deleted (was a boolean attribute), replaced by <a href="../guides/rgant/rgant.html#_rgant_ParameterLayout_renderDay"><code>@ParameterLayout#renderDay</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Plural</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObjectLayout_plural"><code>@DomainObjectLayout#plural()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PostsAction |
| InvokedEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_domainEvent"><code>@Action#domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PostsCollection |
| AddedToEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Collection_domainEvent"><code>@Collection#domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PostsCollection |
| RemovedFromEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Collection_domainEvent"><code>@Collection#domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PostsProperty |
| ChangedEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Property_domainEvent"><code>@Property#domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Property</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>notPersisted</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, replaced with <a href="../guides/rgant/rgant.html#_rgant_Collection_mementoSerialization"><code>@Collection#mementoSerialization()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PropertyInteraction</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Property_domainEvent"><code>@Property#domainEvent()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="2"> |
| <div class="literal"> |
| <pre>@PropertyLayout</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>renderedAsDayBefore</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Deleted (was a boolean attribute), replaced by <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_renderDay"><code>@PropertyLayout#renderDay</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>unchanging</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Deleted (was a boolean attribute), replaced by by <a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_repainting"><code>@PropertyLayout#repainting</code></a>.</pre> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Prototype</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_restrictTo"><code>@Action#restrictTo()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PublishedAction</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, use <a href="../guides/rgant/rgant.html#_rgant-Action_publishing">@Action#publishing()</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PublishedObject</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, use <a href="../guides/rgant/rgant.html#_rgant-DomainObject_publishing">@DomainObject#publishing()</a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@PublishingPayload |
| FactoryForAction</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, use the simpler <a href="../guides/rgsvc/rgsvc.html#PublisherService">PublisherService</a> SPI instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>PublishingPayload |
| FactoryForObject</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, use the simpler <a href="../guides/rgsvc/rgsvc.html#PublisherService">PublisherService</a> SPI instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@QueryOnly</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_Action_semantics"><code>@Action#semantics()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Regex</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_Property_regexPattern"><code>@Property#regexPattern()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_Parameter_regexPattern"><code>@Parameter#regexPattern()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Render</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_defaultView"><code>@CollectionLayout#defaultView()</code></a></p> |
| </div> |
| <div class="paragraph"> |
| <p>Supporting <code>RenderType</code> enum also removed.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@RenderedAs |
| DayBefore</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_Property_renderDay"><code>@Property#renderDay()</code></a> or <a href="../guides/rgant/rgant.html#_rgant_Parameter_renderDay"><code>@Parameter#renderDay()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@Resolve</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_defaultView"><code>@CollectionLayout#defaultView()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@SortedBy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_sortedBy"><code>@CollectionLayout#sortedBy()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@TypeOf</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Either <a href="../guides/rgant/rgant.html#_rgant_CollectionLayout_typeOf"><code>@CollectionLayout#typeOf()</code></a> (for parented collections), or <a href="../guides/rgant/rgant.html#_rgant_ActionLayout_typeOf"><code>@ActionLayout#typeOf()</code></a> (for actions returning a standalone collection).</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>@TypicalLength</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_PropertyLayout_typicalLength"><code>@PropertyLayout#typicalLength()</code></a>.</p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_moved-types">Moved types</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_moved-types.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_moved-types.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_moved-types.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_moved-types.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_moved-types.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The following applib types have been moved.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 4. Moved types |
| </caption> |
| <colgroup> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| <col style="width: 25%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Description</th> |
| <th class="tableblock halign-left valign-top">Type(s)</th> |
| <th class="tableblock halign-left valign-top">From</th> |
| <th class="tableblock halign-left valign-top">To</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Events emitted by <code>WrapperFactory</code> when interactions occur.</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>ActionUsabilityEvent</code>, <code>PropertyVisibilityEvent</code>, <code>CollectionAccessEvent</code> etc.</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.applib.</code><br> <code>events</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.applib.</code><br> <code>services.wrapper.events</code></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top" rowspan="2"> |
| <div> |
| <div class="paragraph"> |
| <p>Interface types for mixins</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>Timestampable</code> <code>HoldsUpdatedAt</code> <code>HoldsUpdatedBy</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.applib.</code><br> <code>services.timestamp</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.applib.</code><br> <code>mixins.timestamp</code></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>Dto</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.applib.</code><br> <code>services.dto</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.applib.</code><br> <code>mixins.dto</code></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Lifecycle events, domain events & UI events</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>AbstractDomainEvent</code><br> domain events/subtypes</p> </li> |
| <li> <p><code>ObjectXxxEvent</code><br> lifecycle events</p> </li> |
| <li> <p><code>XxxUiEvent</code><br> UI events</p> </li> |
| </ul> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>o.a.i.applib.services.eventbus</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>o.a.i.applib.</code><br> <code>events.domain</code></p> </li> |
| <li> <p><code>o.a.i.applib.</code><br> <code>events.lifecycle</code></p> </li> |
| <li> <p><code>o.a.i.applib.</code><br> <code>events.ui</code></p> </li> |
| </ul> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_removed-configuration-properties">Removed configuration properties</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-configuration-properties.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-configuration-properties.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-configuration-properties.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-configuration-properties.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-configuration-properties.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The following configuration properties are no longer recognised.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 5. Removed configuration properties |
| </caption> |
| <colgroup> |
| <col style="width: 33.3333%;"> |
| <col style="width: 66.6667%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Configuration property</th> |
| <th class="tableblock halign-left valign-top">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis.persistor. |
| datanucleus. |
| PublishingService. |
| serializedForm</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>PublishingService</code> has been removed. Use <a href="../guides/rgsvc/rgsvc.html#_rgsvc_api_PublisherService"><code>PublisherService</code></a> instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_updated-classes">Updated classes</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-classes.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-classes.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-classes.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-classes.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_updated-classes.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The following classes have been updated.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 6. Updated classes |
| </caption> |
| <colgroup> |
| <col style="width: 28.5714%;"> |
| <col style="width: 28.5714%;"> |
| <col style="width: 42.8572%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Updated class</th> |
| <th class="tableblock halign-left valign-top">Method</th> |
| <th class="tableblock halign-left valign-top">Nature of change</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>IsisAppModule. |
| ActionDomainEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>N-arg constructor</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>removed; just use the 0-arg ones</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>IsisAppModule. |
| CollectionDomainEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>N-arg constructor</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>removed; just use the 0-arg ones</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>IsisAppModule. |
| PropertyDomainEvent</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>N-arg constructor</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>removed; just use the 0-arg ones</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FixtureScript</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>asKeyValueMap(String)</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed; this shouldn’t have had public visibility.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FixtureScript</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>execute(…)</code> <code>executeChild(…)</code> <code>executeIfNotAlready(…)</code> <code>run(…)</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>All removed or no longer public; use <code>FixtureScript.ExecutionContext#executeChild(…)</code> instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FixtureScript</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>lookup(…)</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed; use <code>FixtureScript.ExecutionContext#lookup(…)</code> instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FixtureScript. |
| ExecutionContext</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>add(…)</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed; use <code>addResult(…)</code> instead.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FixtureScripts</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>deprecated constructors</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FixtureScripts. |
| MultipleExecutionStrategy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>IGNORE</code></p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Removed, use <code>EXECUTE_ONCE_PER_CLASS</code> instead</p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_removed-types">Removed types</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-types.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-types.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-types.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-types.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_removed-types.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sect3"> |
| <h4 id="_adapter_classes">Adapter classes</h4> |
| <div class="paragraph"> |
| <p>The following adapter classes have been removed.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 7. Removed adapter classes |
| </caption> |
| <colgroup> |
| <col style="width: 25%;"> |
| <col style="width: 75%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Removed class</th> |
| <th class="tableblock halign-left valign-top">Replaced with</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>AbstractContainedObject</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>No replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>AbstractDomainObject</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>No replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>AbstractFactoryAndRepository</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>No replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>AbstractHomePageDashboardService</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>No replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect3"> |
| <h4 id="_filter_classes_interfaces">Filter classes/interfaces</h4> |
| <div class="paragraph"> |
| <p>Also, all classes and interfaces in <code>org.apache.isis.applib.filter</code> have been removed. Instead, the <code>java.util.Predicate<T></code> interface is used.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For example, <code>RepositoryService#allMatches(…)</code> method, which allows client-side filtering of results (typically during prototyping), now has the signature:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">RepositoryService</span> { |
| ... |
| <T> <span class="predefined-type">List</span><T> allMatches( |
| <span class="directive">final</span> <span class="predefined-type">Class</span><T> ofType, |
| <span class="directive">final</span> <span class="predefined-type">Predicate</span><? <span class="local-variable">super</span> T> predicate, |
| <span class="type">long</span>... range); |
| |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_removed_interfaces">Removed interfaces</h4> |
| <div class="paragraph"> |
| <p>The following interfaces have been removed.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 8. Removed interfaces |
| </caption> |
| <colgroup> |
| <col style="width: 25%;"> |
| <col style="width: 75%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Removed interface</th> |
| <th class="tableblock halign-left valign-top">Replaced with</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>Auditable</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_audited"><code>@DomainObject#auditing()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>Bounded</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><a href="../guides/rgant/rgant.html#_rgant_DomainObject_bounding"><code>@DomainObject#bounding()</code></a></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>NotPersistable</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented internally in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>ProgramPersistable</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented fully in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>AlwaysImmutable</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented fully in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>ImmutableOncePersisted</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented fully in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>ImmutableUntilPersisted</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented fully in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>NeverImmutable</code><br> (JDO applib)</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Never implemented fully in Isis 1.x so no replacement.</p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_legacy-modules">Legacy Modules</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_legacy-modules.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_legacy-modules.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_legacy-modules.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_legacy-modules.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_legacy-modules.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Deprecated types have been moved into new "legacy" modules. For example, applib types have been moved into <code>org.apache.isis.core:isis-core-applib-legacy</code> module. Generally speaking these types remain in the same package; in some cases they have been renamed.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="_applib_legacy">applib-legacy</h4> |
| <div class="paragraph"> |
| <p>Deprecated types have been moved into a new <code>org.apache.isis.core:isis-core-applib-legacy</code> module.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The most significant type that has been deprecated is the <code>DomainObjectContainer</code> type, but there are several others also.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 9. Legacy types under |
| <code>org.apache.isis.applib</code> |
| </caption> |
| <colgroup> |
| <col style="width: 20%;"> |
| <col style="width: 20%;"> |
| <col style="width: 60%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Package</th> |
| <th class="tableblock halign-left valign-top">Type</th> |
| <th class="tableblock halign-left valign-top">Use instead</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>DomainObjectContainer</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>RepositoryService</code>, <code>FactoryService</code>, <code>UserService</code>, <code>MessageService</code> instead etc.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| annotation</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Encodable</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">No replacement</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Parseable</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">No replacement</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| fixtures</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>AbstractFixture</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>FixtureScript</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>AbstractFixtureSusa</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use fixture with injected <code>SudoService</code></p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>BaseFixture</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Derive from <code>FixtureScript</code></p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>DateFixture</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>TickingClockFixture</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>SwitchUserFixture</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use fixture with injected <code>SudoService</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| switchuser</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>SwitchUserService</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock"><code>SudoService</code></p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>SwitchUserServiceAware</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">No replacement</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| layout.component</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>CollectionLayoutData_legacy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Renamed from <code>CollectionLayoutData</code>, provides trivial utility functions. No replacement.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>FieldSetData_legacy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Renamed from <code>FieldSet</code>, provides trivial utility functions. No replacement.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| services.background</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>BackgroundCommandService2</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>BackgroundCommandService</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>BackgroundService2</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>BackgroundService</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| services.exceprecog</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>ExceptionRecognizer |
| AbstractLegacy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Copy of the 1.16.x version of <code>ExceptionRecognizerAbstract</code>, with the original dependency on guava. Refactor to use the new <code>ExceptionRecognizerAbstract</code> (which uses Java 8 predicates etc. instead)</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>ExceptionRecognizer |
| ForTypeLegacy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Copy of the 1.16.x version of <code>ExceptionRecognizerForType</code>, but with the original dependency on guava. Replace with the new <code>ExceptionRecognizerForType</code> which uses Java 8 predicates etc.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| services.memento</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>MementoService</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">No replacement. Originally provided as a utility to view models that implemented <code>ViewModel</code> interface (as opposed to the newer approaches of annotating with <code>@ViewModel</code> or as a JAXB DTO class. </p><p class="tableblock">Note that the framework-provided implementation, <code>MementoServiceDefault</code>, has been moved out to the corresponding <code>runtime-legacy</code> module.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| services.repository</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>RepositoryServiceLegacy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Copy of the 1.16.x version of <code>RepositoryService</code>, with the original dependency on guava. Refactor to use the new <code>RepositoryService</code> (which uses Java 8 predicates etc. instead). </p><p class="tableblock">Note that the framework-provided implementation, <code>RepositoryServiceLegacyInternalDefault</code>, has been moved out to the corresponding <code>metamodel-legacy</code> module.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| services.urlencoding</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>UrlEncodingService |
| UsingBaseEncoding |
| WithSupportForLargeUrlsAbstract</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">The <code>UrlEncodingServiceWithCompression</code> (provided as the default implementation by the core framework) can be used in most cases.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| util</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>ObjectContractsLegacy</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Copy of the 1.16.x version of <code>ObjectContracts</code>, which heavily uses reflection. Use <code>ObjectContracts</code> instead. This provides a new API that does not require reflection and instead encourages a different coding style, but does also still support the old API.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.applib. |
| value</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Date |
| DateTime</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use JDK8 <code>LocalDate</code>, <code>LocalDateTime</code> or Joda <code>DateTime</code> or <code>LocalDate</code> or <code>LocalDateTime</code></p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Time</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use JDK8 <code>LocalTime</code> or Joda <code>LocalTime</code></p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>Timestamp</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>java.sql.Timestamp</code> or JDK8 <code>DateTime</code> or Joda <code>DateTime</code> instead</p></td> |
| </tr> |
| </tbody> |
| </table> |
| <div class="paragraph"> |
| <p>See also <code>transition-1-2</code> module, below, for further discussion of background services.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_integtestsupport_legacy">integtestsupport-legacy</h4> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 10. Legacy types under |
| <code>org.apache.isis.applib</code> |
| </caption> |
| <colgroup> |
| <col style="width: 20%;"> |
| <col style="width: 20%;"> |
| <col style="width: 60%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Package</th> |
| <th class="tableblock halign-left valign-top">Type</th> |
| <th class="tableblock halign-left valign-top">Use instead</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core. |
| integtestsupport</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>IntegrationTestAbstract</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>IntegrationTestAbstract3</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>IntegrationTestAbstract2</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Use <code>IntegrationTestAbstract3</code> instead</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre></pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>IsisSystemForTest</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Helper class used only by other classes in this module. No replacement.</p></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core. |
| integtestsupport. |
| scenarios</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>ScenarioExecutionForIntegration</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"><p class="tableblock">Subclass spec "glue" from <code>HeadlessWithBootstrappingAbstract</code> (the common superclass of <code>IntegrationTestAbstract3</code>) instead, and inject services into glue.</p></td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="sect3"> |
| <h4 id="_unittestupport_legacy">unittestupport-legacy</h4> |
| </div> |
| <div class="sect3"> |
| <h4 id="_transition_1_2">transition-1-2</h4> |
| </div> |
| <div class="sect3"> |
| <h4 id="_metamodel_legacy">metamodel-legacy</h4> |
| <div class="paragraph"> |
| <p>Contains facet factories (which build up the metamodel) for these types moved from applib to applib-legacy:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>Encodeable</code> and <code>Parseable</code> interfaces</p> </li> |
| <li> <p><code>Date</code>, <code>DateTime</code>, <code>Time</code> and <code>Timestamp</code> value types</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>It provides contains an implementation of <code>ProgrammingModelPlugin</code> interface which is used to register these facet factories in a pluggable fashion.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Similarly, it also provides implementations of the <code>ValuePropertyPlugin</code> interface which aggregate the set of value types, used for the swagger UI support.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Finally, it also contains these framework-provided service implementations:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>DomainObjectContainerDefault</code> (for <code>DomainObjectContainer</code>)</p> </li> |
| <li> <p><code>RepositoryServiceLegacyInternalDefault</code> (for <code>RepositoryServiceLegacy</code>)</p> </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_runtime_legacy">runtime-legacy</h4> |
| </div> |
| <div class="sect3"> |
| <h4 id="_viewer_wicket_ui_legacy">viewer-wicket-ui-legacy</h4> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.16.0-to-2.0.0-M1_other-changes">Other Changes</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_other-changes.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_other-changes.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_other-changes.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_other-changes.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1_other-changes.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sect3 16 0-to-2 0 0-M1_other-changes_view-model-urls"> |
| <h4 id="_view_model_urls">View model URLs</h4> |
| <div class="paragraph"> |
| <p>The default implementation of <code>UrlEncodingService</code> provided by the framework has changed:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>in 1.16.x the implementation is <strong>* TODO: look up </strong>*</p> </li> |
| <li> <p>in 2.0.0-M1 this is changed to <code>UrlEncodingServiceWithCompression</code></p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>This new implementation increases the state that can be encoded within the URL (approx 8000 characters) by first gzipping the state prior to base64 encoding the characters.</p> |
| </div> |
| <div class="paragraph"> |
| <p>However, this does mean that any persisted URLs for view models will be invalid.</p> |
| </div> |
| </div> |
| <div class="sect3 16 0-to-2 0 0-M1_other-changes_applib-types-fully-generic"> |
| <h4 id="_applib_types_fully_generic">Applib types fully generic</h4> |
| <div class="paragraph"> |
| <p>All types in the applib have now been made fully generic</p> |
| </div> |
| </div> |
| <div class="sect3 16 0-to-2 0 0-M1_other-changes_updated-dependencies"> |
| <h4 id="_updated_dependencies">Updated dependencies</h4> |
| <div class="paragraph"> |
| <p>Wicket has been upgraded from Wicket 7.9 to Wicket 8.0.</p> |
| </div> |
| </div> |
| <div class="sect3 16 0-to-2 0 0-M1_other-changes_removed-dependencies"> |
| <h4 id="_removed_dependencies">Removed dependencies</h4> |
| <div class="paragraph"> |
| <p>The Apache Isis applib (<code>o.a.i.core:isis-core-applib</code>) no longer depends on the google guava library.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Likewise the Apache Isis Unit Test Support module (<code>o.a.i.core:isis-core-unittestsupport</code>) no longer depends on guava either.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Do note however that the core framework <em>does</em> still depend on guava (though the intention is to remove this over time).</p> |
| </div> |
| </div> |
| <div class="sect3 16 0-to-2 0 0-M1_other-changes_new-isis-core-commons-module"> |
| <h4 id="_new_isis_core_commons_module">New isis-core-commons module</h4> |
| <div class="paragraph"> |
| <p>The new <code>org.apache.isis.core:isis-core-commons</code> module provides a set of utility classes that are <em>not</em> API but that are depended upon by the applib.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Because these are not API, they should not be used by application code, <em>even though</em> they will be on the applications classpath.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To help prevent accidental usage:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>the package is <code>org.apache.isis.commons.internal</code></p> </li> |
| <li> <p>all of the types in this module are prefixed "_".</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>For example, <code>o.a.i.commons.internal.resources._Resource</code> provides utilities for loading static resources from the classpath.</p> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>This module performs many of the responsibilities that were previously provided by the dependency on guava.</p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>This module also defines a number of plugin interface types, discussed in the <a href="#__migration-notes_1.16.0-to-2.0.0-M1_other-changes_plugins">section below</a>.</p> |
| </div> |
| </div> |
| <div class="sect3 16 0-to-2 0 0-M1_other-changes_plugins"> |
| <h4 id="_plugins">Plugins</h4> |
| <div class="paragraph"> |
| <p>The framework introduces a plugin architecture whereby variations on the configuration are automatically enabled just by the presence of the Maven module on the classpath.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For example, the framework can be run using either DataNucleus 4 or DataNucleus 5. Including the relevant module will configure the rest of the framework accordingly.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The plugin architecture uses the JDK <code>ServiceLoader</code> API, whereby a Maven module can optionally provide an implementation of a well-known plugin interface type.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The plugin interface types themselves are defined in various of the Maven modules, broadly depending on what consumes them.</p> |
| </div> |
| <table class="tableblock frame-all grid-all spread"> |
| <caption class="title"> |
| Table 11. Plugin types |
| </caption> |
| <colgroup> |
| <col style="width: 12.5%;"> |
| <col style="width: 12.5%;"> |
| <col style="width: 37.5%;"> |
| <col style="width: 37.5%;"> |
| </colgroup> |
| <thead> |
| <tr> |
| <th class="tableblock halign-left valign-top">Defined in</th> |
| <th class="tableblock halign-left valign-top">Plugin type</th> |
| <th class="tableblock halign-left valign-top">Used for</th> |
| <th class="tableblock halign-left valign-top">Implementations</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-commons</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core.plugins. |
| classdiscovery. |
| ClassDiscoveryPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Obtain a plugin to finding types on the classpath with certain characteristics, eg annotated with certain annotations</p> |
| </div> |
| <div class="paragraph"> |
| <p>Include only one implementation on classpath,</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>ClassDiscoveryPluginUsingReflections</code> uses the <code>org.reflections</code> open source library</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-commons</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core.plugins. |
| codegen. |
| ProxyFactoryPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Obtain a plugin acting as a factory to proxy types (as used by the <code>WrapperFactory</code> domain service).</p> |
| </div> |
| <div class="paragraph"> |
| <p>Include only one implementation on classpath,</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.core.plugins.codegen. ProxyFactoryPluginUsingByteBuddy</code> (using ByteBuddy)</p> |
| </div> |
| <div class="paragraph"> |
| <p><code>o.a.i.core.plugins.codegen. ProxyFactoryPluginUsingJavassist</code> (using Javassist).</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-commons</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core.plugins. |
| eventbus. |
| EventBusPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Obtain a plugin for finding event bus implementations.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This removes the need to explicitly specify the implementation using the <code>isis.services.eventbus.implementation</code> config property; it can be left as simply "auto".</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.core.plugins.eventbus. EventBusPluginForAxon</code> (using Axon Framework)</p> |
| </div> |
| <div class="paragraph"> |
| <p><code>org.apache.isis.core.plugins.eventbus. EventBusPluginForGuava</code> (using Guava)</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-metamodel</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>org.apache.isis.core. |
| metamodel.progmodel. |
| ProgrammingModelPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Obtain plugins that can provide implementations of Isis' own <code>FacetFactory</code> SPI (which is used to build up the metamodel).</p> |
| </div> |
| <div class="paragraph"> |
| <p>There can be multiple implementations on the classpath.</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>org.apache.isis.progmodels. plugins.ProgrammingModelIsisTimePlugin</code> (in <code>metamodel-legacy</code>) contributes facet factories for the applib value types that have been moved to applib-legacy.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-metamodel</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>org.apache.isis.core. |
| metamodel.services. |
| swagger.internal. |
| ValuePropertyPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Obtain plugins that can provide implementations of Isis' own <code>ValuePropertyFactory</code> SPI (which is used to build up Swagger representations).</p> |
| </div> |
| <div class="paragraph"> |
| <p>There can be multiple implementations on the classpath.</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.core.metamodel. services.swagger.plugins. IsisTimeValuePropertyPlugin</code> (in <code>metamodel-legacy</code>) contributes factories for the applib value types that have been moved to applib-legacy.</p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-metamodel</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core. |
| metamodel. |
| IsisJdoMetamodelPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Decouples the metamodel module from a particular implementation of DataNucleus.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Include only one implementation on classpath,</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins.jdo.dn4.IsisJdoSupportPlugin4</code></p> |
| </div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins.jdo.dn5.IsisJdoSupportPlugin5</code></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-runtime</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.core. |
| metamodel. |
| IsisJdoRuntimePlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Decouples the runtime module from a particular implementation of DataNucleus.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Include only one implementation on classpath,</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins.jdo.dn4.IsisJdoSupportPlugin4</code></p> |
| </div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins.jdo.dn5.IsisJdoSupportPlugin5</code></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-viewer-restfulobjects-applib</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.viewer. |
| restfulobjects. |
| applib.client. |
| UriBuilderPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Plugin to obtain a <code>UriBuilder</code> to create uri templates.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Include only one implementation on classpath,</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins. jaxrs.resteasy.IsisResteasy3Plugin</code></p> |
| </div> |
| <div class="paragraph"> |
| <p>or</p> |
| </div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins. jaxrs.resteasy.IsisResteasy4Plugin</code></p> |
| </div> |
| </div></td> |
| </tr> |
| <tr> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>isis-core-viewer-restfulobjects-server</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div class="literal"> |
| <pre>o.a.i.viewer. |
| restfulobjects. |
| server. |
| IsisJaxrsServerPlugin</pre> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p>Plugin to configure the JAX-RS runtime.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Include only one implementation on classpath.</p> |
| </div> |
| </div></td> |
| <td class="tableblock halign-left valign-top"> |
| <div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins. jaxrs.resteasy.IsisResteasy3Plugin</code></p> |
| </div> |
| <div class="paragraph"> |
| <p>or</p> |
| </div> |
| <div class="paragraph"> |
| <p><code>o.a.i.plugins. jaxrs.resteasy.IsisResteasy4Plugin</code></p> |
| </div> |
| </div></td> |
| </tr> |
| </tbody> |
| </table> |
| <div class="paragraph"> |
| <p>The two JDO/DataNucleus plugins are <em>not</em> independent of each other, because (as the table above shows) the same class implements both plugin interface types. These plugins allow the framework to run either using DataNucleus 4 (JDO 3.1 API) or using DataNucleus 5 (JDO 3.2 API).</p> |
| </div> |
| <div class="paragraph"> |
| <p>Similarly, the two RestfulObjects plugins are also <em>not</em> independent of each other; again the pattern is for a single class implements both plugin interface types. These plugins support alternate implementations of JAX-RS API. JAX-RS 2.0 (one of the JavaEE 7.0 specifications) is implemented by RestEasy 3 whereas JAX-RS 2.1 is implemented by RestEasy 4 (part of JavaEE 8).</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_isisjdosupport_domain_service">IsisJdoSupport domain service</h4> |
| <div class="paragraph"> |
| <p>In 1.16.x the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_api_IsisJdoSupport"><code>IsisJdoSupport</code></a> domain service exposed the DataNucleus 4 <code>org.datanucleus.query.typesafe.TypesafeQuery</code> type in one of its signatures. However, in DataNucleus 5 this type was removed and replaced by <code>javax.jdo.JDOQLTypedQuery</code>, reflecting the fact that type-safe queries are now part of JDO 3.2.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Consequently in 2.0.0-M1 this API has been split into three:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>IsisJdoSupport</code> (defined in <code>isis-core-applib</code>) is independent of JDO APIs</p> </li> |
| <li> <p><code>IsisJdoSupport_v3_1</code> (defined in <code>isis-core-plugins-jdo-datanucleus-4</code>) extends <code>IsisJdoSupport</code> with DataNucleus 4/JDO 3.1-specific APIs</p> </li> |
| <li> <p><code>IsisJdoSupport_v3_2</code> (defined in <code>isis-core-plugins-jdo-datanucleus-5</code>) extends <code>IsisJdoSupport</code> with JDO 3.2-specific APIs</p> </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.15.0-to-1.16.0">From v1.15.x to 1.16.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.15.0-to-1.16.0_app-manifest"><code>AppManifest2</code> and <code>Module</code></h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_app-manifest.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_app-manifest.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_app-manifest.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_app-manifest.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_app-manifest.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>While not required, it is recommended to rework modules to subclass from <code>ModuleAbstract</code>, and to bootstrap the application using <code>AppManifestAbstract2</code>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.15.0-to-1.16.0_integ-testing"><code>IntegrationTestAbstract3</code></h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_integ-testing.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_integ-testing.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_integ-testing.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_integ-testing.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_integ-testing.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>While not required, it is recommended that integration tests are updated to subclass from <code>IntegrationTestAbstract3</code>. These require a <code>Module</code> to bootstrap from (see above).</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.15.0-to-1.16.0_explicit-actions">Explicitly-defined actions</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_explicit-actions.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_explicit-actions.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_explicit-actions.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_explicit-actions.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_explicit-actions.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>By default actions are implicitly recognised as any remaining <code>public</code> methods once properties/collections and supporting methods are discounted. Any methods that are <em>not</em> intended to be actions have previously required to be annotated with <code>@Programmatic</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Setting:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.reflector.explicitAnnotations.action=true</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>reverses this policy: left-over <code>public</code> methods will not be treated as actions unless they also have an <code>@Action</code> annotation.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.15.0-to-1.16.0_isis-mavendeps"><code>isis-mavendeps-intellij</code> Aggregator POM</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_isis-mavendeps.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The contents of the <code>org.apache.isis.mavendeps:isis-mavendeps-intellij</code> aggregator has been moved to <code>org.apache.isis.mavendeps:isis-mavendeps-webapp</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Since these are commonly found together in the webapp module, the <code>isis-mavendeps-intellij</code> reference can therefore simply be removed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Note that <code>isis-mavendeps-webapp</code> has been updated with support for running within Eclipse IDE.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.15.0-to-1.16.0_incode-platform">(non-ASF) Incode Platform</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_incode-platform.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_incode-platform.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_incode-platform.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_incode-platform.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.15.0-to-1.16.0_incode-platform.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The generic subdomain modules of the (non-ASF) <a href="http://platform.incode.org">"Incode Platform"</a> have been demoted to instead act as examples.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Rather than consume as binaries, the recommendation is to copy in the source code into your application and adapt as required.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For the time being, the binaries will continue to be released, but to avoid confusions the <code>groupId:artifactId</code> and the packages have been changed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For example, the <em>alias</em> generic subdomain has moved:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>from: <code>org.incode.module.alias:incode-module-alias-dom</code></p> </li> |
| <li> <p>to: <code>org.incode.example.alias:incode-example-alias-dom</code></p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The package has similarly changed:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>from: <code>org.incode.module.alias</code></p> </li> |
| <li> <p>to: <code>org.incode.example.alias</code></p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The full list of generic subdomains that have been renamed to examples is: <em>alias, classification, commchannel, communications, country, docfragment, document, note, settings</em> and <em>tags</em>.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.14.0-to-1.15.0">From v1.14.x to 1.15.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_isis-mavendeps"><code>isis-mavendeps</code> Aggregator POMs</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_isis-mavendeps.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_isis-mavendeps.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>To remove boilerplate in your application’s <code>pom.xml</code>, three new maven "aggregator projects have been defined:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>org.apache.isis.mavendeps:isis-mavendeps-testing</code><br></p> |
| <div class="paragraph"> |
| <p>aggregates dependencies for unit, integration and BDD tests</p> |
| </div> </li> |
| <li> <p><code>org.apache.isis.mavendeps:isis-mavendeps-webapp</code><br></p> |
| <div class="paragraph"> |
| <p>aggregates dependencies for running as a webapp</p> |
| </div> </li> |
| <li> <p><code>org.apache.isis.mavendeps:isis-mavendeps-intellij</code><br></p> |
| <div class="paragraph"> |
| <p>brings in a dependency on <code>isis-core-webserver</code> (to run the application from the command line using <code>org.apache.isis.WebServer</code>). This is defined in a profile which is actived only when running under the Intellij IDE.</p> |
| </div> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The <a href="../ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">HelloWorld</a> and <a href="../ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp</a> archetypes both make use of these new aggregators.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1528">Rename of isis-viewer-wicket artifacts (<a href="https://issues.apache.org/jira/browse/ISIS-1528">ISIS-1528</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1528.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1528.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1528.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1528.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1528.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The <code><groupId></code> and <code><artifactId></code> of the <a href="../guides/ugvw/ugvw.html">Wicket viewer</a> have been made consistent with other artifacts:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>the <code><groupId></code> has been changed from <code>org.apache.isis.viewer</code> to <code>org.apache.isis.core</code></p> </li> |
| <li> <p>the <code><artifactId></code> has been changed from <code>isis-viewer-wicket-???</code> to <code>isis-core-viewer-wicket-???</code></p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>For example:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><groupId></span>org.apache.isis.viewer<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-viewer-wicket-applib<span class="tag"></artifactId></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>has been renamed to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><groupId></span>org.apache.isis.core<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-core-viewer-wicket-applib<span class="tag"></artifactId></span></code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1611">Overriding framework services (<a href="https://issues.apache.org/jira/browse/ISIS-1611">ISIS-1611</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1611.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1611.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1611.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1611.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1611.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Domain services fall into three categories:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>application services: written by the application developer and used only within the application</p> </li> |
| <li> <p>SPI services: written by the application developer but called by the framework</p> </li> |
| <li> <p>framework services: defined within the applib with a default implementation provided by the framework itself.</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>As described <a href="../guides/ugbtb/ugbtb.html#_ugbtb_hints-and-tips_replacing-default-service-implementations">here</a>, it is possible to override framework services so that the framework uses the replacement implementation. Previously this required explicitly setting either <a href="../guides/rgant/rgant.html#_rgant-DomainService_menuOrder"><code>@DomainService#menuOrder()</code></a> or <a href="../guides/rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In 1.15.0, the default value for <code>menuOrder</code> has been set to a value lower than that of the framework-provided implementations, and so will a custom implementation will always take precedence over the framework implementations without having to remember to also set <code>menuOrder</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Of course, your application can still override <code>menuOrder</code> if it wishes. A small change (made in (<a href="https://issues.apache.org/jira/browse/ISIS-1688">ISIS-1688</a>) is that if both are set, then the minimum value is used.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1504">Metamodel validators (<a href="https://issues.apache.org/jira/browse/ISIS-1504">ISIS-1504</a>, <a href="https://issues.apache.org/jira/browse/ISIS-1622">ISIS-1622</a>, <a href="https://issues.apache.org/jira/browse/ISIS-1669">ISIS-1669</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1504.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1504.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1504.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1504.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1504.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The metamodel validator has been extended with several new checks relating to <a href="../ugfun.html#_ugfun_programming-model_view-models_jaxb">JAXB view models</a>:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>that the view model can be instantiated:</p> |
| <div class="ulist"> |
| <ul> |
| <li> <p>has a public, no-arg constructor</p> </li> |
| <li> <p>is not abstract</p> </li> |
| <li> <p>is not a member inner class (nested static class is ok)</p> </li> |
| </ul> |
| </div> </li> |
| <li> <p>that JODA datetimes are annotated with the <a href="../ugfun/ugfun.html#_ugfun_programming-model_view-models_jaxb_joda-datatypes">appropriate implementation</a> of a JAXB <code>XmlAdapter</code></p> </li> |
| <li> <p>that for references to persistent entities, that those persistent entities are annotated to use <a href="../ugfun/ugfun.html#_ugfun_programming-model_view-models_jaxb_referencing-domain-entities"><code>PersistentEntityAdapter</code></a> as their JAXB adapter.</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>... in other words, that the view model can be instantiated.</p> |
| </div> |
| <div class="paragraph"> |
| <p>These checks are enabled by default but can be disabled with a <a href="../rgcfg.html#__rgcfg_configuring-core_metamodel-validation">configuration property</a> if required.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1613">Logging workaround (<a href="https://issues.apache.org/jira/browse/ISIS-1613">ISIS-1613</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1613.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1613.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1613.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1613.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1613.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p><code>ISIS-1613</code> improves the UI so that the framework does not repaint the entire page after a property edit or after invoking an action that returns the same object (<code>this</code>). The overall effect is a smoother user experience.</p> |
| </div> |
| <div class="paragraph"> |
| <p>However, it also results in "WARN" messages being emitted by Apache Wicket. These are not harmful, but may pollute the log.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To remove them, add the following to <code>logging.properties</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="properties">log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,console |
| log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1686">Less boilerplate when bootstrapping (<a href="https://issues.apache.org/jira/browse/ISIS-1686">ISIS-1686</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1686.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1686.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1686.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1686.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1686.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Bootstrapping the application can now be accomplished with less boilerplate, both for the regular webapp and in integration tests.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For more information, see the <a href="../ugtst/ugtst.html#_ugtst_integ-test-support_bootstrapping">testing guide</a> and <a href="../rgcms/rgcms.html#__rgcms_classes_AppManifest-bootstrapping_bootstrapping_AppManifestAbstract">reference guide for classes/methods/schema</a>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1630">Fix for view models optionality (<a href="https://issues.apache.org/jira/browse/ISIS-1630">ISIS-1630</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1630.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1630.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1630.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1630.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1630.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>This ticket fixed a bug whereby - in the absence of an explicit <code>@Property(optionality=…)</code> or <code>@Nullable</code> annotation, a view model’s properties would be defaulted as optional rather than mandatory.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Note also that this bug fix means that numeric properties (eg <code>java.lang.Integer</code> and <code>java.lang.BigDecimal</code>) will default to zero if the view model is instantiated using <code>FactoryService#instantiate(…)</code>, and dates (eg <code>java.util.Date</code> and <code>org.jodatime.LocalDate</code>) will default to the current date. This could cause your application to behave differently.</p> |
| </div> |
| <div class="paragraph"> |
| <p>You should therefore inspect all properties of your view models and ensure that they are annotated as optional if required.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1595">Fix to config variable (<a href="https://issues.apache.org/jira/browse/ISIS-1595">ISIS-1595</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1595.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1595.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1595.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1595.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1595.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The configuration property <a href="../guides/rgcfg/rgcfg.html#__rgcfg_configuring-core_metamodel-validation"> <code>isis.reflector.validator.jdoqlVariablesClause</code></a> was incorrectly named <code>variablesClause</code>. This has now been corrected.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Any applications that used this configuration property should be updated.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_ISIS-1690"><code>@PostConstruct</code> always called (<a href="https://issues.apache.org/jira/browse/ISIS-1690">ISIS-1690</a>)</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1690.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1690.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1690.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1690.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_ISIS-1690.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>In previous versions, if any domain service threw an exception in their initialization method (annotated <code>@PostConstruct</code>) then none of the remaining domain services would be initialized. Even though the failing service would cause an error to be logged during start-up, this could still manifest as the application starting (in a fashion) but then failing in unrelated areas later on.</p> |
| </div> |
| <div class="paragraph"> |
| <p>As of this version, the framework now always calls ensures that all services are initialized, even if one or more of them throw an exception. The first exception encountered is then re-thrown (to preserve similar behaviour as possible to earlier versions).</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.14.0-to-1.15.0_incode-platform">(non-ASF) Incode Platform</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_incode-platform.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_incode-platform.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_incode-platform.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_incode-platform.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.14.0-to-1.15.0_incode-platform.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The various (non-ASF) <a href="http://isisaddons.org">Isis Addons</a> and <a href="http://catalog.incode.org">Incode Catalog</a> have also been combined into a single <a href="http://platform.incode.org">"Incode Platform"</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>While each module can still be consumed individually, the new platform versions consistently (a change in any one module will result in a re-release of all). This should make these modules easier to consume, and easier to maintain/develop.</p> |
| </div> |
| <div class="paragraph"> |
| <p>All the modules remain open source, still licensed under the ASF v2.0 license.</p> |
| </div> |
| <div class="paragraph"> |
| <p>As of this release, none of the <code>groupId</code>s or <code>artifactId</code>s have changed. They will be rationalized/made consistent in a future release; most probably to coincide with v2.0.0 of the framework.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.13.0-to-1.14.0">From v1.13.x to 1.14.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.13.0-to-1.14.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.13.0-to-1.14.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.13.0-to-1.14.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.13.0-to-1.14.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.13.0-to-1.14.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_new_metamodel_validations">New metamodel validations</h3> |
| <div class="paragraph"> |
| <p>This release defines a number of metamodel validations. These can be enabled or disabled using configuration properties:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>isis.reflector.validator.explicitObjectType</code><br></p> |
| <div class="paragraph"> |
| <p>Whether to check that the class has an object type explicitly specified somehow. This is strongly recommended, but is disabled by default to prevent migration issues.</p> |
| </div> </li> |
| <li> <p><code>isis.reflector.validator.jdoqlFromClause</code><br></p> |
| <div class="paragraph"> |
| <p>Whether to check that the class name in JDOQL <code>FROM</code> clause matches or is a supertype of the class on which it is annotated. This is enabled by default.</p> |
| </div> </li> |
| <li> <p><code>isis.reflector.validator.jdoqlVariablesClause</code><br></p> |
| <div class="paragraph"> |
| <p>Whether to check that the class name in JDOQL <code>VARIABLES</code> clause is a recognized class. This is enabled by default.</p> |
| </div> </li> |
| <li> <p><code>isis.reflector.validator.mixinsOnly</code><br></p> |
| <div class="paragraph"> |
| <p>This is disabled by default; if enabled, this configuration property will treat any contributed service as invalid; instead use mixins (as a simpler/less confusing programming model).</p> |
| </div> </li> |
| <li> <p><code>isis.reflector.validator.noParamsOnly</code><br></p> |
| <div class="paragraph"> |
| <p>When searching for <a href="../guides/rgcms/rgcms.html#_rgcms_methods_prefixes_disable"><code>disableXxx()</code></a> or <a href="../guides/rgcms/rgcms.html#_rgcms_methods_prefixes_hide"><code>hideXxx()</code></a> supporting methods, whether to search only for the no-param version (or also for supporting methods that match the parameter types of the action).<br></p> |
| </div> |
| <div class="paragraph"> |
| <p>This is disabled by default; if enabled then this makes for a simpler programming model.</p> |
| </div> </li> |
| <li> <p><code>isis.reflector.validator.serviceActionsOnly</code><br></p> |
| <div class="paragraph"> |
| <p>Domain services are stateless (at least conceptually) and so should not have any properties or collections; any that are defined will not be rendered by the viewers.<br></p> |
| </div> |
| <div class="paragraph"> |
| <p>This is disabled by default; if enabled, then this ensure that domain services only declare actions and so makes for a simpler programming model.</p> |
| </div> </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.12.0-to-1.13.0">From v1.12.x to 1.13.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.12.0-to-1.13.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.12.0-to-1.13.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.12.0-to-1.13.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.12.0-to-1.13.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.12.0-to-1.13.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Most applications written against v1.12.x should run against v1.13.0 with few if any changes. That said, this release has removed a small number of features that were dependent on internal APIs, and some configuration properties are now removed/unsupported. We therefore do recommend that you read and keep in mind these notes when you upgrade your app.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you <strong>do</strong> encounter any difficulties then let us know via the <a href="../support.html">users mailing list</a>, so we can support you and document issues here.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_command_changes">Command changes</h3> |
| <div class="paragraph"> |
| <p>The main feature in <code>1.13.0</code> is the <a href="../guides/rgsvc/rgsvc.html#<em>rgsvc_application-layer-api_InteractionContext"><code>InteractionContext</code></a> domain service to represent an action invocation/property edit, with the re-positioning of <a href="../guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_CommandContext"><code>CommandContext</code></a> to represent the _intention to invoke an action/edit a property. You can read more about this design in the reference guide on domain services, in the <a href="../guides/rgsvc/rgsvc.html#__rgsvc_intro_commands-and-events">commands and events</a> section.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This refactoring completely overhauls the structure of the XML mementos passed to <a href="../guides/rgsvc/rgsvc.html#_rgsvc_application-layer-spi_CommandService"><code>CommandService</code></a> (to persist) and to <a href="../guides/rgsvc/rgsvc.html#_rgsvc_application-layer-spi_BackgroundCommandService"><code>BackgroundCommandService</code></a> (to invoke persisted commands in the background). If you are using these services then ensure that there are no pending commands at the point at which you cut-over. If you have any code that makes assumptions on the format of the XML, it will also need to be rewritten. Note that the XML which is persisted henceforth is well-defined and any future changes to it will be backward compatible; see <a href="../guides/rgcms/rgcms.html#_rgcms_schema">schema reference guide</a>. In fact, there are three schema: for commands (<code>cmd.xsd</code>), inteactions (<code>ixn.xsd</code>) and for changes (<code>chg.xsd</code>). These replace the earlier <code>aim.xsd</code> schema (which was an amalgam of <code>cmd.xsd</code> and <code>ixn.xsd</code>).</p> |
| </div> |
| <div class="paragraph"> |
| <p>The reworked <code>CommandService</code> now properly supports property edits in the exact same way as action invocations.</p> |
| </div> |
| <div class="paragraph"> |
| <p>As a side-effect of this work, note also that:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>the <code>CommandService#startTransaction(…)</code> SPI is <strong>NO LONGER CALLED</strong> by the framework.</p> </li> |
| <li> <p>the <code>BackgroundService#asActionInvocationMemento(…)</code> (not formally part of the API) is also no longer called by the framework; moreover the default implementation now throws an exception to this effect.</p> </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_auditing">Auditing</h3> |
| <div class="paragraph"> |
| <p>The <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_AuditingService"><code>AuditingService</code></a> SPI service has been deprecated, instead replaced by the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_AuditerService"><code>AuditerService</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>There can be more than one implementation of this new SPI, and a framework-provided implementation (<code>AuditerServiceLogging</code>) will log to a file. The (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a>'s audit module also implements the new SPI.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_publishing">Publishing</h3> |
| <div class="paragraph"> |
| <p>The <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_PublishingService"><code>PublishingService</code></a> SPI service and its supporting <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_EventSerializer"><code>EventSerializer</code></a> domain service, have both deprecated, instead replaced by the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-spi_PublisherService"><code>PublisherService</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>There can be more than one implementation of this new SPI, and a framework-provided implementation (<code>PublisherServiceLogging</code>) will log to a file. The (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a>'s publishmq module also implements the new SPI.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The new service also supports the notion of published property edits; the new <a href="../guides/rgant/rgant.html#_rgant-Property_publishing"><code>@Property#publishing()</code></a> annotation attribute can be used to specify. The ` isis.services.publish.properties` configuration property can be used to specify a fallback default for properties where the attribute is not set explicitly.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Conversely, neither the <a href="../guides/rgant/rgant.html#_rgant-Action_publishingPayloadFactory"><code>@Action#publishingPayloadFactory()</code></a> nor the <a href="../guides/rgant/rgant.html#_rgant-DomainObject_publishingPayloadFactory"><code>@DomainObject#publishingPayloadFactory()</code></a> are supported by <code>PublisherService</code>; instead the consumers of the events are expected to callback for any additional information, eg using <a href="../guides/ugvro/ugvro.html">Resful Objects</a> viewer.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_auto_logout">Auto-logout</h3> |
| <div class="paragraph"> |
| <p>The new configuration property <code>isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated</code> (documented more fully in the <a href="../guides/ugsec/ugsec.html#_ugsec_configuring-isis-to-use-shiro">security guide</a>) is by default set to false, thereby disabling auto-logout behaviour that is believed to be the root cause of some exceptions thrown by the <a href="../guides/ugvro/ugvro.html">Restful Objects viewer</a> during a race condition. The <strong>previous behaviour can be re-enabled</strong> by setting to <code>true</code>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_safe_rememberme_cookies">Safe 'rememberMe' cookies</h3> |
| <div class="paragraph"> |
| <p>Apache Isis leverages <a href="http://wicket.apache.org">Apache Wicket</a>'s rememberMe support which holds remembered user/passwords in an encrypted cookie.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If a hard-coded and publicly known value were to be used (as was the case prior to <code>1.13.0</code>), then it would be possible for rememberMe user/password to be intercepted and decrypted, possibly compromising access. The <code>isis.viewer.wicket.rememberMe.encryptionKey</code> configuration property therefore allows a private key to be specified, baked into the application.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If no value is set then (for safety) a random UUID will be used as the encryption key. (The net effect of this fallback behaviour is that 'rememberMe' will work, but only until the webapp is restarted (after which the end-user will have to log in again).</p> |
| </div> |
| <div class="paragraph"> |
| <p>Related, the <code>isis.viewer.wicket.suppressRememberMe</code> configuration property has been replaced by <code>isis.viewer.wicket.rememberMe.suppress</code> (though the old configuration property is still supported).</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_custom_programming_models">Custom programming models</h3> |
| <div class="paragraph"> |
| <p>In previous releases the <code>isis.reflector.facets</code> configuration property could be used to specify a new implementation of the (internal) <code>ProgrammingModel</code> API. This configuration property is no longer supported. See the <a href="../guides/ugbtb/ugbtb.html#_ugbtb_programming-model_finetuning">beyond the basics</a> guide for an alternative broadly equivalent approach.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_injectxxx_no_longer_supported">injectXxx() no longer supported</h3> |
| <div class="paragraph"> |
| <p>Apache Isis automatically injects domain services into other domain objects, supporting the <a href="../guides/rgant/rgant.html#_rgant-Inject"><code>@Inject</code></a> annotation, also injection to <code>set…()</code> setter methods and finally injection into <code>inject…()</code> methods. This last method is now no longer supported by default. It can be re-enabled if necessary using the <code>isis.services.injector.injectPrefix</code> configuration property.</p> |
| </div> |
| <div class="paragraph"> |
| <p>It is also possible to disable injection to <code>set…()</code> methods (using the <code>isis.services.injector.setPrefix</code> configuration property), though this is enabled by default.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Disabling auto-wiring has a positive impact on bootstrap times, as well as standarding Apache Isis' conventions to be more in line with JEE.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_optionally_ignore_deprecated_facets">Optionally ignore deprecated facets</h3> |
| <div class="paragraph"> |
| <p>The <code>isis.reflector.facets.ignoreDeprecated</code> configuration property indicates whether to continue to honour or to simply ignore any deprecated annotations and other semantics that make up the programming model.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This is disabled by default, in other words deprecated facets continue to be recognized. Be aware that enabling this setting could substantially alter the semantics of your application. To be safe, we recommend that you first run the application using <code>isis.reflector.validator.allowDeprecated</code> set to <code>false</code>; if any deprecated annotations etc. are in use, then the app will fail-fast and refuse to start.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_applicationfeaturerepository">ApplicationFeatureRepository</h3> |
| <div class="paragraph"> |
| <p>The <code>isis.services.applicationFeatures.init</code> configuration property is used to control whether the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_metadata-api_ApplicationFeatureRepository"><code>ApplicationFeatureRepository</code></a> domain service lazily or eagerly initializes itself based on the framework’s internal metamodel.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Previously this service eagerly initialized itself, causing the framework to have to traverse the domain object model graph for all types, noticeably increasing the bootstrap time. For <code>1.13.0</code> this service now initializes itself lazily. The previous behaviour (of eager initialization) can be re-enabled by setting this property to <code>eager</code>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_integration_testing">Integration testing</h3> |
| <div class="paragraph"> |
| <p>There are two sets of changes relating to integration tests.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="_builder">Builder</h4> |
| <div class="paragraph"> |
| <p>The <code>IsisSystemForTest.Builder</code> class is used to <a href="../guides/ugtst/ugtst.html#_ugtst_integ-test-support_bootstrapping">bootstrap integration tests</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>A number of the clauses within this class have been removed:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>with(PersistenceMechanismInstaller persistenceMechanismInstaller)</code><br></p> |
| <div class="paragraph"> |
| <p>Apache Isis has for many releases only supported a single implementation of persistence mechanism (JDO/DataNucleus), so this builder method is redundant.</p> |
| </div> </li> |
| <li> <p><code>with(ProgrammingModel programmingModel)</code><br></p> |
| <div class="paragraph"> |
| <p>Instead, use <code>AppManifest#getConfiguration()</code> to <a href="../guides/ugbtb/ugbtb.html#_ugbtb_programming-model_finetuning">include/exclude facets</a></p> |
| </div> </li> |
| <li> <p><code>with(MetaModelValidator metaModelValidator)</code><br></p> |
| <div class="paragraph"> |
| <p>Instead, use <code>AppManifest#getConfiguration()</code> to specify a <a href="../guides/ugbtb/ugbtb.html#_ugbtb_programming-model_custom-validator">custom validator</a>.</p> |
| </div> </li> |
| <li> <p><code>withServicesIn(String… packagePrefixes)</code> and <code>withServices(Object… services)</code><br></p> |
| <div class="paragraph"> |
| <p>Instead, use <code>AppManifest#getAdditionalServices()</code></p> |
| </div> </li> |
| <li> <p><code>withFixtures(InstallableFixture… fixtures)</code><br></p> |
| <div class="paragraph"> |
| <p>Instead, use <code>AppManifest#getFixtures()</code></p> |
| </div> </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_centralizing_configuration">Centralizing configuration</h4> |
| <div class="paragraph"> |
| <p>Previously when bootstrapping the integration tests, the <code>IsisConfigurationForJdoIntegTests</code> was provided as a custom implementation of <code>IsisConfiguration</code>, providing a number of configuration settings specifically for running integration tests (eg run using an in-memory database). This design split the responsiblity of providing the configuration properties between that class and <code>AppManifest</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>A new <code>AppManifest.Util</code> helper class now allows these responsibilities to belong exlusively to the <code>AppManifest</code>. For example:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">DomainAppSystemInitializer</span> { |
| <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> initIsft() { |
| IsisSystemForTest isft = IsisSystemForTest.getElseNull(); |
| <span class="keyword">if</span>(isft == <span class="predefined-constant">null</span>) { |
| isft = <span class="keyword">new</span> IsisSystemForTest.Builder() |
| .withLoggingAt(org.apache.log4j.Level.INFO) |
| .with(<span class="keyword">new</span> DomainAppAppManifest() { |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">Map</span><<span class="predefined-type">String</span>, <span class="predefined-type">String</span>> getConfigurationProperties() { |
| <span class="directive">final</span> <span class="predefined-type">Map</span><<span class="predefined-type">String</span>, <span class="predefined-type">String</span>> map = Maps.newHashMap(); |
| <span class="predefined-type">Util</span>.withJavaxJdoRunInMemoryProperties(map); |
| <span class="predefined-type">Util</span>.withDataNucleusProperties(map); |
| <span class="predefined-type">Util</span>.withIsisIntegTestProperties(map); |
| <span class="keyword">return</span> map; |
| } |
| }) |
| .build(); |
| isft.setUpSystem(); |
| IsisSystemForTest.set(isft); |
| } |
| } |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_web_xml">web.xml</h3> |
| <div class="paragraph"> |
| <p>In the <a href="../guides/ugbtb/ugbtb.html#_ugbtb_web-xml"><code>web.xml</code></a>, the "isis.viewers" context-param is now ignored. Instead the <code>viewer_wicket.properties</code> and <code>viewer_restfulobjects.properties</code> will both be loaded if present (but neither need be present).</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="__code_hastransactionid_code_mixin"><code>HasTransactionId</code> mixin</h3> |
| <div class="paragraph"> |
| <p>The <a href="../guides/rgcms/rgcms.html#_rgcms_classes_mixins_HasTransactionId"><code>HasTransactionId</code></a> mixin interface has subtly changed its meaning (and is now somewhat mis-named). Prior to <code>1.13.0</code>, this identifier was the GUID of the Isis transaction in which the object was created. As of <code>1.13.0</code>, this identifier actually is for the request/interaction (as per the new <a href="../guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_InteractionContext"><code>InteractionContext</code></a> service) in which the object was created.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_notable_new_features">Notable new features</h3> |
| <div class="paragraph"> |
| <p>The following are new features so do not impact in themselves impact any migration effort, but you may wish to start taking advantage of once you have upgraded.</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>@Nullable</code> annotation<br></p> |
| <div class="paragraph"> |
| <p>The <a href="../guides/rgant/rgant.html#_rgant-Nullable"><code>@Nullable</code></a> annotation can now be used to specify the optionality of properties and parameters.</p> |
| </div> </li> |
| <li> <p><code>ActionDomainEvent</code> for mixins<br></p> |
| <div class="paragraph"> |
| <p>Previously it was not possible to discover the mixed-in domain object when an <code>ActionDomainEvent</code> was raised by a mixin action. This is now possible, through the <a href="../guides/rgcms/rgcms.html#_rgcms_classes_domainevent_ActionDomainEvent"><code>mixedIn()</code></a> method.</p> |
| </div> </li> |
| <li> <p><code>Blob</code> and <code>Clob</code> file types<br></p> |
| <div class="paragraph"> |
| <p>The <a href="../guides/rgant/rgant.html#_rgant-Property_fileAccept"><code>@Property#fileAccept()</code></a> and <a href="../guides/rgant/rgant.html#_rgant-Parameter-fileAccept"><code>@Parameter#fileAccept()</code></a> annotation attributes can be used to hint at the file type to upload for a blob or clob.</p> |
| </div> </li> |
| <li> <p>Live reloading<br></p> |
| <div class="paragraph"> |
| <p>The <code>isis.viewer.wicket.liveReloadUrl</code> configuration property allows live reloading of objects if the layout is updated, reducing feedback times. Further guidance on setting this up can be found <a href="../guides/dg/dg.html#__dg_ide_intellij_advanced_gradle-liveReload">here</a>.</p> |
| </div> </li> |
| <li> <p>Docker support<br></p> |
| <div class="paragraph"> |
| <p>The <code>overrides.properties</code> configuration file, if present, is loaded last as the configuration property file, with its contents overriding any previously defined configuration properties. This simple idea makes it easy to create Docker container images; see <a href="../guides/ugbtb/ugbtb.html#_ugbtb_deployment_docker">here</a> for further discussion.</p> |
| </div> </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.11.0-to-1.12.0">From v1.11.0 to 1.12.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.11.0-to-1.12.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.11.0-to-1.12.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.11.0-to-1.12.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.11.0-to-1.12.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.11.0-to-1.12.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Existing projects written against v1.11.x should run against v1.12.0 with few if any changes. If you <strong>do</strong> encounter any difficulties then let us know via the <a href="../support.html">users mailing list</a>, so we can support you and document issues here.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_dynamic_xml_layouts">Dynamic XML Layouts</h3> |
| <div class="paragraph"> |
| <p>The major new feature in 1.12.0 is <a href="../guides/ugvw/ugvw.html#_ugvw_layout_file-based">dynamic XML layouts</a>, providing much enhanced support for custom layouts.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The new <code>Xxx.layout.xml</code> file is optional; without it domain objects will continue to be rendered as before, using metadata from annotations (<a href="../guides/rgant/rgant.html#_rgant-DomainObjectLayout"><code>@DomainObjectLayout</code></a>, <a href="../guides/rgant/rgant.html#_rgant-PropertyLayout"><code>@PropertyLayout</code></a>, <a href="../guides/rgant/rgant.html#_rgant-CollectionLayout"><code>@CollectionLayout</code></a>, <a href="../guides/rgant/rgant.html#_rgant-ActionLayout"><code>@ActionLayout</code></a>, <a href="../guides/rgant/rgant.html#_rgant-MemberOrder"><code>@MemberOrder</code></a> and <a href="../guides/rgant/rgant.html#_rgant-MemberGroupLayout"><code>@MemberGroupLayout</code></a>), and also from any <a href="../guides/ugvw/ugvw.html#_ugvw_layout_file-based"><code>Xxx.layout.json</code></a> file that might already exist. There is therefore no requirement to move to the new more flexible XML-based layout.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you do want to start using the new format, then you will find that 1.12.0 provides a mixin action (available in prototype mode only) called "download XML layout". This will allow you to download the current layout file for the object being rendered. This can then be saved alongside the class' Java source file. Once a <code>Xxx.layout.xml</code> file is present, any existing <code>Xxx.layout.json</code> file will be ignored; any annotations though will continue to be honoured.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you wish to migrate all your domain objects to use XML layouts, this can be done using the "download layouts (XML)" (on the "Prototyping" menu), as a single zip file. This can then be unzipped into the <code>src/main/java</code> directory.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_mixins">Mixins</h3> |
| <div class="paragraph"> |
| <p>(As mentioned above), 1.12.0 provides a number of new mixin actions and properties:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><a href="../guides/rgcms/rgcms.html#__rgcms_classes_mixins_Object_clearHints">clear hints</a> action</p> </li> |
| <li> <p><a href="../guides/rgcms/rgcms.html#__rgcms_classes_mixins_Object_downloadLayoutXml">download Layout XML</a> action (prototype mode)</p> </li> |
| <li> <p><a href="../guides/rgcms/rgcms.html#__rgcms_classes_mixins_Object_rebuildMetamodel">rebuild metamodel</a> action (prototype mode)</p> </li> |
| <li> <p><a href="../guides/rgcms/rgcms.html#__rgcms_classes_mixins_Persistable_datanucleusXxx">id and version</a> properties (for domain entities only)</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>These are in addition to the <a href="../guides/rgcms/rgcms.html#__rgcms_classes_mixins_Persistable_downloadJdoMetadata">download JDO metadata</a> mixin action (prototype mode) provided in earlier versions of the framework.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The properties are grouped in a "metadata" fieldset, and the mixin actions associated with that fieldset. If the domain object is a view model rather than an entity (that is, has no id or version) then the actions will instead be rendered as top-level actions.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Most of these mixin object members are visible only in prototype mode, though some are visible in production mode and so potentially visible to end-users. If you wish to suppress these members from the view, you can either use <a href="../guides/ugsec/ugsec.html">security</a>, or alternatively you can write <a href="../guides/rgcms/rgcms.html#_rgcms_classes_super_AbstractSubscriber">subscriber</a>s to veto the visibility of these members by subscribing to their respective domain events.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_jaxb_view_models_are_editable">JAXB view models are editable</h3> |
| <div class="paragraph"> |
| <p>All <a href="../guides/rgant/rgant.html#_rgant-XmlRootElement"><code>@XmlRootElement</code></a> view models are now implicitly editable. Therefore any view models that should be read-only should have editing attribute disabled using <a href="../guides/rgant/rgant.html#_rgant-DomainObject_editing"><code>@DomainObject#editing()</code></a> (or use a <a href="../guides/rgcms/rgcms.html#_rgcms_classes_super_AbstractSubscriber">subscriber</a> to veto editability).</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="__code_domainobjectcontainer_code_domain_service"><code>DomainObjectContainer</code> domain service</h3> |
| <div class="paragraph"> |
| <p>The <a href="../guides/rgsvc/rgsvc.html#_rgsvc_core-domain-api_DomainObjectContainer"><code>DomainObjectContainer</code></a>domain service has been deprecated, with its methods moved to a new set of more fine-grained domain services, such as <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService"><code>RepositoryService</code></a> and <a href="../guides/rgsvc/rgsvc.html#_rgsvc_application-layer-api_MessageService"><code>MessageService</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The <code>DomainObjectContainer</code> service will continue to be supported until Apache Isis v2.0.0, but in the meantime, consider changing existing application code to use these new domain services.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Please note that when migrating from _rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api.adoc#_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api[<code>DomainObjectContainer#persist()</code>] to <a href="../../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService"><code>RepositoryService#persist()</code></a>, no exception will be thrown if the Domain Object is already persisted, so the behavior of <a href="../guides/rgsvc/rgsvc.html#_rgsvc_persistence-layer-api_RepositoryService"><code>RepositoryService#persist()</code></a> will be the same as that of <a href="../guides/rgsvc/rgsvc.html#_rgsvc_core-domain-api_DomainObjectContainer_object-persistence-api"><code>DomainObjectContainer#persistIfNotAlready()</code></a>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_removal_of_the_code_self_host_code_profile">Removal of the <code>self-host</code> profile</h3> |
| <div class="paragraph"> |
| <p>The <code>self-host</code> profile has been removed from the <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>. Instead, run the application using either the <code>org.apache.isis.WebServer</code> main class, or <code>mvn jetty:run</code>, or build the WAR and deploy to a servlet container such as Tomcat.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="__code_isis_viewer_wicket_disablemodaldialogs_code_removed"><code>isis.viewer.wicket.disableModalDialogs</code> removed</h3> |
| <div class="paragraph"> |
| <p>The Apache Isis Wicket viewer uses a modal dialog for action parameters. Before this feature was implemented (prior to 1.4.0), action parameters were rendered on their own page. This property was provided to re-enable the old behaviour.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The property has now been removed and this feature removed; actions parameters are always now always shown in a modal dialog.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.10.0-to-1.11.0">From v1.10.0 to 1.11.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.10.0-to-1.11.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.10.0-to-1.11.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.10.0-to-1.11.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.10.0-to-1.11.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.10.0-to-1.11.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Existing projects written against v1.10.0 should run against v1.11.0 with few if any changes. If you <strong>do</strong> encounter any difficulties then let us know via the <a href="../support.html">users mailing list</a>, so we can support you and document issues here.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_swagger_ui">Swagger UI</h3> |
| <div class="paragraph"> |
| <p>The new <a href="../guides/rgsvc/rgsvc.html#_rgsvc_metadata-api_SwaggerService"><code>SwaggerService</code></a> allows <a href="http://swagger.io">Swagger</a> spec files to be generated from the Apache Isis metamodel. These can be downloaded directly through the <code>SwaggerResource</code> (mapped to <code>/restful/swagger/public</code> and <code>/restful/swagger/private</code>) as well as from the Wicket UI through the <code>SwaggerServiceMenu</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In addition, the <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> now bundles <a href="https://github.com/swagger-api/swagger-ui">Swagger UI</a>, which documents the main features of the REST API and allows it to be explored.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To enable this in your application, first update the <code>web.xml</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><servlet></span> |
| <span class="tag"><servlet-name></span>WebjarsServlet<span class="tag"></servlet-name></span> <i class="conum" data-value="1"></i><b>(1)</b> |
| <span class="tag"><servlet-class></span>org.webjars.servlet.WebjarsServlet<span class="tag"></servlet-class></span> |
| <span class="tag"><init-param></span> |
| <span class="tag"><param-name></span>disableCache<span class="tag"></param-name></span> |
| <span class="tag"><param-value></span>false<span class="tag"></param-value></span> |
| <span class="tag"></init-param></span> |
| <span class="tag"><load-on-startup></span>2<span class="tag"></load-on-startup></span> |
| <span class="tag"></servlet></span> |
| <span class="tag"><servlet-mapping></span> |
| <span class="tag"><servlet-name></span>WebjarsServlet<span class="tag"></servlet-name></span> |
| <span class="tag"><url-pattern></span>/webjars/*<span class="tag"></url-pattern></span> |
| <span class="tag"></servlet-mapping></span> |
| ... |
| <span class="tag"><filter></span> |
| <span class="tag"><filter-name></span>IsisSessionFilterForRestfulObjects<span class="tag"></filter-name></span> |
| ... |
| <span class="tag"><init-param></span> |
| <span class="tag"><param-name></span>whenNoSession<span class="tag"></param-name></span> |
| <span class="tag"><param-value></span>auto<span class="tag"></param-value></span> <i class="conum" data-value="2"></i><b>(2)</b> |
| <span class="tag"></init-param></span> |
| <span class="tag"><init-param></span> |
| <span class="tag"><param-name></span>passThru<span class="tag"></param-name></span> <i class="conum" data-value="3"></i><b>(3)</b> |
| <span class="tag"><param-value></span>/restful/swagger<span class="tag"></param-value></span> |
| <span class="tag"></init-param></span> |
| <span class="tag"></filter></span></code></pre> |
| </div> |
| </div> |
| <div class="colist arabic"> |
| <table> |
| <tbody> |
| <tr> |
| <td><i class="conum" data-value="1"></i><b>1</b></td> |
| <td>provides access to the Swagger UI (packaged as a webjar)</td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="2"></i><b>2</b></td> |
| <td>issues a 401 status, but with the <code>WWW-Authenticate</code> challenge suppressed if requested from the Swagger UI</td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="3"></i><b>3</b></td> |
| <td>provides access to the RESTful resource that generates the Swagger spec.</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>There is also an HTML page to load the Swagger UI itself; this resides in <code>src/main/webapp/swagger-ui/index.html</code>. Copy the <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/webapp/src/main/webapp/swagger-ui/index.html">file from Apache Isis' repo</a>, or from the app generated by the <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The text of the simple app’s <code>about/index.html</code> has also changed (the <code><li</code>> for the <code>/restful</code> URL has been replaced with a <code>/swagger-ui</code> URL). If you use <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/webapp/src/main/webapp/about/index.html">this file</a>, then update it.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If your application is bootstrapped using an <code>AppManifest</code> (recommended; <a href="../guides/rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">here</a>) then the default implementation of the <code>SwaggerService</code> will automatically be discovered and registered. However, if you are still using the older <code>isis.properties</code> configuration file to explicitly register services then you will need to add in this service.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="__code_routingservice_code"><code>RoutingService</code></h3> |
| <div class="paragraph"> |
| <p>The new <a href="../guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_RoutingService"><code>RoutingService</code></a> SPI service provides a plugin point to the <a href="../guides/ugvw/ugvw.html">Wicket viewer</a> so that a different object than that returned from an action invocation can be rendered.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The framework provides a default implementation of this service that will - instead of a void or a <code>null</code> result - render the home page (as per the <a href="../guides/rgant/rgant.html#_rgant-HomePage"><code>@HomePage</code></a> annotation) if there is one. This is therefore a subtle change in the UI. If you wish to retain the original behaviour (to return the "no results" page instead), then you should implement your own no-op implementation of this service:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@DomainService</span> |
| <span class="annotation">@DomainServiceLayout</span>(menuOrder=<span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>) |
| <span class="directive">public</span> <span class="type">class</span> <span class="class">IdentityRoutingService</span> <span class="directive">implements</span> RoutingService { |
| <span class="directive">public</span> <span class="type">boolean</span> canRoute(<span class="predefined-type">Object</span> original) { <span class="keyword">return</span> <span class="predefined-constant">true</span>; } |
| <span class="directive">public</span> <span class="predefined-type">Object</span> route(<span class="predefined-type">Object</span> original) { <span class="keyword">return</span> original; } |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_wicket_viewer_i18n">Wicket Viewer i18n</h3> |
| <div class="paragraph"> |
| <p>The <a href="../guides/ugvw/ugvw.html">Wicket viewer</a> (its labels, buttons, messages etc) can now be internationalized using the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_TranslationService"><code>TranslationService</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To enable this, new <code>msgId</code>s and corresponding translations must be added to the <code>translations.po</code> file. Full details of these <code>msgId</code>s can be found in <a href="../guides/ugbtb/ugbtb.html#__ugbtb_i18n_wicket-viewer">i18n</a> section of the "beyond the basics" guide.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If no translations are available, then the fallback is to use the previous mechanism, ie Wicket’s original resource bundles. This feature can therefore be considered as optional.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.9.0-to-1.10.0">From v1.9.0 to 1.10.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.9.0-to-1.10.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Existing projects written against v1.9.0 should run against v1.10.0 with only a few minor changes. If you <strong>do</strong> encounter any difficulties then let us know via the <a href="../support.html">users mailing list</a>, so we can support you and document issues here.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_remove_references_to_code_isis_viewer_wicket_code_parent_pom">Remove references to <code>isis-viewer-wicket</code> parent pom.</h3> |
| <div class="paragraph"> |
| <p>In earlier releases the Wicket viewer defined its own parent <code>pom.xml</code> for dependency management and its dependencies and to declare the various submodules that make up the viewer. This <code>pom.xml</code> has now been incorporated into the parent <code>pom.xml</code> for the Core framework.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Therefore, in the parent <code>pom.xml</code> of your own domain applications, remove:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependencyManagement></span> |
| <span class="tag"><dependencies></span> |
| ... |
| <span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.viewer<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-viewer-wicket<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>${isis.version}<span class="tag"></version></span> |
| <span class="tag"><type></span>pom<span class="tag"></type></span> |
| <span class="tag"><scope></span>import<span class="tag"></scope></span> |
| <span class="tag"></dependency></span> |
| ... |
| <span class="tag"></dependencies></span> |
| <span class="tag"></dependencyManagement></span></code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="__code_allowlateregistration_code"><code>allowLateRegistration</code></h3> |
| <div class="paragraph"> |
| <p>One possible issue is that (as per <a href="https://issues.apache.org/jira/browse/ISIS-830">ISIS-830</a>) the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> is now initialized as one of the first domain services; this is to ensure that any object lifecycle events caused by domain services initializing themselves can be posted on the event bus for subscribers. The typical case for such lifecycle events to occur is from domain services that seed reference data; one such example can be found in the (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a>'s security module.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In previous releases, the ordering of initialization for the <code>EventBusService</code> was undefined (but would typically be towards the "end" of the list of services. What this meant in practice is that it generally didn’t matter whether (domain service) subscribers were initialized before or after seed services.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Now, though, because the <code>EventBusService</code> is initialized early on, it proactively checks that all subscribers have been registered before any event posts occur (so that no events get missed). If any subscriber attempts to register after at least one event has been posted, then the service will fail fast and the framework will not start. The error looks something like:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="log">: EXEC |
| org.isisaddons.module.security.seed.scripts.IsisModuleSecurityAdminUser |
| seed-users-and-roles-fixture-script/isis-applib-fixture-results-role-and-permissions |
| : EXEC |
| org.isisaddons.module.security.seed.scripts.IsisApplibFixtureResultsRoleAndPermissions |
| 19:41:19,478 [IsisTransaction main INFO ] abort transaction |
| IsisTransaction@5dc1597f[state=MUST_ABORT,commands=1] |
| 19:41:19,495 [IsisWicketApplication main ERROR] Failed to initialize |
| com.google.inject.ProvisionException: Guice provision errors: |
| |
| 1) Error in custom provider, |
| org.apache.isis.core.runtime.system.transaction.IsisTransactionManagerException: |
| java.lang.IllegalStateException: Events have already been posted; too late |
| to register any further (singleton) subscribers |
| at |
| org.apache.isis.core.runtime.runner.IsisInjectModule.provideIsisSystem(IsisInjectModule.java:139)</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>To ensure that subscriber domain services are initialized before "seed" domain services, the <a href="../guides/rgant/rgant.html#_rgant-DomainServiceLayout_menuOrder"><code>@DomainServiceLayout#menuOrder()</code></a> attribute can be used. Normally this attribute is just used to order UI-visible services on the menu bars, but it also is used internally to sequence the internal list of services being initialized.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Alternatively, you can disable this checking within the <code>EventBusService</code> using:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.services.eventbus.allowLateRegistration=true</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If you do that, be aware that not all subscribers may not receive some events generated by other domain services.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For more details, see the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_core-domain-api_EventBusService"><code>EventBusService</code></a> man page.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_simplify_domain_events">Simplify domain events</h3> |
| <div class="paragraph"> |
| <p>The domain event superclasses now provide no-arg versions; the framework will use new (non-API) setters to initialize.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This means that domain events can be substantially simplified, eg from this:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">ToDoItem</span> { |
| <span class="directive">public</span> <span class="directive">static</span> <span class="type">class</span> <span class="class">CompletedEvent</span> <span class="directive">extends</span> ActionDomainEvent<ToDoItem> { |
| <span class="directive">private</span> <span class="directive">static</span> <span class="directive">final</span> <span class="type">long</span> serialVersionUID = <span class="integer">1L</span>; |
| <span class="directive">public</span> CompletedEvent( |
| <span class="directive">final</span> ToDoItem source, |
| <span class="directive">final</span> Identifier identifier, |
| <span class="directive">final</span> <span class="predefined-type">Object</span>... arguments) { |
| <span class="local-variable">super</span>(<span class="string"><span class="delimiter">"</span><span class="content">completed</span><span class="delimiter">"</span></span>, source, identifier, arguments); |
| } |
| } |
| <span class="annotation">@Action</span>(domainEvent=CompletedEvent.class) |
| <span class="directive">public</span> ToDoItem completed() { ... } |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>to just this:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">ToDoItem</span> { |
| <span class="directive">public</span> <span class="directive">static</span> <span class="type">class</span> <span class="class">CompletedEvent</span> <span class="directive">extends</span> ActionDomainEvent<ToDoItem> { } <i class="conum" data-value="1"></i><b>(1)</b> |
| <span class="annotation">@Action</span>(domainEvent=CompletedEvent.class) |
| <span class="directive">public</span> ToDoItem completed() { ... } |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_isis_maven_plugin">isis-maven-plugin</h3> |
| <div class="paragraph"> |
| <p>The way that the Isis Maven plugin is configured has changed slightly; check out its <a href="../guides/rgmvn/rgmvn.html">documentation</a> for full details.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.8.0-to-1.9.0">From v1.8.0 to 1.9.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_upgrading-to-dn4">Upgrading to DataNucleus 4</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-dn4.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-dn4.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-dn4.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-dn4.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-dn4.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Apache Isis 1.9.0 updates to DataNucleus 4.0.0, which requires some changes (simplifications) to the Maven configuration.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you starting a new app then you can start from the <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>; its Maven configuration has been updated.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you have an existing Apache Isis app that you want to upgrade, then you’ll need to make some changes.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="_in_the_parent_code_pom_xml_code">In the parent <code>pom.xml</code></h4> |
| <div class="paragraph"> |
| <p>under the <code>project/properties</code>, remove:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="comment"><!-- must be consistent with the versions defined by the JDO Objectstore --></span> |
| <span class="tag"><datanucleus-accessplatform-jdo-rdbms.version></span>3.3.6<span class="tag"></datanucleus-accessplatform-jdo-rdbms.version></span> |
| <span class="tag"><datanucleus-maven-plugin.version></span>3.3.2<span class="tag"></datanucleus-maven-plugin.version></span></code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_in_code_dom_pom_xml_code">In <code>dom/pom.xml</code>,</h4> |
| <div class="paragraph"> |
| <p>under <code>build/plugins</code>, remove:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><plugin></span> |
| <span class="tag"><groupId></span>org.datanucleus<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>datanucleus-maven-plugin<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>${datanucleus-maven-plugin.version}<span class="tag"></version></span> |
| <span class="tag"><configuration></span> |
| <span class="tag"><fork></span>false<span class="tag"></fork></span> |
| <span class="tag"><log4jConfiguration></span>${basedir}/log4j.properties<span class="tag"></log4jConfiguration></span> |
| <span class="tag"><verbose></span>true<span class="tag"></verbose></span> |
| <span class="tag"><props></span>${basedir}/datanucleus.properties<span class="tag"></props></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"><executions></span> |
| <span class="tag"><execution></span> |
| <span class="tag"><phase></span>compile<span class="tag"></phase></span> |
| <span class="tag"><goals></span> |
| <span class="tag"><goal></span>enhance<span class="tag"></goal></span> |
| <span class="tag"></goals></span> |
| <span class="tag"></execution></span> |
| <span class="tag"></executions></span> |
| <span class="tag"></plugin></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>and (if you have it) under <code>build/pluginManagement/plugins</code>, remove:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="comment"><!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--></span> |
| <span class="tag"><plugin></span> |
| <span class="tag"><groupId></span>org.eclipse.m2e<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>lifecycle-mapping<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>1.0.0<span class="tag"></version></span> |
| <span class="tag"><configuration></span> |
| <span class="tag"><lifecycleMappingMetadata></span> |
| <span class="tag"><pluginExecutions></span> |
| <span class="tag"><pluginExecution></span> |
| <span class="tag"><pluginExecutionFilter></span> |
| <span class="tag"><groupId></span> |
| org.datanucleus |
| <span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span> |
| datanucleus-maven-plugin |
| <span class="tag"></artifactId></span> |
| <span class="tag"><versionRange></span> |
| [3.2.0-release,) |
| <span class="tag"></versionRange></span> |
| <span class="tag"><goals></span> |
| <span class="tag"><goal></span>enhance<span class="tag"></goal></span> |
| <span class="tag"></goals></span> |
| <span class="tag"></pluginExecutionFilter></span> |
| <span class="tag"><action></span> |
| <span class="tag"><ignore></span><span class="tag"></ignore></span> |
| <span class="tag"></action></span> |
| <span class="tag"></pluginExecution></span> |
| <span class="tag"></pluginExecutions></span> |
| <span class="tag"></lifecycleMappingMetadata></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"></plugin></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>and instead, under <code><profiles></code> add:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><profile></span> |
| <span class="tag"><id></span>enhance<span class="tag"></id></span> |
| <span class="tag"><activation></span> |
| <span class="tag"><activeByDefault></span>true<span class="tag"></activeByDefault></span> |
| <span class="tag"></activation></span> |
| <span class="tag"><properties></span> |
| <span class="tag"><datanucleus-maven-plugin.version></span>4.0.1<span class="tag"></datanucleus-maven-plugin.version></span> |
| <span class="tag"></properties></span> |
| <span class="tag"><build></span> |
| <span class="tag"><pluginManagement></span> |
| <span class="tag"><plugins></span> |
| <span class="tag"><plugin></span> |
| <span class="comment"><!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--></span> |
| <span class="tag"><groupId></span>org.eclipse.m2e<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>lifecycle-mapping<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>1.0.0<span class="tag"></version></span> |
| <span class="tag"><configuration></span> |
| <span class="tag"><lifecycleMappingMetadata></span> |
| <span class="tag"><pluginExecutions></span> |
| <span class="tag"><pluginExecution></span> |
| <span class="tag"><pluginExecutionFilter></span> |
| <span class="tag"><groupId></span>org.datanucleus<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>datanucleus-maven-plugin<span class="tag"></artifactId></span> |
| <span class="tag"><versionRange></span>[${datanucleus-maven-plugin.version},)<span class="tag"></versionRange></span> |
| <span class="tag"><goals></span> |
| <span class="tag"><goal></span>enhance<span class="tag"></goal></span> |
| <span class="tag"></goals></span> |
| <span class="tag"></pluginExecutionFilter></span> |
| <span class="tag"><action></span> |
| <span class="tag"><ignore></span><span class="tag"></ignore></span> |
| <span class="tag"></action></span> |
| <span class="tag"></pluginExecution></span> |
| <span class="tag"></pluginExecutions></span> |
| <span class="tag"></lifecycleMappingMetadata></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"></plugin></span> |
| <span class="tag"></plugins></span> |
| <span class="tag"></pluginManagement></span> |
| <span class="tag"><plugins></span> |
| <span class="tag"><plugin></span> |
| <span class="tag"><groupId></span>org.datanucleus<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>datanucleus-maven-plugin<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>${datanucleus-maven-plugin.version}<span class="tag"></version></span> |
| <span class="tag"><configuration></span> |
| <span class="tag"><fork></span>false<span class="tag"></fork></span> |
| <span class="tag"><log4jConfiguration></span>${basedir}/log4j.properties<span class="tag"></log4jConfiguration></span> |
| <span class="tag"><verbose></span>true<span class="tag"></verbose></span> |
| <span class="tag"><props></span>${basedir}/datanucleus.properties<span class="tag"></props></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"><executions></span> |
| <span class="tag"><execution></span> |
| <span class="tag"><phase></span>process-classes<span class="tag"></phase></span> |
| <span class="tag"><goals></span> |
| <span class="tag"><goal></span>enhance<span class="tag"></goal></span> |
| <span class="tag"></goals></span> |
| <span class="tag"></execution></span> |
| <span class="tag"></executions></span> |
| <span class="tag"></plugin></span> |
| <span class="tag"></plugins></span> |
| <span class="tag"></build></span> |
| <span class="tag"><dependencies></span> |
| <span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.datanucleus<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>datanucleus-core<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span> |
| <span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.datanucleus<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>datanucleus-jodatime<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span> |
| <span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.datanucleus<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>datanucleus-api-jdo<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span> |
| <span class="tag"></dependencies></span> |
| <span class="tag"></profile></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If you don’t use Eclipse then you can omit the <code>org.eclipse.m2e</code> plugin in <code><pluginManagement></code>.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_in_the_webapp_s_code_persistor_datanucleus_properties_code">In the webapp’s <code>persistor_datanucleus.properties</code></h4> |
| <div class="paragraph"> |
| <p>in <code>src/main/webapp/WEB-INF/</code>,</p> |
| </div> |
| <div class="paragraph"> |
| <p>change:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.persistor.datanucleus.impl.datanucleus.autoCreateSchema=true |
| isis.persistor.datanucleus.impl.datanucleus.validateTables=true |
| isis.persistor.datanucleus.impl.datanucleus.validateConstraints=true</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll=true |
| isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true |
| isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true</code></pre> |
| </div> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Previously Apache Isis would automatically add the auto-create property if they were absent from <code>isis.properties</code>, set to "true". The framework does still add the property, but now sets it to "false". This is to prevent the framework from unexpectedly modifying a target database if the application was misconfigured and the auto-create property not defined.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The framework will also automatically add the auto-validate property. Previously this was set to "true" and it is <em>still</em> set to "true"; there is no risk of the target database being modified as a result of this auto-validate property being defaulted by the framework.</p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="admonitionblock important"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-important" title="Important"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Setting <code>autoCreateAll</code> to <code>true</code> is important to do when running with an in-memory database. If you don’t do this then the tables will be created lazily anyway by DataNucleus, but in some circumstances this can lead to deadlocks.</p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>In addition, change:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.persistor.datanucleus.impl.datanucleus.identifier.case=PreserveCase</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_run_code_mvn_clean_code">Run <code>mvn clean</code> !</h4> |
| <div class="paragraph"> |
| <p>Be careful to ensure that your classes are only enhanced by the DataNucleus 4 enhancer, and <em>not</em> by the DataNucleus 3 enhancer. Or even, be careful that they are not doubly enhanced. One of our committers had this situation and it led to all sorts of bizarre issues. The solution, it turned out, was actually just to do a full <code>mvn clean</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you are struggling and suspect you may have misconfigured the enhancer plugin, then you can decompile the bytecode (eg in IntelliJ) and take a look:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>A class enhanced with DataNucleus 3 would implement <code>javax.jdo.spi.PersistenceCapable</code> interface</p> </li> |
| <li> <p>A class enhanced with DataNucleus 4 will implement <code>org.datanucleus.enhancer.Persistable</code>.</p> </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages">Specify all <code>dom</code> packages</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Apache Isis automatically scans for certain classes on the classpath in order to configure itself. Specifically these are:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>searching for classes annotated with <a href="../guides/rgant/rgant.html#_rgant-DomainService"><code>@DomainService</code></a>.</p> </li> |
| <li> <p>searching for classes extending <a href="../guides/rgcms/rgcms.html#_rgcms_classes_super_FixtureScript"><code>FixtureScript</code></a></p> </li> |
| <li> <p>searching for classes annotated with <a href="../guides/rgant/rgant.html#_rgant-PersistenceCapable"><code>@PersistenceCapable</code></a>.</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>For the last of these we have tightened up the validation, to ensure that each package specified in the <code>isis.persistor.datanucleus.RegisterEntities.packagePrefix</code> key does indeed include at least one annotated entity. This should include any domain classes for addon modules.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For example, the (non-ASF) <a href="http://github.com/isisaddons/isis-app-todoapp">Isis addons' todoapp</a>'s configuration now reads:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.persistor.datanucleus.RegisterEntities.packagePrefix=\ |
| todoapp.dom.module,\ |
| org.isisaddons.module.security.dom,\ |
| org.isisaddons.module.settings.dom,\ |
| org.isisaddons.module.sessionlogger.dom,\ |
| org.isisaddons.module.command.dom,\ |
| org.isisaddons.module.audit.dom,\ |
| org.isisaddons.module.publishing.dom</code></pre> |
| </div> |
| </div> |
| <div class="admonitionblock tip"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Alternatively, could have just specified <code>org.isisaddons.module</code> instead of enumerating every addon. This would be a bit slower, but more maintainable.</p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>If you fail to do specify all packages things may still work, however DataNucleus will build up its metamodel lazily. This can call issues: we’ve seen malformed SQL being submitted when DN wasn’t aware of subclasses of a superclass, and we’ve also seen deadlocks when running against HSQLDB as it attempts to perform a DDL statement intermixed with DML statements.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8">Upgrading to Java 8</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_upgrading-to-java8.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Apache Isis 1.9.0 is the first version to support Java 8. You can continue to use Java 7, but if you want to move to Java 8 then there are several small changes to be made.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="_in_the_parent_code_pom_xml_code_2">In the parent <code>pom.xml</code></h4> |
| <div class="paragraph"> |
| <p>under <code>build/pluginManagement/plugins</code>, add (or update) <code>maven-compiler-plugin</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><plugin></span> |
| <span class="tag"><groupId></span>org.apache.maven.plugins<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>maven-compiler-plugin<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>3.1<span class="tag"></version></span> |
| <span class="tag"><configuration></span> |
| <span class="tag"><source></span>1.8<span class="tag"></source></span> |
| <span class="tag"><target></span>1.8<span class="tag"></target></span> |
| <span class="tag"><compilerArgument></span>-parameters<span class="tag"></compilerArgument></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"><executions></span> |
| <span class="tag"><execution></span> |
| <span class="tag"><id></span>source<span class="tag"></id></span> |
| <span class="tag"><phase></span>compile<span class="tag"></phase></span> |
| <span class="tag"></execution></span> |
| <span class="tag"><execution></span> |
| <span class="tag"><id></span>test<span class="tag"></id></span> |
| <span class="tag"><phase></span>test-compile<span class="tag"></phase></span> |
| <span class="tag"></execution></span> |
| <span class="tag"></executions></span> |
| <span class="tag"></plugin></span></code></pre> |
| </div> |
| </div> |
| <div class="admonitionblock tip"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>The <code>-parameters</code> argument causes the Java compiler to capture the names of method parameters in the <code>.class</code> files. Apache Isis can be configured to use this, thereby avoiding the requirement to annotate every parameter with <code>@ParameterLayout(named=…)</code>. The necessary configuration is provided in the (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a>'s paraname8 metamodel extension.</p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>We also recommend that you add the <code>maven-enforcer-plugin</code> (if not used already). Again, this resides under <code><build>/<pluginManagement>/<plugins></code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><plugin></span> |
| <span class="tag"><groupId></span>org.apache.maven.plugins<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>maven-enforcer-plugin<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>1.3.1<span class="tag"></version></span> |
| <span class="tag"><configuration></span> |
| <span class="tag"><rules></span> |
| <span class="tag"><requireMavenVersion></span> |
| <span class="tag"><version></span>[3.2.1,)<span class="tag"></version></span> |
| <span class="tag"></requireMavenVersion></span> |
| <span class="tag"><requireJavaVersion></span> |
| <span class="tag"><version></span>[1.8.0,)<span class="tag"></version></span> |
| <span class="tag"></requireJavaVersion></span> |
| <span class="tag"><requirePluginVersions></span> |
| <span class="tag"><message></span>All plugin versions must be defined!<span class="tag"></message></span> |
| <span class="tag"><banLatest></span>true<span class="tag"></banLatest></span> |
| <span class="tag"><banRelease></span>true<span class="tag"></banRelease></span> |
| <span class="tag"></requirePluginVersions></span> |
| <span class="tag"><DependencyConvergence</span> <span class="tag">/></span> |
| <span class="tag"></rules></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"><executions></span> |
| <span class="tag"><execution></span> |
| <span class="tag"><id></span>validate-enforce<span class="tag"></id></span> |
| <span class="tag"><phase></span>validate<span class="tag"></phase></span> |
| <span class="tag"><goals></span> |
| <span class="tag"><goal></span>enforce<span class="tag"></goal></span> |
| <span class="tag"></goals></span> |
| <span class="tag"></execution></span> |
| <span class="tag"></executions></span> |
| <span class="tag"></plugin></span></code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_exception-recognizer"><code>ExceptionRecognizerCompositeForJdoObjectStore</code></h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_exception-recognizer.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_exception-recognizer.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_exception-recognizer.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_exception-recognizer.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_exception-recognizer.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The <code>ExceptionRecognizerCompositeForJdoObjectStore</code> service (an implementation of the <a href="../guides/rgsvc/rgsvc.html#_rgsvc_presentation-layer-spi_ExceptionRecognizer"><code>ExceptionRecognizer</code></a> SPI) recognizes certain expected exceptions thrown by the JDO objectstore (for example, violations of uniqueness) and converts them into meaningful messages for the end-user.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Prior to 1.9.0 this implementation was <em>not</em> annotated with <a href="../guides/rgant/rgant.html#_rgant-DomainService"><code>@DomainService</code></a> and thus needed to be explicitly registered in <code>isis.properties</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In 1.9.0 the service has been annotated with <code>@DomainService</code> meaning that:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>it must be removed from <code>isis.services</code> property in <code>isis.properties</code> configuration file</p> </li> |
| <li> <p>in integration tests, if the service is explicitly registered, then it should be removed; for example:<br></p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">EstatioIntegTestBuilder</span> <span class="directive">extends</span> IsisSystemForTest.Builder { |
| <span class="directive">public</span> EstatioIntegTestBuilder() { |
| ... |
| withServices( |
| <span class="comment">// new ExceptionRecognizerCompositeForJdoObjectStore() </span><i class="conum" data-value="1"></i><b>(1)</b> |
| ); |
| } |
| ... |
| }</code></pre> |
| </div> |
| </div> |
| <div class="colist arabic"> |
| <table> |
| <tbody> |
| <tr> |
| <td><i class="conum" data-value="1"></i><b>1</b></td> |
| <td>remove this line (or comment it out, as shown)</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>If you fail to do this you will get an exception to the effect of duplicate service Ids being registered.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Now that the <code>ExceptionRecognizerCompositeForJdoObjectStore</code> no longer needs to be explicitly registered, you might (very rarely) require the opposite situation, namely to disable the service. As this can’t be done by just removing it from <code>isis.properties</code>, you instead can set a new <a href="../guides/rgcfg/rgcfg.html#_rgcfg_configuring-core">configuration property</a> <code>isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">#isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable=false</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If you did not register this service directly but instead registered a subclass of this service, then you should refactor your code so that your implementation is in a separate service, eg by subclassing <code>ExceptionRecognizerComposite</code>. You should probably also annotate with <code>@DomainService</code>.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_fixture-scripts-specification-provider"><code>FixtureScriptsSpecificationProvider</code></h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_fixture-scripts-specification-provider.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_fixture-scripts-specification-provider.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_fixture-scripts-specification-provider.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_fixture-scripts-specification-provider.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_fixture-scripts-specification-provider.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The <code>FixtureScriptsSpecificationProvider</code> SPI service is an alternative to subclassing the <a href="../guides/rgcms/rgcms.html#_rgcms_classes_super_FixtureScripts"><code>FixtureScripts</code></a> domain service. The logic that would normally be in the subclass moves to the provider service instead, and the framework instantiates a fallback default instance, <a href="../guides/rgsvc/rgsvc.html#_rgsvc_testing_FixtureScripts"><code>FixtureScriptsDefault</code></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>This new design is optional; if you continue to provide your own subclass then everything will continue as before. However the new design is more flexible and involves less code.</p> |
| </div> |
| <div class="paragraph"> |
| <p>See <a href="../guides/ugtst/ugtst.html#_ugtst_fixture-scripts_api-and-usage">user guide</a> for further discussion.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_war-packaging">War packaging</h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_war-packaging.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_war-packaging.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_war-packaging.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_war-packaging.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_war-packaging.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>As discussed in <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> and elsewhere, the <code>org.apache.isis.WebServer</code> provides the ability to run your app from an embedded jetty. This is great for prototyping. The class resides in the <code>isis-core-webserver</code> module, which also has the dependency on jetty.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In 1.9.0 we have upgraded the jetty dependency to use Jetty 9.2.0 (<code>org.eclipse.jetty.aggregate:jetty-all:9.2.11.v20150529</code>, to be precise). One consequence of this is that the packaged WAR file will not boot on Tomcat.</p> |
| </div> |
| <div class="paragraph"> |
| <p>One fix is to simply remove the <code>isis-core-webserver</code> module as a dependency of your webapp module, however this will prevent you from using our <code>org.apache.isis.WebServer</code> launcher. That’s not necessarily a bad thing; you could continue to use <code>jetty:run</code>, say. But it might be a change to your development workflow that you don’t want.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Alternatively you can change your webapp’s <code>pom.xml</code> so that when the war is packaged up it excludes the jetty files. To do this, locate the <code>maven-war-plugin</code> module definition (under <code><build>/<plugins></code> and add to its <code><configuration></code> section:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><plugin></span> |
| <span class="tag"><artifactId></span>maven-war-plugin<span class="tag"></artifactId></span> |
| <span class="tag"><configuration></span> |
| ... |
| <span class="tag"><packagingExcludes></span> |
| WEB-INF/lib/isis-core-webserver*.jar, |
| WEB-INF/lib/javax.servlet-api-*.jar, |
| WEB-INF/lib/javax.websocket-api-*.jar, |
| WEB-INF/lib/jetty-all-*.jar |
| <span class="tag"></packagingExcludes></span> |
| <span class="tag"></configuration></span> |
| <span class="tag"></plugin></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>For future projects the <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> has been updated with this change.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_migration-notes_1.8.0-to-1.9.0_bootstrapping-using-AppManifest">Bootstrapping using <code>AppManifest</code></h3> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_bootstrapping-using-AppManifest.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_bootstrapping-using-AppManifest.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_bootstrapping-using-AppManifest.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_bootstrapping-using-AppManifest.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.8.0-to-1.9.0_bootstrapping-using-AppManifest.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Apache Isis 1.9.0 provides a simplified programmatic way of bootstrapping the application, that also unifies bootstrapping for integration tests.</p> |
| </div> |
| <div class="paragraph"> |
| <p>For now this new bootstrapping mechanism is optional (you don’t have to change your code), but it may become mandatory in future releases. The <a href="../guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> has been updated to use this new mechanism.</p> |
| </div> |
| <div class="paragraph"> |
| <p>The instructions below assume that your application is structured as per the simpleapp archetype. Adjust accordingly.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="__code_myapp_dom_code_module"><code>myapp-dom</code> Module</h4> |
| <div class="paragraph"> |
| <p>In your <code>myapp-dom</code> module (containing definitions of your persistent entities and domain services), create an empty class to represent the module. This should be at the root package for the domain, eg:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">myapp.dom</span>; |
| <span class="directive">public</span> <span class="directive">final</span> <span class="type">class</span> <span class="class">MyAppDomainModule</span> { |
| <span class="directive">private</span> MyAppDomainModule(){} |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Since there is no requirement to actually instantiate this class (it merely provides the location of the <code>myapp.dom</code> package), we give it a private constructor.</p> |
| </div> |
| <div class="paragraph"> |
| <p>If you have any other modules where you have either domain services or entities, similarly create an empty "module" class.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="__code_myapp_fixture_code_module"><code>myapp-fixture</code> Module</h4> |
| <div class="paragraph"> |
| <p>Similarly, in your <code>myapp-fixture</code> module (containing fixture scripts used for testing and demos), do likewise:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">myapp.fixture</span>; |
| <span class="directive">public</span> <span class="type">class</span> <span class="class">MyAppFixtureModule</span> { |
| <span class="directive">private</span> MyAppFixtureModule(){} |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="__code_myapp_app_code_maven_module"><code>myapp-app</code> Maven Module</h4> |
| <div class="paragraph"> |
| <p>Create a new <code>myapp-app</code> Maven module:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>in its <code>pom.xml</code>, reference <code>myapp-fixture</code><br></p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>${project.groupId}<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>myapp-fixture<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Since <code>myapp-fixture</code> will reference <code>myapp-dom</code> there’s no need for a direct reference to <code>myapp-dom</code></p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> </li> |
| <li> <p>also add in dependencies to the core framework:<br></p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.core<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-core-wrapper<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span> |
| <span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.core<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-core-runtime<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> </li> |
| <li> <p>if your application uses any of the (non-ASF) <a href="http://www.isisaddons.org">Isis Addons</a> modules, then add dependencies to these modules in the <code>pom.xml</code>. You should be able to copy-and-paste the dependencies from the <code>pom.xml</code> of your <code>myapp-webapp</code> module.</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Create a module class for the <code>myapp</code> module also:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">myapp.app</span>; |
| <span class="directive">public</span> <span class="directive">final</span> <span class="type">class</span> <span class="class">MyAppAppModule</span> { |
| <span class="directive">private</span> MyAppAppModule() {} |
| }</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Next, create an <code>AppManifest</code> implementation, eg:<br></p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">myapp.app</span>; |
| <span class="directive">public</span> <span class="type">class</span> <span class="class">MyAppAppManifest</span> <span class="directive">implements</span> AppManifest { |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">List</span><<span class="predefined-type">Class</span><?>> getModules() { <i class="conum" data-value="1"></i><b>(1)</b> |
| <span class="keyword">return</span> <span class="predefined-type">Arrays</span>.asList( |
| MyAppDomainModule.class, |
| MyAppFixtureModule.class, |
| MyAppAppModule.class |
| ); |
| } |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">List</span><<span class="predefined-type">Class</span><?>> getAdditionalServices() { <span class="keyword">return</span> <span class="predefined-constant">null</span>; } <i class="conum" data-value="2"></i><b>(2)</b> |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">String</span> getAuthenticationMechanism() { <span class="keyword">return</span> <span class="predefined-constant">null</span>; } |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">String</span> getAuthorizationMechanism() { <span class="keyword">return</span> <span class="predefined-constant">null</span>; } |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">List</span><<span class="predefined-type">Class</span><? <span class="directive">extends</span> FixtureScript>> getFixtures() { <span class="keyword">return</span> <span class="predefined-constant">null</span>; } |
| <span class="annotation">@Override</span> |
| <span class="directive">public</span> <span class="predefined-type">Map</span><<span class="predefined-type">String</span>, <span class="predefined-type">String</span>> getConfigurationProperties() { <span class="keyword">return</span> <span class="predefined-constant">null</span>; } |
| }</code></pre> |
| </div> |
| </div> |
| <div class="colist arabic"> |
| <table> |
| <tbody> |
| <tr> |
| <td><i class="conum" data-value="1"></i><b>1</b></td> |
| <td>the module classes, whose packages specify the existence of domain services and/or persistent entities. If your app uses (non-ASF) <a href="http://www.isisaddons.org">Isis Addons</a> modules, then include the module classes for these addons in <code>getModules()</code>. For example, the (non-ASF) <a href="http://platform.incode.org" target="_blank">Incode Platform</a>'s security module provides the <code>org.isisaddons.module.security.SecurityModule</code> class.</td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="2"></i><b>2</b></td> |
| <td>any additional services, as per <code>isis.services</code> configuration property.</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="admonitionblock tip"> |
| <table> |
| <tbody> |
| <tr> |
| <td class="icon"> <i class="fa icon-tip" title="Tip"></i> </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>For details of the usages of the other methods in this interface, see the <a href="../guides/rgcms/rgcms.html#_rgcms_classes_AppManifest-bootstrapping">reference guide</a> documentation.</p> |
| </div> </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>If in your <code>myapp-dom</code> module you have application-level services and view models (services that depend on persistent domain entities but not the other way around), then we recommend that you move this code to the new <code>myapp-app</code> module. This makes the layering clearer, and avoids circular dependencies between application-layer vs domain-layer logic.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_update_parent">Update parent</h4> |
| <div class="paragraph"> |
| <p>in the parent <code>pom.xml</code>, declare and reference the new <code>myapp-app</code> module:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependencyManagement></span> |
| <span class="tag"><dependencies></span> |
| ... |
| <span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>${project.groupId}<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>myapp-app<span class="tag"></artifactId></span> |
| <span class="tag"><version></span>${project.version}<span class="tag"></version></span> |
| <span class="tag"></dependency></span> |
| ... |
| <span class="tag"></dependencies></span> |
| <span class="tag"></dependencyManagement></span> |
| |
| <span class="tag"><modules></span> |
| <span class="tag"><module></span>app<span class="tag"></module></span> |
| ... |
| <span class="tag"></modules></span></code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_update_code_myapp_integtests_code">Update <code>myapp-integtests</code></h4> |
| <div class="paragraph"> |
| <p>In its <code>pom.xml</code>:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>add a dependency on <code>myapp-app</code></p> </li> |
| <li> <p>remove dependency on <code>myapp-fixture</code> (and on <code>myapp-dom</code>, if present)</p> </li> |
| <li> <p>remove dependencies on <code>isis-core-wrapper</code> and <code>isis-core-runtime</code> (since now obtained transitively from <code>myapp-app</code>)</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Also update (simplify) <code>MyAppSystemInitializer</code> to use the new <code>AppManifest</code>, eg:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">MyAppSystemInitializer</span> { |
| <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> initIsft() { |
| IsisSystemForTest isft = IsisSystemForTest.getElseNull(); |
| <span class="keyword">if</span>(isft == <span class="predefined-constant">null</span>) { |
| isft = <span class="keyword">new</span> IsisSystemForTest.Builder() |
| .withLoggingAt(org.apache.log4j.Level.INFO) |
| .with(<span class="keyword">new</span> DomainAppAppManifest()) <i class="conum" data-value="1"></i><b>(1)</b> |
| .with(<span class="keyword">new</span> IsisConfigurationForJdoIntegTests()) <i class="conum" data-value="2"></i><b>(2)</b> |
| .build() |
| .setUpSystem(); |
| IsisSystemForTest.set(isft); |
| } |
| } |
| }</code></pre> |
| </div> |
| </div> |
| <div class="colist arabic"> |
| <table> |
| <tbody> |
| <tr> |
| <td><i class="conum" data-value="1"></i><b>1</b></td> |
| <td>bootstrapping using the new <code>AppManifest</code> implementation</td> |
| </tr> |
| <tr> |
| <td><i class="conum" data-value="2"></i><b>2</b></td> |
| <td>if your bootstrapping previously explicitly overrode certain configuration properties, this can instead be moved to the <code>getConfigurationProperties()</code> method of your <code>AppManifest</code> implementation.</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_update_code_myapp_webapp_code">Update <code>myapp-webapp</code></h4> |
| <div class="paragraph"> |
| <p>In its <code>pom.xml</code>:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>add a dependency on <code>myapp-app</code></p> </li> |
| <li> <p>remove dependency on <code>myapp-fixture</code> (and on <code>myapp-dom</code>, if present)</p> </li> |
| <li> <p>remove dependencies on <code>isis-core-wrapper</code> and <code>isis-core-runtime</code> (since now obtained transitively from <code>myapp-app</code>)</p> </li> |
| <li> <p>(if you didn’t previously), move any dependencies to addons or other services referenced in the <code>AppManifest</code> to the <code>pom.xml</code> of the new <code>myapp-app</code> module.</p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Remove configuration properties that are no longer needed:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>in <code>isis.properties</code>:</p> |
| <div class="ulist"> |
| <ul> |
| <li> <p>remove <code>isis.services-installer</code></p> </li> |
| <li> <p>remove <code>isis.services.ServicesInstallerFromAnnotation.packagePrefix</code></p> </li> |
| <li> <p>remove <code>isis.services</code></p> </li> |
| </ul> |
| </div> </li> |
| <li> <p>in <code>persistor_datanucleus.properties</code></p> |
| <div class="ulist"> |
| <ul> |
| <li> <p>remove <code>isis.persistor.datanucleus.RegisterEntities.packagePrefix</code></p> </li> |
| </ul> |
| </div> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>Finally, specify the <code>AppManifest</code> to use to bootstrap the app. You have a choice here:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p>either update <code>isis.properties</code>, using the <code>isis.appManifest</code> key to specify the <code>AppManifest</code> implementation, eg:<br></p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.appManifest=domainapp.app.DomainAppAppManifest</code></pre> |
| </div> |
| </div> </li> |
| <li> <p>alternatively, specify the <code>AppManifest</code> by overriding the <code>IsisWicketApplication#newWicketModule()</code>, eg:<br></p> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Override</span> |
| <span class="directive">protected</span> Module newIsisWicketModule() { |
| <span class="directive">final</span> Module isisDefaults = <span class="local-variable">super</span>.newIsisWicketModule(); |
| ... |
| final Module overrides = <span class="keyword">new</span> AbstractModule() { |
| <span class="annotation">@Override</span> |
| <span class="directive">protected</span> <span class="type">void</span> configure() { |
| ... |
| bind(AppManifest.class).toInstance(<span class="keyword">new</span> DomainAppAppManifest()); |
| } |
| }; |
| |
| <span class="keyword">return</span> Modules.override(isisDefaults).with(overrides); |
| }</code></pre> |
| </div> |
| </div> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>If the second (programmatic) approach is used, this overrides the first approach (using <code>isis.properties</code>).</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.7.0-to-1.8.0">From v1.7.0 to 1.8.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.7.0-to-1.8.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Existing projects written against v1.7.0 should run against v1.8.0 without any changes. In particular (unlike 1.6.0 and 1.7.0) there should be no need to update <code>pom.xml</code> files of existing projects. If you <strong>do</strong> encounter any difficulties then let us know via the <a href="../support.html">users mailing list</a>, so we can support you and document issues here.</p> |
| </div> |
| <div class="paragraph"> |
| <p>That said, many of the existing annotations have been deprecated in 1.8.0, replaced with a simplified and rationalized set of annotations; see <a href="../guides/rgant/rgant.html">here</a>. To help you migrate your application over to the new annotations, there is a new configuration property that can be set in <code>isis.properties</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="ini">isis.reflector.validator.allowDeprecated=false</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If this flag is present and set to false, then metamodel validation errors will be thrown on startup if any deprecated annotations are encountered. These can be viewed either in the console or by browsing to the app (an error page will be displayed).</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_migration-notes_1.6.0-to-1.7.0">From v1.6.0 to 1.7.0</h2> |
| <div class="btn-group" style="float: right; font-size: small; padding: 6px; margin-top: -55px; "> |
| <button type="button" class="btn btn-xs btn-default" onclick="window.location.href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.6.0-to-1.7.0.adoc""><i class="fa fa-pencil-square-o"></i> Edit</button> |
| <button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button> |
| <ul class="dropdown-menu"> |
| <li><a href="https://github.com/apache/isis/edit/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.6.0-to-1.7.0.adoc" target="_blank"><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i> Edit</a></li> |
| <li><a href="https://github.com/apache/isis/commits/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.6.0-to-1.7.0.adoc" target="_blank"><i class="fa fa-clock-o fa-fw" aria-hidden="true"></i> History</a></li> |
| <li><a href="https://github.com/apache/isis/raw/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.6.0-to-1.7.0.adoc" target="_blank"><i class="fa fa-file-text-o fa-fw" aria-hidden="true"></i> Raw</a></li> |
| <li><a href="https://github.com/apache/isis/blame/master/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.6.0-to-1.7.0.adoc" target="_blank"><i class="fa fa-hand-o-right fa-fw" aria-hidden="true"></i> Blame</a></li> |
| </ul> |
| </div> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>In <code>1.7.0</code> we’ve continued the work started in <code>1.6.0</code> in modularizing the framework. The most important change to note is that all Apache Isis core modules (with the Maven <code>groupId</code> of <code>org.apache.isis.module</code> have now MOVED to <a href="http://www.isisaddons.org">Isis Addons</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In addition, we’ve retired some obsolete (and unused) functionality, specifically the <code>ProfileStore</code> component.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To move up amounts to changing POM files and, where required, updating package names for any referenced modules.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="_reorganized_modules">Reorganized 'modules'</h3> |
| <div class="paragraph"> |
| <p>The following modules are no longer released as part of Apache Isis core and have moved to Isis Addons (or in one case, back into Apache Isis core).</p> |
| </div> |
| <div class="paragraph"> |
| <p>Minor changes are required to <code>pom.xml</code> files and (in some cases) to <code>isis.properties</code> config file.</p> |
| </div> |
| <div class="paragraph"> |
| <p>In one or two exceptional cases it may be necessary to fix up import statements if there are reference to changed package/class names in code (most likely any dependency on the <code>devutils</code> module or <code>settings</code> module).</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="_audit_module">Audit module</h4> |
| <div class="paragraph"> |
| <p>In <code>pom.xml</code>, replace:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-audit-jdo<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>with:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.isisaddons.module.audit<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-audit-dom<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If necessary, also update any services registered in <code>isis.properties</code> (package/class names may have changed slightly).</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_command_module">Command module</h4> |
| <div class="paragraph"> |
| <p>In <code>pom.xml</code>, replace:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-command-jdo<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>with:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.isisaddons.module.command<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-command-dom<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If necessary, also update any services registered in <code>isis.properties</code> (package/class names may have changed slightly).</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_devutils_module">DevUtils module</h4> |
| <div class="paragraph"> |
| <p>In <code>pom.xml</code>, replace:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-devutils-applib<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>with:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.isisaddons.module.devutils<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-devutils-dom<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Remove any references to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-devutils<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>or to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-devutils-impl<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>These modules are no longer required (the <code>org.apache.isis.module:isis-module-devutils-applib</code> and <code>org.apache.isis.module:isis-module-devutils-impl</code> submodules have been combined into the new <code>org.isisaddons.module.devutils:isis-module-devutils-dom</code> module).</p> |
| </div> |
| <div class="paragraph"> |
| <p>If necessary, also update any services registered in <code>isis.properties</code> (package/class names may have changed slightly).</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_publishing_module">Publishing module</h4> |
| <div class="paragraph"> |
| <p>In <code>pom.xml</code>, replace:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-publishing-jdo<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>with:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.isisaddons.module.publishing<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-publishing-dom<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>If necessary, also update any services registered in <code>isis.properties</code> (package/class names may have changed slightly).</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_publishing_event_serializer_ro_module">Publishing Event Serializer RO module</h4> |
| <div class="paragraph"> |
| <p>Remove any references to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-publishingeventserializer-ro<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>This module has been merged with <code>org.isisaddons.module.publishing:isis-module-publishing-dom</code>, above.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_settings_module">Settings module</h4> |
| <div class="paragraph"> |
| <p>In <code>pom.xml</code>, replace:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-settings-applib<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>with:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.isisaddons.module.settings<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-settings-dom<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Remove any references to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-settings<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>or to:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-settings-impl<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>These modules are no longer required (the <code>org.apache.isis.module:isis-module-settings-applib</code> and <code>org.apache.isis.module:isis-module-settings-impl</code> submodules have been combined into the new <code>org.isisaddons.module.settings:isis-module-settings-dom</code> module).</p> |
| </div> |
| <div class="paragraph"> |
| <p>If necessary, also update any services registered in <code>isis.properties</code> (package/class names may have changed slightly).</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="_background_module">Background module</h4> |
| <div class="paragraph"> |
| <p>In <code>pom.xml</code>, remove:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.module<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-module-background<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The service classes have been moved into existing <code>org.apache.isis.core:isis-core-runtime</code> Maven module (that is, already be referenced in the <code>pom.xml</code>).</p> |
| </div> |
| <div class="paragraph"> |
| <p>If necessary, also update any services registered in <code>isis.properties</code> (package/class names may have changed slightly).</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_retired_code_profilestore_code_component">Retired <code>ProfileStore</code> component</h3> |
| <div class="paragraph"> |
| <p>As per <a href="https://issues.apache.org/jira/browse/ISIS-802">ISIS-802</a>, the ProfileStore component has been removed. This functionality was not surfaced or available in the Wicket or Restful Objects viewers, so there is no meaningful loss of functionality. However, Maven <code>pom.xml</code> files will require updating:</p> |
| </div> |
| <div class="paragraph"> |
| <p>Specifically, remove any dependencies on <code>org.apache.isis:isis-core-profilestore</code>:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span> |
| <span class="tag"><groupId></span>org.apache.isis.core<span class="tag"></groupId></span> |
| <span class="tag"><artifactId></span>isis-core-profilestore<span class="tag"></artifactId></span> |
| <span class="tag"></dependency></span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>A number of corresponding classes/interfaces have also been removed from the Apache Isis applib:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> <p><code>org.apache.isis.applib.fixtures.userprofile.UserProfileService</code></p> </li> |
| <li> <p><code>org.apache.isis.applib.fixtures.userprofile.UserProfileServiceAware</code></p> </li> |
| <li> <p><code>org.apache.isis.applib.fixtures.UserProfileFixture</code></p> </li> |
| <li> <p><code>org.apache.isis.applib.profiles.Profile</code></p> </li> |
| <li> <p><code>org.apache.isis.applib.profiles.Perspective</code></p> </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>It is highly unlikely that any existing production code references these classes.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="hidden-xs hidden-sm hidden-md col-lg-3"> |
| <nav id="toc" data-spy="affix" data-toggle="toc"></nav> |
| </div> |
| </div> |
| </div> |
| <footer class="footer"> |
| <div class="container"> |
| <div class="row"> |
| <p class="text-center small text-muted"> Copyright © 2010~2018 The Apache Software Foundation, licensed under the Apache License, v2.0. <br> Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation. </p> |
| </div> |
| </div> |
| </footer> |
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> |
| <script src="../js/bootstrap/3.3.7/bootstrap.min.js"></script> |
| <script src="../js/bootstrap-toc/0.4.1/bootstrap-toc.min.js"></script> |
| <script src="../js/slick/1.5.0/slick.min.js"></script> |
| <script src="../js/elasticlunr/elasticlunr.min.js"></script> |
| <script src="../js/sticky-header/sticky-header.js"></script> |
| <script src="../js/search-panel/search-panel.js"></script> |
| <script src="../js/header-link/header-link.js"></script> |
| <script src="../js/toc-scroll/toc-scroll.js"></script> |
| </body> |
| </html> |