JAX-RS: Java™ API for RESTful Web Services Version 2.0 Final Release May 22, 2013 Editors: SantiagoPericas-Geertsen MarekPotociar Commentsto: [email protected] OracleCorporation 500OracleParkway,RedwoodShores,CA94065USA. ii JAX-RS May22,2013 JSR-339Java™APIforRESTfulWebServices(“Specification”) Version: 2.0 Status: FinalRelease Release: May22,2013 Copyright2011-2013OracleAmerica,Inc. (“Oracle”) 500OracleParkway,RedwoodShores,California94065,U.S.A Allrightsreserved. LIMITEDLICENSEGRANTS 1. LicenseforEvaluationPurposes. Oracleherebygrantsyouafully-paid,non-exclusive,non-transferable, worldwide,limitedlicense(withouttherighttosublicense),underOracle’sapplicableintellectualpropertyrightsto view,download,useandreproducetheSpecificationonlyforthepurposeofinternalevaluation. Thisincludes(i) developingapplicationsintendedtorunonanimplementationoftheSpecification,providedthatsuchapplicationsdo notthemselvesimplementanyportion(s)oftheSpecification,and(ii)discussingtheSpecificationwithanythird party;and(iii)excerptingbriefportionsoftheSpecificationinoralorwrittencommunicationswhichdiscussthe SpecificationprovidedthatsuchexcerptsdonotintheaggregateconstituteasignificantportionoftheSpecification. 2. LicensefortheDistributionofCompliantImplementations. Oraclealsograntsyouaperpetual,non-exclusive, non-transferable,worldwide,fullypaid-up,royaltyfree,limitedlicense(withouttherighttosublicense)underany applicablecopyrightsor,subjecttotheprovisionsofsubsection4below,patentrightsitmayhavecoveringthe Specificationtocreateand/ordistributeanIndependentImplementationoftheSpecificationthat: (a)fullyimplements theSpecificationincludingallitsrequiredinterfacesandfunctionality;(b)doesnotmodify,subset,supersetor otherwiseextendtheLicensorNameSpace,orincludeanypublicorprotectedpackages,classes,Javainterfaces, fieldsormethodswithintheLicensorNameSpaceotherthanthoserequired/authorizedbytheSpecificationor Specificationsbeingimplemented;and(c)passestheTechnologyCompatibilityKit(includingsatisfyingthe requirementsoftheapplicableTCKUsersGuide)forsuchSpecification(”CompliantImplementation”). Inaddition, theforegoinglicenseisexpresslyconditionedonyournotactingoutsideitsscope. Nolicenseisgrantedhereunder foranyotherpurpose(including,forexample,modifyingtheSpecification,otherthantotheextentofyourfairuse rights,ordistributingtheSpecificationtothirdparties). Also,noright,title,orinterestinortoanytrademarks, servicemarks,ortradenamesofOracleorOracle’slicensorsisgrantedhereunder. Java,andJava-relatedlogos, marksandnamesaretrademarksorregisteredtrademarksofOracleAmerica,Inc. intheU.S.andothercountries. 3. Pass-throughConditions. Youneednotincludelimitations(a)-(c)fromthepreviousparagraphoranyother particular”passthrough”requirementsinanylicenseYougrantconcerningtheuseofyourIndependent Implementationorproductsderivedfromit. However,exceptwithrespecttoIndependentImplementations(and productsderivedfromthem)thatsatisfylimitations(a)-(c)fromthepreviousparagraph,Youmayneither: (a)grant orotherwisepassthroughtoyourlicenseesanylicensesunderOraclesapplicableintellectualpropertyrights;nor(b) authorizeyourlicenseestomakeanyclaimsconcerningtheirimplementation’scompliancewiththeSpecificationin question. 4. ReciprocityConcerningPatentLicenses. a. Withrespecttoanypatentclaimscoveredbythelicensegrantedundersubparagraph2abovethatwouldbe infringedbyalltechnicallyfeasibleimplementationsoftheSpecification,suchlicenseisconditioneduponyour offeringonfair,reasonableandnon-discriminatoryterms,toanypartyseekingitfromYou,aperpetual, non-exclusive,non-transferable,worldwidelicenseunderYourpatentrightswhichareorwouldbeinfringedbyall technicallyfeasibleimplementationsoftheSpecificationtodevelop,distributeanduseaCompliantImplementation. b. WithrespecttoanypatentclaimsownedbyOracleandcoveredbythelicensegrantedundersubparagraph2, whetherornottheirinfringementcanbeavoidedinatechnicallyfeasiblemannerwhenimplementingthe Specification,suchlicenseshallterminatewithrespecttosuchclaimsifYouinitiateaclaimagainstOraclethatithas, inthecourseofperformingitsresponsibilitiesastheSpecificationLead,inducedanyotherentitytoinfringeYour patentrights. c. AlsowithrespecttoanypatentclaimsownedbyOracleandcoveredbythelicensegrantedundersubparagraph 2above,wheretheinfringementofsuchclaimscanbeavoidedinatechnicallyfeasiblemannerwhenimplementing theSpecificationsuchlicense,withrespecttosuchclaims,shallterminateifYouinitiateaclaimagainstOraclethat itsmaking,havingmade,using,offeringtosell,sellingorimportingaCompliantImplementationinfringesYour May22,2013 JAX-RS iii patentrights. 5. Definitions. ForthepurposesofthisAgreement: ”IndependentImplementation”shallmeananimplementationof theSpecificationthatneitherderivesfromanyofOracle’ssourcecodeorbinarycodematerialsnor,exceptwithan appropriateandseparatelicensefromOracle,includesanyofOracle’ssourcecodeorbinarycodematerials; ”LicensorNameSpace”shallmeanthepublicclassorinterfacedeclarationswhosenamesbeginwith”java”, ”javax”,”com.sun”,com.oracleortheirequivalentsinanysubsequentnamingconventionadoptedbyOraclethrough theJavaCommunityProcess,oranyrecognizedsuccessorsorreplacementsthereof;and”TechnologyCompatibility Kit”or”TCK”shallmeanthetestsuiteandaccompanyingTCKUser’sGuideprovidedbyOraclewhichcorresponds totheSpecificationandthatwasavailableeither(i)fromOracle120daysbeforethefirstreleaseofYourIndependent Implementationthatallowsitsuseforcommercialpurposes,or(ii)morerecentlythan120daysfromsuchreleasebut againstwhichYouelecttotestYourimplementationoftheSpecification. ThisAgreementwillterminateimmediatelywithoutnoticefromOracleifyoubreachtheAgreementoractoutside thescopeofthelicensesgrantedabove. DISCLAIMEROFWARRANTIES THESPECIFICATIONISPROVIDED”ASIS”. ORACLEMAKESNOREPRESENTATIONSOR WARRANTIES,EITHEREXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTO,WARRANTIESOF MERCHANTABILITY,FITNESSFORAPARTICULARPURPOSE,NON-INFRINGEMENT(INCLUDINGAS ACONSEQUENCEOFANYPRACTICEORIMPLEMENTATIONOFTHESPECIFICATION),ORTHATTHE CONTENTSOFTHESPECIFICATIONARESUITABLEFORANYPURPOSE.Thisdocumentdoesnotrepresent anycommitmenttoreleaseorimplementanyportionoftheSpecificationinanyproduct. Inaddition,the Specificationcouldincludetechnicalinaccuraciesortypographicalerrors. LIMITATIONOFLIABILITY TOTHEEXTENTNOTPROHIBITEDBYLAW,INNOEVENTWILLORACLEORITSLICENSORSBE LIABLEFORANYDAMAGES,INCLUDINGWITHOUTLIMITATION,LOSTREVENUE,PROFITSOR DATA,ORFORSPECIAL,INDIRECT,CONSEQUENTIAL,INCIDENTALORPUNITIVEDAMAGES, HOWEVERCAUSEDANDREGARDLESSOFTHETHEORYOFLIABILITY,ARISINGOUTOFOR RELATEDINANYWAYTOYOURHAVING,IMPLEMENTINGOROTHERWISEUSINGTHE SPECIFICATION,EVENIFORACLEAND/ORITSLICENSORSHAVEBEENADVISEDOFTHE POSSIBILITYOFSUCHDAMAGES.Youwillindemnify,holdharmless,anddefendOracleanditslicensorsfrom anyclaimsarisingorresultingfrom: (i)youruseoftheSpecification;(ii)theuseordistributionofyourJava application,appletand/orimplementation;and/or(iii)anyclaimsthatlaterversionsorreleasesofanySpecification furnishedtoyouareincompatiblewiththeSpecificationprovidedtoyouunderthislicense. RESTRICTEDRIGHTSLEGEND U.S.Government: IfthisSpecificationisbeingacquiredbyoronbehalfoftheU.S.GovernmentorbyaU.S. Governmentprimecontractororsubcontractor(atanytier),thentheGovernment’srightsintheSoftwareand accompanyingdocumentationshallbeonlyassetforthinthislicense;thisisinaccordancewith48C.F.R.227.7201 through227.7202-4(forDepartmentofDefense(DoD)acquisitions)andwith48C.F.R.2.101and12.212(for non-DoDacquisitions). REPORT IfyouprovideOraclewithanycommentsorsuggestionsconcerningtheSpecification(”Feedback”),youhereby: (i) agreethatsuchFeedbackisprovidedonanon-proprietaryandnon-confidentialbasis,and(ii)grantOraclea perpetual,non-exclusive,worldwide,fullypaid-up,irrevocablelicense,withtherighttosublicensethroughmultiple levelsofsublicensees,toincorporate,disclose,andusewithoutlimitationtheFeedbackforanypurpose. GENERALTERMS AnyactionrelatedtothisAgreementwillbegovernedbyCalifornialawandcontrollingU.S.federallaw. TheU.N. ConventionfortheInternationalSaleofGoodsandthechoiceoflawrulesofanyjurisdictionwillnotapply. TheSpecificationissubjecttoU.S.exportcontrollawsandmaybesubjecttoexportorimportregulationsinother countries. Licenseeagreestocomplystrictlywithallsuchlawsandregulationsandacknowledgesthatithasthe responsibilitytoobtainsuchlicensestoexport,re-exportorimportasmayberequiredafterdeliverytoLicensee. iv JAX-RS May22,2013 ThisAgreementistheparties’entireagreementrelatingtoitssubjectmatter. Itsupersedesallprioror contemporaneousoralorwrittencommunications,proposals,conditions,representationsandwarrantiesandprevails overanyconflictingoradditionaltermsofanyquote,order,acknowledgment,orothercommunicationbetweenthe partiesrelatingtoitssubjectmatterduringthetermofthisAgreement. NomodificationtothisAgreementwillbe binding,unlessinwritingandsignedbyanauthorizedrepresentativeofeachparty. Rev. December,2010 May22,2013 JAX-RS v vi JAX-RS May22,2013 Contents 1 Introduction 1 1.1 Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Non-Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.5 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6 ExpertGroupMembers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.7 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Applications 7 2.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Publication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.1 JavaSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.2 Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.3 OtherContainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 Resources 11 3.1 ResourceClasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.1 LifecycleandEnvironment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.2 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 FieldsandBeanProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 ResourceMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.1 Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.3 ReturnType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.4 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 May22,2013 JAX-RS vii 3.3.5 HEADandOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 URITemplates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4.1 SubResources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.5 DeclaringMediaTypeCapabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.6 AnnotationInheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.7 MatchingRequeststoResourceMethods. . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.7.1 RequestPreprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.7.2 RequestMatching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.7.3 ConvertingURITemplatestoRegularExpressions . . . . . . . . . . . . . . . . . . 24 3.8 DeterminingtheMediaTypeofResponses . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 Providers 27 4.1 LifecycleandEnvironment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.1.1 AutomaticDiscovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.1.2 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 EntityProviders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.1 MessageBodyReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.2 MessageBodyWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.3 DeclaringMediaTypeCapabilities . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2.4 StandardEntityProviders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2.5 TransferEncoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.2.6 ContentEncoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3 ContextProviders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.1 DeclaringMediaTypeCapabilities . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.4 ExceptionMappingProviders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.5 Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5.1 ServerRuntime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5.2 ClientRuntime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5 ClientAPI 33 5.1 BootstrappingaClientInstance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.2 ResourceAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3 ClientTargets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.4 TypedEntities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.5 Invocations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 viii JAX-RS May22,2013 5.6 ConfigurableTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.6.1 FiltersandEntityInterceptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6 FiltersandInterceptors 37 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2 Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.3 EntityInterceptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.4 Lifecycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.5 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.5.1 GlobalBinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.5.2 NameBinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.5.3 DynamicBinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.5.4 BindinginClientAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.6 Priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.7 Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.7.1 ServerRuntime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.7.2 ClientRuntime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7 Validation 45 7.1 ConstraintAnnotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.2 AnnotationsandValidators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.3 EntityValidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.4 DefaultValidationMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.5 AnnotationInheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.6 ValidationandErrorReporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8 AsynchronousProcessing 51 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.2 ServerAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 8.2.1 TimeoutsandCallbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 8.3 EJBResourceClasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 8.4 ClientAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 9 Context 55 9.1 Concurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.2 ContextTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 May22,2013 JAX-RS ix 9.2.1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.2.2 URIsandURITemplates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 9.2.3 Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 9.2.4 ContentNegotiationandPreconditions . . . . . . . . . . . . . . . . . . . . . . . . 56 9.2.5 SecurityContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.2.6 Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.2.7 ResourceContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.2.8 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 10 Environment 59 10.1 ServletContainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 10.2 IntegrationwithJavaEETechnologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 10.2.1 Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 10.2.2 ManagedBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 10.2.3 ContextandDependencyInjection(CDI) . . . . . . . . . . . . . . . . . . . . . . . 60 10.2.4 EnterpriseJavaBeans(EJBs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 10.2.5 BeanValidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 10.2.6 JavaAPIforJSONProcessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 10.2.7 AdditionalRequirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 10.3 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 11 RuntimeDelegate 63 11.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 A SummaryofAnnotations 65 B HTTPHeaderSupport 69 C ProcessingPipeline 71 D ChangeLog 75 D.1 ChangesSince2.0ProposedFinalDraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 D.2 ChangesSince2.0PublicReviewDraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 D.3 ChangesSince2.0EarlyDraft(ThirdEdition) . . . . . . . . . . . . . . . . . . . . . . . . . 76 D.4 ChangesSince2.0EarlyDraft(SecondEdition) . . . . . . . . . . . . . . . . . . . . . . . . 77 D.5 ChangesSince2.0EarlyDraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 D.6 ChangesSince1.1Release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 x JAX-RS May22,2013
Description: