Changeset 88:8fb582bf662e in iovar


Ignore:
Timestamp:
Feb 18, 2017, 6:37:31 AM (20 months ago)
Author:
Shawn Wilson <shawn@…>
Branch:
default
Phase:
public
Message:

saw_021817_1 - Resource now supports auto-exec and auto ./index.

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • CHANGELOG

    r87 r88  
    22Copyright (C) 2011-2015 Lannocc Technologies
    33@%@~LICENSE~@%@
     4
     5saw_021817_1 - Resource now supports auto-exec and auto ./index.
    46
    57saw_020817_1 - #17: Form2XML working again, tested in conjunction with idfree Authentication.
  • src/win/iovar/web/Default.java

    r76 r88  
    166166            boolean handled = false;
    167167           
    168             if (autoExec && resource instanceof win.iovar.web.dev.trans.File)
    169             {
    170                 final win.iovar.web.dev.trans.File file = (win.iovar.web.dev.trans.File) resource;
    171                
    172                 if (file.directory ())
     168            if (autoExec)
     169            {
     170                if (! Boolean.FALSE.equals (resource.directory ()))
    173171                {
    174172                    handled = true;
    175                     Log.debug ("auto-exec enabled and file is a directory...");
     173                    Log.debug ("auto-exec enabled and resource is (potentially) a directory...");
    176174                    //doPost (req, resp);
    177175                    Interactive.exec (req, resp, context, path + "/index");
    178176                }
    179                 else if (file.executable ())
     177                else if (! Boolean.FALSE.equals (resource.executable ()))
    180178                {
    181179                    handled = true;
    182                     Log.debug ("auto-exec enabled and file is executable...");
     180                    Log.debug ("auto-exec enabled and resource is (potentially) executable...");
    183181                    //doPost (req, resp);
    184182                    Interactive.exec (req, resp, context, path);
     
    290288            // FIXME: we're checking for EXT_PARAM_SESSION here because otherwise an autoexec request
    291289            //          hangs the servlet container
    292             if (! params.containsKey (Shell.EXT_PARAM_SESSION) && autoExec && resource instanceof win.iovar.web.dev.trans.File)
    293             {
    294                 final win.iovar.web.dev.trans.File file = (win.iovar.web.dev.trans.File) resource;
    295                
    296                 if (file.directory ())
     290            if (! params.containsKey (Shell.EXT_PARAM_SESSION) && autoExec)
     291            {
     292                if (resource.directory ())
    297293                {
    298294                    handled = true;
    299                     Log.debug ("auto-exec enabled and file is a directory...");
     295                    Log.debug ("auto-exec enabled and resource is a directory...");
    300296                    //doPost (req, resp);
    301297                    Interactive.exec (req, resp, context, path + "/index");
    302298                }
    303                 else if (file.executable ())
     299                else if (resource.executable ())
    304300                {
    305301                    handled = true;
    306                     Log.debug ("auto-exec enabled and file is executable...");
     302                    Log.debug ("auto-exec enabled and resource is executable...");
    307303                    //doPost (req, resp);
    308304                    Interactive.exec (req, resp, context, path);
  • src/win/iovar/web/dev/Transport.java

    r75 r88  
    119119    public abstract boolean exists () throws IOException;
    120120   
     121    /**
     122     * @return  <code>null</code> if possibly true or no determination made
     123     */
     124    public abstract Boolean directory () throws IOException;
     125       
     126    /**
     127     * @return  <code>null</code> if possibly true or no determination made
     128     */
     129    public abstract Boolean executable () throws IOException;
     130   
    121131    public abstract List<Legend> list (final User user) throws IOException;
    122132   
  • src/win/iovar/web/dev/trans/File.java

    r76 r88  
    374374    }
    375375   
    376     public boolean executable () throws IOException
     376    public Boolean executable () throws IOException
    377377    {
    378378        final java.io.File file = new java.io.File (path).getCanonicalFile ();
     
    380380    }
    381381   
    382     public boolean directory () throws IOException
     382    public Boolean directory () throws IOException
    383383    {
    384384        final java.io.File file = new java.io.File (path).getCanonicalFile ();
  • src/win/iovar/web/dev/trans/Http.java

    r76 r88  
    553553    }
    554554   
     555    public Boolean directory ()
     556    {
     557        // FIXME: we currently make no determination
     558        return null;
     559    }
     560   
     561    public Boolean executable ()
     562    {
     563        // FIXME: we currently make no determination
     564        return null;
     565    }
     566   
    555567    public List<Legend> list (final User user) throws IOException
    556568    {
  • src/win/iovar/web/dev/trans/Local.java

    r76 r88  
    7878    }
    7979   
     80    public Boolean directory () throws IOException
     81    {
     82        return new Http (this).directory ();
     83    }
     84   
     85    public Boolean executable () throws IOException
     86    {
     87        return new Http (this).executable ();
     88    }
     89   
    8090    public List<Legend> list (final User user) throws IOException
    8191    {
  • src/win/iovar/web/dev/trans/Resource.java

    r76 r88  
    267267        if (in!=null) try
    268268        {
    269             if (in.read ()==0x23 && in.read ()==0x21) // shebang magic number: #!
     269            int c0 = in.read ();
     270           
     271            if (c0 < 0) // no data
     272            {
     273                // FIXME: assuming emptiness to be a directory to enable /index auto-execing... check on this later
     274                Log.debug ("no data for this Resource request... looking for a ./index instead...");
     275               
     276                if (exists (context, path + "/index"))
     277                {
     278                    Log.debug ("found a matching ./index Resource to use");
     279                    in.close ();
     280                    in = context.getResourceAsStream (path + "/index");
     281                    if (in==null) in = getClass ().getResourceAsStream (path + "/index");
     282                    if (in!=null) c0 = in.read ();
     283                }
     284            }
     285           
     286            if (c0==0x23 && in.read ()==0x21) // shebang magic number: #!
    270287            {
    271288                final String session;
     
    388405    }
    389406   
     407    public Boolean directory () throws IOException
     408    {
     409        final InputStream in = get ();
     410        if (in==null) return Boolean.FALSE;
     411       
     412        try
     413        {
     414            if (in.read () < 0)
     415            {
     416                // resource exists but has no data... could be a directory
     417                return null;
     418            }
     419            else
     420            {
     421                return Boolean.FALSE;
     422            }
     423        }
     424        finally
     425        {
     426            in.close ();
     427        }
     428    }
     429   
     430    public Boolean executable () throws IOException
     431    {
     432        final InputStream in = get ();
     433        if (in==null) return Boolean.FALSE;
     434       
     435        // FIXME: look for hash-bang here?
     436        return null;
     437    }
     438   
    390439    public List<Legend> list (final User user) throws IOException
    391440    {
Note: See TracChangeset for help on using the changeset viewer.