change style and template to have a kind of enunciate 1.x style that we can use

This commit is contained in:
Eric Barboni 2015-11-13 18:01:52 +01:00
parent 44093a57de
commit b960b96e32
6 changed files with 3406 additions and 2 deletions

View File

@ -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; }
}

View File

@ -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]

View File

@ -34,7 +34,7 @@
<jaxws-support disabled="true"/> <jaxws-support disabled="true"/>
<docs disabled="false" title="Apache Archiva REST API" includeExampleXml="true" includeExampleJson="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" />--> <!--<war docsDir="apidocs" />-->
</docs> </docs>

View File

@ -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; }
}

View File

@ -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]

View File

@ -34,7 +34,7 @@
<jaxws-support disabled="true"/> <jaxws-support disabled="true"/>
<docs disabled="false" title="Apache Archiva UI REST API" includeExampleXml="true" includeExampleJson="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" />--> <!-- <war docsDir="apidocs" />-->
</docs> </docs>