src/main/java/org/eiichiro/bootleg/AbstractRequest.java
public Object get(Type type, List<Annotation> sources) {
		if (Types.isArray(type)) {
			logger.warn("Array type is not supported in [" + getClass() + "]");
			return null;
		} else if (Types.isBuiltinType(type)) {
			return builtin(type);
		}
		
		for (Annotation source : sources) {
			Object parameter = null;
			
			if (source instanceof Query) {
				Query query = (Query) source;
				parameter = query(type, query.value());
			} else if (source instanceof Body) {
				Body body = (Body) source;
				parameter = body(type, body.value());
			} else if (source instanceof Header) {
				Header header = (Header) source;
				parameter = header(type, header.value());
			} else if (source instanceof org.eiichiro.bootleg.annotation.Cookie) {
				org.eiichiro.bootleg.annotation.Cookie cookie = (org.eiichiro.bootleg.annotation.Cookie) source;
				parameter = cookie(type, cookie.value());
			} else if (source instanceof Session) {
				Session session = (Session) source;
				parameter = session(type, session.value());
			} else if (source instanceof Application) {
				Application application = (Application) source;
				parameter = application(type, application.value());
			} else if (source instanceof Path) {
				Path path = (Path) source;
				parameter = path(type, path.value());
			} else {
				logger.warn("Unknown source [" + source + "]");
			}
			
			if (parameter != null) {
				return parameter;
			}
		}
		
		if (Types.isPrimitive(type)) {
			logger.debug("Cannot construct [" + type + "] primitive; Returns the default value");
			return primitive(type);
		} else if (Types.isCollection(type)) {
			if (Types.isSupportedCollection(type)) {
				logger.debug("Cannot construct [" + type + "] collection; Returns the empty colleciton");
				return Types.getEmptyCollection(type);
			} else {
				logger.warn("Collection type " + type + " is not supported in [" + getClass() + "]");
				return null;
			}
		}
		
		StringBuilder builder = new StringBuilder();
		
		for (Annotation source : sources) {
			builder.append(source + " ");
		}
		
		logger.debug("Cannot construct Web endpoint method parameter [" + builder + type + "]");
		return null;
	}
public Object get(Type type, List<Annotation> sources) {
		if (Types.isArray(type)) {
			logger.warn("Array type is not supported in [" + getClass() + "]");
			return null;
		} else if (Types.isBuiltinType(type)) {
			return builtin(type);
		}
		
		for (Annotation source : sources) {
			Object parameter = null;
			
			if (source instanceof Query) {
				Query query = (Query) source;
				parameter = query(type, query.value());
			} else if (source instanceof Body) {
				Body body = (Body) source;
				parameter = body(type, body.value());
			} else if (source instanceof Header) {
				Header header = (Header) source;
				parameter = header(type, header.value());
			} else if (source instanceof org.eiichiro.bootleg.annotation.Cookie) {
				org.eiichiro.bootleg.annotation.Cookie cookie = (org.eiichiro.bootleg.annotation.Cookie) source;
				parameter = cookie(type, cookie.value());
			} else if (source instanceof Session) {
				Session session = (Session) source;
				parameter = session(type, session.value());
			} else if (source instanceof Application) {
				Application application = (Application) source;
				parameter = application(type, application.value());
			} else if (source instanceof Path) {
				Path path = (Path) source;
				parameter = path(type, path.value());
			} else {
				logger.warn("Unknown source [" + source + "]");
			}
			
			if (parameter != null) {
				return parameter;
			}
		}
		
		if (Types.isPrimitive(type)) {
			logger.debug("Cannot construct [" + type + "] primitive; Returns the default value");
			return primitive(type);
		} else if (Types.isCollection(type)) {
			if (Types.isSupportedCollection(type)) {
				logger.debug("Cannot construct [" + type + "] collection; Returns the empty colleciton");
				return Types.getEmptyCollection(type);
			} else {
				logger.warn("Collection type " + type + " is not supported in [" + getClass() + "]");
				return null;
			}
		}
		
		StringBuilder builder = new StringBuilder();
		
		for (Annotation source : sources) {
			builder.append(source + " ");
		}
		
		logger.debug("Cannot construct Web endpoint method parameter [" + builder + type + "]");
		return null;
	}
