]> source.dussan.org Git - archiva.git/commitdiff
change style and template to have a kind of enunciate 1.x style that we can use
authorEric Barboni <skygo@apache.org>
Fri, 13 Nov 2015 17:01:52 +0000 (18:01 +0100)
committerEric Barboni <skygo@apache.org>
Fri, 13 Nov 2015 17:01:52 +0000 (18:01 +0100)
archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/archiva.css [new file with mode: 0644]
archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/archiva.fmt [new file with mode: 0644]
archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/enunciate.xml
archiva-modules/archiva-web/archiva-web-common/src/enunciate/archiva.css [new file with mode: 0644]
archiva-modules/archiva-web/archiva-web-common/src/enunciate/archiva.fmt [new file with mode: 0644]
archiva-modules/archiva-web/archiva-web-common/src/enunciate/enunciate.xml

diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/archiva.css b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/archiva.css
new file mode 100644 (file)
index 0000000..8f3a291
--- /dev/null
@@ -0,0 +1,765 @@
+/*
+Copyright 2015 The Apache Software Foundation.
+
+Licensed 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.
+*/
+/* 
+    Created on : 13 nov. 2015, 13:47:57
+    Author     : barboni
+*/
+/**
+ * html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
+ * v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark
+ * html5doctor.com/html-5-reset-stylesheet/
+ */
+
+html, body, div, span, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
+small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section, summary,
+time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+  display: block;
+}
+
+blockquote, q { quotes: none; }
+
+blockquote:before, blockquote:after,
+q:before, q:after { content: ""; content: none; }
+
+ins { background-color: #ff9; color: #000; text-decoration: none; }
+
+mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
+
+del { text-decoration: line-through; }
+
+abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
+
+table { border-collapse: collapse; border-spacing: 0; }
+
+hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
+
+input, select { vertical-align: middle; }
+
+
+/**
+ * Font normalization inspired by YUI Library's fonts.css: developer.yahoo.com/yui/
+ */
+
+body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */
+select, input, textarea, button { font:99% sans-serif; }
+
+/* Normalize monospace sizing:
+   en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */
+pre, code, kbd, samp { font-family: monospace, sans-serif; }
+
+
+/**
+ * Minimal base styles.
+ */
+
+/* Always force a scrollbar in non-IE */
+html { overflow-y: scroll; }
+
+/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */
+a:hover, a:active { outline: none; }
+
+ul, ol { margin-left: 2em; }
+ol { list-style-type: decimal; }
+
+/* Remove margins for navigation lists */
+nav ul, nav li { margin: 0; list-style:none; list-style-image: none; }
+
+small { font-size: 85%; }
+strong, th { font-weight: bold; }
+
+td { vertical-align: top; }
+
+/* Set sub, sup without affecting line-height: gist.github.com/413930 */
+sub, sup { font-size: 75%; line-height: 0; position: relative; }
+sup { top: -0.5em; }
+sub { bottom: -0.25em; }
+
+pre {
+  /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */
+  padding: 15px;
+}
+
+textarea { overflow: auto; } /* www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */
+
+.ie6 legend, .ie7 legend { margin-left: -7px; } 
+
+/* Align checkboxes, radios, text inputs with their label by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css  */
+input[type="radio"] { vertical-align: text-bottom; }
+input[type="checkbox"] { vertical-align: bottom; }
+.ie7 input[type="checkbox"] { vertical-align: baseline; }
+.ie6 input { vertical-align: text-bottom; }
+
+/* Hand cursor on clickable input elements */
+label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; }
+
+/* Webkit browsers add a 2px margin outside the chrome of form elements */
+button, input, select, textarea { margin: 0; }
+
+/* Colors for form validity */
+input:valid, textarea:valid   {  }
+input:invalid, textarea:invalid {
+   border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red;
+}
+.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; }
+
+
+/* These selection declarations have to be separate
+   No text-shadow: twitter.com/miketaylr/status/12228805301
+   Also: hot pink! */
+::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
+::selection { background:#FF5E99; color:#fff; text-shadow: none; }
+
+/* j.mp/webkit-tap-highlight-color */
+a:link { -webkit-tap-highlight-color: #FF5E99; }
+
+/* Make buttons play nice in IE:
+   www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */
+button {  width: auto; overflow: visible; }
+
+/* Bicubic resizing for non-native sized IMG:
+   code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */
+.ie7 img { -ms-interpolation-mode: bicubic; }
+
+/**
+ * You might tweak these..
+ */
+
+body, select, input, textarea {
+  /* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */
+  color: #444;
+  /* Set your base font here, to apply evenly */
+  /* font-family: Georgia, serif;  */
+}
+
+/* Headers (h1, h2, etc) have no default font-size or margin; define those yourself */
+h1, h2, h3, h4, h5, h6 { font-weight: bold; }
+
+a, a:active, a:visited { color: #607890; }
+a:hover { color: #036; }
+
+
+/**
+ * Primary styles
+ *
+ * Author: 
+ */
+
+
+body{text-align:center;margin:0}
+.container{text-align:left;position:relative;padding:0;margin:0 auto;width:800px}
+.column{float:left;margin:0 5px 0 0;padding:0}
+* html .column{overflow-x:hidden}
+.border{padding-right:2px;margin-right:2px;border-right:1px solid #ddd}
+.span-1{width:35px}
+.span-2{width:75px}
+.span-3{width:115px}
+.span-4{width:155px}
+.span-5{width:195px}
+.span-6{width:235px}
+.span-7{width:275px}
+.span-8{width:315px}
+.span-9{width:355px}
+.span-10{width:395px}
+.span-11{width:435px}
+.span-12{width:475px}
+.span-13{width:515px}
+.span-14{width:555px}
+.span-15{width:595px}
+.span-16{width:635px}
+.span-17{width:675px}
+.span-18{width:715px}
+.span-19{width:755px}
+.span-20{width:795px}
+.span-21{width:835px}
+.span-22{width:875px}
+.span-23{width:915px}
+.span-24{width:955px;margin:0}
+.last{margin-right:0}
+.append-1{padding-right:40px}
+.append-2{padding-right:80px}
+.append-3{padding-right:120px}
+.append-4{padding-right:160px}
+.append-5{padding-right:200px}
+.prepend-1{padding-left:40px}
+.prepend-2{padding-left:80px}
+.prepend-3{padding-left:120px}
+.prepend-4{padding-left:160px}
+.prepend-5{padding-left:200px}
+.clear{display:inline-block}
+.clear:after,.container:after{content:".";display:block;height:0;clear:both;visibility:hidden}
+* html .clear{height:1%}
+.clear{display:block}
+h1,h2,h3,h4,h5,h6, p,ul,ol,dl,pre,form{padding-left:5px;padding-right:5px}
+table{margin-left:5px;margin-right:5px}
+img{margin:0 0 18px 0}
+.pull-1{margin-left:-70px}
+.pull-2{margin-left:-140px}
+.pull-3{margin-left:-210px}
+.push-0{margin:0 0 0 18px;float:right}
+.push-1{margin:0 -70px 0 18px;float:right}
+.push-2{margin:0 -140px 0 18px;float:right}
+.push-3{margin:0 -210px 0 18px;float:right}
+.deprecated{text-decoration: line-through}
+
+/* @end */
+
+/* @group typography.css */
+
+body {
+  font-size: 12px;
+  line-height: 18px; /* Do a complete find/replace on "18px" to change this */
+}
+
+
+/* Default fonts */
+h1,h2,h3,
+h4,h5,h6  { font-family: "Helvetica Neue", Helvetica, sans-serif; }
+body      { font-family: "Lucida Grande", Calibri, Arial, sans-serif; }
+pre       { font-family: Monaco, "Courier New", monospace; }
+code      { font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Monaco, Courier, monospace; }
+
+
+/* Headings
+-------------------------------------------------------------- */
+
+h1,h2,h3,h4,h5,h6 {
+  color:#111;
+  clear:both;
+}
+
+h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+    color: #111;
+    text-decoration: none;
+}
+
+h1 { font-size: 30px; line-height:36px; padding:10px 0 18px 0; }
+h2 { font-size: 20px; line-height:36px; }
+h3 { font-size: 12px; line-height:24px; }
+h4 { font-size: 12px; font-weight:bold; }
+h5 { font-size: 12px; font-weight:bold; }
+h6 { font-size: 12px; }
+
+
+/* Text elements
+-------------------------------------------------------------- */
+
+p           { margin: 0 0 18px 0; text-align:justify; }
+p.last      { margin-bottom:0; }
+p img       { float: left; margin:18px 18px 18px 0; padding:0; }
+p img.top   { margin-top:0; } /* Use this if the image is at the top of the <p>. */
+
+ul, ol      { margin: 0 0 18px 0; }
+ul          { list-style-type:circle; }
+ol          { list-style-type: decimal; }
+dl          { margin: 0 0 18px 0; }
+dl dt       { font-weight: bold; }
+
+a           { color: #A68000; text-decoration: underline; outline: none; }
+a:hover     { color: #000; }
+
+blockquote  { margin: 0 0 18px 18px; color: #666; font-style: italic; }
+strong      { font-weight: bold; }
+em          { font-style: italic; }
+pre         { margin-bottom: 18px; background: #eee; border:1px solid #ddd; padding:16px; }
+code {
+    background: #eee;
+    border: 1px solid #ddd;
+    color: #555;
+    display: block;
+    font: normal 1.1em "Lucida Sans Unicode",serif;
+    margin-bottom: 12px;
+    padding: 8px 10px;
+    white-space: pre;
+    overflow: auto;
+    max-height: 300px;
+}
+
+/* Use this to create a horizontal ruler across a column. */
+hr {
+  background: #FFDF73;
+  color: #FFDF73;
+  clear: both;
+  float: none;
+  width: 100%;
+  height: 2px;
+  margin: 0 0 16px 0;
+  border: none;
+}
+
+
+/* Tables
+-------------------------------------------------------------- */
+
+table   { margin-bottom: 16px; border-top:1px solid #ddd; border-left:1px solid #ddd; }
+th,td   { height: 13px; padding:2px 4px; border-bottom:1px solid #ddd; border-right:1px solid #ddd; }
+th      { font-weight:bold; }
+
+
+/* Some default classes
+-------------------------------------------------------------- */
+
+p.small   { font-size: 10px; margin-bottom: 18px; }
+p.large   { font-size: 14px; line-height:36px; }
+p.quiet   { color: #666; }
+.hide     { display: none; }
+
+
+.caps {
+  font-variant: small-caps;
+  letter-spacing: 1px;
+  text-transform: lowercase;
+}
+
+/* @end */
+
+/* @group styles */
+
+/* @group Header */
+
+#header {
+       padding-top: 1.8em;
+       margin-bottom: 1.8em;
+}
+#site-name {
+    line-height: 36px;
+}
+#site-name a {
+    font-variant: small-caps;
+    font-size: 3em;
+    letter-spacing: 3px;
+    text-decoration: none;
+    color: #444;
+}
+#site-name a:visited {
+    color: #444;
+    text-decoration: none;
+}
+#site-name a strong {
+    color: black;
+}
+#site-description {
+       padding-top: 1.4em;
+       padding-bottom: 1.4em;
+}
+#site-description h3 {
+       font-size: 2em;
+       margin: 0;
+       font-weight: normal;
+}
+#site-description p#read-more {
+       text-align: right;
+       margin: 6px 0 0;
+}
+#site-description p#read-more a, #site-description p#read-more a:visited {
+       font-size: 1.4em;
+       color: #515151;
+}
+#site-description p#read-more a:hover {
+       color: #919191;
+}
+#site-description {
+       background-color: #4188D2;
+       border-top: 2px solid #fff;
+       color: #444;
+}
+/* @end */
+
+/* @group Navigation */
+
+ul.navigation, ul.navigation li {
+  list-style: none;
+}
+ul.navigation li {
+  display: inline;
+  margin-right: 1.3em;
+}
+
+#primary {
+       line-height: 72px;
+       margin-bottom: -24px;
+       text-align: right;
+}
+#primary li {
+       padding-bottom: 5px;
+}
+#primary a {
+       color: #444;
+       text-decoration: none;
+       font-size: 1.2em;
+}
+#primary li:hover {
+       border-bottom: 6px solid #FFDF73;
+}
+#secondary {
+       padding-top: 7px;
+       background-color: #FFDF73;
+}
+#secondary ul {
+    list-style: none;
+       margin-bottom: 7px;
+}
+#secondary ul li {
+    display: inline;
+    list-style: none;
+       margin-right: 0;
+}
+#secondary ul li a {
+       color: #515151;
+       text-decoration: none;
+       padding: 8px 24px 8px 24px;
+       margin-left: -4px;
+}
+#secondary ul li a.selected {
+       background-color: #515151;
+       color: #fff;
+}
+#secondary ul a:hover {
+       background: #fff4d0;
+}
+/*
+       xBreadcrumbs (Extended Breadcrumbs) jQuery Plugin
+       ï¿½ 2009 ajaxBlender.com
+       For any questions please visit www.ajaxblender.com
+       or email us at support@ajaxblender.com
+*/
+.xbreadcrumbs {
+       position: relative;
+       z-index: 1000;
+}
+.xbreadcrumbs LI UL {
+       position: absolute;
+       float: left;
+}
+.xbreadcrumbs, .xbreadcrumbs LI, .xbreadcrumbs UL, .xbreadcrumbs UL LI {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+}
+.xbreadcrumbs { clear: both; }
+.xbreadcrumbs, .xbreadcrumbs LI {
+       float: left;
+}
+.xbreadcrumbs UL {
+       display: none;
+}
+
+/*  Base style of xBreadcrumbs  */
+/*  Top Level  */
+.xbreadcrumbs {
+       background: #FFDF73;
+       width: 100%;
+}
+.xbreadcrumbs LI {
+    border-right: none;
+    padding: 5px 15px 5px 10px;
+       height: 16px;
+}
+.xbreadcrumbs LI.current {
+       background: none;
+}
+.xbreadcrumbs LI UL LI {
+    background: none;
+}
+.xbreadcrumbs LI A {
+       font-size: 11px;
+       color: #515151;
+       text-decoration: none;
+    padding-right: 2em;
+}
+.xbreadcrumbs LI A.home {
+    background: url( home.gif ) no-repeat left center;
+    padding-left: 20px;
+}
+.xbreadcrumbs LI A:HOVER, .xbreadcrumbs LI.hover A {
+       color: #000;
+}
+/*  Top Level - Current Page  */
+.xbreadcrumbs LI.current A {
+       color: #333333;
+       font-weight: bold;
+}
+/*  Sub-level  */
+.xbreadcrumbs LI UL {
+       padding: 3px;
+       background: #fff4d0;
+       font-size: 11px;
+       min-width: 180px;
+    max-height: 500px;
+    overflow: auto;
+       top: 25px;
+}
+.xbreadcrumbs LI UL LI {
+       float: left;
+       width: 100%;
+       border-right: none;
+       height: auto;
+}
+.xbreadcrumbs LI UL LI A {
+       text-decoration: none;
+       color: #666666 !important;
+       display: block;
+       padding: 4px;
+       border-bottom: 1px dotted #666666;
+}
+.xbreadcrumbs LI UL LI:last-child A {
+       border-bottom: none;
+}
+.xbreadcrumbs LI UL LI A:HOVER {
+    background: #fffbee;
+}
+body.advisories #nav-advisories,body.community #nav-community,body.blog #nav-blog,body.code #nav-code,body.about #nav-about,body.documentation #nav-documentation{border-bottom: 6px solid #FFDF73;}
+/* @end */
+
+/* @group Main */
+
+#main {
+       font-size: 1.2em;
+       line-height: 1.5em;
+       color: #1E250D;
+}
+#main h2 {
+       font-size: 1.8em;
+       font-weight: normal;
+    border-bottom: 3px solid #c2b2d4;
+    padding-top: 10px;
+       padding-left: 0;
+       padding-right: 0;
+       margin-bottom: 6px;
+}
+#main h3 {
+       font-size: 1.4em;
+       font-weight: normal;
+       border-bottom: 4px solid #f7f7f7;
+       padding: 0 0 5px;
+       margin-bottom: 0.4em;
+}
+#main h3 .caps {
+       font-size: 1.3em;
+}
+#main .hfeed .hentry {
+       list-style: none;
+       list-style-type: none;
+       margin-bottom: 2em;
+       border-bottom: 4px solid #eee;
+       padding-bottom: 1em;
+       clear: both;
+}
+#main .hfeed .hentry:last-child {
+       border-bottom: none;
+}#main .hfeed .hentry .entry-title {
+       border-bottom: none;
+}
+#main hr {
+       color: #FFDF73;
+       background-color: #FFDF73;
+       border-color: #FFDF73;
+}
+#main p {
+       text-align: left;
+       padding-left: 0;
+       padding-right: 0;
+}
+#main img {
+       max-width: 740px;
+}
+#main ol {
+       margin-left: 1.5em;
+}
+#main ul {
+       margin-left: 1.2em;
+       list-style: disc;
+}
+#main .intro {
+       font-size: 1.2em;
+       color: #515151;
+       border-bottom: 3px solid #f8fbfd;
+}
+#main .get-started a {
+       text-align: center;
+       background-color: #8942D6;
+       color: #fff;
+       display: block;
+       border-radius: 12px;
+       -webkit-border-radius: 12px;
+       -moz-border-radius: 12px;
+       padding: 8px 6px;
+       width: 10em;
+       font-size: 1.4em;
+       margin-left: auto;
+       margin-right: auto;
+       text-decoration: none;
+}
+#main .get-started a:hover {
+       background-color: #9D69D6;
+}
+#main pre {
+    max-height: 600px;
+       overflow: auto;
+}
+
+/* @end */
+/* @group Footer */
+
+#footer {
+       color: #666;
+       font-size: 11px;
+       border-top: 4px double #e7e7e7;
+       margin-top: 2em;
+       padding-top: 1.2em;
+       text-align: center;
+}
+/*#footer a {
+       color: #787878;
+       text-decoration: none;
+       border-bottom: 1px dotted #787878;
+}
+#footer a:hover {
+       border-bottom: 1px solid #787878;
+}*/
+
+/* @end */
+
+.update, .note, .notice, .alert {
+margin: 10px 0 20px;
+padding: 5px 20px 5px 20px;
+clear: both;
+}
+.note {
+       background: #e6ecf2;
+       border-top: 2px solid #8996ad;
+       border-bottom: 2px solid #8996ad;
+}
+.update, .notice {
+       background: #92ED6B;
+       border-top: 2px solid #2B8E00;
+       border-bottom: 2px solid #2B8E00;
+}
+.alert {
+       background: #ffbfbf;
+       border-top: 2px solid #f33;
+       border-bottom: 2px solid #f33;
+}
+.alert a {
+       color:#f00;
+}
+.alert a:visited {
+       color: #f33;
+}
+
+/* JavaDoc-Specific Styles */
+.TableHeadingColor     { text-align: left; border-width: 0 }
+.TableSubHeadingColor  { text-align: left; border-width: 0 }
+.TableRowColor         { text-align: left; border-width: 0 }
+.NavBarCell1    { text-align: left; border-width: 0 }
+.NavBarCell1Rev { text-align: left; border-width: 0 }
+.FrameItemFont { text-align: left; }
+
+/* @end */
+
+
+
+/**
+ * Non-semantic helper classes: please define your styles before this section.
+ */
+
+/* For image replacement */
+.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
+
+/* Hide for both screenreaders and browsers:
+   css-discuss.incutio.com/wiki/Screenreader_Visibility */
+.hidden { display: none; visibility: hidden; }
+
+/* Hide only visually, but have it available for screenreaders: by Jon Neal.
+  www.webaim.org/techniques/css/invisiblecontent/  &  j.mp/visuallyhidden */
+.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: drupal.org/node/897638 */
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
+
+/* Hide visually and from screenreaders, but maintain layout */
+.invisible { visibility: hidden; }
+
+/* The Magnificent Clearfix: Updated to prevent margin-collapsing on child elements.
+   j.mp/bestclearfix */
+.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
+.clearfix:after { clear: both; }
+/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */
+.clearfix { zoom: 1; }
+
+
+
+/**
+ * Media queries for responsive design.
+ *
+ * These follow after primary styles so they will successfully override.
+ */
+
+@media all and (orientation:portrait) {
+  /* Style adjustments for portrait mode goes here */
+
+}
+
+@media all and (orientation:landscape) {
+  /* Style adjustments for landscape mode goes here */
+
+}
+
+/* Grade-A Mobile Browsers (Opera Mobile, Mobile Safari, Android Chrome)
+   consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */
+@media screen and (max-device-width: 480px) {
+
+
+  /* Uncomment if you don't want iOS and WinMobile to mobile-optimize the text for you: j.mp/textsizeadjust */
+  /* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
+}
+
+
+/**
+ * Print styles.
+ *
+ * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/
+ */
+@media print {
+  * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
+  -ms-filter: none !important; } /* Black prints faster: sanbeiji.com/archives/953 */
+  a, a:visited { color: #444 !important; text-decoration: underline; }
+  a[href]:after { content: " (" attr(href) ")"; }
+  abbr[title]:after { content: " (" attr(title) ")"; }
+  .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }  /* Don't show links for images, or javascript/internal links */
+  pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+  thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */
+  tr, img { page-break-inside: avoid; }
+  @page { margin: 0.5cm; }
+  p, h2, h3 { orphans: 3; widows: 3; }
+  h2, h3{ page-break-after: avoid; }
+}
+
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/archiva.fmt b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/enunciate/archiva.fmt
new file mode 100644 (file)
index 0000000..2137bfb
--- /dev/null
@@ -0,0 +1,937 @@
+[#ftl]
+<#-- 
+Copyright 2015 The Apache Software Foundation.
+
+Licensed 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.
+-->
+[#-- @ftlvariable name="resourceApis" type="java.util.List<com.webcohesion.enunciate.api.resources.ResourceApi>" --]
+[#-- @ftlvariable name="serviceApis" type="java.util.List<com.webcohesion.enunciate.api.services.ServiceApi>" --]
+[#-- @ftlvariable name="data" type="java.util.List<com.webcohesion.enunciate.api.datatype.Syntax>" --]
+[#-- @ftlvariable name="downloads" type="java.util.List<com.webcohesion.enunciate.api.Download>" --]
+[#-- @ftlvariable name="title" type="java.lang.String" --]
+[#-- @ftlvariable name="indexPageName" type="java.lang.String" --]
+[#-- @ftlvariable name="disableMountpoint" type="java.lang.Boolean" --]
+[#-- @ftlvariable name="apiRelativePath" type="java.lang.String" --]
+[#-- @ftlvariable name="cssFile" type="java.lang.String" --]
+[#-- @ftlvariable name="additionalCssFiles" type="java.util.List<java.lang.String>" --]
+[#-- @ftlvariable name="copyright" type="java.lang.String" --]
+[#-- @ftlvariable name="apiDoc" type="java.lang.String" --]
+[#-- @ftlvariable name="swaggerUI" type="com.webcohesion.enunciate.api.InterfaceDescriptionFile" --]
+[#--set up the subnavigation menus--]
+[#assign nav_sections = { } /]
+[#if resourceApis?size > 0]
+  [#assign nav_sections = nav_sections + { "Resources" : "resources.html" }/]
+[/#if]
+[#if serviceApis?size > 0]
+  [#assign nav_sections = nav_sections + { "Services" : "services.html" }/]
+[/#if]
+[#if data?size > 0]
+  [#list data as syntax]
+    [#assign nav_sections = { syntax.label : syntax.slug + ".html" } /]
+  [/#list]
+[/#if]
+[#if downloads?size > 0]
+  [#assign nav_sections = nav_sections + { "Files and Libraries" : "downloads.html"} /]
+[/#if]
+[#--Basic boilerplate macro.--]
+[#macro boilerplate title=title breadcrumbs=[{"title" : "Home", "href" : indexPageName}] pagenav=[] codeblocks=true]
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+
+  <title>${title}</title>
+
+  <!-- Mobile viewport optimized: j.mp/bplateviewport -->
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <!-- Bootstrap core CSS -->
+  <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> -->
+
+  [#if cssFile??]
+  <!--custom css for these pages-->
+  <link rel="stylesheet" href="${cssFile}">
+  [/#if]
+  [#list additionalCssFiles as additionalCssFile]
+  <link rel="stylesheet" href="${additionalCssFile}">
+  [/#list]
+
+  <link href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.css" type="text/css">
+
+  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+  <!--[if lt IE 9]>
+  <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+  <![endif]-->
+</head>
+
+<body class="home">
+ <div class="container">
+  <header>
+   <div id="header" class="column first last span-20">
+        <div id="site-name" class="column span-18 append-1 prepend-1 first last"><a href="${indexPageName}">${title}</a></div>
+        <div id="primary" class="column span-18 append-1 prepend-1 first last">
+          <ul class="navigation">
+            <li id="nav-rest"><a href="resources.html">REST</a></li>
+            <li id="nav-data"><a href="data.html">Data Model</a></li>
+          </ul>
+        </div>
+        <div>
+          <ul class="xbreadcrumbs" id="breadcrumbs">
+[#list breadcrumbs as crumb]
+<li[#if !crumb_has_next] class="current"[/#if]>
+ <a href="${crumb.href}"[#if crumb_index = 0] class="home"[/#if]>${crumb.title}</a>[#if crumb_has_next] &gt;[/#if]
+
+            </li>
+          [/#list]
+          </ul>
+        </div>
+      </div>
+  <!--<nav class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container-fluid">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#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="${indexPageName}">${title}</a>
+      </div>
+      <div id="navbar" class="navbar-collapse collapse">
+        <ul class="nav navbar-nav navbar-right">
+  [#if serviceApis?size > 0]
+          <li><a href="services.html">Services</a></li>
+  [/#if]
+  [#if resourceApis?size > 0]
+          <li><a href="resources.html">Resources</a></li>
+  [/#if]
+  [#if data?size > 0]
+          <li><a href="data.html">Data Types</a></li>
+  [/#if]
+  [#if downloads?size > 0]
+          <li><a href="downloads.html">Files and Libraries</a></li>
+  [/#if]
+        </ul>
+      </div>
+    </div>
+  </nav>-->
+ </header>
+  <div id="main" class="column first last span-20">
+  
+        [#nested/]
+        
+        <footer>
+          <div class="footer">
+            [#if copyright??]Copyright &copy; <script type="text/javascript" language="javascript">d = new Date;document.write(d.getFullYear());</script> <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">${copyright}</span>. [/#if]Generated by <a href="http://enunciate.webcohesion.com">Enunciate</a>.
+          </div>
+        </footer>
+
+      </div>
+    
+  </div>
+
+
+  <!-- JavaScript placed at the end of the document so the pages load faster. -->
+  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
+
+  
+  <!-- prettify code blocks. see http://code.google.com/p/google-code-prettify/ -->
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/run_prettify.js" type="text/javascript"></script>
+  
+
+</body>
+</html>
+[/#macro]
+[#--Macro that wraps its text in a deprecated <s> tag if the element is deprecated.--]
+[#macro deprecation element]
+  [#assign deprecated=(element?? && element.deprecated??)/]
+  [#if deprecated]<s>[/#if][#nested/][#if deprecated]</s>[/#if]
+[/#macro]
+[@file name=indexPageName]
+  [#assign pagenav=[]/]
+  [#if resourceApis?size > 0]
+    [#assign pagenav=pagenav + [{ "href" : "#resources", "title" : "Resources" }]/]
+  [/#if]
+  [#if serviceApis?size > 0]
+    [#assign pagenav=pagenav + [{ "href" : "#services", "title" : "Services" }]/]
+  [/#if]
+  [#list data as syntax]
+    [#assign pagenav=pagenav + [{ "href" : "#" + syntax.slug, "title" : syntax.label }]/]
+  [/#list]
+  [@boilerplate pagenav=pagenav]
+    [#if apiDoc??]
+  <div class="jumbotron">
+    <div class="container">
+      ${apiDoc}
+    </div>
+  </div>
+    [/#if]
+    [#if resourceApis?size > 0]
+
+  <h1 class="page-header" id="resources">Resources</h1>
+      [#list resourceApis as resourceApi]
+        [#if downloads?size > 0]
+
+  <p>
+    The resources use a data model that is supported by a set of client-side libraries that are made available on the
+    <a href="downloads.html">files and libraries</a> page.
+  </p>
+        [/#if]
+        [#if resourceApi.wadlFile??]
+
+  <p>
+    There is a <a href="${resourceApi.wadlFile.href}">WADL document</a> available that describes the resources API.
+  </p>
+        [/#if]
+        [#if swaggerUI??]
+
+  <p>
+    You may also enjoy the <a href="${swaggerUI.href}">Swagger UI</a> provided for this API.
+  </p>
+        [/#if]
+ <ul>
+ [#list resourceApi.resourceGroups as resourceGroup]
+ [@processResourceGroup resourceGroup=resourceGroup/]
+<li><a href="${resourceGroup.slug}.html">${resourceGroup.label}</a></li>
+      
+ [/#list]
+  </ul>
+  
+      [/#list]
+    [/#if]
+    [#if serviceApis?size > 0]
+
+  <h1 class="page-header" id="services">Services</h1>
+      [#list serviceApis as serviceApi]
+        [#list serviceApi.serviceGroups as serviceGroup]
+
+  <table class="table table-hover">
+    <caption>Namespace <code>${serviceGroup.namespace!"(Default)"}</code>[#if serviceGroup.wsdlFile??] (<a href="${serviceGroup.wsdlFile.href}">wsdl</a>)[/#if]</caption>
+    <thead>
+    <tr>
+      <th align="center">name</th>
+      <th align="center">description</th>
+    </tr>
+    </thead>
+    <tbody data-link="row" class="rowlink">
+          [#list serviceGroup.services as service]
+            [@processService service=service/]
+    <tr class="clickable-row" data-href="${service.slug}.html">
+      <td>[@deprecation element=service]${service.label}[/@deprecation]</td>
+      <td>[@deprecation element=service]${service.description!"&nbsp;"}[/@deprecation]</td>
+    </tr>
+          [/#list]
+    </tbody>
+    </table>
+        [/#list]
+      [/#list]
+      [#if downloads?size > 0]
+
+  <p>The services API is also accessible by a set of client-side libraries that can be downloaded from the <a href="downloads.html">files and libraries page</a>.</p>
+      [/#if]
+    [/#if]
+    [#if data?size > 0]
+
+  <h1 class="page-header" id="data">Data Types</h1>
+      [#list data as syntax]
+        [@processDataSyntax syntax=syntax/]
+
+  <h3 id="${syntax.slug}">${syntax.label}</h3>
+        [#list syntax.namespaces as ns]
+          [#if ns.types?size > 0]
+
+            [#if ns.uri?? && ns.uri?length > 0]
+    <p>Namespace <code>${ns.uri}</code>[#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+            [#else]
+    <p>Default Namespace [#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+            [/#if]
+    <ul>
+          [#list ns.types?sort_by("label") as type]
+    <li><a href="${type.slug}.html">${type.label}</a></li>
+     
+          [/#list]
+  </ul>
+   
+          [/#if]
+        [/#list]
+      [/#list]
+    [/#if]
+  [/@boilerplate]
+[/@file]
+[@file name="data.html"]
+  [#assign pagenav=[]/]
+  [#list data as syntax]
+    [#assign pagenav=pagenav + [{ "href" : "#" + syntax.slug, "title" : syntax.label }]/]
+  [/#list]
+  [@boilerplate title=title + ": Data Types" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Data Types" , "href" : "data.html"}] pagenav=pagenav]
+  <h1 class="page-header" id="data">Data Types</h1>
+    [#list data as syntax]
+
+  <h3 id="${syntax.slug}">${syntax.label}</h3>
+      [#list syntax.namespaces as ns]
+        [#if ns.types?size > 0]
+
+          [#if ns.uri?? && ns.uri?length > 0]
+  <p>Namespace <code>${ns.uri}</code>[#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+          [#else]
+  <p>Default Namespace [#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+          [/#if]
+  
+  <ul>
+          [#list ns.types as type]
+    <li><a href="${type.slug}.html">${type.label}</a></li>
+     
+          [/#list]
+  </ul>
+        [/#if]
+      [/#list]
+    [/#list]
+  [/@boilerplate]
+[/@file]
+[#if downloads?size > 0]
+  [@file name="downloads.html"]
+    [#assign pagenav=[]/]
+    [#list downloads as download]
+      [#assign pagenav=pagenav + [{ "href" : "#" + download.slug, "title" : download.name }]/]
+    [/#list]
+    [@boilerplate title=title + ": Files and Libraries" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, { "title" : "Files and Libraries" , "href" : "downloads.html"}] codeblocks=true pagenav=pagenav]
+  <h1 class="page-header">Files and Libraries</h1>
+
+      [#list downloads as download]
+  <h3 id="${download.slug}">${download.name}</h3>
+        [#if download.created??]
+  <p class="lead">Created ${download.created?date?string.long}</p>
+        [/#if]
+        [#if download.description??]
+  <p>${download.description}</p>
+        [/#if]
+  <table class="table table-hover">
+    <caption>Files</caption>
+    <thead>
+    <tr>
+      <th>name</th>
+      <th>size</th>
+      <th>description</th>
+    </tr>
+    </thead>
+    <tbody data-link="row" class="rowlink">
+        [#list download.files as file]
+    <tr class="clickable-row" data-href="${file.name}">
+      <td>${file.name}</td>
+      <td>${file.size}</td>
+      <td>${file.description!"&nbsp;"}</td>
+    </tr>
+        [/#list]
+    </tbody>
+  </table>
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#if]
+[#if resourceApis?size > 0]
+  [@file name="resources.html"]
+    [@boilerplate title=title + ": Resources" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Resources" , "href" : "resources.html"}]]
+  <h1 class="page-header" id="resources">Resources</h1>
+
+      [#list resourceApis as resourceApi]
+        [#if downloads?size > 0]
+  <p>
+    The resources use a data model that is supported by a set of client-side libraries that are made available on the
+    <a href="downloads.html">files and libraries</a> page.
+  </p>
+        [/#if]
+        [#if resourceApi.wadlFile??]
+  <p>
+    There is a <a href="${resourceApi.wadlFile.href}">WADL document</a> available that describes the resources API.
+  </p>
+        [/#if]
+        [#if swaggerUI??]
+  <p>
+    You may also enjoy the <a href="${swaggerUI.href}">Swagger UI</a> provided for this API.
+  </p>
+        [/#if]
+
+  <ul>
+ [#list resourceApi.resourceGroups as resourceGroup]
+<li><a href="${resourceGroup.slug}.html">${resourceGroup.label}</a></li>
+      
+ [/#list]
+  </ul>
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#if]
+[#if serviceApis?size > 0]
+  [@file name="services.html"]
+    [@boilerplate title=title + ": Services" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Services" , "href" : "services.html"}]]
+  <h1 class="page-header" id="services">Services</h1>
+      [#list serviceApis as serviceApi]
+        [#list serviceApi.serviceGroups as serviceGroup]
+
+  <table class="table table-hover">
+  <caption>Namespace <code>${serviceGroup.namespace}</code>[#if serviceGroup.wsdlFile??] (<a href="${serviceGroup.wsdlFile.href}">wsdl</a>)[/#if]</caption>
+  <thead>
+    <tr>
+      <th align="center">name</th>
+      <th align="center">description</th>
+    </tr>
+  </thead>
+  <tbody data-link="row" class="rowlink">
+         [#list serviceGroup.services as service]
+    <tr class="clickable-row" data-href="${service.slug}.html">
+      <td>[@deprecation element=service]${service.label}[/@deprecation]</td>
+      <td>[@deprecation element=service]${service.description!"&nbsp;"}[/@deprecation]</td>
+    </tr>
+          [/#list]
+  </tbody>
+  </table>
+        [/#list]
+      [/#list]
+      [#if downloads?size > 0]
+
+  <p>The services API is also accessible by a set of client-side libraries that can be downloaded from the <a href="downloads.html">files and libraries page</a>.</p>
+      [/#if]
+    [/@boilerplate]
+  [/@file]
+[/#if]
+[#macro processResourceGroup resourceGroup]
+  [#assign pagenav=[]/]
+  [#list resourceGroup.resources as resource]
+    [#list resource.methods as method]
+      [#assign pagenav=pagenav + [{ "href" : "#" + method.slug, "title" : method.label + " " + resource.path }]/]
+    [/#list]
+  [/#list]
+  [#-- @ftlvariable name="resourceGroup" type="com.webcohesion.enunciate.api.resources.ResourceGroup" --]
+  [@file name=resourceGroup.slug + ".html"]
+    [@boilerplate title=title + ": " + resourceGroup.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Resources" , "href" : "resources.html"}, {"title" : resourceGroup.label , "href" : resourceGroup.slug + ".html"}] pagenav=pagenav]
+      <h1 class="page-header">${resourceGroup.label} <small>Resource</small></h1>
+      [#if resourceGroup.description??]
+
+      <p>${resourceGroup.description}</p>
+      [/#if]
+      <ul>
+      [#list resourceGroup.resources?sort_by("path") as resource]
+[#list resource.methods as method]
+<li><a href="#${method.slug}">${apiRelativePath}${resourceGroup.contextPath}${resource.path}</a></li>
+[/#list]
+      [/#list]
+      </ul>
+      [#list resourceGroup.resources?sort_by("path") as resource]
+        [#if resource.since?? || resource.version??]
+
+      <dl class="dl-horizontal">
+        [#if resource.since??]
+        <dt>Available Since</dt>
+        <dd>${resource.since}</dd>
+        [/#if]
+        [#if resource.version??]
+        <dt>Version</dt>
+        <dd>${resource.version}</dd>
+        [/#if]
+      </dl>
+        [/#if]
+        [#list resource.methods as method]
+
+      <div id="${method.slug}">
+        <h2>${method.label} <small>${resource.path} <a href="${apiRelativePath}${resourceGroup.contextPath}${resource.path}" class="glyphicon glyphicon-new-window" target="_blank"></a></small></h2>
+          [#if resourceGroup.deprecated?? || method.deprecated??]
+
+        <div class="alert alert-danger">This method has been deprecated. [#if method.deprecated??] ${method.deprecated!""}[#else] ${resource.deprecated!""}[/#if]</div>
+          [/#if]
+          [#if method.description??]
+
+        <p>${method.description}</p>
+          [/#if]
+          [#-- would be nice to enable a "Try it out" link to Swagger. See https://github.com/swagger-api/swagger-spec/issues/239
+          [#if swaggerUI??]
+
+        <p><a href="${swaggerUI.href}#!/${resourceGroup.label?url}/${method.slug}" class="btn btn-default">Try it out!</a></p>
+          [/#if]
+          --]
+          [#if (method.since?? || method.version??)]
+
+        <dl class="dl-horizontal">
+            [#if method.since??]
+          <dt>Available Since</dt>
+          <dd>${method.since}</dd>
+            [/#if]
+            [#if method.version??]
+          <dt>Version</dt>
+          <dd>${method.version}</dd>
+            [/#if]
+        </dl>
+          [/#if]
+          [#if method.parameters?size > 0]
+
+        <table class="table">
+          <caption>Request Parameters</caption>
+          <thead>
+          <tr>
+            <th>name</th>
+            <th>type</th>
+            <th>description</th>
+            <th>default</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.parameters as parameter]
+          <tr>
+            <td>${parameter.name}</td>
+            <td>${parameter.typeLabel}</td>
+            <td>${parameter.description!"&nbsp;"}</td>
+            <td>${parameter.defaultValue!"n/a"}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.requestEntity??]
+
+        <table class="table">
+          <caption>Request Body</caption>
+          <thead>
+          <tr>
+            <th>media type</th>
+            <th>data type</th>
+            [#if method.requestEntity.description??]
+            <th>description</th>
+            [/#if]
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.requestEntity.mediaTypes as io]
+          <tr>
+            <td><abbr data-toggle="tooltip" data-placement="top" title="Use the &quot;Content-Type: ${io.mediaType}&quot; HTTP header to specify this media type to the server.">${io.mediaType}</abbr></td>
+            <td>[@referenceDataType referenceType=io.dataType!{"label" : "(custom)"}/][#if io.syntax??] (${io.syntax})[/#if]</td>
+              [#if io_index = 0 && method.requestEntity.description??]
+            <td rowspan="${method.requestEntity.mediaTypes?size}">${method.requestEntity.description}</td>
+              [/#if]
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.responseCodes?size > 0]
+
+        <table class="table">
+          <caption>Response Codes</caption>
+          <thead>
+          <tr>
+            <th>code</th>
+            <th>condition</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.responseCodes as responseCode]
+          <tr>
+            <td>${responseCode.code}</td>
+            <td>${responseCode.condition}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.responseEntity??]
+
+        <table class="table">
+          <caption>Response Body</caption>
+          <thead>
+          <tr>
+            <th>media type</th>
+            <th>data type</th>
+            [#if method.responseEntity.description??]
+            <th>description</th>
+            [/#if]
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.responseEntity.mediaTypes as io]
+          <tr>
+            <td><abbr data-toggle="tooltip" data-placement="top" title="Use the &quot;Accept: ${io.mediaType}&quot; HTTP header to request that this media type be provided by the server.">${io.mediaType}</abbr></td>
+            <td>[@referenceDataType referenceType=io.dataType!{"label" : "(custom)"}/][#if io.syntax??] (${io.syntax})[/#if]</td>
+              [#if io_index = 0 && method.responseEntity.description??]
+            <td rowspan="${method.responseEntity.mediaTypes?size}">${method.responseEntity.description}</td>
+              [/#if]
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.warnings?size > 0]
+
+        <table class="table">
+          <caption>Response Warnings</caption>
+          <thead>
+          <tr>
+            <th>code</th>
+            <th>condition</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.warnings as responseCode]
+          <tr>
+            <td>${responseCode.code}</td>
+            <td>${responseCode.condition}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.responseHeaders?size > 0]
+
+        <table class="table">
+          <caption>Response Headers</caption>
+          <thead>
+          <tr>
+            <th>name</th>
+            <th>description</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.responseHeaders as header]
+          <tr>
+            <td>${header.name}</td>
+            <td>${header.description!"&nbsp;"}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+      </div>
+        [/#list]
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro processService service]
+  [#assign pagenav=[]/]
+  [#list service.operations as operation]
+    [#assign pagenav=pagenav + [{ "href" : "#" + operation.slug, "title" : operation.name }]/]
+  [/#list]
+  [#-- @ftlvariable name="service" type="com.webcohesion.enunciate.api.services.Service" --]
+  [@file name=service.slug + ".html"]
+    [@boilerplate title=title + ": " + service.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : service.label , "href" : service.slug + ".html"}] pagenav=pagenav]
+      <h1 class="page-header">${service.label} <small>Service</small></h1>
+      [#if service.deprecated??]
+
+      <div class="alert alert-danger">This service has been deprecated. ${service.deprecated}</div>
+      [/#if]
+      [#if service.description??]
+
+      <p>${service.description}</p>
+      [/#if]
+
+      <dl class="dl-horizontal">
+        [#if service.namespace?? && service.namespace?length > 0]
+        <dt>Namespace</dt>
+        <dd>${service.namespace}</dd>
+        [/#if]
+        [#if service.group.wsdlFile??]
+        <dt>WSDL</dt>
+        <dd><a href="${service.group.wsdlFile.href}">${service.group.wsdlFile.href}</a></dd>
+        [/#if]
+        [#if service.path??]
+        <dt>Path</dt>
+        <dd><a href="${apiRelativePath}${service.path}">${service.path}</a></dd>
+        [/#if]
+        [#if service.since??]
+        <dt>Available Since</dt>
+        <dd>${service.since}</dd>
+        [/#if]
+        [#if service.version??]
+        <dt>Version</dt>
+        <dd>${service.version}</dd>
+        [/#if]
+      </dl>
+      [#list service.operations as operation]
+
+      <h2 id="${operation.slug}">${operation.name} <small>Operation</small></h2>
+        [#if operation.deprecated??]
+
+      <div class="alert alert-danger">This method has been deprecated. ${operation.deprecated}</div>
+        [/#if]
+        [#if operation.description??]
+
+        <p>${operation.description}</p>
+        [/#if]
+        [#if (operation.since?? || operation.version??)]
+
+      <dl class="dl-horizontal">
+          [#if operation.since??]
+        <dt>Available Since</dt>
+        <dd>${operation.since}</dd>
+          [/#if]
+          [#if operation.version??]
+        <dt>Version</dt>
+        <dd>${operation.version}</dd>
+          [/#if]
+      </dl>
+        [/#if]
+        [#if operation.inputParameters?size > 0]
+
+      <table class="table">
+        <caption>Input Parameters</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list operation.inputParameters as parameter]
+        <tr>
+          <td>${parameter.name}</td>
+          <td>[@referenceDataType referenceType=parameter.dataType/]</td>
+          <td>${parameter.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+        [/#if]
+        [#if operation.outputParameters?size > 0]
+
+      <table class="table">
+        <caption>Output Parameters</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list operation.outputParameters as parameter]
+        <tr>
+          <td>${parameter.name}</td>
+          <td>[@referenceDataType referenceType=parameter.dataType/]</td>
+          <td>${parameter.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+        [/#if]
+        [#if operation.returnType??]
+
+      <table class="table">
+        <caption>Return Value</caption>
+        <thead>
+        <tr>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+        <tr>
+          <td>[#if operation.returnType.slug??]<a href="${operation.returnType.slug}.html">[/#if]${operation.returnType.label}[#if operation.returnType.slug??]</a>[/#if]</td>
+          <td>${operation.returnDescription!"&nbsp;"}</td>
+        </tr>
+        </tbody>
+      </table>
+        [/#if]
+        [#if operation.faults?size > 0]
+
+      <table class="table">
+        <caption>Faults</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list operation.faults as fault]
+        <tr>
+          <td>${fault.name}</td>
+          <td>[@referenceDataType referenceType=fault.dataType/]</td>
+          <td>${fault.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+        [/#if]
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro processDataSyntax syntax]
+  [#-- @ftlvariable name="syntax" type="com.webcohesion.enunciate.api.datatype.Syntax" --]
+  [@file name=syntax.slug + ".html"]
+    [@boilerplate title=title + ": " + syntax.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : syntax.label , "href" : syntax.slug + ".html"} ]]
+  <h1 class="page-header">${syntax.label}</h1>
+      [#list syntax.namespaces as ns]
+        [#if ns.types?size > 0]
+
+  <table class="table table-hover">
+          [#if ns.uri?? && ns.uri?length > 0]
+  <caption>Namespace <code>${ns.uri}</code>[#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</caption>
+          [#else]
+  <caption>Default Namespace [#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</caption>
+          [/#if]
+  <thead>
+    <tr>
+      <th align="center">type</th>
+      <th align="center">description</th>
+    </tr>
+  </thead>
+  <tbody data-link="row" class="rowlink">
+          [#list ns.types as type]
+            [@processDataType type=type/]
+    <tr class="clickable-row" data-href="${type.slug}.html">
+      <td>[@deprecation element=type]${type.label}[/@deprecation]</td>
+      <td>[@deprecation element=type]${type.description}[/@deprecation]</td>
+    </tr>
+          [/#list]
+  </tbody>
+  </table>
+        [/#if]
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro processDataType type]
+  [#-- @ftlvariable name="type" type="com.webcohesion.enunciate.api.datatype.DataType" --]
+  [@file name=type.slug + ".html"]
+    [@boilerplate title=title + ": " + type.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : type.syntax.label , "href" : type.syntax.slug + ".html"}, {"title" : type.label , "href" : type.slug + ".html"} ] codeblocks=true]
+      <h1 class="page-header">${type.label} <small>Data Type</small></h1>
+      [#if type.deprecated??]
+
+      <div class="alert alert-danger">This data type has been deprecated. ${type.deprecated}</div>
+      [/#if]
+      [#if type.description??]
+
+      <p>${type.description}</p>
+      [/#if]
+
+      <dl class="dl-horizontal">
+      [#if type.namespace.uri??]
+        <dt>Namespace</dt>
+        [#if type.namespace.uri?length > 0]
+        <dd><code>${type.namespace.uri}</code></dd>
+        [#else]
+        <dd>(Default)</dd>
+        [/#if]
+      [/#if]
+      [#if type.namespace.schemaFile??]
+        <dt>Schema</dt>
+        <dd><a href="${type.namespace.schemaFile.href}">${type.namespace.schemaFile.href}</a></dd>
+      [/#if]
+      [#if type.since??]
+        <dt>Available Since</dt>
+        <dd>${type.since}</dd>
+      [/#if]
+      [#if type.version??]
+        <dt>Version</dt>
+        <dd>${type.version}</dd>
+      [/#if]
+      </dl>
+      [#if type.values??]
+
+      <table class="table">
+        <caption>Values</caption>
+        <thead>
+        <tr>
+          <th>value</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list type.values as value]
+        <tr>
+          <td>${value.value}</td>
+          <td>${value.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+      [/#if]
+      [#if type.properties??]
+
+      <table class="table">
+        <caption>Properties</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>data type</th>
+        [#list type.propertyMetadata?keys as meta]
+          <th>${type.propertyMetadata[meta]}</th>
+        [/#list]
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list type.properties as property]
+        <tr>
+          <td>[@deprecation element=property]${property.name}[/@deprecation]</td>
+          <td>[@deprecation element=property][@referenceDataType referenceType=property.dataType/][/@deprecation]</td>
+            [#list type.propertyMetadata?keys as meta]
+          <td>[@deprecation element=property][@printPropertyMetadata property=property meta=meta/][/@deprecation]</td>
+            [/#list]
+          <td>[@deprecation element=property]${property.description!"&nbsp;"}[/@deprecation]</td>
+        </tr>
+          [/#list]
+        </tbody>
+          [#if type.supertypes??]
+            [#list type.supertypes as supertype]
+              [#if supertype.value?? && supertype.value.properties?? && supertype.value.properties?size > 0]
+        <tr>
+          <td colspan="${3 + type.propertyMetadata?size}"><h5 class="text-muted">Properties inherited from <a href="${supertype.slug}.html">${supertype.label}</a></h5></td>
+        </tr>
+        <tbody>
+                [#list supertype.value.properties as superProperty]
+        <tr>
+          <td>${superProperty.name}</td>
+          <td>[@referenceDataType referenceType=superProperty.dataType/]</td>
+            [#list type.propertyMetadata?keys as meta]
+          <td>[@printPropertyMetadata property=superProperty meta=meta/]</td>
+            [/#list]
+          <td>${superProperty.description!"&nbsp;"}</td>
+        </tr>
+                [/#list]
+        </tbody>
+              [/#if]
+            [/#list]
+          [/#if]
+      </table>
+      [/#if]
+      [#if type.example??]
+
+      <h2>Example</h2>
+
+      <pre class="prettyprint lang-${type.example.lang}">${type.example.body?xhtml}</pre>
+      [/#if]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro referenceDataType referenceType]
+[#-- @ftlvariable name="type" type="com.webcohesion.enunciate.api.datatype.DataTypeReference" --]
+[#if referenceType.containers??][#list referenceType.containers as container]${container?string} of [/#list][/#if][#if referenceType.slug??]<a href="${referenceType.slug}.html">[/#if]${referenceType.label!"(custom)"}[#if referenceType.slug??]</a>[/#if]
+[/#macro]
+[#macro printPropertyMetadata property meta]
+  [#assign metaValue=property[meta]!({ "structure" : true })/]
+  [#if metaValue?is_hash && metaValue.structure!false]
+[#if metaValue.href??]<a href="${metaValue.href}">[/#if][#if metaValue.title??]<abbr title="${metaValue.title}">[/#if]${metaValue.value!"&nbsp;"}[#if metaValue.title??]</abbr>[/#if][#if metaValue.href??]</a>[/#if]
+  [#else]
+${metaValue}
+  [/#if]
+[/#macro]
\ No newline at end of file
index 25d2dfe5c762332b5de5321b65cf1c89bf506150..2afff728e95d31abd4ce0653205179f36b4f656e 100644 (file)
@@ -34,7 +34,7 @@
     <jaxws-support disabled="true"/>
 
     <docs disabled="false" title="Apache Archiva REST API" includeExampleXml="true" includeExampleJson="true"
-          includeDefaultDownloads="false" docsSubdir="">
+          includeDefaultDownloads="false" docsSubdir="" freemarkerTemplate="${project.basedir}/src/enunciate/archiva.fmt" css="${project.basedir}/src/enunciate/archiva.css" >
       <!--<war docsDir="apidocs" />-->
     </docs>
 
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/enunciate/archiva.css b/archiva-modules/archiva-web/archiva-web-common/src/enunciate/archiva.css
new file mode 100644 (file)
index 0000000..8f3a291
--- /dev/null
@@ -0,0 +1,765 @@
+/*
+Copyright 2015 The Apache Software Foundation.
+
+Licensed 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.
+*/
+/* 
+    Created on : 13 nov. 2015, 13:47:57
+    Author     : barboni
+*/
+/**
+ * html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
+ * v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark
+ * html5doctor.com/html-5-reset-stylesheet/
+ */
+
+html, body, div, span, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
+small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section, summary,
+time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+  display: block;
+}
+
+blockquote, q { quotes: none; }
+
+blockquote:before, blockquote:after,
+q:before, q:after { content: ""; content: none; }
+
+ins { background-color: #ff9; color: #000; text-decoration: none; }
+
+mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
+
+del { text-decoration: line-through; }
+
+abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
+
+table { border-collapse: collapse; border-spacing: 0; }
+
+hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
+
+input, select { vertical-align: middle; }
+
+
+/**
+ * Font normalization inspired by YUI Library's fonts.css: developer.yahoo.com/yui/
+ */
+
+body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */
+select, input, textarea, button { font:99% sans-serif; }
+
+/* Normalize monospace sizing:
+   en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */
+pre, code, kbd, samp { font-family: monospace, sans-serif; }
+
+
+/**
+ * Minimal base styles.
+ */
+
+/* Always force a scrollbar in non-IE */
+html { overflow-y: scroll; }
+
+/* Accessible focus treatment: people.opera.com/patrickl/experiments/keyboard/test */
+a:hover, a:active { outline: none; }
+
+ul, ol { margin-left: 2em; }
+ol { list-style-type: decimal; }
+
+/* Remove margins for navigation lists */
+nav ul, nav li { margin: 0; list-style:none; list-style-image: none; }
+
+small { font-size: 85%; }
+strong, th { font-weight: bold; }
+
+td { vertical-align: top; }
+
+/* Set sub, sup without affecting line-height: gist.github.com/413930 */
+sub, sup { font-size: 75%; line-height: 0; position: relative; }
+sup { top: -0.5em; }
+sub { bottom: -0.25em; }
+
+pre {
+  /* www.pathf.com/blogs/2008/05/formatting-quoted-code-in-blog-posts-css21-white-space-pre-wrap/ */
+  padding: 15px;
+}
+
+textarea { overflow: auto; } /* www.sitepoint.com/blogs/2010/08/20/ie-remove-textarea-scrollbars/ */
+
+.ie6 legend, .ie7 legend { margin-left: -7px; } 
+
+/* Align checkboxes, radios, text inputs with their label by: Thierry Koblentz tjkdesign.com/ez-css/css/base.css  */
+input[type="radio"] { vertical-align: text-bottom; }
+input[type="checkbox"] { vertical-align: bottom; }
+.ie7 input[type="checkbox"] { vertical-align: baseline; }
+.ie6 input { vertical-align: text-bottom; }
+
+/* Hand cursor on clickable input elements */
+label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; }
+
+/* Webkit browsers add a 2px margin outside the chrome of form elements */
+button, input, select, textarea { margin: 0; }
+
+/* Colors for form validity */
+input:valid, textarea:valid   {  }
+input:invalid, textarea:invalid {
+   border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red;
+}
+.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; }
+
+
+/* These selection declarations have to be separate
+   No text-shadow: twitter.com/miketaylr/status/12228805301
+   Also: hot pink! */
+::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
+::selection { background:#FF5E99; color:#fff; text-shadow: none; }
+
+/* j.mp/webkit-tap-highlight-color */
+a:link { -webkit-tap-highlight-color: #FF5E99; }
+
+/* Make buttons play nice in IE:
+   www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */
+button {  width: auto; overflow: visible; }
+
+/* Bicubic resizing for non-native sized IMG:
+   code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ */
+.ie7 img { -ms-interpolation-mode: bicubic; }
+
+/**
+ * You might tweak these..
+ */
+
+body, select, input, textarea {
+  /* #444 looks better than black: twitter.com/H_FJ/statuses/11800719859 */
+  color: #444;
+  /* Set your base font here, to apply evenly */
+  /* font-family: Georgia, serif;  */
+}
+
+/* Headers (h1, h2, etc) have no default font-size or margin; define those yourself */
+h1, h2, h3, h4, h5, h6 { font-weight: bold; }
+
+a, a:active, a:visited { color: #607890; }
+a:hover { color: #036; }
+
+
+/**
+ * Primary styles
+ *
+ * Author: 
+ */
+
+
+body{text-align:center;margin:0}
+.container{text-align:left;position:relative;padding:0;margin:0 auto;width:800px}
+.column{float:left;margin:0 5px 0 0;padding:0}
+* html .column{overflow-x:hidden}
+.border{padding-right:2px;margin-right:2px;border-right:1px solid #ddd}
+.span-1{width:35px}
+.span-2{width:75px}
+.span-3{width:115px}
+.span-4{width:155px}
+.span-5{width:195px}
+.span-6{width:235px}
+.span-7{width:275px}
+.span-8{width:315px}
+.span-9{width:355px}
+.span-10{width:395px}
+.span-11{width:435px}
+.span-12{width:475px}
+.span-13{width:515px}
+.span-14{width:555px}
+.span-15{width:595px}
+.span-16{width:635px}
+.span-17{width:675px}
+.span-18{width:715px}
+.span-19{width:755px}
+.span-20{width:795px}
+.span-21{width:835px}
+.span-22{width:875px}
+.span-23{width:915px}
+.span-24{width:955px;margin:0}
+.last{margin-right:0}
+.append-1{padding-right:40px}
+.append-2{padding-right:80px}
+.append-3{padding-right:120px}
+.append-4{padding-right:160px}
+.append-5{padding-right:200px}
+.prepend-1{padding-left:40px}
+.prepend-2{padding-left:80px}
+.prepend-3{padding-left:120px}
+.prepend-4{padding-left:160px}
+.prepend-5{padding-left:200px}
+.clear{display:inline-block}
+.clear:after,.container:after{content:".";display:block;height:0;clear:both;visibility:hidden}
+* html .clear{height:1%}
+.clear{display:block}
+h1,h2,h3,h4,h5,h6, p,ul,ol,dl,pre,form{padding-left:5px;padding-right:5px}
+table{margin-left:5px;margin-right:5px}
+img{margin:0 0 18px 0}
+.pull-1{margin-left:-70px}
+.pull-2{margin-left:-140px}
+.pull-3{margin-left:-210px}
+.push-0{margin:0 0 0 18px;float:right}
+.push-1{margin:0 -70px 0 18px;float:right}
+.push-2{margin:0 -140px 0 18px;float:right}
+.push-3{margin:0 -210px 0 18px;float:right}
+.deprecated{text-decoration: line-through}
+
+/* @end */
+
+/* @group typography.css */
+
+body {
+  font-size: 12px;
+  line-height: 18px; /* Do a complete find/replace on "18px" to change this */
+}
+
+
+/* Default fonts */
+h1,h2,h3,
+h4,h5,h6  { font-family: "Helvetica Neue", Helvetica, sans-serif; }
+body      { font-family: "Lucida Grande", Calibri, Arial, sans-serif; }
+pre       { font-family: Monaco, "Courier New", monospace; }
+code      { font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Monaco, Courier, monospace; }
+
+
+/* Headings
+-------------------------------------------------------------- */
+
+h1,h2,h3,h4,h5,h6 {
+  color:#111;
+  clear:both;
+}
+
+h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+    color: #111;
+    text-decoration: none;
+}
+
+h1 { font-size: 30px; line-height:36px; padding:10px 0 18px 0; }
+h2 { font-size: 20px; line-height:36px; }
+h3 { font-size: 12px; line-height:24px; }
+h4 { font-size: 12px; font-weight:bold; }
+h5 { font-size: 12px; font-weight:bold; }
+h6 { font-size: 12px; }
+
+
+/* Text elements
+-------------------------------------------------------------- */
+
+p           { margin: 0 0 18px 0; text-align:justify; }
+p.last      { margin-bottom:0; }
+p img       { float: left; margin:18px 18px 18px 0; padding:0; }
+p img.top   { margin-top:0; } /* Use this if the image is at the top of the <p>. */
+
+ul, ol      { margin: 0 0 18px 0; }
+ul          { list-style-type:circle; }
+ol          { list-style-type: decimal; }
+dl          { margin: 0 0 18px 0; }
+dl dt       { font-weight: bold; }
+
+a           { color: #A68000; text-decoration: underline; outline: none; }
+a:hover     { color: #000; }
+
+blockquote  { margin: 0 0 18px 18px; color: #666; font-style: italic; }
+strong      { font-weight: bold; }
+em          { font-style: italic; }
+pre         { margin-bottom: 18px; background: #eee; border:1px solid #ddd; padding:16px; }
+code {
+    background: #eee;
+    border: 1px solid #ddd;
+    color: #555;
+    display: block;
+    font: normal 1.1em "Lucida Sans Unicode",serif;
+    margin-bottom: 12px;
+    padding: 8px 10px;
+    white-space: pre;
+    overflow: auto;
+    max-height: 300px;
+}
+
+/* Use this to create a horizontal ruler across a column. */
+hr {
+  background: #FFDF73;
+  color: #FFDF73;
+  clear: both;
+  float: none;
+  width: 100%;
+  height: 2px;
+  margin: 0 0 16px 0;
+  border: none;
+}
+
+
+/* Tables
+-------------------------------------------------------------- */
+
+table   { margin-bottom: 16px; border-top:1px solid #ddd; border-left:1px solid #ddd; }
+th,td   { height: 13px; padding:2px 4px; border-bottom:1px solid #ddd; border-right:1px solid #ddd; }
+th      { font-weight:bold; }
+
+
+/* Some default classes
+-------------------------------------------------------------- */
+
+p.small   { font-size: 10px; margin-bottom: 18px; }
+p.large   { font-size: 14px; line-height:36px; }
+p.quiet   { color: #666; }
+.hide     { display: none; }
+
+
+.caps {
+  font-variant: small-caps;
+  letter-spacing: 1px;
+  text-transform: lowercase;
+}
+
+/* @end */
+
+/* @group styles */
+
+/* @group Header */
+
+#header {
+       padding-top: 1.8em;
+       margin-bottom: 1.8em;
+}
+#site-name {
+    line-height: 36px;
+}
+#site-name a {
+    font-variant: small-caps;
+    font-size: 3em;
+    letter-spacing: 3px;
+    text-decoration: none;
+    color: #444;
+}
+#site-name a:visited {
+    color: #444;
+    text-decoration: none;
+}
+#site-name a strong {
+    color: black;
+}
+#site-description {
+       padding-top: 1.4em;
+       padding-bottom: 1.4em;
+}
+#site-description h3 {
+       font-size: 2em;
+       margin: 0;
+       font-weight: normal;
+}
+#site-description p#read-more {
+       text-align: right;
+       margin: 6px 0 0;
+}
+#site-description p#read-more a, #site-description p#read-more a:visited {
+       font-size: 1.4em;
+       color: #515151;
+}
+#site-description p#read-more a:hover {
+       color: #919191;
+}
+#site-description {
+       background-color: #4188D2;
+       border-top: 2px solid #fff;
+       color: #444;
+}
+/* @end */
+
+/* @group Navigation */
+
+ul.navigation, ul.navigation li {
+  list-style: none;
+}
+ul.navigation li {
+  display: inline;
+  margin-right: 1.3em;
+}
+
+#primary {
+       line-height: 72px;
+       margin-bottom: -24px;
+       text-align: right;
+}
+#primary li {
+       padding-bottom: 5px;
+}
+#primary a {
+       color: #444;
+       text-decoration: none;
+       font-size: 1.2em;
+}
+#primary li:hover {
+       border-bottom: 6px solid #FFDF73;
+}
+#secondary {
+       padding-top: 7px;
+       background-color: #FFDF73;
+}
+#secondary ul {
+    list-style: none;
+       margin-bottom: 7px;
+}
+#secondary ul li {
+    display: inline;
+    list-style: none;
+       margin-right: 0;
+}
+#secondary ul li a {
+       color: #515151;
+       text-decoration: none;
+       padding: 8px 24px 8px 24px;
+       margin-left: -4px;
+}
+#secondary ul li a.selected {
+       background-color: #515151;
+       color: #fff;
+}
+#secondary ul a:hover {
+       background: #fff4d0;
+}
+/*
+       xBreadcrumbs (Extended Breadcrumbs) jQuery Plugin
+       ï¿½ 2009 ajaxBlender.com
+       For any questions please visit www.ajaxblender.com
+       or email us at support@ajaxblender.com
+*/
+.xbreadcrumbs {
+       position: relative;
+       z-index: 1000;
+}
+.xbreadcrumbs LI UL {
+       position: absolute;
+       float: left;
+}
+.xbreadcrumbs, .xbreadcrumbs LI, .xbreadcrumbs UL, .xbreadcrumbs UL LI {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+}
+.xbreadcrumbs { clear: both; }
+.xbreadcrumbs, .xbreadcrumbs LI {
+       float: left;
+}
+.xbreadcrumbs UL {
+       display: none;
+}
+
+/*  Base style of xBreadcrumbs  */
+/*  Top Level  */
+.xbreadcrumbs {
+       background: #FFDF73;
+       width: 100%;
+}
+.xbreadcrumbs LI {
+    border-right: none;
+    padding: 5px 15px 5px 10px;
+       height: 16px;
+}
+.xbreadcrumbs LI.current {
+       background: none;
+}
+.xbreadcrumbs LI UL LI {
+    background: none;
+}
+.xbreadcrumbs LI A {
+       font-size: 11px;
+       color: #515151;
+       text-decoration: none;
+    padding-right: 2em;
+}
+.xbreadcrumbs LI A.home {
+    background: url( home.gif ) no-repeat left center;
+    padding-left: 20px;
+}
+.xbreadcrumbs LI A:HOVER, .xbreadcrumbs LI.hover A {
+       color: #000;
+}
+/*  Top Level - Current Page  */
+.xbreadcrumbs LI.current A {
+       color: #333333;
+       font-weight: bold;
+}
+/*  Sub-level  */
+.xbreadcrumbs LI UL {
+       padding: 3px;
+       background: #fff4d0;
+       font-size: 11px;
+       min-width: 180px;
+    max-height: 500px;
+    overflow: auto;
+       top: 25px;
+}
+.xbreadcrumbs LI UL LI {
+       float: left;
+       width: 100%;
+       border-right: none;
+       height: auto;
+}
+.xbreadcrumbs LI UL LI A {
+       text-decoration: none;
+       color: #666666 !important;
+       display: block;
+       padding: 4px;
+       border-bottom: 1px dotted #666666;
+}
+.xbreadcrumbs LI UL LI:last-child A {
+       border-bottom: none;
+}
+.xbreadcrumbs LI UL LI A:HOVER {
+    background: #fffbee;
+}
+body.advisories #nav-advisories,body.community #nav-community,body.blog #nav-blog,body.code #nav-code,body.about #nav-about,body.documentation #nav-documentation{border-bottom: 6px solid #FFDF73;}
+/* @end */
+
+/* @group Main */
+
+#main {
+       font-size: 1.2em;
+       line-height: 1.5em;
+       color: #1E250D;
+}
+#main h2 {
+       font-size: 1.8em;
+       font-weight: normal;
+    border-bottom: 3px solid #c2b2d4;
+    padding-top: 10px;
+       padding-left: 0;
+       padding-right: 0;
+       margin-bottom: 6px;
+}
+#main h3 {
+       font-size: 1.4em;
+       font-weight: normal;
+       border-bottom: 4px solid #f7f7f7;
+       padding: 0 0 5px;
+       margin-bottom: 0.4em;
+}
+#main h3 .caps {
+       font-size: 1.3em;
+}
+#main .hfeed .hentry {
+       list-style: none;
+       list-style-type: none;
+       margin-bottom: 2em;
+       border-bottom: 4px solid #eee;
+       padding-bottom: 1em;
+       clear: both;
+}
+#main .hfeed .hentry:last-child {
+       border-bottom: none;
+}#main .hfeed .hentry .entry-title {
+       border-bottom: none;
+}
+#main hr {
+       color: #FFDF73;
+       background-color: #FFDF73;
+       border-color: #FFDF73;
+}
+#main p {
+       text-align: left;
+       padding-left: 0;
+       padding-right: 0;
+}
+#main img {
+       max-width: 740px;
+}
+#main ol {
+       margin-left: 1.5em;
+}
+#main ul {
+       margin-left: 1.2em;
+       list-style: disc;
+}
+#main .intro {
+       font-size: 1.2em;
+       color: #515151;
+       border-bottom: 3px solid #f8fbfd;
+}
+#main .get-started a {
+       text-align: center;
+       background-color: #8942D6;
+       color: #fff;
+       display: block;
+       border-radius: 12px;
+       -webkit-border-radius: 12px;
+       -moz-border-radius: 12px;
+       padding: 8px 6px;
+       width: 10em;
+       font-size: 1.4em;
+       margin-left: auto;
+       margin-right: auto;
+       text-decoration: none;
+}
+#main .get-started a:hover {
+       background-color: #9D69D6;
+}
+#main pre {
+    max-height: 600px;
+       overflow: auto;
+}
+
+/* @end */
+/* @group Footer */
+
+#footer {
+       color: #666;
+       font-size: 11px;
+       border-top: 4px double #e7e7e7;
+       margin-top: 2em;
+       padding-top: 1.2em;
+       text-align: center;
+}
+/*#footer a {
+       color: #787878;
+       text-decoration: none;
+       border-bottom: 1px dotted #787878;
+}
+#footer a:hover {
+       border-bottom: 1px solid #787878;
+}*/
+
+/* @end */
+
+.update, .note, .notice, .alert {
+margin: 10px 0 20px;
+padding: 5px 20px 5px 20px;
+clear: both;
+}
+.note {
+       background: #e6ecf2;
+       border-top: 2px solid #8996ad;
+       border-bottom: 2px solid #8996ad;
+}
+.update, .notice {
+       background: #92ED6B;
+       border-top: 2px solid #2B8E00;
+       border-bottom: 2px solid #2B8E00;
+}
+.alert {
+       background: #ffbfbf;
+       border-top: 2px solid #f33;
+       border-bottom: 2px solid #f33;
+}
+.alert a {
+       color:#f00;
+}
+.alert a:visited {
+       color: #f33;
+}
+
+/* JavaDoc-Specific Styles */
+.TableHeadingColor     { text-align: left; border-width: 0 }
+.TableSubHeadingColor  { text-align: left; border-width: 0 }
+.TableRowColor         { text-align: left; border-width: 0 }
+.NavBarCell1    { text-align: left; border-width: 0 }
+.NavBarCell1Rev { text-align: left; border-width: 0 }
+.FrameItemFont { text-align: left; }
+
+/* @end */
+
+
+
+/**
+ * Non-semantic helper classes: please define your styles before this section.
+ */
+
+/* For image replacement */
+.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
+
+/* Hide for both screenreaders and browsers:
+   css-discuss.incutio.com/wiki/Screenreader_Visibility */
+.hidden { display: none; visibility: hidden; }
+
+/* Hide only visually, but have it available for screenreaders: by Jon Neal.
+  www.webaim.org/techniques/css/invisiblecontent/  &  j.mp/visuallyhidden */
+.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: drupal.org/node/897638 */
+.visuallyhidden.focusable:active,
+.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
+
+/* Hide visually and from screenreaders, but maintain layout */
+.invisible { visibility: hidden; }
+
+/* The Magnificent Clearfix: Updated to prevent margin-collapsing on child elements.
+   j.mp/bestclearfix */
+.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
+.clearfix:after { clear: both; }
+/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */
+.clearfix { zoom: 1; }
+
+
+
+/**
+ * Media queries for responsive design.
+ *
+ * These follow after primary styles so they will successfully override.
+ */
+
+@media all and (orientation:portrait) {
+  /* Style adjustments for portrait mode goes here */
+
+}
+
+@media all and (orientation:landscape) {
+  /* Style adjustments for landscape mode goes here */
+
+}
+
+/* Grade-A Mobile Browsers (Opera Mobile, Mobile Safari, Android Chrome)
+   consider this: www.cloudfour.com/css-media-query-for-mobile-is-fools-gold/ */
+@media screen and (max-device-width: 480px) {
+
+
+  /* Uncomment if you don't want iOS and WinMobile to mobile-optimize the text for you: j.mp/textsizeadjust */
+  /* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
+}
+
+
+/**
+ * Print styles.
+ *
+ * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/
+ */
+@media print {
+  * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
+  -ms-filter: none !important; } /* Black prints faster: sanbeiji.com/archives/953 */
+  a, a:visited { color: #444 !important; text-decoration: underline; }
+  a[href]:after { content: " (" attr(href) ")"; }
+  abbr[title]:after { content: " (" attr(title) ")"; }
+  .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }  /* Don't show links for images, or javascript/internal links */
+  pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+  thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */
+  tr, img { page-break-inside: avoid; }
+  @page { margin: 0.5cm; }
+  p, h2, h3 { orphans: 3; widows: 3; }
+  h2, h3{ page-break-after: avoid; }
+}
+
diff --git a/archiva-modules/archiva-web/archiva-web-common/src/enunciate/archiva.fmt b/archiva-modules/archiva-web/archiva-web-common/src/enunciate/archiva.fmt
new file mode 100644 (file)
index 0000000..2137bfb
--- /dev/null
@@ -0,0 +1,937 @@
+[#ftl]
+<#-- 
+Copyright 2015 The Apache Software Foundation.
+
+Licensed 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.
+-->
+[#-- @ftlvariable name="resourceApis" type="java.util.List<com.webcohesion.enunciate.api.resources.ResourceApi>" --]
+[#-- @ftlvariable name="serviceApis" type="java.util.List<com.webcohesion.enunciate.api.services.ServiceApi>" --]
+[#-- @ftlvariable name="data" type="java.util.List<com.webcohesion.enunciate.api.datatype.Syntax>" --]
+[#-- @ftlvariable name="downloads" type="java.util.List<com.webcohesion.enunciate.api.Download>" --]
+[#-- @ftlvariable name="title" type="java.lang.String" --]
+[#-- @ftlvariable name="indexPageName" type="java.lang.String" --]
+[#-- @ftlvariable name="disableMountpoint" type="java.lang.Boolean" --]
+[#-- @ftlvariable name="apiRelativePath" type="java.lang.String" --]
+[#-- @ftlvariable name="cssFile" type="java.lang.String" --]
+[#-- @ftlvariable name="additionalCssFiles" type="java.util.List<java.lang.String>" --]
+[#-- @ftlvariable name="copyright" type="java.lang.String" --]
+[#-- @ftlvariable name="apiDoc" type="java.lang.String" --]
+[#-- @ftlvariable name="swaggerUI" type="com.webcohesion.enunciate.api.InterfaceDescriptionFile" --]
+[#--set up the subnavigation menus--]
+[#assign nav_sections = { } /]
+[#if resourceApis?size > 0]
+  [#assign nav_sections = nav_sections + { "Resources" : "resources.html" }/]
+[/#if]
+[#if serviceApis?size > 0]
+  [#assign nav_sections = nav_sections + { "Services" : "services.html" }/]
+[/#if]
+[#if data?size > 0]
+  [#list data as syntax]
+    [#assign nav_sections = { syntax.label : syntax.slug + ".html" } /]
+  [/#list]
+[/#if]
+[#if downloads?size > 0]
+  [#assign nav_sections = nav_sections + { "Files and Libraries" : "downloads.html"} /]
+[/#if]
+[#--Basic boilerplate macro.--]
+[#macro boilerplate title=title breadcrumbs=[{"title" : "Home", "href" : indexPageName}] pagenav=[] codeblocks=true]
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+
+  <title>${title}</title>
+
+  <!-- Mobile viewport optimized: j.mp/bplateviewport -->
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+  <!-- Bootstrap core CSS -->
+  <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> -->
+
+  [#if cssFile??]
+  <!--custom css for these pages-->
+  <link rel="stylesheet" href="${cssFile}">
+  [/#if]
+  [#list additionalCssFiles as additionalCssFile]
+  <link rel="stylesheet" href="${additionalCssFile}">
+  [/#list]
+
+  <link href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.css" type="text/css">
+
+  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+  <!--[if lt IE 9]>
+  <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+  <![endif]-->
+</head>
+
+<body class="home">
+ <div class="container">
+  <header>
+   <div id="header" class="column first last span-20">
+        <div id="site-name" class="column span-18 append-1 prepend-1 first last"><a href="${indexPageName}">${title}</a></div>
+        <div id="primary" class="column span-18 append-1 prepend-1 first last">
+          <ul class="navigation">
+            <li id="nav-rest"><a href="resources.html">REST</a></li>
+            <li id="nav-data"><a href="data.html">Data Model</a></li>
+          </ul>
+        </div>
+        <div>
+          <ul class="xbreadcrumbs" id="breadcrumbs">
+[#list breadcrumbs as crumb]
+<li[#if !crumb_has_next] class="current"[/#if]>
+ <a href="${crumb.href}"[#if crumb_index = 0] class="home"[/#if]>${crumb.title}</a>[#if crumb_has_next] &gt;[/#if]
+
+            </li>
+          [/#list]
+          </ul>
+        </div>
+      </div>
+  <!--<nav class="navbar navbar-inverse navbar-fixed-top">
+    <div class="container-fluid">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#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="${indexPageName}">${title}</a>
+      </div>
+      <div id="navbar" class="navbar-collapse collapse">
+        <ul class="nav navbar-nav navbar-right">
+  [#if serviceApis?size > 0]
+          <li><a href="services.html">Services</a></li>
+  [/#if]
+  [#if resourceApis?size > 0]
+          <li><a href="resources.html">Resources</a></li>
+  [/#if]
+  [#if data?size > 0]
+          <li><a href="data.html">Data Types</a></li>
+  [/#if]
+  [#if downloads?size > 0]
+          <li><a href="downloads.html">Files and Libraries</a></li>
+  [/#if]
+        </ul>
+      </div>
+    </div>
+  </nav>-->
+ </header>
+  <div id="main" class="column first last span-20">
+  
+        [#nested/]
+        
+        <footer>
+          <div class="footer">
+            [#if copyright??]Copyright &copy; <script type="text/javascript" language="javascript">d = new Date;document.write(d.getFullYear());</script> <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">${copyright}</span>. [/#if]Generated by <a href="http://enunciate.webcohesion.com">Enunciate</a>.
+          </div>
+        </footer>
+
+      </div>
+    
+  </div>
+
+
+  <!-- JavaScript placed at the end of the document so the pages load faster. -->
+  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
+
+  
+  <!-- prettify code blocks. see http://code.google.com/p/google-code-prettify/ -->
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/run_prettify.js" type="text/javascript"></script>
+  
+
+</body>
+</html>
+[/#macro]
+[#--Macro that wraps its text in a deprecated <s> tag if the element is deprecated.--]
+[#macro deprecation element]
+  [#assign deprecated=(element?? && element.deprecated??)/]
+  [#if deprecated]<s>[/#if][#nested/][#if deprecated]</s>[/#if]
+[/#macro]
+[@file name=indexPageName]
+  [#assign pagenav=[]/]
+  [#if resourceApis?size > 0]
+    [#assign pagenav=pagenav + [{ "href" : "#resources", "title" : "Resources" }]/]
+  [/#if]
+  [#if serviceApis?size > 0]
+    [#assign pagenav=pagenav + [{ "href" : "#services", "title" : "Services" }]/]
+  [/#if]
+  [#list data as syntax]
+    [#assign pagenav=pagenav + [{ "href" : "#" + syntax.slug, "title" : syntax.label }]/]
+  [/#list]
+  [@boilerplate pagenav=pagenav]
+    [#if apiDoc??]
+  <div class="jumbotron">
+    <div class="container">
+      ${apiDoc}
+    </div>
+  </div>
+    [/#if]
+    [#if resourceApis?size > 0]
+
+  <h1 class="page-header" id="resources">Resources</h1>
+      [#list resourceApis as resourceApi]
+        [#if downloads?size > 0]
+
+  <p>
+    The resources use a data model that is supported by a set of client-side libraries that are made available on the
+    <a href="downloads.html">files and libraries</a> page.
+  </p>
+        [/#if]
+        [#if resourceApi.wadlFile??]
+
+  <p>
+    There is a <a href="${resourceApi.wadlFile.href}">WADL document</a> available that describes the resources API.
+  </p>
+        [/#if]
+        [#if swaggerUI??]
+
+  <p>
+    You may also enjoy the <a href="${swaggerUI.href}">Swagger UI</a> provided for this API.
+  </p>
+        [/#if]
+ <ul>
+ [#list resourceApi.resourceGroups as resourceGroup]
+ [@processResourceGroup resourceGroup=resourceGroup/]
+<li><a href="${resourceGroup.slug}.html">${resourceGroup.label}</a></li>
+      
+ [/#list]
+  </ul>
+  
+      [/#list]
+    [/#if]
+    [#if serviceApis?size > 0]
+
+  <h1 class="page-header" id="services">Services</h1>
+      [#list serviceApis as serviceApi]
+        [#list serviceApi.serviceGroups as serviceGroup]
+
+  <table class="table table-hover">
+    <caption>Namespace <code>${serviceGroup.namespace!"(Default)"}</code>[#if serviceGroup.wsdlFile??] (<a href="${serviceGroup.wsdlFile.href}">wsdl</a>)[/#if]</caption>
+    <thead>
+    <tr>
+      <th align="center">name</th>
+      <th align="center">description</th>
+    </tr>
+    </thead>
+    <tbody data-link="row" class="rowlink">
+          [#list serviceGroup.services as service]
+            [@processService service=service/]
+    <tr class="clickable-row" data-href="${service.slug}.html">
+      <td>[@deprecation element=service]${service.label}[/@deprecation]</td>
+      <td>[@deprecation element=service]${service.description!"&nbsp;"}[/@deprecation]</td>
+    </tr>
+          [/#list]
+    </tbody>
+    </table>
+        [/#list]
+      [/#list]
+      [#if downloads?size > 0]
+
+  <p>The services API is also accessible by a set of client-side libraries that can be downloaded from the <a href="downloads.html">files and libraries page</a>.</p>
+      [/#if]
+    [/#if]
+    [#if data?size > 0]
+
+  <h1 class="page-header" id="data">Data Types</h1>
+      [#list data as syntax]
+        [@processDataSyntax syntax=syntax/]
+
+  <h3 id="${syntax.slug}">${syntax.label}</h3>
+        [#list syntax.namespaces as ns]
+          [#if ns.types?size > 0]
+
+            [#if ns.uri?? && ns.uri?length > 0]
+    <p>Namespace <code>${ns.uri}</code>[#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+            [#else]
+    <p>Default Namespace [#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+            [/#if]
+    <ul>
+          [#list ns.types?sort_by("label") as type]
+    <li><a href="${type.slug}.html">${type.label}</a></li>
+     
+          [/#list]
+  </ul>
+   
+          [/#if]
+        [/#list]
+      [/#list]
+    [/#if]
+  [/@boilerplate]
+[/@file]
+[@file name="data.html"]
+  [#assign pagenav=[]/]
+  [#list data as syntax]
+    [#assign pagenav=pagenav + [{ "href" : "#" + syntax.slug, "title" : syntax.label }]/]
+  [/#list]
+  [@boilerplate title=title + ": Data Types" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Data Types" , "href" : "data.html"}] pagenav=pagenav]
+  <h1 class="page-header" id="data">Data Types</h1>
+    [#list data as syntax]
+
+  <h3 id="${syntax.slug}">${syntax.label}</h3>
+      [#list syntax.namespaces as ns]
+        [#if ns.types?size > 0]
+
+          [#if ns.uri?? && ns.uri?length > 0]
+  <p>Namespace <code>${ns.uri}</code>[#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+          [#else]
+  <p>Default Namespace [#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</p>
+          [/#if]
+  
+  <ul>
+          [#list ns.types as type]
+    <li><a href="${type.slug}.html">${type.label}</a></li>
+     
+          [/#list]
+  </ul>
+        [/#if]
+      [/#list]
+    [/#list]
+  [/@boilerplate]
+[/@file]
+[#if downloads?size > 0]
+  [@file name="downloads.html"]
+    [#assign pagenav=[]/]
+    [#list downloads as download]
+      [#assign pagenav=pagenav + [{ "href" : "#" + download.slug, "title" : download.name }]/]
+    [/#list]
+    [@boilerplate title=title + ": Files and Libraries" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, { "title" : "Files and Libraries" , "href" : "downloads.html"}] codeblocks=true pagenav=pagenav]
+  <h1 class="page-header">Files and Libraries</h1>
+
+      [#list downloads as download]
+  <h3 id="${download.slug}">${download.name}</h3>
+        [#if download.created??]
+  <p class="lead">Created ${download.created?date?string.long}</p>
+        [/#if]
+        [#if download.description??]
+  <p>${download.description}</p>
+        [/#if]
+  <table class="table table-hover">
+    <caption>Files</caption>
+    <thead>
+    <tr>
+      <th>name</th>
+      <th>size</th>
+      <th>description</th>
+    </tr>
+    </thead>
+    <tbody data-link="row" class="rowlink">
+        [#list download.files as file]
+    <tr class="clickable-row" data-href="${file.name}">
+      <td>${file.name}</td>
+      <td>${file.size}</td>
+      <td>${file.description!"&nbsp;"}</td>
+    </tr>
+        [/#list]
+    </tbody>
+  </table>
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#if]
+[#if resourceApis?size > 0]
+  [@file name="resources.html"]
+    [@boilerplate title=title + ": Resources" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Resources" , "href" : "resources.html"}]]
+  <h1 class="page-header" id="resources">Resources</h1>
+
+      [#list resourceApis as resourceApi]
+        [#if downloads?size > 0]
+  <p>
+    The resources use a data model that is supported by a set of client-side libraries that are made available on the
+    <a href="downloads.html">files and libraries</a> page.
+  </p>
+        [/#if]
+        [#if resourceApi.wadlFile??]
+  <p>
+    There is a <a href="${resourceApi.wadlFile.href}">WADL document</a> available that describes the resources API.
+  </p>
+        [/#if]
+        [#if swaggerUI??]
+  <p>
+    You may also enjoy the <a href="${swaggerUI.href}">Swagger UI</a> provided for this API.
+  </p>
+        [/#if]
+
+  <ul>
+ [#list resourceApi.resourceGroups as resourceGroup]
+<li><a href="${resourceGroup.slug}.html">${resourceGroup.label}</a></li>
+      
+ [/#list]
+  </ul>
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#if]
+[#if serviceApis?size > 0]
+  [@file name="services.html"]
+    [@boilerplate title=title + ": Services" breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Services" , "href" : "services.html"}]]
+  <h1 class="page-header" id="services">Services</h1>
+      [#list serviceApis as serviceApi]
+        [#list serviceApi.serviceGroups as serviceGroup]
+
+  <table class="table table-hover">
+  <caption>Namespace <code>${serviceGroup.namespace}</code>[#if serviceGroup.wsdlFile??] (<a href="${serviceGroup.wsdlFile.href}">wsdl</a>)[/#if]</caption>
+  <thead>
+    <tr>
+      <th align="center">name</th>
+      <th align="center">description</th>
+    </tr>
+  </thead>
+  <tbody data-link="row" class="rowlink">
+         [#list serviceGroup.services as service]
+    <tr class="clickable-row" data-href="${service.slug}.html">
+      <td>[@deprecation element=service]${service.label}[/@deprecation]</td>
+      <td>[@deprecation element=service]${service.description!"&nbsp;"}[/@deprecation]</td>
+    </tr>
+          [/#list]
+  </tbody>
+  </table>
+        [/#list]
+      [/#list]
+      [#if downloads?size > 0]
+
+  <p>The services API is also accessible by a set of client-side libraries that can be downloaded from the <a href="downloads.html">files and libraries page</a>.</p>
+      [/#if]
+    [/@boilerplate]
+  [/@file]
+[/#if]
+[#macro processResourceGroup resourceGroup]
+  [#assign pagenav=[]/]
+  [#list resourceGroup.resources as resource]
+    [#list resource.methods as method]
+      [#assign pagenav=pagenav + [{ "href" : "#" + method.slug, "title" : method.label + " " + resource.path }]/]
+    [/#list]
+  [/#list]
+  [#-- @ftlvariable name="resourceGroup" type="com.webcohesion.enunciate.api.resources.ResourceGroup" --]
+  [@file name=resourceGroup.slug + ".html"]
+    [@boilerplate title=title + ": " + resourceGroup.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : "Resources" , "href" : "resources.html"}, {"title" : resourceGroup.label , "href" : resourceGroup.slug + ".html"}] pagenav=pagenav]
+      <h1 class="page-header">${resourceGroup.label} <small>Resource</small></h1>
+      [#if resourceGroup.description??]
+
+      <p>${resourceGroup.description}</p>
+      [/#if]
+      <ul>
+      [#list resourceGroup.resources?sort_by("path") as resource]
+[#list resource.methods as method]
+<li><a href="#${method.slug}">${apiRelativePath}${resourceGroup.contextPath}${resource.path}</a></li>
+[/#list]
+      [/#list]
+      </ul>
+      [#list resourceGroup.resources?sort_by("path") as resource]
+        [#if resource.since?? || resource.version??]
+
+      <dl class="dl-horizontal">
+        [#if resource.since??]
+        <dt>Available Since</dt>
+        <dd>${resource.since}</dd>
+        [/#if]
+        [#if resource.version??]
+        <dt>Version</dt>
+        <dd>${resource.version}</dd>
+        [/#if]
+      </dl>
+        [/#if]
+        [#list resource.methods as method]
+
+      <div id="${method.slug}">
+        <h2>${method.label} <small>${resource.path} <a href="${apiRelativePath}${resourceGroup.contextPath}${resource.path}" class="glyphicon glyphicon-new-window" target="_blank"></a></small></h2>
+          [#if resourceGroup.deprecated?? || method.deprecated??]
+
+        <div class="alert alert-danger">This method has been deprecated. [#if method.deprecated??] ${method.deprecated!""}[#else] ${resource.deprecated!""}[/#if]</div>
+          [/#if]
+          [#if method.description??]
+
+        <p>${method.description}</p>
+          [/#if]
+          [#-- would be nice to enable a "Try it out" link to Swagger. See https://github.com/swagger-api/swagger-spec/issues/239
+          [#if swaggerUI??]
+
+        <p><a href="${swaggerUI.href}#!/${resourceGroup.label?url}/${method.slug}" class="btn btn-default">Try it out!</a></p>
+          [/#if]
+          --]
+          [#if (method.since?? || method.version??)]
+
+        <dl class="dl-horizontal">
+            [#if method.since??]
+          <dt>Available Since</dt>
+          <dd>${method.since}</dd>
+            [/#if]
+            [#if method.version??]
+          <dt>Version</dt>
+          <dd>${method.version}</dd>
+            [/#if]
+        </dl>
+          [/#if]
+          [#if method.parameters?size > 0]
+
+        <table class="table">
+          <caption>Request Parameters</caption>
+          <thead>
+          <tr>
+            <th>name</th>
+            <th>type</th>
+            <th>description</th>
+            <th>default</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.parameters as parameter]
+          <tr>
+            <td>${parameter.name}</td>
+            <td>${parameter.typeLabel}</td>
+            <td>${parameter.description!"&nbsp;"}</td>
+            <td>${parameter.defaultValue!"n/a"}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.requestEntity??]
+
+        <table class="table">
+          <caption>Request Body</caption>
+          <thead>
+          <tr>
+            <th>media type</th>
+            <th>data type</th>
+            [#if method.requestEntity.description??]
+            <th>description</th>
+            [/#if]
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.requestEntity.mediaTypes as io]
+          <tr>
+            <td><abbr data-toggle="tooltip" data-placement="top" title="Use the &quot;Content-Type: ${io.mediaType}&quot; HTTP header to specify this media type to the server.">${io.mediaType}</abbr></td>
+            <td>[@referenceDataType referenceType=io.dataType!{"label" : "(custom)"}/][#if io.syntax??] (${io.syntax})[/#if]</td>
+              [#if io_index = 0 && method.requestEntity.description??]
+            <td rowspan="${method.requestEntity.mediaTypes?size}">${method.requestEntity.description}</td>
+              [/#if]
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.responseCodes?size > 0]
+
+        <table class="table">
+          <caption>Response Codes</caption>
+          <thead>
+          <tr>
+            <th>code</th>
+            <th>condition</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.responseCodes as responseCode]
+          <tr>
+            <td>${responseCode.code}</td>
+            <td>${responseCode.condition}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.responseEntity??]
+
+        <table class="table">
+          <caption>Response Body</caption>
+          <thead>
+          <tr>
+            <th>media type</th>
+            <th>data type</th>
+            [#if method.responseEntity.description??]
+            <th>description</th>
+            [/#if]
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.responseEntity.mediaTypes as io]
+          <tr>
+            <td><abbr data-toggle="tooltip" data-placement="top" title="Use the &quot;Accept: ${io.mediaType}&quot; HTTP header to request that this media type be provided by the server.">${io.mediaType}</abbr></td>
+            <td>[@referenceDataType referenceType=io.dataType!{"label" : "(custom)"}/][#if io.syntax??] (${io.syntax})[/#if]</td>
+              [#if io_index = 0 && method.responseEntity.description??]
+            <td rowspan="${method.responseEntity.mediaTypes?size}">${method.responseEntity.description}</td>
+              [/#if]
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.warnings?size > 0]
+
+        <table class="table">
+          <caption>Response Warnings</caption>
+          <thead>
+          <tr>
+            <th>code</th>
+            <th>condition</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.warnings as responseCode]
+          <tr>
+            <td>${responseCode.code}</td>
+            <td>${responseCode.condition}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+          [#if method.responseHeaders?size > 0]
+
+        <table class="table">
+          <caption>Response Headers</caption>
+          <thead>
+          <tr>
+            <th>name</th>
+            <th>description</th>
+          </tr>
+          </thead>
+          <tbody>
+            [#list method.responseHeaders as header]
+          <tr>
+            <td>${header.name}</td>
+            <td>${header.description!"&nbsp;"}</td>
+          </tr>
+            [/#list]
+          </tbody>
+        </table>
+          [/#if]
+      </div>
+        [/#list]
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro processService service]
+  [#assign pagenav=[]/]
+  [#list service.operations as operation]
+    [#assign pagenav=pagenav + [{ "href" : "#" + operation.slug, "title" : operation.name }]/]
+  [/#list]
+  [#-- @ftlvariable name="service" type="com.webcohesion.enunciate.api.services.Service" --]
+  [@file name=service.slug + ".html"]
+    [@boilerplate title=title + ": " + service.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : service.label , "href" : service.slug + ".html"}] pagenav=pagenav]
+      <h1 class="page-header">${service.label} <small>Service</small></h1>
+      [#if service.deprecated??]
+
+      <div class="alert alert-danger">This service has been deprecated. ${service.deprecated}</div>
+      [/#if]
+      [#if service.description??]
+
+      <p>${service.description}</p>
+      [/#if]
+
+      <dl class="dl-horizontal">
+        [#if service.namespace?? && service.namespace?length > 0]
+        <dt>Namespace</dt>
+        <dd>${service.namespace}</dd>
+        [/#if]
+        [#if service.group.wsdlFile??]
+        <dt>WSDL</dt>
+        <dd><a href="${service.group.wsdlFile.href}">${service.group.wsdlFile.href}</a></dd>
+        [/#if]
+        [#if service.path??]
+        <dt>Path</dt>
+        <dd><a href="${apiRelativePath}${service.path}">${service.path}</a></dd>
+        [/#if]
+        [#if service.since??]
+        <dt>Available Since</dt>
+        <dd>${service.since}</dd>
+        [/#if]
+        [#if service.version??]
+        <dt>Version</dt>
+        <dd>${service.version}</dd>
+        [/#if]
+      </dl>
+      [#list service.operations as operation]
+
+      <h2 id="${operation.slug}">${operation.name} <small>Operation</small></h2>
+        [#if operation.deprecated??]
+
+      <div class="alert alert-danger">This method has been deprecated. ${operation.deprecated}</div>
+        [/#if]
+        [#if operation.description??]
+
+        <p>${operation.description}</p>
+        [/#if]
+        [#if (operation.since?? || operation.version??)]
+
+      <dl class="dl-horizontal">
+          [#if operation.since??]
+        <dt>Available Since</dt>
+        <dd>${operation.since}</dd>
+          [/#if]
+          [#if operation.version??]
+        <dt>Version</dt>
+        <dd>${operation.version}</dd>
+          [/#if]
+      </dl>
+        [/#if]
+        [#if operation.inputParameters?size > 0]
+
+      <table class="table">
+        <caption>Input Parameters</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list operation.inputParameters as parameter]
+        <tr>
+          <td>${parameter.name}</td>
+          <td>[@referenceDataType referenceType=parameter.dataType/]</td>
+          <td>${parameter.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+        [/#if]
+        [#if operation.outputParameters?size > 0]
+
+      <table class="table">
+        <caption>Output Parameters</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list operation.outputParameters as parameter]
+        <tr>
+          <td>${parameter.name}</td>
+          <td>[@referenceDataType referenceType=parameter.dataType/]</td>
+          <td>${parameter.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+        [/#if]
+        [#if operation.returnType??]
+
+      <table class="table">
+        <caption>Return Value</caption>
+        <thead>
+        <tr>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+        <tr>
+          <td>[#if operation.returnType.slug??]<a href="${operation.returnType.slug}.html">[/#if]${operation.returnType.label}[#if operation.returnType.slug??]</a>[/#if]</td>
+          <td>${operation.returnDescription!"&nbsp;"}</td>
+        </tr>
+        </tbody>
+      </table>
+        [/#if]
+        [#if operation.faults?size > 0]
+
+      <table class="table">
+        <caption>Faults</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>type</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list operation.faults as fault]
+        <tr>
+          <td>${fault.name}</td>
+          <td>[@referenceDataType referenceType=fault.dataType/]</td>
+          <td>${fault.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+        [/#if]
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro processDataSyntax syntax]
+  [#-- @ftlvariable name="syntax" type="com.webcohesion.enunciate.api.datatype.Syntax" --]
+  [@file name=syntax.slug + ".html"]
+    [@boilerplate title=title + ": " + syntax.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : syntax.label , "href" : syntax.slug + ".html"} ]]
+  <h1 class="page-header">${syntax.label}</h1>
+      [#list syntax.namespaces as ns]
+        [#if ns.types?size > 0]
+
+  <table class="table table-hover">
+          [#if ns.uri?? && ns.uri?length > 0]
+  <caption>Namespace <code>${ns.uri}</code>[#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</caption>
+          [#else]
+  <caption>Default Namespace [#if ns.schemaFile??] (<a href="${ns.schemaFile.href}">schema</a>)[/#if]</caption>
+          [/#if]
+  <thead>
+    <tr>
+      <th align="center">type</th>
+      <th align="center">description</th>
+    </tr>
+  </thead>
+  <tbody data-link="row" class="rowlink">
+          [#list ns.types as type]
+            [@processDataType type=type/]
+    <tr class="clickable-row" data-href="${type.slug}.html">
+      <td>[@deprecation element=type]${type.label}[/@deprecation]</td>
+      <td>[@deprecation element=type]${type.description}[/@deprecation]</td>
+    </tr>
+          [/#list]
+  </tbody>
+  </table>
+        [/#if]
+      [/#list]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro processDataType type]
+  [#-- @ftlvariable name="type" type="com.webcohesion.enunciate.api.datatype.DataType" --]
+  [@file name=type.slug + ".html"]
+    [@boilerplate title=title + ": " + type.label breadcrumbs=[{"title" : "Home", "href" : indexPageName}, {"title" : type.syntax.label , "href" : type.syntax.slug + ".html"}, {"title" : type.label , "href" : type.slug + ".html"} ] codeblocks=true]
+      <h1 class="page-header">${type.label} <small>Data Type</small></h1>
+      [#if type.deprecated??]
+
+      <div class="alert alert-danger">This data type has been deprecated. ${type.deprecated}</div>
+      [/#if]
+      [#if type.description??]
+
+      <p>${type.description}</p>
+      [/#if]
+
+      <dl class="dl-horizontal">
+      [#if type.namespace.uri??]
+        <dt>Namespace</dt>
+        [#if type.namespace.uri?length > 0]
+        <dd><code>${type.namespace.uri}</code></dd>
+        [#else]
+        <dd>(Default)</dd>
+        [/#if]
+      [/#if]
+      [#if type.namespace.schemaFile??]
+        <dt>Schema</dt>
+        <dd><a href="${type.namespace.schemaFile.href}">${type.namespace.schemaFile.href}</a></dd>
+      [/#if]
+      [#if type.since??]
+        <dt>Available Since</dt>
+        <dd>${type.since}</dd>
+      [/#if]
+      [#if type.version??]
+        <dt>Version</dt>
+        <dd>${type.version}</dd>
+      [/#if]
+      </dl>
+      [#if type.values??]
+
+      <table class="table">
+        <caption>Values</caption>
+        <thead>
+        <tr>
+          <th>value</th>
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list type.values as value]
+        <tr>
+          <td>${value.value}</td>
+          <td>${value.description!"&nbsp;"}</td>
+        </tr>
+          [/#list]
+        </tbody>
+      </table>
+      [/#if]
+      [#if type.properties??]
+
+      <table class="table">
+        <caption>Properties</caption>
+        <thead>
+        <tr>
+          <th>name</th>
+          <th>data type</th>
+        [#list type.propertyMetadata?keys as meta]
+          <th>${type.propertyMetadata[meta]}</th>
+        [/#list]
+          <th>description</th>
+        </tr>
+        </thead>
+        <tbody>
+          [#list type.properties as property]
+        <tr>
+          <td>[@deprecation element=property]${property.name}[/@deprecation]</td>
+          <td>[@deprecation element=property][@referenceDataType referenceType=property.dataType/][/@deprecation]</td>
+            [#list type.propertyMetadata?keys as meta]
+          <td>[@deprecation element=property][@printPropertyMetadata property=property meta=meta/][/@deprecation]</td>
+            [/#list]
+          <td>[@deprecation element=property]${property.description!"&nbsp;"}[/@deprecation]</td>
+        </tr>
+          [/#list]
+        </tbody>
+          [#if type.supertypes??]
+            [#list type.supertypes as supertype]
+              [#if supertype.value?? && supertype.value.properties?? && supertype.value.properties?size > 0]
+        <tr>
+          <td colspan="${3 + type.propertyMetadata?size}"><h5 class="text-muted">Properties inherited from <a href="${supertype.slug}.html">${supertype.label}</a></h5></td>
+        </tr>
+        <tbody>
+                [#list supertype.value.properties as superProperty]
+        <tr>
+          <td>${superProperty.name}</td>
+          <td>[@referenceDataType referenceType=superProperty.dataType/]</td>
+            [#list type.propertyMetadata?keys as meta]
+          <td>[@printPropertyMetadata property=superProperty meta=meta/]</td>
+            [/#list]
+          <td>${superProperty.description!"&nbsp;"}</td>
+        </tr>
+                [/#list]
+        </tbody>
+              [/#if]
+            [/#list]
+          [/#if]
+      </table>
+      [/#if]
+      [#if type.example??]
+
+      <h2>Example</h2>
+
+      <pre class="prettyprint lang-${type.example.lang}">${type.example.body?xhtml}</pre>
+      [/#if]
+    [/@boilerplate]
+  [/@file]
+[/#macro]
+[#macro referenceDataType referenceType]
+[#-- @ftlvariable name="type" type="com.webcohesion.enunciate.api.datatype.DataTypeReference" --]
+[#if referenceType.containers??][#list referenceType.containers as container]${container?string} of [/#list][/#if][#if referenceType.slug??]<a href="${referenceType.slug}.html">[/#if]${referenceType.label!"(custom)"}[#if referenceType.slug??]</a>[/#if]
+[/#macro]
+[#macro printPropertyMetadata property meta]
+  [#assign metaValue=property[meta]!({ "structure" : true })/]
+  [#if metaValue?is_hash && metaValue.structure!false]
+[#if metaValue.href??]<a href="${metaValue.href}">[/#if][#if metaValue.title??]<abbr title="${metaValue.title}">[/#if]${metaValue.value!"&nbsp;"}[#if metaValue.title??]</abbr>[/#if][#if metaValue.href??]</a>[/#if]
+  [#else]
+${metaValue}
+  [/#if]
+[/#macro]
\ No newline at end of file
index f68532179dddf561018e05ffd5a9797e584d3aa6..c1ea80ab0e6e1b2e93a7a64daddeec5571f147f3 100644 (file)
@@ -34,7 +34,7 @@
     <jaxws-support disabled="true"/>
 
     <docs disabled="false" title="Apache Archiva UI REST API" includeExampleXml="true" includeExampleJson="true"
-          includeDefaultDownloads="false" docsSubdir="">
+          includeDefaultDownloads="false" docsSubdir="" freemarkerTemplate="${project.basedir}/src/enunciate/archiva.fmt" css="${project.basedir}/src/enunciate/archiva.css">
      <!-- <war docsDir="apidocs" />-->
     </docs>