3 %  ~ #  ~  ~    ~  ~ ~ H  ~   ~    #   # x 0 x 0 0 # # ~ } } # ~ }  }  ~ H  H ~ ~ }    ~ V #    \ ] w w ~   ] ] ] ] # w # # # H ~ H0 x  ~ w ~ w  0    x #9 ~ ~ ~ ! "#$ %%& ' #() ~*+,-./ ~0 ~123L14 56 7  #8 #9  5: ;< ;= ~>?@AB ~CDEFGHI ~JKLM ~NOPQRS T UV WXY ~Z [\ ~] x^_ `a "bc de fg 0hi xjklmno Pfp }q ~rs tuvw #xy z{ |}~   #                       +   + +  5 }A  } @ @ D D D D D  D P P T  T T \ \ \ b  b b # # u  x z | }   InnerClassesignorePUTexceptionsZTEST_SERVICE_BASELjava/lang/String; ConstantValueECHO_MMPEXCEPTION_SERVICE pathInfoBaseMRC-Lorg/dataone/client/rest/MultipartRestClient;log Lorg/apache/commons/logging/Log;methodMatchPattern methodMapLjava/util/HashMap; SignaturerLjava/util/HashMap;>;>;clientMethodMapMNALjava/util/HashMap;clientMethodMapCNd1ExceptionListLjava/util/List;$Ljava/util/List;currentMethodKeynodeType'Lorg/dataone/service/types/v1/NodeType;errorCollector Lorg/junit/rules/ErrorCollector;RuntimeVisibleAnnotationsLorg/junit/Rule;$assertionsDisabled(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis3Lorg/dataone/client/ClientArchitectureConformityIT; methodKey StackMapTablesetUp()V ExceptionsLorg/junit/BeforeClass;setUpTestParameters()Ljava/util/Collection;keyi$Ljava/util/Iterator; methodKeysLjava/util/TreeSet; paramListLjava/util/ArrayList;LocalVariableTypeTable'Ljava/util/TreeSet;*Ljava/util/ArrayList<[Ljava/lang/Object;>;-()Ljava/util/Collection<[Ljava/lang/Object;>; Parameters,Lorg/junit/runners/Parameterized$Parameters; testHarnesstestEscapedPatternx pathPatternybuildMethodListKey.(Ljava/lang/reflect/Method;)Ljava/lang/String;methodLjava/lang/reflect/Method; methodString qualifiedNamegetCNInterfaceMethods()Ljava/util/HashMap;marr$java/lang/reflect/Method;len$ImethodscLjava/lang/Class;[Ljava/lang/Class; methodMapKeyinterfaceMethodList interfacesclientInterfaceMethodsLjava/lang/Class<*>;)Ljava/util/ArrayList;[Ljava/lang/Class<*>;C()Ljava/util/HashMap;getMNInterfaceMethodsgetD1Exceptions()Ljava/util/List;resourceLjava/net/URL; directoryLjava/io/File; packageName classLoaderLjava/lang/ClassLoader;path resourcesLjava/util/Enumeration;dirsclasses'Ljava/util/Enumeration; Ljava/util/List;&()Ljava/util/List; findClasses2(Ljava/io/File;Ljava/lang/String;)Ljava/util/List;file[Ljava/io/File;filesF(Ljava/io/File;Ljava/lang/String;)Ljava/util/List;testMethodIsDocumentedLorg/junit/Test;testMethodIsImplementedtestMethodParameterAgreementtype docParamTypeparamTypeSimpleNamei docParamTypesimplParamTypesimplHasSession docHasSessionsessionCorrectiontestMethodReturnTypeAgreement docReturnTypeimplReturnTypeexpectedReturnTypereturnTypeSimpleName testHttpVerb echoResponsedocVerbeLjava/lang/Exception;exceptionLocation!testPath pathMatchtestMethodParameters paramTypeexpectedLocationmatcherLjava/util/regex/Matcher;paramKeyactualLocation echoedVerbparampatLjava/util/regex/Pattern; parameters paramTypes paramLocationtestMethodExceptionHandlingactualException d1Exception docExceptions exceptionNamegetEchoResponse&(Ljava/lang/String;)Ljava/lang/String; testResourced1nodeLorg/dataone/client/D1Node;YI(Lorg/dataone/client/D1Node;Ljava/lang/reflect/Method;)Ljava/lang/String; paramObjects[Ljava/lang/Object;sf/Lorg/dataone/service/exceptions/ServiceFailure;-Ljava/lang/reflect/InvocationTargetException;_getExceptionResponse exceptionexceptionReturnedbuildParameterObjectInstances/(Ljava/lang/reflect/Method;)[Ljava/lang/Object;paramsbuildParamObject%(Ljava/lang/Class;)Ljava/lang/Object; contentBytes[Bid)Lorg/dataone/service/types/v1/Identifier;smd-Lorg/dataone/service/types/v2/SystemMetadata;mmcoLjava/lang/reflect/Constructor;nr,Lorg/dataone/service/types/v1/NodeReference;s&Lorg/dataone/service/types/v1/Subject;nfoLjava/lang/Object;     ((Ljava/lang/Class<*>;)Ljava/lang/Object;findParameterLocationJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;line[Ljava/lang/String;echoText parameterNameparamTestObject textLineslocation pathLocationk verifyUrlPath'(Ljava/lang/String;Ljava/lang/String;)Z pathInfoLine getUrlPathgetVerblineOfInterestwords checkEqualsK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Vhostmessages1s2)(Ljava/lang/String;Ljava/lang/String;II)V checkTrue((Ljava/lang/String;Ljava/lang/String;Z)Vb handleFail'(Ljava/lang/String;Ljava/lang/String;)V SourceFile#ClientArchitectureConformityIT.javaLorg/junit/runner/RunWith;value!Lorg/junit/runners/Parameterized; org/junit/rules/ErrorCollector CN.   MN.   D1Client.useLocalCachefalse CNode.useObjectFormatCache/org/dataone/client/rest/HttpMultipartRestClient phttps://repository.dataone.org/documents/Projects/cicore/architecture/api-documentation/MethodCrossReference.xls  java/util/TreeSet      !java/util/ArrayList  "# $% &'java/lang/String (java/lang/Object )*test+ ,-/werth/rtyudfgh/xcvbg/{pid}\{\w+\}\\w+\$ ./$/werth/rtyudfgh/xcvbg/testIdentifier/backslash pattern in replace should find target 01java/lang/StringBuilder 21 34( 56 78 \sthrows\s.* org/dataone/client/v2/CNode 9: ;1D1Node <* Interface under test: = >? @A Method from interface: B? java/util/HashMap C* DE org/dataone/client/v2/MNode Method from classes: ,org/dataone/service/exceptions/BaseException FGHI JK LM java/lang/AssertionError NO PQ R% S' java/net/URL java/io/File T1   BaseException U* V% WX Y%. CZ.class [ \] 7^method should be documented. _* method should be implemented. `ajava/util/Listjava/lang/reflect/Method b:bad nodeType value: c1 java/lang/ClassSession]number of parameters in implemented method should match number of parameters in documentation d] z `eImplemented parameter type () at position 3f should match documented type () gt)  at position 3Implementation does not have parameter at position  returnType hipingDate>Implemented return type (%s) should match documented type (%s) jk/echomm 9:get verb from documentMapverbHEADHEAD method will return 'null' w: z{method verb should agreejava/lang/Exception lunexpected error at '' mi: n1 ocreating pathMatch \\w+$testPath() pathMatch: path_info should be matched by . got: v: stunexpected error at  (\w+).* pq\documentation error: the number of params and paramTypes in the documentation are not equal. r1 s% 't u% v8 hiFileParamPUTDELETE %s operation: parameter '%s' is expected to be in a file or param part, but cannot be properly tested in a %s operation against the echo service. (actual location WAS null) parameter '' is not in expected location(did not find method in documentation map#::::::: checkExceptionHandling vs.  exceptions SynchronizationFailed : : : : : SKIPPING:  : : : : : checking: G:method should throw exception ''method should recast '' to 'ServiceFailure'ServiceFailure&http://dev-testing.dataone.org/testsvcw xyz {|org/dataone/client/D1Node 9? }1set PATH_INFO base (prefix): JK ~+java/lang/reflect/InvocationTargetException -org/dataone/service/exceptions/ServiceFailureError invoking method  detail code = 1 1invocation class: 3class of method being invoked: i1Error building parameters for or invoking method echo response: D - - - - calling http://dev-testing.dataone.org/testsvc/exception/1http://dev-testing.dataone.org/testsvc/exception/exceptionReturned: building instance for: 1 MNjava/util/Date java.io.InputStreamsome input for the streamUTF-8 java/io/ByteArrayInputStream long java.lang.Integerjava/lang/Integer java.lang.Booleanjava/lang/Boolean java.lang.String testString-org/dataone/service/exceptions/NotImplementeddetailCodeStringdescriptionString Event  Permission ReplicationStatus SystemMetadata'org/dataone/service/types/v1/IdentifiertestIdentifier +org/dataone/service/types/v2/SystemMetadata  nodeIdString    text/plain  submitterString        %org/dataone/service/types/v1/Checksum  MD5 *asqweroivlksjklrwe452398opvds9fdcvoipefnwrrightsHolderString 4org/dataone/service/exceptions/SynchronizationFailed   created :setValue  setValue : testjava/lang/NoSuchMethodExceptionNode*org/dataone/service/types/v1/NodeReferencetestNodeReference!org/dataone/service/types/v2/Node fako blah blah blah somewhere over the rainbow    Person$org/dataone/service/types/v1/Subject testSubject#org/dataone/service/types/v1/Person Sleepy  Dwarf Group"org/dataone/service/types/v1/Group testGroupName  Replica$org/dataone/service/types/v1/Replica     request.META[ QUERY_STRING ]Queryrequest.POST=`M- #BeBeM)"5'(  r)L+*+,M-N.-,$( *   s-*/L++0Y1*2343567M,89,$ -($   :YK;6,2:=>?r@0Y1A3B35CD::66  9 2: @0Y1E3 235F* G&W Ƅr;DMHYIN,:66B2:G:*J%0Y13235: - KW-::Z)9X_y   y) cEh@k= _I)  +2NIF]U*)Uo 1 <?  5L.YKM6,2:=>?r@0Y1A3B35CD::66  9 2: @0Y1E3 235F* G&W ƄrMDMHYIN,:66a2:@0Y1N3235FG:*J%0Y1 3235: - KW-LL^)9X_y#$%&'()*'%--1/y) cEh@k= _I)  +Qmhe#|t*)#tq 1 <^ OPQRKSTLU+ VYW*./XM+,YNY:-Z%-[\:]Y^_`WػY:a:!"]:*bcWdeWOOJ5678)92:8;A<J=U>i?l@uABCDEG\ U ~%2~8xAou; 8xAou;+)*$  YM*f,*gN-:662:hHUijk VYW,0Y1+3j3i35blW+imn,iiodp`Wz,2 STUWX/Y7ZR[|\]X`R/u! -0)' C** q* rs ik   *** t* r* rs p)t *<!   * uHvuwLM** uxyMB* * uxyM$** 0Y1z3*{35|,}M+ YL>,:66"2:=~?> 6+a:!""#:~? 66 6** ,`+6,,,2=:^++#:** 0Y13333335sk`++`#:** 0Y13333333`5s** 0Y135|(z{|"}6~@Tuy~&/4P .)& )P<H/])  V6   %4@@@I f* uHuwLM** uxMB* * uxM$** 0Y1z3*{35|* n +#N,=:** %YSY-S-s. "6@Tu4'!6 I ?LL*ML* uHuw#N-?** *,** *,->M,** 0Y13+33,B33,35|Z]6  .7JZ]^b4 N.,^: JB!: "L* uHuw#L0Y13* uHuw#*,335M@0Y13,35FL*N** 0Y13,33*-35*,-s>M,** 0Y13+33,B33,35|(6   (+i!#4iS#.: !: $? L* uHuw#L*M* r* uHuN* uHvu:* uHu:-PK:-** |+6-:!"#:   : : +#: #:  ~:  : :   : *, 0Y1'3 35:*,: Y ?  ?E? ?1,šK** %YSY SYS|(** 0Y1Ķ3 3Ŷ35 ** ƶ|>M,** 0Y13+33,B33,35|()),(1+223?4U5l69;<=@ABCGHIJKMNQRS%T-WJZQ[acknqrxtuv{% & '( ) J*Q+, %A-.U/lh0Q12:   U/lh0Q12(23<-$ 2 B!: 4zc@0Y1Ƕ3* 35C* uHuw#!L* uHȶuMN-a:!"#:ʶ?"@0Y1˶335CIJ@0Y1̶335C*:,J+** 0Y1ζ33϶35(** 0Y1ж33Ѷ35ҶG>M,** 0Y13+33,B33,35|F$'RDF\`~!$'(,bRV5~6h\7`(:F8c\7`1h>T$B!: 9:-MN*ә<;0Y1Զ3+35ոN*-* uxM9M0Y1Զ3+35ոN*-* uxM-9,@0Y1ڶ335C,* 4Jm*;<= J>59?N*,:,+W:ߚ'*90Y13,235|2:0Y133335Nd:@0Y13+5F@0Y13,5F*,G0Y13,235|@0Y13-35F-wJ !&EOtwyR @AO%BC^Dy_<=(>EF0F.B!`G:MN:@0Y13+35F*ә8;0Y13+35ոN* ux:5M0Y13+35ոN* ux:*:-W6:@0Y13P35F޶=M,B"/Rd   H @A1DHI<=d>E1SF2JKZ+yM,%N6,F@0Y13,235F-*,2S-2 -&  6BLRX4JZZUL O@A UL8CMNpUM+?NY-M+? M+?YM+?YM+?#YM+dnY   M+ n  M+n Mr+n M^+nYN-Y:- !"#$%&'Y()Y(*+Y,-./0.123"4M+ʶn5Y  6M+}7N-89M@0Y1:3,5F+;}Y#S<:,%Y0Y1'3+=35SW@0Y1=3+=35F:+?nO@YAN-BC,D-E,DFG,DHI,DJK,D L,DMN+On;PYQN-RS,T-U,T#YVSWX,TYZ+[n9PYQN-RS,\-],\^_,\PY-SW`?+an2@YAN-BC,b-c,bde,bY(f,14>2L"#$%&.'6(B)N*[+g,t-0123456789:;<=>?'@2A:BBCNDZEfFqG|HJLMQRSUVW1Z4X6^C_K`RaZbdcndxefghijklmnopqrs$t,u3v;wExSzz  OPQRSTCUVWKAXY-Z[+Z[,'\YUUS]^ U7"__`aXDB;bcde>fghi +g::::66   2:  ,k^ h i:} j :k k :Y l :G m :5 n$ 0Y1o3-35kp: _:n (1<ADOSVaehswzp (j k lmnok pq4  rr)+stt*,N-+$*l uv: H9M+B+gN-:66)2:nq9rM ,& '2=@FR'Z5k0-8okHHlEu+rr&w:T+gMN,:66!2:s N --tg:d2.  "-039=?K\ "Z -k(%TTlMok KxK ykrrz{l*uY*+,-vwW "4|}~zl*xY*+,ywW '34|}~`*zY*+,{wW 7C*|}U*|Y*+,}wW GS |}W(~U~@| @ c*|zxu&