camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Camel: Parameter Binding Annotations (page edited)
Date Thu, 05 Feb 2009 05:30: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/CAMEL">CAMEL</a> :
            <a href="http://cwiki.apache.org/confluence/display/CAMEL/Parameter+Binding+Annotations">Parameter Binding Annotations</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/CAMEL/Parameter+Binding+Annotations">Parameter Binding Annotations</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~njiang">willem jiang</a>
            <span class="smallfont">(Feb 04, 2009)</span>.
     </p>
    <p>
      Change summary:
      <div class="greybox wiki-content"><p>Fixed the typos of @Header</p></div>
    </p>
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=98520&originalVersion=15&revisedVersion=16">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h3><a name="ParameterBindingAnnotations-ParameterBindingAnnotations"></a>Parameter Binding Annotations</h3>

<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">camel-core</b><br />
<p>The annotations below are all part of <b>camel-core</b> and thus does not require <b>camel-spring</b> or <a href="/confluence/display/CAMEL/Spring" title="Spring">Spring</a>. These annotations can be used with the <a href="/confluence/display/CAMEL/Bean" title="Bean">Bean</a> component or when invoking beans in the <a href="/confluence/display/CAMEL/DSL" title="DSL">DSL</a></p></td></tr></table>

<p>Annotations can be used to define an <a href="/confluence/display/CAMEL/Expression" title="Expression">Expression</a> or to extract various headers, properties or payloads from a <a href="/confluence/display/CAMEL/Message" title="Message">Message</a> when invoking a bean method (see <a href="/confluence/display/CAMEL/Bean+Integration" title="Bean Integration">Bean Integration</a> for more detail of how to invoke bean methods) together with being useful to help disambiguate which method to invoke.</p>

<p>If no annotations are used then Camel assumes that a single parameter is the body of the message. Camel will then use the <a href="/confluence/display/CAMEL/Type+Converter" title="Type Converter">Type Converter</a> mechanism to convert from the expression value to the actual type of the parameter.</p>

<p>The core annotations are as follows</p>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Annotation </th>
<th class='confluenceTh'> Meaning </th>
<th class='confluenceTh'> Parameter </th>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/Body.html" title="Visit page outside Confluence" rel="nofollow">@Body<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to an inbound message body </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/ExchangeException.html" title="Visit page outside Confluence" rel="nofollow">@ExchangeException<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to an Exception set on the exchange (<b>Camel 2.0</b>) </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/Header.html" title="Visit page outside Confluence" rel="nofollow">@Header<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to an inbound message header </td>
<td class='confluenceTd'> String name of the header </td>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/Headers.html" title="Visit page outside Confluence" rel="nofollow">@Headers<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to the Map of the inbound message headers </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/OutHeaders.html" title="Visit page outside Confluence" rel="nofollow">@OutHeaders<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to the Map of the outbound message headers </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/Property.html" title="Visit page outside Confluence" rel="nofollow">@Property<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to a named property on the exchange </td>
<td class='confluenceTd'> String name of the property </td>
</tr>
<tr>
<td class='confluenceTd'> <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/Properties.html" title="Visit page outside Confluence" rel="nofollow">@Properties<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> To bind to the property map on the exchange </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
</tbody></table>

<p>The follow annotations <tt>@Headers</tt>, <tt>@OutHeaders</tt> and <tt>@Properties</tt> binds to the backing <tt>java.util.Map</tt> so you can alter the content of these maps directly, for instance using the <tt>put</tt> method to add a new entry. See the OrderService class at <a href="/confluence/display/CAMEL/Exception+Clause" title="Exception Clause">Exception Clause</a> for such an example.</p>

<h3><a name="ParameterBindingAnnotations-Example"></a>Example</h3>
<p>In this example below we have a @MessageDriven consumer that consumes JMS messages from the activemq queue. We use the @Header and @Body parameter binding annotations to bind from the JMSMessage to the method parameters.</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> class Foo {
	
    @MessageDriven(uri = <span class="code-quote">"activemq:my.queue"</span>)
    <span class="code-keyword">public</span> void doSomething(@Header(name = <span class="code-quote">"JMSCorrelationID"</span>) <span class="code-object">String</span> correlationID, @Body <span class="code-object">String</span> body) {
		<span class="code-comment">// process the inbound message here
</span>    }

}</pre>
</div></div>

<p>In the above Camel will extract the value of Message.getJMSCorrelationID(), then using the <a href="/confluence/display/CAMEL/Type+Converter" title="Type Converter">Type Converter</a> to adapt the value to the type of the parameter if required - it will inject the parameter value for the <b>correlationID</b> parameter. Then the payload of the message will be converted to a String and injected into the <b>body</b> parameter.</p>

<p>You don't need to use the @MessageDriven annotation; as you could use the Camel <a href="/confluence/display/CAMEL/DSL" title="DSL">DSL</a> to route to the beans method</p>

<h4><a name="ParameterBindingAnnotations-UsingtheDSLtoinvokethebeanmethod"></a>Using the DSL to invoke the bean method</h4>

<p>Here is another example which does not use <a href="/confluence/display/CAMEL/POJO+Consuming" title="POJO Consuming">POJO Consuming</a> annotations but instead uses the <a href="/confluence/display/CAMEL/DSL" title="DSL">DSL</a> to route messages to the bean method</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> class Foo {
    <span class="code-keyword">public</span> void doSomething(@Header(name = <span class="code-quote">"JMSCorrelationID"</span>) <span class="code-object">String</span> correlationID, @Body <span class="code-object">String</span> body) {
		<span class="code-comment">// process the inbound message here
</span>    }

}</pre>
</div></div>

<p>The routing DSL then looks like this</p>

<div class="code"><div class="codeContent">
<pre class="code-java">from(<span class="code-quote">"activemq:someQueue"</span>).
  to(<span class="code-quote">"bean:myBean"</span>);</pre>
</div></div>

<p>Here <b>myBean</b> would be looked up in the <a href="/confluence/display/CAMEL/Registry" title="Registry">Registry</a> (such as JNDI or the Spring ApplicationContext), then the body of the message would be used to try figure out what method to call.</p>

<p>If you want to be explicit you can use</p>

<div class="code"><div class="codeContent">
<pre class="code-java">from(<span class="code-quote">"activemq:someQueue"</span>).
  to(<span class="code-quote">"bean:myBean?methodName=doSomething"</span>);</pre>
</div></div>

<p>And here we have a nifty example for you to show some great power in Camel. You can mix and match the annotations with the normal parameters, so we can have this example with annotations and the Exchange also:</p>
<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> void doSomething(@Header(name = <span class="code-quote">"user"</span>) <span class="code-object">String</span> user, @Body <span class="code-object">String</span> body, Exchange exchange) {
        exchange.getIn().setBody(body + <span class="code-quote">"MyBean"</span>);
    }</pre>
</div></div>

<h3><a name="ParameterBindingAnnotations-AnnotationBasedExpressionLanguage"></a>Annotation Based Expression Language</h3>

<p>You can also use any of the <a href="/confluence/display/CAMEL/Languages" title="Languages">Languages</a> supported in Camel to bind expressions to method parameters when using <a href="/confluence/display/CAMEL/Bean+Integration" title="Bean Integration">Bean Integration</a>. For example you can use any of these annotations:</p>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>Annotation</th>
<th class='confluenceTh'>Description</th>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/language/Bean.html" title="Visit page outside Confluence" rel="nofollow">@Bean<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/Bean" title="Bean">Bean</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-script/apidocs/org/apache/camel/builder/script/BeanShell.html" title="Visit page outside Confluence" rel="nofollow">@BeanShell<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/BeanShell" title="BeanShell">BeanShell</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/language/Constant.html" title="Visit page outside Confluence" rel="nofollow">@Constant<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/Constant" title="Constant">Constant</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-juel/apidocs/org/apache/camel/language/juel/EL.html" title="Visit page outside Confluence" rel="nofollow">@EL<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject an <a href="/confluence/display/CAMEL/EL" title="EL">EL</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-script/apidocs/org/apache/camel/builder/script/Groovy.html" title="Visit page outside Confluence" rel="nofollow">@Groovy<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/Groovy" title="Groovy">Groovy</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/Header.html" title="Visit page outside Confluence" rel="nofollow">@Header<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/Header" title="Header">Header</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-script/apidocs/org/apache/camel/builder/script/JavaScript.html" title="Visit page outside Confluence" rel="nofollow">@JavaScript<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/JavaScript" title="JavaScript">JavaScript</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-ognl/apidocs/org/apache/camel/language/ognl/OGNL.html" title="Visit page outside Confluence" rel="nofollow">@OGNL<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject an <a href="/confluence/display/CAMEL/OGNL" title="OGNL">OGNL</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-script/apidocs/org/apache/camel/builder/script/PHP.html" title="Visit page outside Confluence" rel="nofollow">@PHP<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/PHP" title="PHP">PHP</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-script/apidocs/org/apache/camel/builder/script/Python.html" title="Visit page outside Confluence" rel="nofollow">@Python<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/Python" title="Python">Python</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-script/apidocs/org/apache/camel/builder/script/Ruby.html" title="Visit page outside Confluence" rel="nofollow">@Ruby<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject a <a href="/confluence/display/CAMEL/Ruby" title="Ruby">Ruby</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/language/Simple.html" title="Visit page outside Confluence" rel="nofollow">@Simple<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject an <a href="/confluence/display/CAMEL/Simple" title="Simple">Simple</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/language/XPath.html" title="Visit page outside Confluence" rel="nofollow">@XPath<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject an <a href="/confluence/display/CAMEL/XPath" title="XPath">XPath</a> expression </td>
</tr>
<tr>
<td class='confluenceTd'><span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-saxon/apidocs/org/apache/camel/component/xquery/XQuery.html" title="Visit page outside Confluence" rel="nofollow">@XQuery<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> </td>
<td class='confluenceTd'> Inject an <a href="/confluence/display/CAMEL/XQuery" title="XQuery">XQuery</a> expression </td>
</tr>
</tbody></table>

