mò
LQ¯Lc           @   s   d  k  Z  d  k Z d  k Z d  k Z d  k Z d  k Z d e f d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ	 d „  Z
 d  S(   Nt   ModuleNotFoundc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s   | |  _  d  S(   N(   t   valuet   self(   R   R   (    (    t\   /afs/cs.wisc.edu/p/zhu/public/html/space2/dualist/play-1.1/framework/pym/play/application.pyt   __init__   s    c         C   s   t  |  i ƒ S(   N(   t   reprR   R   (   R   (    (    R   t   __str__
   s    (   t   __name__t
   __module__R   R   (    (    (    R   R       s   	t   PlayApplicationc           B   s¶   t  Z d  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d d g d „ Z RS(   s#   A Play Application: conf file, javac         C   s   | |  _ | d  j	 oF t i i | d ƒ } y t | | d ƒ |  _	 Wqe d  |  _	 qe Xn
 d  |  _	 | |  _
 |  i d ƒ |  _ | |  _ d  S(   Ns   conf/application.conft   idt	   jpda_port(   t   application_pathR   t   patht   Nonet   ost   joint   confpatht   PlayConfParsert   envt   conft   play_envt   readConfR   t   ignoreMissingModules(   R   R   R   R   R   (    (    R   R      s    			c         C   sZ   t  i i t  i i |  i d d ƒ ƒ p. d t  i i |  i ƒ GHd GHt i d ƒ n d  S(   NR   t   routess4   ~ Oops. %s does not seem to host a valid applicationt   ~iÿÿÿÿ(   R   R   t   existsR   R   t   normpatht   syst   exit(   R   (    (    R   t   check"   s    (c         C   s(   |  i d  j o d Sn |  i i | ƒ S(   Nt    (   R   R   R   t   gett   key(   R   R!   (    (    R   R   (   s    c         C   s(   |  i d  j o g  Sn |  i i | ƒ S(   N(   R   R   R   t   getAllR!   (   R   R!   (    (    R   t	   readConfs-   s    c         C   sJ  g  } xö |  i d ƒ D]å } | } d | j o | i d |  i d ƒ } n | d d j	 o( t i i	 t i i
 |  i | ƒ ƒ } n t i i | ƒ oU |  i oJ d GHd | GHd GH| i d	 ƒ o d
 | d GHd GHn t i d ƒ n | i | ƒ q W|  i d d j o3 | i t i i	 t i i
 |  i d d ƒ ƒ ƒ n | S(   Ns   module.s   ${play.path}t   basediri    t   /s   ~ Oops,s   ~ Module not found: %sR   s   ${play.path}/modulessC   ~ You can try to install the missing module using 'play install %s'i   iÿÿÿÿR
   t   tests   modules/testrunner(   t   modulesR   R#   t   mt   omt   replaceR   R   R   R   R   R   R   t
   startswithR   R   t   append(   R   R)   R'   R(   (    (    R   R'   4   s(     (		3c         C   s   t  d „  |  i i d ƒ ƒ S(   Nc         C   s   |  d S(   Ni   (   t   x(   R-   (    (    R   t   <lambda>J   s    s   module.(   t   mapR   R   t
   getAllKeys(   R   (    (    R   t   module_namesI   s    c         C   sñ   t  i i d ƒ oD t  i d j o t  i d i d ƒ } q] t  i d i d ƒ } n g  } t d  j	 oƒ y t i ƒ  } Wn+ t j
 o } d | GHt
 i d ƒ n Xt d d j o0 | i t  i i t  i i t d	 d
 ƒ ƒ ƒ qí n d  S(   Nt   MODULESt   ntt   ;t   :s   Module not found %siÿÿÿÿR
   R&   R$   s   modules/testrunner(   R   t   environt   has_keyt   namet   splitR'   t   play_appR   R    t   eR   R   R   R,   R   R   R   (   R   R;   R'   (    (    R   t   load_modulesL   s    	c         C   s(  d  } xF |  i ƒ  D]8 } t i i | | ƒ } t i i
 | ƒ o
 | } q q W| p d | GHd GHt i d ƒ n t i i |  i | ƒ } t i i
 | ƒ o) t d | ƒ } | d j p d  SqÉ n t i i
 t i i | ƒ ƒ p t i t i i | ƒ ƒ n t i | | ƒ d | | f GHd  S(   Ns   ~ %s not found in any modules   ~ iÿÿÿÿs:   ~ Warning! %s already exists and will be overriden (y/n)? t   ys   ~ Copied %s to %s (   R   t   fromFileR   R'   t   moduleR   R   R   t   ft   pcR   R   R   t   tt   toFilet	   raw_inputt   responset   dirnamet   makedirst   shutilt   copyfile(   R   R@   RB   R?   RA   RC   R>   RE   (    (    R   t   override_   s&      	c         C   s   |  i d ƒ S(   Ns   application.name(   R   R   (   R   (    (    R   R8   r   s    c         C   s6  g  } | i t i i t i i |  i d ƒ ƒ ƒ | i t i i t i i |  i d d ƒ ƒ ƒ t i i t i i |  i d ƒ ƒ os xp t i	 t i i |  i d ƒ ƒ D]I } | i d ƒ o3 | i t i i t i i |  i d | ƒ ƒ ƒ q§ q§ Wn xÀ |  i ƒ  D]² } t i i t i i | d ƒ ƒ oŠ t i i | d ƒ } t i i | ƒ o^ x[ t i	 | ƒ D]F } | i d ƒ o0 | i t i i t i i | d | ƒ ƒ ƒ qeqeWq·qqWxt t i	 t i i |  i d d ƒ ƒ D]M } | i d ƒ o7 | i t i i t i i |  i d d	 | ƒ ƒ ƒ qáqáW| S(
   NR   R$   s   framework/play.jart   libs   .jars   lib/%ss   %ss   framework/libs   framework/lib/%s(   t	   classpathR,   R   R   R   R   R   R   R   t   listdirt   jart   endswithR'   R?   t   libs(   R   RN   RL   R?   RP   (    (    R   t   getClasspathw   s,    +/%" ; " @& ;c         C   s   t  i i |  i d d ƒ S(   NR$   s   framework/play.jar(   R   R   R   R   R   (   R   (    (    R   t
   agent_path”   s    c         C   sB   |  i ƒ  } d i | ƒ } t i d j o d i | ƒ } n | S(   NR5   R3   R4   (   R   RQ   RL   R   t   cp_argsR   R8   (   R   RS   RL   (    (    R   RS   —   s
    c         C   s:   t  i i d ƒ p d Sn t  i i d t  i d ƒ Sd  S(   Nt	   JAVA_HOMEt   javas   %s/bin/java(   R   R6   R7   R   R   (   R   (    (    R   t	   java_pathž   s    c         C   s<   t  i i d ƒ o t  i d Sn t  i i |  i d ƒ Sd  S(   Nt   PLAY_PID_PATHs
   server.pid(   R   R6   R7   R   R   R   (   R   (    (    R   t   pid_path¤   s    c         C   sd   t  i i d ƒ p t  i i |  i d ƒ } n t  i d } t  i i | ƒ p t  i | ƒ n | S(   Nt   PLAY_LOG_PATHt   logs(	   R   R6   R7   R   R   R   t   log_pathR   t   mkdir(   R   R[   (    (    R   R[   ª   s    c         C   sˆ   |  i d ƒ |  _ yB t i t i t i ƒ } | i d t |  i ƒ f ƒ | i	 ƒ  Wn- t i
 j
 o } d |  i GHd |  _ n Xd  S(   Ns	   jpda.ports	   127.0.0.1sI   JPDA port %s is already used. Will try to use any free port for debuggingi    (   R   R   R   t   sockett   AF_INETt   SOCK_STREAMt   st   bindt   intt   closet   errorR;   (   R   R;   R`   (    (    R   t
   check_jpda³   s    s   play.server.ServerR   c         C   s‹  t  } x( | D]  }	 |	 i d ƒ o
 t } q q W| p1 |  i d ƒ } | o | | i	 d ƒ } qi n | d  j o |  i
 ƒ  } n |  i d ƒ |  _ |  i d ƒ }
 |
 d j o | i d ƒ n |  i d ƒ } | d	 j o] t i i |  i d
 | ƒ } t i i | ƒ o+ d | GH| i d ƒ | i d | ƒ q>n |  i ƒ  d |  i ƒ  g | d | d |  i d |  i d | g | } | S(   Ns   -Xms
   jvm.memoryt    s	   jpda.ports   application.modet   prods   -servers   java.policyR   R   s   ~ using policy file "%s"s   -Djava.security.managers   -Djava.security.policy==%ss   -javaagent:%ss
   -classpaths   -Dapplication.path=%ss   -Dplay.id=%sR
   (   t   Falset   memory_in_argst	   java_argst   argR+   t   TrueR   R   t   memoryR9   RS   R   R   t   application_modeR,   t   java_policyR   R   R   t
   policyFileR   RV   RR   R   t	   classNamet   argst   java_cmd(   R   Rj   RS   Rq   Rr   Rs   Rm   Ro   Ri   Rk   Rn   Rp   (    (    R   Rs   ½   s0     	I(   R   R   t   __doc__Rh   R   R   R   R#   R'   R1   R<   RJ   R8   RQ   RR   RS   RV   RX   R[   Re   R   Rs   (    (    (    R   R	      s$    																
R   c           B   sD   t  Z h  d d <d d <Z d „  Z d „  Z d „  Z d „  Z RS(	   Ns	   http.portt   9000s	   jpda.portt   8000c         C   sÎ   | |  _ t | ƒ } t ƒ  |  _ xœ | D]” } | i	 ƒ  } t | ƒ d j o q( n | d d j o q( n | i d ƒ d j o q( n | i d ƒ d i ƒ  |  i | i d ƒ d i ƒ  <q( W| i ƒ  d  S(   Ni    t   !t   #t   =iÿÿÿÿi   (   Rw   Rx   (   t   frameworkIdR   R
   t   filet   filepathR@   t   dictt   entriest   linet   stript   linedeft   lent   findR9   t   lstript   rstripRc   (   R   R|   Rz   R@   R   R   (    (    R   R   â   s    	 7c         C   sv   d |  i d | } | |  i j o |  i | Sn | |  i j o |  i | Sn | |  i j o |  i | Sn d S(   Nt   %t   .R   (   R   R
   R!   t   idkeyR~   t   DEFAULTS(   R   R!   Rˆ   (    (    R   R    ñ   s    c         C   s»   g  } xM |  i i ƒ  D]< \ } } | i d |  i d | ƒ o | i	 | ƒ q q Wx^ |  i i ƒ  D]M \ } } | i | ƒ o1 t
 | d |  i d | ƒ o | i	 | ƒ qf qf W| S(   NR†   R‡   (   t   resultR   R~   t   itemsR!   R   R+   R
   t   queryR,   t   hasKey(   R   RŒ   R   RŠ   R!   (    (    R   R0   û   s      0c         C   s=   g  } x0 |  i | ƒ D] } | i |  i i | ƒ ƒ q W| S(   N(   RŠ   R   R0   RŒ   R!   R,   R~   R    (   R   RŒ   RŠ   R!   (    (    R   R"     s
     (   R   R   R‰   R   R    R0   R"   (    (    (    R   R   Û   s
   		
	c         C   s)   y |  i | ƒ } t SWn t Sn Xd  S(   N(   t   arrt   indext   eltt   iRl   Rh   (   RŽ   R   R‘   (    (    R   R     s
    (   R   R   t   os.patht   reRH   R]   t	   ExceptionR    R	   R   R   (	   R   R]   R	   R   R“   R   RH   R   R    (    (    R   t   ?   s   				Î7