<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Le 15/05/2014 23:45, aurélien campéas a
      écrit :<br>
    </div>
    <blockquote
cite="mid:CAPfKyyp=zWV0=nB7v490s8oUjUeFnyXXO_1ORtSmbpLe8nxF0A@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div><br>
          <br>
          <div class="gmail_quote">2014-05-15 21:03 GMT+02:00 Christophe
            de Vienne <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:christophe@unlish.com" target="_blank">christophe@unlish.com</a>></span>:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              Le 15/05/2014 09:49, Aurélien Campéas a écrit :<br>
              <div>> On 15/05/2014 09:25, Denis Laxalde wrote:<br>
                >> aurélien campéas a écrit :<br>
                >>> Whatever the future holds for _cw, I'd very
                much like it were re-cast as<br>
                >>> just 'cw'.<br>
                >> At this point, using a descriptive name
                wouldn't hurt.<br>
                > Yes it would. "cubicweb_god_object" is descriptive
                but too long.<br>
                <br>
              </div>
              It depends : it you want to keep the magic "cw" object,
              yes it would hurt.<br>
            </blockquote>
            <div><br>
            </div>
            <div>I think such an object has some merits, if not abused
              or confused.<br>
            </div>
            <div>We don't like the "bad" impredictable magic. We're
              fixing this.<br>
              <br>
            </div>
            It is only a "root" object and as such has a *few* *fixed*
            set of important<br>
            high-level objects (and masters of the cubicweb universe ...
            of discourse).<br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    This description corresponds to what I named "self.appli".<br>
    <br>
    <blockquote
cite="mid:CAPfKyyp=zWV0=nB7v490s8oUjUeFnyXXO_1ORtSmbpLe8nxF0A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div class="gmail_quote"><br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <br>
              But if we split cw, it would not :<br>
              <br>
              self.appli -> The application, giving access to the
              vreg and a few<br>
              instance-related api (build_url for example).<br>
              self.cnx -> the connexion to the repo (data access,
              transaction<br>
              management...)<br>
              self.orm or self.dbsession -> the orm related apis,
              given that we<br>
              removed 'get_entity' from rset.<br>
              self.request -> the http request, for controllers<br>
            </blockquote>
            <div><br>
            </div>
            <div>I imagine:<br>
              <br>
            </div>
            <div class="gmail_quote">cw.config<br>
              cw.reg<br>
              cw.repo<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Yes<br>
    <br>
    <blockquote
cite="mid:CAPfKyyp=zWV0=nB7v490s8oUjUeFnyXXO_1ORtSmbpLe8nxF0A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div class="gmail_quote">
            <div class="gmail_quote">cw.cnx ?<br>
            </div>
            <div class="gmail_quote">cw.req ?<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    I would not.<br>
    <br>
    <blockquote
cite="mid:CAPfKyyp=zWV0=nB7v490s8oUjUeFnyXXO_1ORtSmbpLe8nxF0A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div class="gmail_quote">
            <div class="gmail_quote">
            </div>
            "cnx" and "req" should probably be fed to their workplaces <br>
            as standard leftmost parameters in the concerned protocol <br>
            entry points imho<br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    If I understand correctly, you suggest not having a cw.cnx or a
    cw.req. Which I totally agree with.<br>
    <br>
    <blockquote
cite="mid:CAPfKyyp=zWV0=nB7v490s8oUjUeFnyXXO_1ORtSmbpLe8nxF0A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div class="gmail_quote">
          </div>
          <div class="gmail_quote"><br>
          </div>
        </div>
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <br>
              Not all appobjects would have all these attributes :<br>
            </blockquote>
            <div><br>
            </div>
            <div>This is a difficult question. I currently believe we
              should always<br>
            </div>
            <div>have .config and .reg, a .repo then, and possibly .cnx
              and .req.<br>
              <br>
            </div>
            <div>We should find a way to encode this without creating
              type errors<br>
              though. Two ideas:<br>
              <br>
            </div>
            <div>* noting that there is likely an order of likely
              appearance in<br>
            </div>
            <div>  the application life cycle:<br>
            </div>
            <div>      config and reg, then repo, then cnx or req<br>
            </div>
            <div> <br>
            </div>
            <div>* using "terminator"s (or NullObjects) to avoid
              AttributeError<br>
            </div>
            <div>  TypeErrors ... i'm unsure this path is safe<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    I don't like it either.<br>
    <br>
    <blockquote
cite="mid:CAPfKyyp=zWV0=nB7v490s8oUjUeFnyXXO_1ORtSmbpLe8nxF0A@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>* having a hierachy of classes such as CWConfig ->
              CWApp -> CWRepoApp<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    Please don't. Imo this kind of hierarchy brings complication and
    confusion for little benefit, as we never know for sure what we can
    access by just reading the attribute name.<br>
    <br>
    The most simple solution is to separate in 2 or 3 attributes/params.<br>
    - cw for config, reg and repo, because it is all the instance-wide
    objects<br>
    - cnx when a connection but no request is needed.<br>
    - request when a request is needed.<br>
    <br>
    The request object could have a 'cnx' attribute.<br>
    We could even have a 'cw' attribute on cnx, removing the need for a
    cw argument when calling appobjects.<br>
    <br>
    <br>
    <br>
    Christophe<br>
  </body>
</html>