http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice.template/src/com/ibm/juno/microservice/sample/nls/Messages.properties
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice.template/src/com/ibm/juno/microservice/sample/nls/Messages.properties
 
b/com.ibm.team.juno.microservice.template/src/com/ibm/juno/microservice/sample/nls/Messages.properties
new file mode 100755
index 0000000..62b3f1a
--- /dev/null
+++ 
b/com.ibm.team.juno.microservice.template/src/com/ibm/juno/microservice/sample/nls/Messages.properties
@@ -0,0 +1,14 @@
+###############################################################################
+# Licensed Materials - Property of IBM
+# (c) Copyright IBM Corporation 2015, 2016. All Rights Reserved.
+# 
+# Note to U.S. Government Users Restricted Rights:  
+# Use, duplication or disclosure restricted by GSA ADP Schedule 
+# Contract with IBM Corp. 
+###############################################################################
+
+#--------------------------------------------------------------------------------
+# RootResources
+#--------------------------------------------------------------------------------
+RootResources.label = Juno Microservice Template
+RootResources.description = Template for creating REST microservices

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/.classpath
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/.classpath 
b/com.ibm.team.juno.microservice/.classpath
new file mode 100755
index 0000000..03170d5
--- /dev/null
+++ b/com.ibm.team.juno.microservice/.classpath
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/commons-codec-1.9.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/commons-io-1.2.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/commons-logging-1.1.1.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/httpclient-4.5.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/httpcore-4.4.1.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/httpmime-4.5.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/javax.servlet-api-3.0.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/jetty-all-8.1.0.jar"/>
+       <classpathentry exported="true" kind="lib" 
path="lib/org.apache.commons.fileupload_1.3.1.jar"/>
+       <classpathentry combineaccessrules="false" exported="true" kind="src" 
path="/com.ibm.team.juno.server"/>
+       <classpathentry combineaccessrules="false" exported="true" kind="src" 
path="/com.ibm.team.juno.releng"/>
+       <classpathentry combineaccessrules="false" exported="true" kind="src" 
path="/com.ibm.team.juno.client"/>
+       <classpathentry combineaccessrules="false" exported="true" kind="src" 
path="/com.ibm.team.juno"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/.project
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/.project 
b/com.ibm.team.juno.microservice/.project
new file mode 100755
index 0000000..ae4204e
--- /dev/null
+++ b/com.ibm.team.juno.microservice/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>com.ibm.team.juno.microservice</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.core.prefs 
b/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..f053be0
--- /dev/null
+++ b/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,305 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not 
insert
+org.eclipse.jdt.core.formatter.comment.line_length=200
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=3
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do
 not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do
 not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do 
not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do
 not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do
 not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do 
not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do
 not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do 
not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do 
not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not 
insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do
 not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do
 not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=200
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=3
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.ui.prefs
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.ui.prefs 
b/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..ee3a695
--- /dev/null
+++ b/com.ibm.team.juno.microservice/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,62 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=false
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=true
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false
+cleanup.qualify_static_member_accesses_with_declaring_class=false
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_Juno
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Juno
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.ondemandthreshold=1
+org.eclipse.jdt.ui.staticondemandthreshold=1
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" 
encoding\="UTF-8"?><templates><template autoinsert\="false" 
context\="gettercomment_context" deleted\="false" description\="Comment for 
getter method" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" 
name\="gettercomment">/**\r\n * Bean property getter\:  
&lt;property&gt;${bare_field_name}&lt;/property&gt;.\r\n *\r\n * @return The 
value of the &lt;property&gt;${bare_field_name}&lt;/property&gt; property on 
this bean, or &lt;jk&gt;null&lt;/jk&gt; if it is not set.\r\n 
*/</template><template autoinsert\="false" context\="settercomment_context" 
deleted\="false" description\="Comment for setter method" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" 
name\="settercomment">/**\r\n * Bean property setter\:  
&lt;property&gt;${bare_field_name}&lt;/property&gt;.\r\n *\r\n * @param 
${param} The new value for the 
&lt;property&gt;${bare_field_name}&lt;/property&gt; property on th
 is bean.\r\n * @return This object (for method chaining).\r\n 
*/</template><template autoinsert\="false" 
context\="constructorcomment_context" deleted\="false" description\="Comment 
for created constructors" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" 
name\="constructorcomment">/**\r\n * TODO\r\n * \r\n * ${tags}\r\n 
*/</template><template autoinsert\="true" context\="filecomment_context" 
deleted\="false" description\="Comment for created Java files" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" 
name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="false" 
context\="typecomment_context" deleted\="false" description\="Comment for 
created types" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" 
name\="typecomment">/**\r\n * TODO\r\n * &lt;p&gt;\r\n * \r\n * @author James 
Bognar ([email protected])\r\n * ${tags}\r\n */</template><template 
autoinsert\="true" context\="fieldcomment_context
 " deleted\="false" description\="Comment for fields" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" 
