mina-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache MINA: Developer Guide (page edited)
Date Tue, 09 Dec 2008 16:37:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/MINA">MINA</a> :
            <a href="http://cwiki.apache.org/confluence/display/MINA/Developer+Guide">Developer Guide</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/MINA/Developer+Guide">Developer Guide</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~elecharny">Emmanuel Lécharny</a>
            <span class="smallfont">(Dec 09, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=29621&originalVersion=51&revisedVersion=52">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>Please read <span class="nobr"><a href="http://www.apache.org/dev/" title="Visit page outside Confluence" rel="nofollow">the Developer Infrastructure Information<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> if you haven't yet before you proceed.</td></tr></table>

<h2><a name="DeveloperGuide-TableofContents"></a>Table of Contents</h2>

<div>
<ul>
  <li><a href='#DeveloperGuide-TableofContents'>Table of Contents</a></li>
  <li><a href='#DeveloperGuide-BuildingMINA'>Building MINA</a></li>
  <li><a href='#DeveloperGuide-CodingConvention'>Coding Convention</a></li>
  <li><a href='#DeveloperGuide-SVNtagsinheader'>SVN tags in header</a></li>
  <li><a href='#DeveloperGuide-WorkingwithMultipleBranchesinOneEclipseWorkspace'>Working with Multiple Branches in One Eclipse Workspace</a></li>
  <li><a href='#DeveloperGuide-DeployingSnapshots%28CommitersOnly%29'>Deploying Snapshots (Commiters Only)</a></li>
  <li><a href='#DeveloperGuide-ReleasingaPointRelease%28CommittersOnly%29'>Releasing a Point Release (Committers Only)</a>
<ul>
  <li><a href='#DeveloperGuide-Step1%3ATaggingandDeploying'>Step 1: Tagging and Deploying</a></li>
  <li><a href='#DeveloperGuide-Step2%3APGPSigningtheRepositoryContent'>Step 2: PGP Signing the Repository Content</a></li>
  <li><a href='#DeveloperGuide-Step3%3ABuildingTarballsandBzballs'>Step 3: Building Tarballs and Bzballs</a></li>
  <li><a href='#DeveloperGuide-Step4%3APGPSigningtheDistributionsandUploading'>Step 4: PGP Signing the Distributions and Uploading</a></li>
  <li><a href='#DeveloperGuide-Step5%3ADeployWebReports%28JavaDocandJXR%29'>Step 5: Deploy Web Reports (JavaDoc and JXR)</a></li>
  <li><a href='#DeveloperGuide-Step6%3AWait24hours'>Step 6: Wait 24 hours</a></li>
  <li><a href='#DeveloperGuide-Step7%3AUpdatetheLinksinWebSite'>Step 7: Update the Links in Web Site</a></li>
  <li><a href='#DeveloperGuide-Step8%3AUpdaterelatedmetadatafile%28s%29'>Step 8: Update related metadata file(s)</a></li>
  <li><a href='#DeveloperGuide-Step9%3AWaitanother24hours'>Step 9: Wait another 24 hours</a></li>
  <li><a href='#DeveloperGuide-Step10%3AAnnouncetheNewRelease'>Step 10: Announce the New Release</a></li>
</ul></li>
  <li><a href='#DeveloperGuide-CreatingaNewReleaseBranch'>Creating a New Release Branch</a></li>
</ul></div>

<h2><a name="DeveloperGuide-BuildingMINA"></a>Building MINA</h2>

<p>You need <span class="nobr"><a href="http://subversion.tigris.org" title="Visit page outside Confluence" rel="nofollow">Subversion<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> to check out the source code from our source code repository, and <span class="nobr"><a href="http://maven.apache.org/" title="Visit page outside Confluence" rel="nofollow">Maven<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> 2 to build the source code.  The following example shows how to build <span class="nobr"><a href="http://svn.apache.org/viewvc/mina/branches/1.0/" title="Visit page outside Confluence" rel="nofollow">the current stable branch (1.0)<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ svn co https://svn.apache.org/repos/asf/mina/branches/1.0/ mina
$ cd mina
$ mvn -Dwith-LGL-dependencies clean install     # Build packages (JARs) for the core API and other extensions and install them to the local Maven repository.
$ mvn -Dwith-LGL-dependencies site              # Generate reports (JavaDoc and JXR)
$ mvn -Dwith-LGL-dependencies assembly:assembly # Generate a tarball
$ mvn -Dwith-LGL-dependencies eclipse:eclipse   # Generate Eclipse project files if you want</pre>
</div></div>
<p>Eclipse users:<br/>
Don't forget to declare a classpath variable named M2_REPO, pointing to &#126;/.m2/repository, otherwise many links to existing jars will be broken.<br/>
You can declare new variables in Eclipse in Windows &#45;&gt; Preferences... and selecting Java &#45;&gt; Build Path &#45;&gt; Classpath Variables</p>

<p>There are also other branches that might interest you:</p>
<ul>
	<li>1.1: <span class="nobr"><a href="http://svn.apache.org/viewvc/mina/branches/1.1/" title="Visit page outside Confluence" rel="nofollow">Java 5 port of the current stable branch<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> &#45; <tt><span class="nobr"><a href="http://svn.apache.org/repos/asf/mina/branches/1.1/" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/mina/branches/1.1/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></tt></li>
	<li>trunk: <span class="nobr"><a href="http://svn.apache.org/viewvc/mina/trunk/" title="Visit page outside Confluence" rel="nofollow">Where big changes take place everyday<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> &#45; <tt><span class="nobr"><a href="http://svn.apache.org/repos/asf/mina/trunk/" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/mina/trunk/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></tt></li>
</ul>


<p>If you want to check out the source code of previous releases, you could try:</p>
<ul>
	<li><tt><span class="nobr"><a href="http://svn.apache.org/repos/asf/mina/tags/" title="Visit page outside Confluence" rel="nofollow">http://svn.apache.org/repos/asf/mina/tags/<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></tt></li>
</ul>


<h2><a name="DeveloperGuide-CodingConvention"></a>Coding Convention</h2>

<p>We follow <span class="nobr"><a href="http://java.sun.com/docs/codeconv/" title="Visit page outside Confluence" rel="nofollow">Sun's standard Java coding convention<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> except that we always use spaces instead of tabs. Please download <span class="nobr"><a href="/confluence/download/attachments/29621/ImprovedJavaConventions.xml?version=1" title="ImprovedJavaConventions.xml attached to Developer Guide">the Eclipse Java formatter settings file<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> before you make any changes to the code.</p>

<h2><a name="DeveloperGuide-SVNtagsinheader"></a>SVN tags in header</h2>

<p>For having nice headers with revisions tags like :</p>
<div class="code"><div class="codeContent">
<pre class="code-java">/**
 * @version $Rev: 529576 $, $Date: 2007-04-17 14:25:07 +0200 (mar., 17 avr. 2007) $
 */</pre>
</div></div>
<p>You need to set SVN properties on the files. Everything is explained there :<br/>
<span class="nobr"><a href="http://blog.gleamynode.net/2006/12/setting-svnkeyword-property.html" title="Visit page outside Confluence" rel="nofollow">http://blog.gleamynode.net/2006/12/setting-svnkeyword-property.html<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p>

<h2><a name="DeveloperGuide-WorkingwithMultipleBranchesinOneEclipseWorkspace"></a>Working with Multiple Branches in One Eclipse Workspace</h2>

<p>Just running <tt>mvn -Dwith-LGL-dependencies eclipse:eclipse</tt> won't allow you to import MINA projects from more than one branches into one Eclipse workspace.  You have to rename all project names in the generated <tt>.project</tt> and <tt>.classpath</tt> files to do that.  Maven Eclipse plugin should provide an option that appends the version number to the project name, but <span class="nobr"><a href="http://jira.codehaus.org/browse/MECLIPSE-189" title="Visit page outside Confluence" rel="nofollow">this issue<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> is not being resolved yet.  Until this issue is resolved, please put the attached shell script files (<span class="nobr"><a href="/confluence/download/attachments/29621/mvnroot?version=1" title="mvnroot attached to Developer Guide">mvnroot<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and <span class="nobr"><a href="/confluence/download/attachments/29621/mvn-eclipse?version=1" title="mvn-eclipse attached to Developer Guide">mvn-eclipse<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>) to your local path (e.g. <tt>/usr/local/bin</tt>) and run <tt>mvn-eclipse</tt>.</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ svn co https://svn.apache.org/repos/asf/mina/all/ mina
$ cd mina/branches/1.0
$ mvn-eclipse
$ cd ../1.1
$ mvn-eclipse
$ cd ../../trunk
$ mvn-eclipse</pre>
</div></div>
<p>Then <tt>mvn eclipse:eclipse</tt> command is executed internally, and the branch name will be appended to all sub-module project files generated by Maven Eclipse plugin.</p>

<h2><a name="DeveloperGuide-DeployingSnapshots%28CommitersOnly%29"></a>Deploying Snapshots (Commiters Only)</h2>

<p>Before running Maven to deploy artifacts, <b>please make sure if your umask is configured correctly</b>.  Unless configured properly, other committers will experience annoying 'permission denied' errors.  If your default shell is <tt>bash</tt>, please update your umask setting in the <tt>&#126;/.bashrc</tt> file (create one if it doesn't exist.) by adding the following line:</p>
<div class="code"><div class="codeContent">
<pre class="code-none">umask 002</pre>
</div></div>
<p>Please note that you have to edit the correct <tt>shrc</tt> file.  If you use <tt>csh</tt>, then you will have to edit <tt>&#126;/.cshrc</tt> file.</p>

<p>Now you are ready to deploy the artifacts if you configured your umask correctly.</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ svn co https://svn.apache.org/repos/asf/mina/branches/1.0 mina
$ cd mina
$ mvn -Dwith-LGL-dependencies clean deploy site site:deploy    # Make sure to run 'clean' goal first to prevent side effects from your IDE.</pre>
</div></div>
<p>Please double-check the mode (i.e. <tt>0664</tt> or <tt>&#45;rw-rw-r-&#45;</tt>, a.k.a permission code) of the deployed artifacts, otherwise you can waste other people's time significantly.</p>

<h2><a name="DeveloperGuide-ReleasingaPointRelease%28CommittersOnly%29"></a>Releasing a Point Release (Committers Only)</h2>

<p>Before starting be sure to have the java and mvn command in your PATH.<br/>
On linux you can check with the following commands :</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ type mvn
mvn is hashed (/opt/java/maven/bin/mvn)
$ type java
java is /opt/java/jdk1.6.0_01/bin/java</pre>
</div></div>

<h3><a name="DeveloperGuide-Step1%3ATaggingandDeploying"></a>Step 1: Tagging and Deploying</h3>

<p>First you need to configure maven for using the good username for scp and operation.</p>

<p>In the &#126;/.m2/settings.xml you need the following lines :</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;settings&gt;</span>
  <span class="code-tag">&lt;servers&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!--  secured repo --&gt;</span></span>
    <span class="code-tag">&lt;server&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>apache.snapshots<span class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;username&gt;</span>apacheusername<span class="code-tag">&lt;/username&gt;</span>
    <span class="code-tag">&lt;/server&gt;</span>
    <span class="code-tag">&lt;server&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>apache.websites<span class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;username&gt;</span>apacheusername<span class="code-tag">&lt;/username&gt;</span>
    <span class="code-tag">&lt;/server&gt;</span>
    <span class="code-tag">&lt;server&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>apache.releases<span class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;username&gt;</span>apacheusername<span class="code-tag">&lt;/username&gt;</span>
    <span class="code-tag">&lt;/server&gt;</span>
  <span class="code-tag">&lt;/servers&gt;</span>
<span class="code-tag">&lt;/settings&gt;</span></pre>
</div></div>
<p>Run the following commands :</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ svn co https://svn.apache.org/repos/asf/mina/branches/1.0 mina
$ cd mina
$ mvn -Dwith-LGPL-dependencies -DdryRun=true release:prepare    # Dry-run first.</pre>
</div></div>
<p>Answer to maven question, most of time default value are ok, except for :<br/>
"What is SCM release tag or label for "Apache MINA Root Build POM"? (org.apache.mina:build) build-1.0.X:"<br/>
the answer is "1.0.X", not the default one with the "build-" prefix proposed by mvn</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Be Careful</b><br />
<p>Make sure the change made by the release plugin is correct! (pom.xml, tags created)<font color=""></font></p></td></tr></table>
<p>Then you can do in real with the following commands :</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ mvn -Dwith-LGPL-dependencies release:clean      # Clean up the temporary files created by the dry-run.
$ mvn -Dwith-LGPL-dependencies release:prepare    # Copy to tags directory.
$ mvn -Dwith-LGPL-dependencies release:clean      # Clean up the temporary files.

$ cd &lt;TMP_DIR&gt;
$ svn co [https://svn.apache.org/repos/asf/mina/tags/1.0.x] mina
$ cd mina
$ mvn -Dwith-LGPL-dependencies deploy
$ cd ..
$ rm \-fr mina</pre>
</div></div>
<h3><a name="DeveloperGuide-Step2%3APGPSigningtheRepositoryContent"></a>Step 2: PGP Signing the Repository Content</h3>

<p>Deployed artifacts are located at <tt>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-sync-repository/org/apache/mina/</tt>.  Please download the deployed artifacts and related <tt>maven-metadata.xml</tt> files, PGP-sign it, and upload the signatures (<tt>*.asc</tt> files).</p>

<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Tip</b><br />Use <span class="nobr"><a href="/confluence/download/attachments/29621/gpg-sign-all?version=1" title="gpg-sign-all attached to Developer Guide">gpg-sign-all<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> script to save your time.  The <tt>gpg-sign-all</tt> script signs all files under current directory recursively.  Please don't forget to replace <tt>YOU@apache.org</tt> with your PGP key name before running.</td></tr></table>

<div class="code"><div class="codeContent">
<pre class="code-none"># Download the updated files.
$ ssh people.apache.org
[minotaur] $ cd /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/
[minotaur] $ tar cnvf ~/mina-changes.tar mina
[minotaur] $ find mina -mtime 1 -exec tar rnvf ~/mina-changes.tar "{}" ";"
[minotaur] $ rm -f bsdtar.core
[minotaur] $ exit
$ scp people.apache.org:mina-changes.tar mina-changes.tar

# Sign the updated files.
$ tar xvf mina-changes.tar
$ cp -R mina mina-signed
$ cd mina-signed
$ find . -name "*.asc" -exec rm "{}" ";"    # Just in case you deployed more than once today
$ gpg-sign-all

# Create the patch for the signature.
$ cd ..
$ diff -urN mina mina-signed &gt; mina-changes.diff

# Upload the signature files.
$ scp mina-changes.diff people.apache.org:mina-changes.diff
$ ssh people.apache.org
[minotaur] $ cd /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/mina
[minotaur] $ patch -p1 &lt; ~/mina-changes.diff
[minotaur] $ find . -name "*.orig" -exec rm "{}" ";"
[minotaur] $ exit

# Remove the temporary files.
$ rm -fr mina mina-signed mina-changes.*
$ ssh people.apache.org "rm -f mina-changes.*"</pre>
</div></div>

<h3><a name="DeveloperGuide-Step3%3ABuildingTarballsandBzballs"></a>Step 3: Building Tarballs and Bzballs</h3>

<div class="code"><div class="codeContent">
<pre class="code-none">$ svn co https://svn.apache.org/repos/asf/mina/tags/&lt;version&gt; mina
$ cd mina
$ mvn -Dwith-LGPL-dependencies clean package site assembly:assembly</pre>
</div></div>
<p>Generated distributions are located at <tt>mina/target</tt> directory.</p>

<h3><a name="DeveloperGuide-Step4%3APGPSigningtheDistributionsandUploading"></a>Step 4: PGP Signing the Distributions and Uploading</h3>

<p>The distributions you generated at the Step 3 must be PGP-signed before uploaded.  Please PGP Sign them, and upload them to <tt>scp://people.apache.org/www/www.apache.org/dist/mina/&lt;version&gt;/</tt>. <span class="nobr"><a href="/confluence/download/attachments/29621/gpg-sign-all?version=1" title="gpg-sign-all attached to Developer Guide">gpg-sign-all<sup><img class="rendericon" src="/confluence/images/icons/link_attachment_7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> script, which was mentioned at the Step 2, can be used here, too.</p>
<div class="code"><div class="codeContent">
<pre class="code-none">$ cd target
$ tar ztvf mina-1.0.x.tar.gz | grep -q docs/

# Make sure reports are generated and included. (Must print '0')
$ echo $?
0

# Remove the temporary files.
$ rm -fr archive-tmp site

# Sign and upload the files.
$ gpg-sign-all
$ ssh people.apache.org mkdir /www/www.apache.org/dist/mina/1.0.x
$ scp mina-* people.apache.org:/www/www.apache.org/dist/mina/1.0.x</pre>
</div></div>

<h3><a name="DeveloperGuide-Step5%3ADeployWebReports%28JavaDocandJXR%29"></a>Step 5: Deploy Web Reports (JavaDoc and JXR)</h3>

<div class="code"><div class="codeContent">
<pre class="code-none">$ svn co https://svn.apache.org/repos/asf/mina/tags/&lt;version&gt; mina
$ cd mina
$ mvn -Dwith-LGPL-dependencies clean compile site site:deploy</pre>
</div></div>

<h3><a name="DeveloperGuide-Step6%3AWait24hours"></a>Step 6: Wait 24 hours</h3>

<p>We have to wait at least 24 hours for all mirrors to retrieve the uploaded files before making any announcement.  I'd recommend you to wait for 48 hours because some mirrors might lag due to various issues.</p>

<h3><a name="DeveloperGuide-Step7%3AUpdatetheLinksinWebSite"></a>Step 7: Update the Links in Web Site</h3>

<p>Update the links to new distributions in <a href="/confluence/display/MINA/Downloads" title="Downloads">Downloads</a> page.</p>

<h3><a name="DeveloperGuide-Step8%3AUpdaterelatedmetadatafile%28s%29"></a>Step 8: Update related metadata file(s)</h3>

<p>Update <span class="nobr"><a href="http://svn.apache.org/viewvc/mina/metadata/" title="Visit page outside Confluence" rel="nofollow">any related metadata file(s)<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<h3><a name="DeveloperGuide-Step9%3AWaitanother24hours"></a>Step 9: Wait another 24 hours</h3>

<p>We need to wait until any changes made in the web site and metadata file(s) go live.</p>

<h3><a name="DeveloperGuide-Step10%3AAnnouncetheNewRelease"></a>Step 10: Announce the New Release</h3>

<p>An announcement message can be sent to <span class="nobr"><a href="mailto:announce@apache.org" title="Send mail to announce@apache.org" rel="nofollow">announce@apache.org<sup><img class="rendericon" src="/confluence/images/icons/mail_small.gif" height="12" width="13" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="mailto:announce@apachenews.org" title="Send mail to announce@apachenews.org" rel="nofollow">announce@apachenews.org<sup><img class="rendericon" src="/confluence/images/icons/mail_small.gif" height="12" width="13" align="absmiddle" alt="" border="0"/></sup></a></span>, <span class="nobr"><a href="mailto:users@mina.apache.org" title="Send mail to users@mina.apache.org" rel="nofollow">users@mina.apache.org<sup><img class="rendericon" src="/confluence/images/icons/mail_small.gif" height="12" width="13" align="absmiddle" alt="" border="0"/></sup></a></span> and <span class="nobr"><a href="mailto:dev@mina.apache.org" title="Send mail to dev@mina.apache.org" rel="nofollow">dev@mina.apache.org<sup><img class="rendericon" src="/confluence/images/icons/mail_small.gif" height="12" width="13" align="absmiddle" alt="" border="0"/></sup></a></span>.  Please note that announcement messages are rejected unless your from-address ends with <tt>@apache.org</tt>.  Plus, you shouldn't forget to <span class="nobr"><a href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=MINA" title="Visit page outside Confluence" rel="nofollow">post a news to the MINA CWiki space<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>, and run Confluence auto-export plugin manually.</p>

<h2><a name="DeveloperGuide-CreatingaNewReleaseBranch"></a>Creating a New Release Branch</h2>

<p>When you create a new branch, you have to make sure the sections that specifies branch version numbers are configured appropriately in the root <tt>pom.xml</tt>.</p>
<div class="code"><div class="codeContent">
<pre class="code-xml">...
<span class="code-tag">&lt;version&gt;</span>1.1.0-SNAPSHOT<span class="code-tag">&lt;/version&gt;</span>
...
<span class="code-tag">&lt;scm&gt;</span>
  <span class="code-tag">&lt;connection&gt;</span>scm:svn:http://svn.apache.org/repos/asf/mina/branches/1.1<span class="code-tag">&lt;/connection&gt;</span>
  <span class="code-tag">&lt;url&gt;</span>http://svn.apache.org/viewvc/directory/mina/branches/1.1<span class="code-tag">&lt;/url&gt;</span>
  <span class="code-tag">&lt;developerConnection&gt;</span>scm:svn:https://svn.apache.org/repos/asf/mina/branches/1.1<span class="code-tag">&lt;/developerConnection&gt;</span>
<span class="code-tag">&lt;/scm&gt;</span>
...
<span class="code-tag">&lt;distributionManagement&gt;</span>
  <span class="code-tag">&lt;site&gt;</span>
    <span class="code-tag">&lt;id&gt;</span>apache.websites<span class="code-tag">&lt;/id&gt;</span>
    <span class="code-tag">&lt;url&gt;</span>scp://people.apache.org/www/mina.apache.org/report/1.1/<span class="code-tag">&lt;/url&gt;</span>
  <span class="code-tag">&lt;/site&gt;</span>
<span class="code-tag">&lt;/distributionManagement&gt;</span>
...</pre>
</div></div>
<p>Please note that the example above is for <tt>branches/1.1</tt>.  For example, you have to replace <tt>branches/1.1</tt> with <tt>branches/3.0</tt> if the version number of the new branch is 3.0.  In case of <tt>trunk</tt>, it's just <tt>trunk</tt> rather than <tt>branches/&lt;version&gt;</tt>.</p></div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message