<h4><a name="ParameterBindingAnnotations-Example%3A"></a>Example:</h4>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> class Foo {
	
    @MessageDriven(uri = <span class="code-quote">"activemq:my.queue"</span>)
    <span class="code-keyword">public</span> void doSomething(@XPath(<span class="code-quote">"/foo/bar/text()"</span>) <span class="code-object">String</span> correlationID, @Body <span class="code-object">String</span> body) {
		<span class="code-comment">// process the inbound message here
</span>    }
}</pre>
</div></div>

<h4><a name="ParameterBindingAnnotations-Advancedexampleusing@Bean"></a>Advanced example using @Bean</h4>

<p>And an example of using the the <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/language/Bean.html" title="Visit page outside Confluence" rel="nofollow">@Bean<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> binding annotation, where you can use a <a href="/confluence/display/CAMEL/Pojo" title="Pojo">POJO</a> where you can do whatever java code you like:</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> class Foo {
	
    @MessageDriven(uri = <span class="code-quote">"activemq:my.queue"</span>)
    <span class="code-keyword">public</span> void doSomething(@Bean(<span class="code-quote">"myCorrelationIdGenerator"</span>) <span class="code-object">String</span> correlationID, @Body <span class="code-object">String</span> body) {
		<span class="code-comment">// process the inbound message here
</span>    }
}</pre>
</div></div>

<p>And then we can have a spring bean with the id <b>myCorrelationIdGenerator</b> where we can compute the id.</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> class MyIdGenerator {

    <span class="code-keyword">private</span> UserManager userManager;

    <span class="code-keyword">public</span> <span class="code-object">String</span> generate(@Header(name = <span class="code-quote">"user"</span>) <span class="code-object">String</span> user, @Body <span class="code-object">String</span> payload) <span class="code-keyword">throws</span> Exception {
       User user = userManager.lookupUser(user);
       <span class="code-object">String</span> userId = user.getPrimaryId();
       <span class="code-object">String</span> id = userId + generateHashCodeForPayload(payload);
       <span class="code-keyword">return</span> id;
   }
}</pre>
</div></div>

<p>The <a href="/confluence/display/CAMEL/Pojo" title="Pojo">POJO</a> MyIdGenerator has one public method that accepts two parameters. However we have also annotated this one with the @Header and @Body annotation to help Camel know what to bind here from the Message from the Exchange being processed.</p>

<p>Of course this could be simplified a lot if you for instance just have a simple id generator. But we wanted to demonstrate that you can use the <a href="/confluence/display/CAMEL/Bean+Binding" title="Bean Binding">Bean Binding</a> annotations anywhere.</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> class MySimpleIdGenerator {

    <span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-object">int</span> generate()  {
       <span class="code-comment">// generate a unique id
</span>       <span class="code-keyword">return</span> 123;
   }
}</pre>
</div></div>

<p>And finally we just need to remember to have our bean registered in the Spring <a href="/confluence/display/CAMEL/Registry" title="Registry">Registry</a>:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;bean id=<span class="code-quote">"myCorrelationIdGenerator"</span> class=<span class="code-quote">"com.mycompany.MyIdGenerator"</span>/&gt;</span></pre>
</div></div>

<h4><a name="ParameterBindingAnnotations-ExampleusingGroovy"></a>Example using <a href="/confluence/display/CAMEL/Groovy" title="Groovy">Groovy</a></h4>
<p>In this example we have an Exchange that has a User object stored in the in header. This User object has methods to get some user information. We want to use <a href="/confluence/display/CAMEL/Groovy" title="Groovy">Groovy</a> to inject an expression that extracts and concats the fullname of the user into the fullName parameter.</p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-keyword">public</span> void doSomething(@Groovy("$request.header['user'].firstName $request.header['user'].familyName) <span class="code-object">String</span> fullName, @Body <span class="code-object">String</span> body) {
		<span class="code-comment">// process the inbound message here
</span>    }</pre>
</div></div>

<p>Groovy supports GStrings that is like a template where we can insert $ placeholders that will be evaluated by Groovy.</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