name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="false" 
context\="methodcomment_context" deleted\="false" description\="Comment for 
non-overriding methods" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" 
name\="methodcomment">/**\r\n * TODO\r\n * \r\n * ${tags}\r\n 
*/</template><template autoinsert\="true" context\="overridecomment_context" 
deleted\="false" description\="Comment for overriding methods" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" 
name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n 
*/</template><template autoinsert\="false" context\="delegatecomment_context" 
deleted\="false" description\="Comment for delegate methods" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" 
name\="delegatecomment">/**\r\n * TODO\r\n * \r\n * $
 {tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" 
context\="newtype_context" deleted\="false" description\="Newly created files" 
enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" 
name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template
 autoinsert\="true" context\="classbody_context" deleted\="false" 
description\="Code in new class type bodies" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.classbody" 
name\="classbody">\r\n</template><template autoinsert\="true" 
context\="interfacebody_context" deleted\="false" description\="Code in new 
interface type bodies" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" 
name\="interfacebody">\r\n</template><template autoinsert\="true" 
context\="enumbody_context" deleted\="false" description\="Code in new enum 
type bodies" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbo
 dy">\r\n</template><template autoinsert\="true" 
context\="annotationbody_context" deleted\="false" description\="Code in new 
annotation type bodies" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" 
name\="annotationbody">\r\n</template><template autoinsert\="true" 
context\="catchblock_context" deleted\="false" description\="Code in new catch 
blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" 
name\="catchblock">// ${todo} Auto-generated catch 
block\r\n${exception_var}.printStackTrace();</template><template 
autoinsert\="true" context\="methodbody_context" deleted\="false" 
description\="Code in created method stubs" enabled\="true" 
id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// 
${todo} Auto-generated method stub\r\n${body_statement}</template><template 
autoinsert\="true" context\="constructorbody_context" deleted\="false" 
description\="Code in created constructor stubs" enabled\="true" 
id\="org.eclipse.
 jdt.ui.text.codetemplates.constructorbody" 
name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated 
constructor stub</template><template autoinsert\="true" 
context\="getterbody_context" deleted\="false" description\="Code in created 
getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" 
name\="getterbody">return ${field};</template><template autoinsert\="true" 
context\="setterbody_context" deleted\="false" description\="Code in created 
setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" 
name\="setterbody">${field} \= ${param};</template></templates>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/Dockerfile
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/Dockerfile 
b/com.ibm.team.juno.microservice/Dockerfile
new file mode 100755
index 0000000..842d17b
--- /dev/null
+++ b/com.ibm.team.juno.microservice/Dockerfile
@@ -0,0 +1,16 @@
+# Dockerfile for creating a Juno microservice container
+
+FROM ubuntu
+
+# Change this to whatever port you wish to use.
+EXPOSE 10000
+
+# Install Java
+apt-get update
+apt-get install default-jre
+
+# Copy our jar
+copy build/microservice.jar /
+
+ENTRYPOINT []
+CMD /bin/sh -c "java -jar microservice.jar 10000"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/META-INF/MANIFEST.MF 
b/com.ibm.team.juno.microservice/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..f2ed4ea
--- /dev/null
+++ b/com.ibm.team.juno.microservice/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: com.ibm.team.juno.microservice
+Bundle-SymbolicName: com.ibm.team.juno.microservice
+Bundle-Version: 5.2.0
+Bundle-Vendor: IBM
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/bin/.gitignore
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/bin/.gitignore 
b/com.ibm.team.juno.microservice/bin/.gitignore
new file mode 100644
index 0000000..c2d9872
--- /dev/null
+++ b/com.ibm.team.juno.microservice/bin/.gitignore
@@ -0,0 +1 @@
+/com/

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/build.properties
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/build.properties 
b/com.ibm.team.juno.microservice/build.properties
new file mode 100755
index 0000000..f32e521
--- /dev/null
+++ b/com.ibm.team.juno.microservice/build.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# 
+# Licensed Materials - Property of IBM
+# (c) Copyright IBM Corporation 2015. All Rights Reserved.
+# 
+# Note to U.S. Government Users Restricted Rights:  
+# Use, duplication or disclosure restricted by GSA ADP Schedule 
+# Contract with IBM Corp. 
+#  
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
+jar = microservice.jar
+jre.compilation.profile = JavaSE-1.6

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/commons-codec-1.9.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/commons-codec-1.9.jar 
b/com.ibm.team.juno.microservice/lib/commons-codec-1.9.jar
new file mode 100755
index 0000000..ef35f1c
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/commons-codec-1.9.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/commons-io-1.2.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/commons-io-1.2.jar 
b/com.ibm.team.juno.microservice/lib/commons-io-1.2.jar
new file mode 100755
index 0000000..b2867cd
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/commons-io-1.2.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/commons-logging-1.1.1.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/commons-logging-1.1.1.jar 
b/com.ibm.team.juno.microservice/lib/commons-logging-1.1.1.jar
new file mode 100755
index 0000000..1deef14
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/commons-logging-1.1.1.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/httpclient-4.5.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/httpclient-4.5.jar 
b/com.ibm.team.juno.microservice/lib/httpclient-4.5.jar
new file mode 100755
index 0000000..970c989
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/httpclient-4.5.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/httpcore-4.4.1.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/httpcore-4.4.1.jar 
b/com.ibm.team.juno.microservice/lib/httpcore-4.4.1.jar
new file mode 100755
index 0000000..99715b6
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/httpcore-4.4.1.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/httpmime-4.5.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/httpmime-4.5.jar 
b/com.ibm.team.juno.microservice/lib/httpmime-4.5.jar
new file mode 100755
index 0000000..b631ceb
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/httpmime-4.5.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/javax.servlet-api-3.0.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/javax.servlet-api-3.0.jar 
b/com.ibm.team.juno.microservice/lib/javax.servlet-api-3.0.jar
new file mode 100755
index 0000000..4e2edcc
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/javax.servlet-api-3.0.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/jetty-all-8.1.0.jar
----------------------------------------------------------------------
diff --git a/com.ibm.team.juno.microservice/lib/jetty-all-8.1.0.jar 
b/com.ibm.team.juno.microservice/lib/jetty-all-8.1.0.jar
new file mode 100755
index 0000000..1d74933
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/jetty-all-8.1.0.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/lib/org.apache.commons.fileupload_1.3.1.jar
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice/lib/org.apache.commons.fileupload_1.3.1.jar 
b/com.ibm.team.juno.microservice/lib/org.apache.commons.fileupload_1.3.1.jar
new file mode 100755
index 0000000..af0cda2
Binary files /dev/null and 
b/com.ibm.team.juno.microservice/lib/org.apache.commons.fileupload_1.3.1.jar 
differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Microservice.java
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Microservice.java
 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Microservice.java
new file mode 100755
index 0000000..c175f5f
--- /dev/null
+++ 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Microservice.java
@@ -0,0 +1,521 @@
+/*******************************************************************************
+ * Licensed Materials - Property of IBM
+ * © Copyright IBM Corporation 2015. All Rights Reserved.
+ *
+ *  The source code for this program is not published or otherwise
+ *  divested of its trade secrets, irrespective of what has been
+ *  deposited with the U.S. Copyright Office.
+ 
*******************************************************************************/
+package com.ibm.juno.microservice;
+
+import java.io.Console;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Map;
+import java.util.Set;
+import java.util.jar.Manifest;
+
+import com.ibm.juno.core.ObjectMap;
+import com.ibm.juno.core.utils.*;
+import com.ibm.juno.core.ini.ConfigFile;
+import com.ibm.juno.core.ini.ConfigFileListener;
+import com.ibm.juno.core.ini.ConfigMgr;
+
+/**
+ * Parent class for all microservices.
+ * <p>
+ * A microservice defines a simple API for starting and stopping simple Java 
services
+ *     contained in executable jars.
+ * <p>
+ * The general command for invoking these services is...
+ * <p class='bcode'>
+ *     java -jar mymicroservice.jar [mymicroservice.cfg]
+ * </p>
+ * <p>
+ * Your microservice class must be specified as the <jk>Main-Class</jk> entry 
in
+ *     the manifest file of your microservice jar file.
+ *
+ * <h6 class='topic'>Microservice Configuration</h6>
+ * 
+ * This class defines the following method for accessing configuration for 
your microservice:
+ * <p>
+ * <ul>
+ *     <li>{@link #getArgs()} - The command-line arguments passed to the jar 
file.
+ *     <li>{@link #getConfig()} - An external INI-style configuration file.
+ *     <li>{@link #getManifest()} - The manifest file for the main jar file.
+ * </ul>
+ *
+ * <h6 class='topic'>Entrypoint Method</h6>
+ * 
+ * Subclasses must implement a static void main method as the entry point for 
the microservice.
+ * Typically, this method will simply consist of the following...
+ * <p>
+ * <p class='bcode'>
+ *     <jk>public static void</jk> main(String[] args) <jk>throws</jk> 
Exception {
+ *             <jk>new</jk> MyMicroservice(args).start();
+ *     }
+ * </p>
+ *
+ * <h6 class='topic'>Lifecycle Methods</h6>
+ * 
+ * Subclasses must implement the following lifecycle methods:
+ * <p>
+ * <ul>
+ *     <li>{@link #start()} - Gets executed during startup.
+ *     <li>{@link #stop()} - Gets executed when 'exit' is typed in the console 
or an external shutdown signal is received.
+ *     <li>{@link #kill()} - Can be used to forcibly shut down the service.  
Doesn't get called during normal operation.
+ * </ul>
+ *
+ * <h6 class='topic'>Lifecycle Listener Methods</h6>
+ * 
+ * Subclasses can optionally implement the following event listener methods:
+ * <p>
+ * <ul>
+ *     <li>{@link #onStart()} - Gets executed before {@link #start()}.
+ *     <li>{@link #onStop()} - Gets executed before {@link #stop()}.
+ *     <li>{@link #onConfigSave(ConfigFile)} - Gets executed after a config 
file has been saved.
+ *     <li>{@link #onConfigChange(ConfigFile, Set)} - Gets executed after a 
config file has been modified.
+ * </ul>
+ *
+ * <h6 class='topic'>Other Methods</h6>
+ * 
+ * Subclasses can optionally override the following methods to provide 
customized behavior:
+ * <p>
+ * <ul>
+ *     <li>{@link #createVarResolver()} - Creates the {@link 
StringVarResolver} used to resolve variables in the config file returned by 
{@link #getConfig()}.
+ * </ul>
+ * 
+ * @author [email protected]
+ */
+public abstract class Microservice {
+
+       private static Args args;
+       private static ConfigFile cf;
+       private static ObjectMap mf;
+
+       /**
+        * Constructor.
+        * 
+        * @param args2 Command line arguments.
+        * @throws Exception 
+        */
+       protected Microservice(String[] args2) throws Exception {
+               Microservice.args = new Args(args2);
+
+               // 
--------------------------------------------------------------------------------
+               // Try to get the manifest file.
+               // 
--------------------------------------------------------------------------------
+               Manifest m = new Manifest();
+
+               // If running within an eclipse workspace, need to get it from 
the file system.
+               File f = new File("META-INF/MANIFEST.MF");
+               if (f.exists()) {
+                       try {
+                               m.read(new FileInputStream(f));
+                       } catch (IOException e) {
+                               System.err.println("Problem detected in 
MANIFEST.MF.  Contents below:\n" + IOUtils.read(f));
+                               throw e;
+                       }
+               } else {
+                       // Otherwise, read from manifest file in the jar file 
containing the main class.
+                       URLClassLoader cl = 
(URLClassLoader)getClass().getClassLoader();
+                       URL url = cl.findResource("META-INF/MANIFEST.MF");
+                       if (url != null) {
+                               try {
+                                       m.read(url.openStream());
+                               } catch (IOException e) {
+                                       System.err.println("Problem detected in 
MANIFEST.MF.  Contents below:\n" + IOUtils.read(url.openStream()));
+                                       throw e;
+                               }
+                       }
+               }
+               mf = new ObjectMap();
+               for (Map.Entry<Object,Object> e : 
m.getMainAttributes().entrySet())
+                       mf.put(e.getKey().toString(), e.getValue().toString());
+               
+               // 
--------------------------------------------------------------------------------
+               // Find config file.
+               // Can either be passed in as first parameter, or we discover 
it using
+               // the 'sun.java.command' system property.
+               // 
--------------------------------------------------------------------------------
+               String cFile = null;
+               if (args.hasArg(0))
+                       cFile = args.getArg(0);
+               else if (mf.containsKey("Main-ConfigFile"))
+                       cFile = mf.getString("Main-ConfigFile");
+               else {
+                       String cmd = System.getProperty("sun.java.command", 
"not_found").split("\\s+")[0];
+                       if (cmd.endsWith(".jar"))
+                               cFile = cmd.replace(".jar", ".cfg");
+               }
+
+               if (cFile == null) {
+                       System.err.println("Running class 
["+getClass().getSimpleName()+"] without a config file.");
+                       cf = ConfigMgr.DEFAULT.create();
+               } else {
+                       System.out.println("Running class 
["+getClass().getSimpleName()+"] using config file ["+cFile+"]");
+                       System.setProperty("juno.configFile", cFile);
+                       cf = 
ConfigMgr.DEFAULT.get(cFile).getResolving(createVarResolver());
+               }
+
+               // 
--------------------------------------------------------------------------------
+               // Set system properties.
+               // 
--------------------------------------------------------------------------------
+               Set<String> spKeys = cf.getSectionKeys("SystemProperties");
+               if (spKeys != null)
+                       for (String key : spKeys) 
+                               System.setProperty(key, 
cf.get("SystemProperties", key));
+               
+               // 
--------------------------------------------------------------------------------
+               // Add a config file change listener.
+               // 
--------------------------------------------------------------------------------
+               cf.addListener(new ConfigFileListener() {
+                       @Override /* ConfigFileListener */
+                       public void onSave(ConfigFile cf) {
+                               onConfigSave(cf);
+                       }
+                       @Override /* ConfigFileListener */
+                       public void onChange(ConfigFile cf, Set<String> 
changes) {
+                               onConfigChange(cf, changes);
+                       }
+               });
+
+               // 
--------------------------------------------------------------------------------
+               // Add exit listeners.
+               // 
--------------------------------------------------------------------------------
+               new Thread() {
+                       @Override /* Thread */
+                       public void run() {
+                               Console c = System.console();
+                               if (c == null)
+                                       System.out.println("No available 
console.");
+                               else {
+                                       while (true) {
+                                               String l = c.readLine("\nEnter 
'exit' to exit.\n");
+                                               if (l == null || 
l.equals("exit")) {
+                                                       
Microservice.this.stop();
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }.start();
+               Runtime.getRuntime().addShutdownHook(
+                       new Thread() {
+                               @Override /* Thread */
+                               public void run() {
+                                       Microservice.this.stop();
+                               }
+                       }
+               );
+       }
+
+       /**
+        * Creates the {@link StringVarResolver} used to resolve variables in 
the 
+        * config file returned by {@link #getConfig()}.
+        * <p>
+        * The default implementation resolves the following variables:
+        * <ul>
+        *      <li><code>$S{key}</code>, <code>$S{key,default}</code> - System 
properties.
+        *      <li><code>$E{key}</code>, <code>$E{key,default}</code> - 
Environment variables.
+        *      <li><code>$C{key}</code>, <code>$C{key,default}</code> - Config 
file entries.
+        *      <li><code>$MF{key}</code>, <code>$MF{key,default}</code> - 
Manifest file entries.
+        *      <li><code>$ARG{key}</code>, <code>$ARG{key,default}</code> - 
Command-line arguments.
+        * </ul> 
+        * <p>
+        * Subclasses can override this method to provide their own variables.
+        * <dl>
+        *      <dt>Examples:</dt>
+        *      <dd>
+        *              <p class='bcode'>
+        *      <jd>/** 
+        *       * Augment default var resolver with a custom $B{...} variable 
that simply wraps strings inside square brackets.
+        *       * /</jd>
+        *      <ja>@Override</ja> <jc>// Microservice</jc>
+        *      <jk>protected</jk> StringVarResolver createVarResolver() {
+        *              <jk>return super</jk>.createVarResolver()
+        *                      .addVar(<js>"B"</js>,
+        *                              <jk>new</jk> StringVarWithDefault() {
+        *                                      <ja>@Override</ja> <jc>// 
StringVar</jc> 
+        *                                      <jk>public</jk> String 
resolve(String varVal) {
+        *                                              <jk>return</jk> 
<js>'['</js> + varVal + <js>']'</js>;
+        *                                      }
+        *                              }
+        *                      );
+        *      }
+        *              </p>
+        *              <p class='bcode'>
+        *      <cc># Example config file</cc>
+        *      <cs>[MySection]</cs>
+        *      <ck>myEntry</ck> = $B{foo}
+        *              </p>
+        *              <p class='bcode'>
+        *      <jc>// Example java code</jc>
+        *      String myentry = 
getConfig().getString(<js>"MySection/myEntry"</js>); <jc>// == "[foo]"</js>
+        *              </p>
+        *      </dd>
+        * </dl>
+        * 
+        * @return A new {@link StringVarResolver}.
+        */
+       protected StringVarResolver createVarResolver() {
+               return new StringVarResolver(StringVarResolver.DEFAULT)
+                       .addVar("C", 
+                               new StringVarWithDefault() {
+                                       @Override /* StringVar */
+                                       public String resolve(String varVal) {
+                                               return cf.getString(varVal);
+                                       }
+                               }
+                       )
+                       .addVar("MF", 
+                               new StringVarWithDefault() {
+                                       @Override /* StringVar */
+                                       public String resolve(String varVal) {
+                                               if (mf == null)
+                                                       return null;
+                                               return mf.getString(varVal);
+                                       }
+                               }
+                       )
+                       .addVar("ARG", 
+                               new StringVarWithDefault() {
+                                       @Override /* StringVar */
+                                       public String resolve(String varVal) {
+                                               if (args == null)
+                                                       return null;
+                                               return args.getString(varVal);
+                                       }
+                               }
+                       );
+       }
+       
+       /**
+        * Returns the command-line arguments passed into the application.
+        * <p>
+        * This method can be called from the class constructor.
+        * <p>
+        * See {@link Args} for details on using this method.
+        * 
+        * @return The command-line arguments passed into the application.
+        */
+       protected static Args getArgs() {
+               return args;
+       }
+
+       /**
+        * Overrides the value returned by {@link #getArgs()}.
+        * 
+        * @param args The new arguments. 
+        * @return This object (for method chaining).
+        */
+       protected Microservice setArgs(String[] args) {
+               Microservice.args = new Args(args);
+               return this;
+       }
+
+       /**
+        * Returns the external INI-style configuration file that can be used 
to configure your microservice.
+        * <p>
+        * The config file location is determined in the following order:
+        * <ol class='spaced-list'>
+        *      <li>The first argument passed to the microservice jar.
+        *      <li>The <code>Main-ConfigFile</code> entry in the microservice 
jar manifest file.
+        *      <li>The name of the microservice jar with a <js>".cfg"</js> 
suffix (e.g. <js>"mymicroservice.jar"</js>-&gt;<js>"mymicroservice.cfg"</js>).
+        * </ol>
+        * <p>
+        * If all methods for locating the config file fail, then this method 
returns <jk>null</jk>.
+        * <p>
+        * Subclasses can set their own config file by calling the {@link 
#setConfig(ConfigFile)} method.
+        * <p>
+        * String variables defined by {@link #createVarResolver()} are 
automatically resolved when using this method.
+        * <p>
+        * This method can be called from the class constructor.
+        * <dl>
+        *      <dt>Examples:</dt>
+        *      <dd>
+        *              <p class='bcode'>
+        *      <cc>#--------------------------</cc>
+        *      <cc># My section</cc>
+        *      <cc>#--------------------------</cc>
+        *      <cs>[MySection]</cs>
+        *      
+        *      <cc># An integer</cc>
+        *      <ck>anInt</ck> = 1 
+        *      
+        *      <cc># A boolean</cc>
+        *      <ck>aBoolean</ck> = true 
+        *      
+        *      <cc># An int array</cc>
+        *      <ck>anIntArray</ck> = 1,2,3 
+        *      
+        *      <cc># A POJO that can be converted from a String</cc>
+        *      <ck>aURL</ck> = http://foo 
+        *      
+        *      <cc># A POJO that can be converted from JSON</cc>
+        *      <ck>aBean</ck> = {foo:'bar',baz:123}
+        *      
+        *      <cc># A system property</cc>
+        *      <ck>locale</ck> = $S{java.locale, en_US}
+        *      
+        *      <cc># An environment variable</cc>
+        *      <ck>path</ck> = $E{PATH, unknown}
+        *      
+        *      <cc># A manifest file entry</cc>
+        *      <ck>mainClass</ck> = $MF{Main-Class}
+        *      
+        *      <cc># Another value in this config file</cc>
+        *      <ck>sameAsAnInt</ck> = $C{MySection/anInt}
+        *      
+        *      <cc># A command-line argument in the form "myarg=foo"</cc>
+        *      <ck>myArg</ck> = $ARG{myarg}
+        *      
+        *      <cc># The first command-line argument</cc>
+        *      <ck>firstArg</ck> = $ARG{0}
+        * 
+        *      <cc># Look for system property, or env var if that doesn't 
exist, or command-line arg if that doesn't exist.</cc>
+        *      <ck>nested</ck> = $S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}}
+        * 
+        *      <cc># A POJO with embedded variables</cc>
+        *      <ck>aBean2</ck> = {foo:'$ARG{0}',baz:$C{MySection/anInt}}
+        *      
+        *              </p>
+        *              <p class='bcode'>
+        *      <jc>// Java code for accessing config entries above.</jc>
+        *      ConfigFile cf = getConfig();
+        *      
+        *      <jk>int</jk> anInt = cf.getInt(<js>"MySection/anInt"</js>); 
+        *      <jk>boolean</jk> aBoolean = 
cf.getBoolean(<js>"MySection/aBoolean"</js>); 
+        *      <jk>int</jk>[] anIntArray = 
cf.getObject(<jk>int</jk>[].<jk>class</jk>, <js>"MySection/anIntArray"</js>); 
+        *      URL aURL = cf.getObject(URL.<jk>class</jk>, 
<js>"MySection/aURL"</js>); 
+        *      MyBean aBean = cf.getObject(MyBean.<jk>class</jk>, 
<js>"MySection/aBean"</js>); 
+        *      Locale locale = cf.getObject(Locale.<jk>class</jk>, 
<js>"MySection/locale"</js>); 
+        *      String path = cf.getString(<js>"MySection/path"</js>); 
+        *      String mainClass = 
cf.getString(<js>"MySection/mainClass"</js>); 
+        *      <jk>int</jk> sameAsAnInt = 
cf.getInt(<js>"MySection/sameAsAnInt"</js>); 
+        *      String myArg = cf.getString(<js>"MySection/myArg"</js>); 
+        *      String firstArg = cf.getString(<js>"MySection/firstArg"</js>); 
+        *              </p>
+        *      </dd>
+        * </dl>
+        * 
+        * @return The config file for this application, or <jk>null</jk> if no 
config file is configured. 
+        */
+       protected static ConfigFile getConfig() {
+               return cf;
+       }
+
+       /**
+        * Overrides the value returned by {@link #getConfig()}.
+        * 
+        * @param cf The config file for this application, or <jk>null</jk> if 
no config file is configured. 
+        * @return This object (for method chaining).
+        */
+       protected Microservice setConfig(ConfigFile cf) {
+               Microservice.cf = cf;
+               return this;
+       }
+
+       /**
+        * Returns the main jar manifest file contents as a simple {@link 
ObjectMap}.
+        * <p>
+        * This map consists of the contents of {@link 
Manifest#getMainAttributes()} with the keys
+        *      and entries converted to simple strings.
+        * <p>
+        * This method can be called from the class constructor.
+        * <dl>
+        *      <dt>Examples:</dt>
+        *      <dd>
+        *              <p class='bcode'>
+        *      <jc>// Get Main-Class from manifest file.</jc>
+        *      String mainClass = 
Microservice.<jsm>getManifest</jsm>().getString(<js>"Main-Class"</js>, 
<js>"unknown"</js>);
+        * 
+        *      <jc>// Get Rest-Resources from manifest file.</jc>
+        *      String[] restResources = 
Microservice.<jsm>getManifest</jsm>().getStringArray(<js>"Rest-Resources"</js>);
+        *              </p>
+        *      </dd>
+        * </dl>
+        * 
+        * @return The manifest file from the main jar, or <jk>null</jk> if the 
manifest file could not be retrieved.
+        */
+       protected static ObjectMap getManifest() {
+               return mf;
+       }
+
+       
//--------------------------------------------------------------------------------
+       // Abstract lifecycle methods.
+       
//--------------------------------------------------------------------------------
+
+       /**
+        * Start this application.
+        * <p>
+        * Default implementation simply calls {@link #onStart()}.
+        * <p>
+        * Overridden methods MUST call this method FIRST so that the {@link 
#onStart()} method is called.
+        * 
+        * @throws Exception
+        */
+       protected void start() throws Exception {
+               onStart();
+       }
+
+       /**
+        * Stop this application.
+        * <p>
+        * Default implementation simply calls {@link #onStop()}.
+        * <p>
+        * Overridden methods MUST call this method LAST so that the {@link 
#onStop()} method is called.
+        */
+       protected void stop() {
+               onStop();
+       }
+
+       /**
+        * Kill the JVM by calling <code>System.exit(2);</code>.
+        */
+       protected void kill() {
+               // This triggers the shutdown hook.
+               System.exit(2);
+       }
+
+       
//--------------------------------------------------------------------------------
+       // Lifecycle listener methods.
+       // Subclasses can override these methods to run code on certain events.
+       
//--------------------------------------------------------------------------------
+
+       /**
+        * Called at the beginning of the {@link #start()} call.
+        * <p>
+        * Subclasses can override this method to hook into the lifecycle of 
this application.
+        */
+       protected void onStart() {}
+
+       /**
+        * Called at the end of the {@link #stop()} call.
+        * <p>
+        * Subclasses can override this method to hook into the lifecycle of 
this application.
+        */
+       protected void onStop() {}
+
+       /**
+        * Called if the {@link ConfigFile#save()} is called on the config file.
+        * <p>
+        * Subclasses can override this method to listen for config file 
changes.
+        * 
+        * @param cf The config file. 
+        */
+       protected void onConfigSave(ConfigFile cf) {}
+
+       /**
+        * Called if one or more changes occur in the config file.
+        * <p>
+        * Subclasses can override this method to listen for config file 
changes.
+        * 
+        * @param cf The config file. 
+        * @param changes The list of keys in the config file being changed.
+        */
+       protected void onConfigChange(ConfigFile cf, Set<String> changes) {}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Resource.java
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Resource.java 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Resource.java
new file mode 100755
index 0000000..cce3bc8
--- /dev/null
+++ b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/Resource.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Licensed Materials - Property of IBM
+ * © Copyright IBM Corporation 2015, 2016. All Rights Reserved.
+ *
+ *  The source code for this program is not published or otherwise
+ *  divested of its trade secrets, irrespective of what has been
+ *  deposited with the U.S. Copyright Office.
+ 
*******************************************************************************/
+package com.ibm.juno.microservice;
+import static com.ibm.juno.core.html.HtmlDocSerializerProperties.*;
+
+import com.ibm.juno.core.utils.*;
+import com.ibm.juno.server.*;
+import com.ibm.juno.server.annotation.*;
+
+/**
+ * Superclass for all REST resources.
+ * <p>
+ * In additional to the functionality of the {@link RestServletDefault} group, 
+ * augments the {@link #createVarResolver()} method with the following 
additional variable types:
+ * <ul class='spaced-list'>
+ *     <li><code class='snippet'>$ARG{...}</code> - Command line arguments 
pulled from {@link Microservice#getArgs()}.<br>
+ *             <h6 class='figure'>Example:</h6>
+ *             <p class='bcode'>
+ *                     String firstArg = 
request.getVarResolver().resolve(<js>"$ARG{0}"</js>);  <jc>// First 
argument.</jc> 
+ *                     String namedArg = 
request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>);  <jc>// Named 
argument (e.g. "myarg=foo"). </jc>
+ *             </p>
+ *     <li><code class='snippet'>$MF{...}</code> - Manifest file entries 
pulled from {@link Microservice#getManifest()}.<br>
+ *             <h6 class='figure'>Example:</h6>
+ *             <p class='bcode'>
+ *                     String mainClass = 
request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>);  <jc>// Main 
class. </jc>
+ *             </p>
+ * </ul>
+ * 
+ * @author James Bognar ([email protected])
+ */
+@SuppressWarnings("serial")
+@RestResource(
+       properties={
+               @Property(name=HTMLDOC_links, 
value="{up:'$R{requestParentURI}',options:'$R{servletURI}?method=OPTIONS'}")
+       },
+       config="$S{juno.configFile}",
+       stylesheet="$C{REST/stylesheet,styles/juno.css}"
+)
+public abstract class Resource extends RestServletDefault {
+
+       /**
+        * Adds $ARG and $MF variables to variable resolver defined on {@link 
RestServlet#createVarResolver()}.
+        */
+       @Override
+       protected StringVarResolver createVarResolver() {
+               StringVarResolver r = super.createVarResolver();
+
+               // Command-line arguments.
+               r.addVar("ARG", new StringVarWithDefault() {
+                       @Override /* StringVar */
+                       public String resolve(String varVal) {
+                               return Microservice.getArgs().getArg(varVal);
+                       }
+               });
+
+               // Manifest file entries.
+               r.addVar("MF", new StringMapVar(Microservice.getManifest()));
+
+               return r;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceGroup.java
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceGroup.java
 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceGroup.java
new file mode 100755
index 0000000..db8f3d3
--- /dev/null
+++ 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceGroup.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Licensed Materials - Property of IBM
+ * © Copyright IBM Corporation 2015, 2016. All Rights Reserved.
+ *
+ *  The source code for this program is not published or otherwise
+ *  divested of its trade secrets, irrespective of what has been
+ *  deposited with the U.S. Copyright Office.
+ 
*******************************************************************************/
+package com.ibm.juno.microservice;
+
+import static com.ibm.juno.core.html.HtmlDocSerializerProperties.*;
+
+import com.ibm.juno.core.utils.*;
+import com.ibm.juno.server.*;
+import com.ibm.juno.server.annotation.*;
+
+/**
+ * Superclass for all REST resource groups.
+ * <p>
+ * In additional to the functionality of the {@link RestServletGroupDefault} 
group, 
+ * augments the {@link #createVarResolver()} method with the following 
additional variable types:
+ * <ul>
+ *     <li><jk>$ARG{...}</jk> - Command line arguments.<br>
+ *             Resolves values from {@link Microservice#getArgs()}.<br>
+ *             <h6>Example:</h6>
+ *             <p class='bcode'>
+ *                     String firstArg = 
request.getVarResolver().resolve(<js>"$ARG{0}"</js>);  <jc>// First 
argument.</jc> 
+ *                     String namedArg = 
request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>);  <jc>// Named 
argument (e.g. "myarg=foo"). </jc>
+ *             </p>
+ *     <li><jk>$MF{...}</jk> - Manifest file entries.
+ *             <h6>Example:</h6>
+ *             <p class='bcode'>
+ *                     String mainClass = 
request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>);  <jc>// Main 
class. </jc>
+ *             </p>
+ * </ul>
+ * 
+ * @author James Bognar ([email protected])
+ */
+@SuppressWarnings("serial")
+@RestResource(
+       properties={
+               @Property(name=HTMLDOC_links, 
value="{up:'$R{requestParentURI}',options:'$R{servletURI}?method=OPTIONS'}"),
+       },
+       config="$S{juno.configFile}",
+       stylesheet="$C{REST/stylesheet,styles/juno.css}"
+)
+public abstract class ResourceGroup extends RestServletGroupDefault {
+
+       @Override
+       protected StringVarResolver createVarResolver() {
+               StringVarResolver r = super.createVarResolver();
+
+               // Command-line arguments.
+               r.addVar("ARG", new StringVarWithDefault() {
+                       @Override /* StringVar */
+                       public String resolve(String varVal) {
+                               return Microservice.getArgs().getArg(varVal);
+                       }
+               });
+
+               // Manifest file entries.
+               r.addVar("MF", new StringMapVar(Microservice.getManifest()));
+
+               return r;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7e4f63e6/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceJena.java
----------------------------------------------------------------------
diff --git 
a/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceJena.java
 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceJena.java
new file mode 100755
index 0000000..153a000
--- /dev/null
+++ 
b/com.ibm.team.juno.microservice/src/com/ibm/juno/microservice/ResourceJena.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Licensed Materials - Property of IBM
+ * © Copyright IBM Corporation 2015, 2016. All Rights Reserved.
+ *
+ *  The source code for this program is not published or otherwise
+ *  divested of its trade secrets, irrespective of what has been
+ *  deposited with the U.S. Copyright Office.
+ 
*******************************************************************************/
+package com.ibm.juno.microservice;
+import static com.ibm.juno.core.html.HtmlDocSerializerProperties.*;
+
+import com.ibm.juno.server.annotation.*;
+import com.ibm.juno.server.jena.*;
+
+/**
+ * Superclass for all REST resources with RDF support.
+ * 
+ * @author James Bognar ([email protected])
+ */
+@SuppressWarnings("serial")
+@RestResource(
+       properties={
+               @Property(name=HTMLDOC_links, 
value="{up:'$R{requestParentURI}',options:'$R{servletURI}?method=OPTIONS'}")
+       },
+       config="$S{juno.configFile}",
+       stylesheet="$C{REST/stylesheet,styles/juno.css}"
+)
+public abstract class ResourceJena extends RestServletJenaDefault {}

Reply via email to