uec@sddlZddlZddlZddlZddlZddlmZddlmZm Z dee fdYZ dS(iN(tpartial(tPlugint RedHatPlugintJarscBszeZdZdZdZdZddd d efgZdZdZ dZ e dZ e dZ e dZRS(s2Collect information about available Java archives.tjarss1.0.0tjavatappend_locationss,colon-separated list of additional JAR pathstfastttall_known_locationssscan all known pathstslows/usr/share/javas /usr/lib/javas/opts /usr/locals/var/libcCsigd6}g}ttj}|jdrG|ttj7}n|jd}|rr||jd7}nxv|D]n}xetj|D]T\}}}xB|D]:} tjj || } tj | r|j | qqWqWqyWxg|D]_} tj | } tj | } | s"| ri| d6| d6| d6}|dj |qqWtj|dd d d}|j|d dS(NRR Rt:tpathtsha1tmaven_idtindentit separatorst,s: s jars.json(Rs: (tlistRt jar_locationst get_optiontextra_jar_locationstsplittostwalkR tjointis_jartappendt get_maven_idt get_jar_idtjsontdumpstadd_string_as_file(tselftresultst jar_pathst locationstuser_locationstlocationtdirpatht_t filenamestfilenameR tjar_pathRtjar_idtrecordt results_str((s4/usr/lib/python2.7/site-packages/sos/plugins/jars.pytsetup0s0       cCswtjj|rstj|rsy2tj|}d|jkrLtSWdQXWqsttj fk roqsXnt S(sCheck whether given file is a JAR file. JARs are ZIP files which usually include a manifest at the canonical location 'META-INF/MANIFEST.MF'. sMETA-INF/MANIFEST.MFN( RR tisfiletzipfilet is_zipfiletZipFiletnamelisttTruetIOErrort BadZipfiletFalse(R tf((s4/usr/lib/python2.7/site-packages/sos/plugins/jars.pyRSs!c Cs@i}y"tj| }tjd}g|jD]}|j|r7|^q7}t|dkrndS|j|d}x|j D]}|j }|j dsyM|j d\}} |j dj }| j dj } | || s