You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by bu...@apache.org on 2012/12/31 11:53:48 UTC

svn commit: r844385 - in /websites/staging/isis/trunk: cgi-bin/ content/ content/core/metamodel-finetuning-the-programming-model.html content/core/metamodel.html content/documentation.html

Author: buildbot
Date: Mon Dec 31 10:53:48 2012
New Revision: 844385

Log:
Staging update by buildbot for isis

Added:
    websites/staging/isis/trunk/content/core/metamodel-finetuning-the-programming-model.html
Removed:
    websites/staging/isis/trunk/content/core/metamodel.html
Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/documentation.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Dec 31 10:53:48 2012
@@ -1 +1 @@
-1426050
+1427077

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Dec 31 10:53:48 2012
@@ -1 +1 @@
-1426050
+1427077

Added: websites/staging/isis/trunk/content/core/metamodel-finetuning-the-programming-model.html
==============================================================================
--- websites/staging/isis/trunk/content/core/metamodel-finetuning-the-programming-model.html (added)
+++ websites/staging/isis/trunk/content/core/metamodel-finetuning-the-programming-model.html Mon Dec 31 10:53:48 2012
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>Fine-tuning the Programming Model
</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="./../bootstrap.css" rel="stylesheet">
+    <link href="./../prettify.css" rel="stylesheet">
+    <link href="./../bootstrap-mods.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .stub,.note {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=Fine-tuning the Programming Model
",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../images/favicon.ico">
+    <link rel="apple-touch-icon" href="./../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../images/apple-touch-icon-114x114.png">
+
+    <script src="./../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../javascript/jquery-latest.js"></script>
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../javascript/common.js"></script>
+    <script src="./../javascript/prettyprint.js"></script>
+
+    <script type="text/javascript">
+
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-2717626-1']);
+      _gaq.push(['_setDomainName', 'apache.org']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+
+    </script>
+
+
+  </head>
+
+  <body>
+
+    <div class="topbar">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../index.html">Apache Isis</a>
+          <ul class="nav">
+            <li><a href="./../index.html">Home</a></li>
+            <li><a href="./../download.html">Download</a></li>
+            <li><a href="./../documentation.html">Documentation</a></li>
+            <li><a href="./../support.html">Support</a></li>
+          </ul>
+
+            <!-- Google CSE Search Box Begins -->
+            <div style="float: right; position: relative; ">
+          <form action="http://www.google.com/cse" id="cse-search-box" _lpchecked="1">
+            <div>
+                <input type="hidden" name="cx" value="001500763902520246267:purt3m54z98">
+                <input type="hidden" name="ie" value="UTF-8">
+                <input type="text" name="q" size="31" style="border: 1px solid rgb(126, 157, 185); padding: 2px; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">
+                <input type="submit" name="sa" value="Search">
+            </div>
+            <input name="siteurl" type="hidden" value="incubator.apache.org/isis/">
+            <input name="ref" type="hidden" value="">
+            <input name="ss" type="hidden" value="677j458329j2">
+        </form>
+        </div>
+            <!-- Google CSE Search Box Ends -->
+        </div>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../core/about.html">Core</a></p>
+<h1>Fine-tuning the Programming Model
+
+</h1>
+</div>
+
+<h2>Core MetaModel</h2>
+
+<p>The core metamodel defines APIs and implementations for building the Isis metamodel: a description of the set of entities, domain services and values that make up the domain model.</p>
+
+<p>The description of each domain class consists of a number of elements:</p>
+
+<ul>
+<li><a href="">ObjectSpecification</a></p>
+
+<p>Analogous to <code>java.lang.Class</code>; holds information about the class itself and holds collections of each of the three types of class' members (below);</li>
+<li><a href="">OneToOneAssociation</a></p>
+
+<p>Represents a class member that is a single-valued property of the class.  The property's type is either a reference to another entity, or is a value type.</li>
+<li><a href="">OneToManyAssociation</a></p>
+
+<p>Represents a class member that is a collection of references to other entities.  Note that Isis does not currently support collections of values.</li>
+<li><a href="">ObjectAction</a></p>
+
+<p>Represents a class member that is an operation that can be performed on the action.  Returns either a single value, a collection of entities, or is <code>void</code>.</li>
+</ul>
+
+<p>The metamodel is built up through the <a href="https://github.com/apache/isis/blob/master/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModel.java">ProgrammingModel</a>, which defines an API for registering a set of <a href="">FacetFactory</a>s.   Two special <code>FacetFactory</code> implementations - <a href="https://github.com/apache/isis/blob/master/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/accessor/PropertyAccessorFacetFactory.java">PropertyAccessorFacetFactory</a> and <a href="https://github.com/apache/isis/blob/master/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/accessor/CollectionAccessorFacetFactory.java">CollectionAccessorFacetFactory</a> - are used to identify the class members.  All the other <code>FacetFactory</code>s are responsible for installing <a href="https://github.com/apache/isis/blob/master/core/metamodel/src/main/java/org/apache/isis/core/metamod
 el/facetapi/Facet.java">Facet</a>s onto the metamodel elements.  There are many many such <code>Facet</code>s, and are used to do such things get values from properties or collections, modify properties or collections, invoke action, hide or disable class members, provide UI hints for class members, and so on.  In short, the <code>FacetFactory</code>s registered defines the Isis programming conventions.</p>
+
+<h2>Modifying the Programming Model</h2>
+
+<p>The default implementation of <code>ProgrammingModel</code> is <a href="https://github.com/apache/isis/blob/master/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java">ProgrammingModelFacetsJava5</a>, which registers a large number of <code>FacetFactory</code>s.  </p>
+
+<p>By editing <code>isis.properties</code> you can modify the programming conventions either by  (a) using the default programming model, but tweaking it to include new <code>FacetFactory</code>s or exclude existing, or (b) by specifying a completely different programming model implementation.</p>
+
+<p>Let's see how this is done.</p>
+
+<h3>Fine-tuning the existing programming model</h3>
+
+<p>Suppose that for some reason you wanted to disable support for the <code>@Aggregated</code> annotation.  This would be done using:</p>
+
+<pre>
+isis.reflector.facets.exclude=org.apache.isis.core.progmodel.facets.object.aggregated.annotation.AggregatedAnnotationFacetFactory
+</pre>
+
+<p>Or, suppose you wanted to use the example <a href="https://github.com/apache/isis/blob/master/example/misc/metamodel/namefile/src/main/java/org/apache/isis/example/metamodel/namefile/facets/NameFileFacetFactory.java">"namefile"</a> <code>FacetFactory</code> as part of your programming conventions, use:</p>
+
+<pre>
+isis.reflector.facets.include=org.apache.isis.example.metamodel.namefile.facets.NameFileFacetFactory
+</pre>
+
+<p>To include/exclude more than one <code>FacetFactory</code>, specify as a comma-separated list.  And if you want to dig into this in more detail, the code that implements this logic is <a href="https://github.com/apache/isis/blob/master/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/JavaReflectorInstallerNoDecorators.java">JavaReflectorInstallerNoDecorators</a>.</p>
+
+<h3>Specifying a new programming model</h3>
+
+<p>To specify a completely new programming model, you'll first need an  implementation of <code>ProgrammingModel</code>.  One option is to subclass from <code>ProgammingModelFacetsJava5</code>; in your subclass you could remove any <code>FacetFactory</code>s that you wanted to exclude, as well as registering your own implementations.</p>
+
+<p>To tell Isis to use your new programming model, use (something like):</p>
+
+<pre>
+isis.reflector.facets=com.mycompany.myapp.isis.IsisProgrammingModel
+</pre>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="display: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <script src="./../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Modified: websites/staging/isis/trunk/content/documentation.html
==============================================================================
--- websites/staging/isis/trunk/content/documentation.html (original)
+++ websites/staging/isis/trunk/content/documentation.html Mon Dec 31 10:53:48 2012
@@ -264,7 +264,7 @@
 <ul>
 <li><a href="core/deployment-type.html">Deployment Types</a></li>
 <li><a href="core/applib.html">Applib</a></li>
-<li><a href="core/metamodel.html">Core Metamodel</a> [stub]</li>
+<li><a href="core/metamodel-finetuning-the-programming-model.html">Finetuning the Programming Model</a> [stub]</li>
 <li><a href="core/runtime.html">Core Runtime</a> [stub]</li>
 <li><a href="core/webserver.html">Webserver</a> [stub]
 </div>