public Object get ( Type type , List < Annotation > sources ) { if ( Types . isArray ( type ) ) { logger . warn ( "Array type is not supported in [" + getClass ( ) + "]" ) ; return null ; } else if ( Types . isBuiltinType ( type ) ) { return builtin ( type ) ; } for ( Annotation source : sources ) { Object parameter = null ; if ( source instanceof Query ) { Query query = ( Query ) source ; parameter = query ( type , query . value ( ) ) ; } else if ( source instanceof Body ) { Body body = ( Body ) source ; parameter = body ( type , body . value ( ) ) ; } else if ( source instanceof Header ) { Header header = ( Header ) source ; parameter = header ( type , header . value ( ) ) ; } else if ( source instanceof org . eiichiro . bootleg . annotation . Cookie ) { org . eiichiro . bootleg . annotation . Cookie cookie = ( org . eiichiro . bootleg . annotation . Cookie ) source ; parameter = cookie ( type , cookie . value ( ) ) ; } else if ( source instanceof Session ) { Session session = ( Session ) source ; parameter = session ( type , session . value ( ) ) ; } else if ( source instanceof Application ) { Application application = ( Application ) source ; parameter = application ( type , application . value ( ) ) ; } else if ( source instanceof Path ) { Path path = ( Path ) source ; parameter = path ( type , path . value ( ) ) ; } else { logger . warn ( "Unknown source [" + source + "]" ) ; } if ( parameter != null ) { return parameter ; } } if ( Types . isPrimitive ( type ) ) { logger . debug ( "Cannot construct [" + type + "] primitive; Returns the default value" ) ; return primitive ( type ) ; } else if ( Types . isCollection ( type ) ) { if ( Types . isSupportedCollection ( type ) ) { logger . debug ( "Cannot construct [" + type + "] collection; Returns the empty colleciton" ) ; return Types . getEmptyCollection ( type ) ; } else { logger . warn ( "Collection type " + type + " is not supported in [" + getClass ( ) + "]" ) ; return null ; } } StringBuilder builder = new StringBuilder ( ) ; for ( Annotation source : sources ) { builder . append ( source + " " ) ; } logger . debug ( "Cannot construct Web endpoint method parameter [" + builder + type + "]" ) ; return null ; }
Constructs Web endpoint parameter from the specified source list or type.
This method is invoked for every Web endpoint method parameter by
{@link Receive}. This method processes according to the following steps:
<ol>
<li>If the specified type is an array type, returns <code>null</code>. An
array type is not supported in this class.</li>
<li>If the specified type is built-in type (See {@link Types#isBuiltinType(Type)}),
returns the built-in instance.</li>
<li>Constructs the value as the specified type from the specified sources
and names. If the Web endpoint parameter is declared without any source
annotation except built-in type, this method always returns <code>null</code>.
</li>
<li>If the construction result is not <code>null</code>, returns the
result to the client.</li>
<li>If the result is <code>null</code> of primitive type, returns the
default value of each primitive type to the client.</li>
<li>If the result is <code>null</code> of supported collection type (See
{@link Types#isSupportedCollection(Type)}), returns the empty collection
of the specified type to the client.</li>
<li>Otherwise, returns <code>null</code>.</li>
</ol>

@param type The type of Web endpoint parameter.
@param sources The source list from which Web endpoint parameter is
constructed.
@return Web endpoint method parameter.
Constructs Web endpoint parameter from the specified source list or type . This method is invoked for every Web endpoint method parameter by { @link Receive } . This method processes according to the following steps : <ol > <li > If the specified type is an array type returns <code > null< / code > . An array type is not supported in this class . < / li > <li > If the specified type is built - in type ( See { @link Types#isBuiltinType ( Type ) } ) returns the built - in instance . < / li > <li > Constructs the value as the specified type from the specified sources and names . If the Web endpoint parameter is declared without any source annotation except built - in type this method always returns <code > null< / code > . < / li > <li > If the construction result is not <code > null< / code > returns the result to the client . < / li > <li > If the result is <code > null< / code > of primitive type returns the default value of each primitive type to the client . < / li > <li > If the result is <code > null< / code > of supported collection type ( See { @link Types#isSupportedCollection ( Type ) } ) returns the empty collection of the specified type to the client . < / li > <li > Otherwise returns <code > null< / code > . < / li > < / ol >