Changeset 1684

Show
Ignore:
Timestamp:
07/06/08 20:38:23 (6 months ago)
Author:
mikey
Message:

use star-0.8.0

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • framework/trunk/build.xml

    r1682 r1684  
    11<?xml version="1.0" encoding="utf-8"?> 
    22<project name="stubbles" default="main"> 
    3   <property file="build.properties" /> 
     3  <property file="build.properties"/> 
    44  <property name="build.base.dir" value="${stubbles.base.dir}/build" override="true"/> 
    55  <property name="build.report.dir" value="${stubbles.base.dir}/docs/reports" override="true"/> 
     
    1212  </path> 
    1313 
    14   <taskdef name="minifyJs" classname="stubJsMinTask" classpathref="phing.tasks.classpath" /> 
     14  <taskdef name="minifyJs" classname="stubJsMinTask" classpathref="phing.tasks.classpath"/> 
    1515  <taskdef name="buildStar" classname="stubStarWriterTask" classpathref="phing.tasks.classpath"/> 
    1616  <taskdef name="initConfig" classname="stubInitConfigTask" classpath="phing.tasks.classpath"/> 
     
    6969    </copy> 
    7070 
    71     <mkdir dir="${build.src.dir}/lib" /> 
     71    <mkdir dir="${build.src.dir}/lib"/> 
    7272    <copy file="${stubbles.base.dir}/lib/xjconf.star" tofile="${build.src.dir}/lib/xjconf.star"/> 
    7373 
     
    165165         author="Stubbles Development Team &lt;http://stubbles.net&gt;" 
    166166         copyright="Stubbles Development Team" 
    167          preface="&lt;?php require 'star://' . __FILE__ . '?org::stubbles::star::StarClassRegistry'; ?&gt;${stubClassLoader}" 
     167         preface="${stubClassLoader}" 
    168168         baseSrcPath="${stubbles.base.dir}/src/main"> 
    169169      <starDecorator starId="xsl/master.xsl" dir="${stubbles.base.dir}/src/main/resources/build" class="MasterXslStarFile"/> 
     
    176176        <exclude name="**/org/stubbles/phing/**"/> 
    177177        <exclude name="**/org/stubbles/test/**"/> 
    178         <exclude name="**/stubClassLoader.php" /> 
     178        <exclude name="**/stubClassLoader.php"/> 
    179179        <exclude name="**/todo/**"/> 
    180180        <exclude name="resources/phing/**"/> 
     
    188188         author="Stubbles Development Team &lt;http://stubbles.net&gt;" 
    189189         copyright="Stubbles Development Team" 
    190          preface="&lt;?php require 'star://' . __FILE__ . '?org::stubbles::star::StarClassRegistry'; ?&gt;${stubClassLoader}" 
     190         preface="${stubClassLoader}" 
    191191         baseSrcPath="${stubbles.base.dir}/src/main"> 
    192192      <fileset dir="${stubbles.base.dir}/src/main"> 
     
    194194        <include name="**/net/stubbles/php/string/**/*.php"/> 
    195195        <include name="**/net/stubbles/reflection/**/*.php"/> 
    196         <include name="**/org/stubbles/star/StarClassRegistry.php"/> 
    197196      </fileset> 
    198197    </buildStar> 
     
    261260      <fileset dir="${stubbles.base.dir}/src/main"> 
    262261        <include name="**/net/stubbles/util/xjconf/**/*.php"/> 
    263         <include name="resources/xjconf/**" /> 
     262        <include name="resources/xjconf/**"/> 
    264263      </fileset> 
    265264    </buildStar> 
     
    271270         copyright="Stubbles Development Team" 
    272271         baseSrcPath="${stubbles.base.dir}/src/main"> 
    273       <starDecorator starId="xsl/master.xsl" dir="${stubbles.base.dir}/src/main/resources/build" class="MasterXslStarFile" /> 
     272      <starDecorator starId="xsl/master.xsl" dir="${stubbles.base.dir}/src/main/resources/build" class="MasterXslStarFile"/> 
    274273      <fileset dir="${stubbles.base.dir}/src/main"> 
    275274        <include name="**/net/stubbles/ipo/**/*.php"/> 
    276275        <include name="**/net/stubbles/service/**/*.php"/> 
    277276        <include name="**/net/stubbles/websites/**/*.php"/> 
    278         <include name="resources/ipo/**" /> 
    279         <include name="resources/xsl/**" /> 
     277        <include name="resources/ipo/**"/> 
     278        <include name="resources/xsl/**"/> 
    280279      </fileset> 
    281280    </buildStar> 
     
    308307  <target name="setup-examples" description="Setup the included examples"> 
    309308    <phing phingfile="${stubbles.base.dir}/examples/build.xml" inheritAll="false"> 
    310       <property name="javascript.srcpath" value="./src/main/javascript" /> 
     309      <property name="javascript.srcpath" value="./src/main/javascript"/> 
    311310    </phing> 
    312311  </target> 
     
    405404    <delete> 
    406405      <fileset dir="projects"> 
    407         <include name="**/cache/**" /> 
     406        <include name="**/cache/**"/> 
    408407      </fileset> 
    409408    </delete> 
  • framework/trunk/lib/starWriter.php

    r1682 r1684  
    265265    // intentionally left empty 
    266266} 
     267?><?php 
     268/** 
     269 * Class registry for mapping of classes to star files. 
     270 * 
     271 * @author   Frank Kleine <mikey@stubbles.net> 
     272 * @author   Stephan Schmidt <schst@stubbles.net> 
     273 * @package  star 
     274 */ 
     275/** 
     276 * Class registry for mapping of classes to star files. 
     277 * 
     278 * @package  star 
     279 */ 
     280class StarClassRegistry 
     281{ 
     282    /** 
     283     * switch whether init has been done or not 
     284     * 
     285     * @var  bool 
     286     */ 
     287    protected static $initDone  = false; 
     288    /** 
     289     * path to star files 
     290     * 
     291     * @var  string 
     292     */ 
     293    protected static $libPathes = array(); 
     294    /** 
     295     * list of classes and the file where they are in 
     296     * 
     297     * @var  array<string,string> 
     298     */ 
     299    protected static $classes   = array(); 
     300    /** 
     301     * list of files and the classes they contain 
     302     * 
     303     * @var  array<string,array<string>> 
     304     */ 
     305    protected static $files     = array(); 
     306 
     307    /** 
     308     * set the path to the star files 
     309     * 
     310     * @param  string  $libPath    path to lib files 
     311     * @param  bool    $recursive  optional  recurse into sub directories of lib path 
     312     */ 
     313    public static function addLibPath($libPath, $recursive = true) 
     314    { 
     315        self::$libPathes[$libPath] = $recursive; 
     316        self::$initDone            = false; 
     317    } 
     318 
     319    /** 
     320     * returns the file where the given classes is stored in 
     321     * 
     322     * @param   string  $fqClassName  the full qualified class name 
     323     * @return  string 
     324     */ 
     325    public static function getFileForClass($fqClassName) 
     326    { 
     327        if (false === self::$initDone) { 
     328            self::init(); 
     329        } 
     330         
     331        if (isset(self::$classes[$fqClassName]) === true) { 
     332            return self::$classes[$fqClassName]; 
     333        } 
     334 
     335        return null; 
     336    } 
     337 
     338    /** 
     339     * returns the uri for the given class 
     340     * 
     341     * @param   string  $fqClassName  the full qualified class name 
     342     * @return  string 
     343     */ 
     344    public static function getUriForClass($fqClassName) 
     345    { 
     346        if (false === self::$initDone) { 
     347            self::init(); 
     348        } 
     349         
     350        if (isset(self::$classes[$fqClassName]) === true) { 
     351            return 'star://' . self::$classes[$fqClassName] . '?' . $fqClassName; 
     352        } 
     353 
     354        return null; 
     355    } 
     356 
     357    /** 
     358     * returns all uris for a given resource 
     359     * 
     360     * @param   string  $fileName  file name of resource 
     361     * @return  array 
     362     */ 
     363    public static function getUrisForResource($resource) 
     364    { 
     365        if (false === self::$initDone) { 
     366            self::init(); 
     367        } 
     368         
     369        $uris = array(); 
     370        foreach (self::$files as $file => $contents) { 
     371            foreach ($contents as $content) { 
     372                if ($content === $resource) { 
     373                    $uris[] = 'star://' . $file . '?' . $resource; 
     374                    continue 2; 
     375                } 
     376            } 
     377        } 
     378 
     379        return $uris; 
     380    } 
     381 
     382    /** 
     383     * returns a list of all classes within given file 
     384     * 
     385     * @param   string  $file  name of file 
     386     * @return  array 
     387     */ 
     388    public static function getClassNamesFromFile($file) 
     389    { 
     390        if (false === self::$initDone) { 
     391            self::init(); 
     392        } 
     393         
     394        if (isset(self::$files[$file]) === true) { 
     395            return self::$files[$file]; 
     396        } 
     397 
     398        return array(); 
     399    } 
     400 
     401    /** 
     402     * returns a list of all classes 
     403     * 
     404     * @return  string 
     405     */ 
     406    public static function getClasses() 
     407    { 
     408        return array_keys(self::$classes); 
     409    } 
     410 
     411    /** 
     412     * initialize the class registry 
     413     */ 
     414    protected static function init() 
     415    { 
     416        if (true === self::$initDone) { 
     417            return; 
     418        } 
     419 
     420        if (count(self::$libPathes) == 0) { 
     421            self::$libPathes[dirname(__FILE__)] = true; 
     422        } 
     423 
     424        foreach (self::$libPathes as $libPath => $recursive) { 
     425            if (file_exists($libPath . '/.cache') === true) { 
     426                $cache = unserialize(file_get_contents($libPath . '/.cache')); 
     427                self::$files    = array_merge(self::$files, $cache['files']); 
     428                self::$classes  = array_merge(self::$classes, $cache['classes']); 
     429                self::$initDone = true; 
     430                continue; 
     431            } 
     432 
     433            if (true === $recursive) { 
     434                $dirIt = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($libPath)); 
     435            } else { 
     436                $dirIt = new DirectoryIterator($libPath); 
     437            } 
     438 
     439            $cache['files']   = array(); 
     440            $cache['classes'] = array(); 
     441            foreach ($dirIt as $file) { 
     442                if ($file->isFile() === false || substr($file->getPathname(), -14) === 'starReader.php' || (substr($file->getPathname(), -5) !== '.star' && substr($file->getPathname(), -4) !== '.php')) { 
     443                    continue; 
     444                } 
     445 
     446                $archiveData = StarStreamWrapper::acquire($file->getPathname()); 
     447                if (empty($archiveData) == true) { 
     448                    continue; 
     449                } 
     450 
     451                $classes = array_keys($archiveData['index']); 
     452                self::$files[$file->getPathname()]    = $classes; 
     453                $cache['files'][$file->getPathname()] = $classes; 
     454 
     455                foreach (array_keys($archiveData['index']) as $fqClassName) { 
     456                    self::$classes[$fqClassName]    = $file->getPathname(); 
     457                    $cache['classes'][$fqClassName] = $file->getPathname(); 
     458                } 
     459            } 
     460 
     461            $cacheFile = $libPath . '/.cache'; 
     462            if (is_writable($libPath) === false && is_writable($cacheFile) === false) { 
     463                throw new StarException("Unable to write starRegistry cache file to {$cacheFile}."); 
     464            } 
     465             
     466            file_put_contents($cacheFile, serialize($cache)); 
     467            self::$initDone = true; 
     468        } 
     469    } 
     470} 
    267471?><?php StarStreamWrapper::register(); ?><?php 
    268472require 'star://' . __FILE__ . '?org::stubbles::star::StarFile'; 
    269473require 'star://' . __FILE__ . '?org::stubbles::star::StarWriter'; 
    270474require 'star://' . __FILE__ . '?org::stubbles::star::StarArchive'; 
    271 require 'star://' . __FILE__ . '?org::stubbles::star::StarClassRegistry'; 
    272475require 'star://' . __FILE__ . '?org::stubbles::star::StarConsole'; 
    273 ?><?php __halt_compiler();star520080706190307org::stubbles::star::StarFile27758163org::stubbles::star::StarWriter144610938org::stubbles::star::StarArchive680012384org::stubbles::star::StarClassRegistry640919184org::stubbles::star::StarConsole795825593<?php 
     476?><?php __halt_compiler();star420080706203732org::stubbles::star::StarFile277513865org::stubbles::star::StarWriter144616640org::stubbles::star::StarArchive709918086org::stubbles::star::StarConsole795825185<?php 
    274477/** 
    275478 * Class for very simple file handling. 
     
    594797        if (strlen($this->preface) > 0) { 
    595798            $preFace = ''; 
    596             if (true == $this->prependStreamWrapper) { 
     799            if (true === $this->prependStreamWrapper) { 
    597800                $dirname = str_replace('star://', '', dirname(__FILE__)); 
    598                 $preFace .= file_get_contents($dirname . '/StarStreamWrapper.php'); 
    599                 $preFace .= file_get_contents($dirname . '/StarException.php'); 
    600                 $preFace .= "<?php StarStreamWrapper::register(); ?>"; 
     801                if (file_exists($dirname . '/starReader.php') === true) { 
     802                    $preFace .= file_get_contents($dirname . '/starReader.php'); 
     803                } else { 
     804                    $preFace .= file_get_contents($dirname . '/StarStreamWrapper.php'); 
     805                    $preFace .= file_get_contents($dirname . '/StarException.php'); 
     806                    $preFace .= file_get_contents($dirname . '/StarClassRegistry.php'); 
     807                    $preFace .= "<?php StarStreamWrapper::register(); ?>"; 
     808                } 
    601809            } 
    602810            $preFace .= trim($this->preface) . "<?php __halt_compiler();"; 
     
    692900                                  "\0" 
    693901               ); 
    694     } 
    695 } 
    696 ?><?php 
    697 /** 
    698  * Class registry for mapping of classes to star files. 
    699  * 
    700  * @author   Frank Kleine <mikey@stubbles.net> 
    701  * @author   Stephan Schmidt <schst@stubbles.net> 
    702  * @package  star 
    703  */ 
    704 /** 
    705  * Class registry for mapping of classes to star files. 
    706  * 
    707  * @package  star 
    708  */ 
    709 class StarClassRegistry 
    710 { 
    711     /** 
    712      * switch whether init has been done or not 
    713      * 
    714      * @var  bool 
    715      */ 
    716     protected static $initDone  = false; 
    717     /** 
    718      * path to star files 
    719      * 
    720      * @var  string 
    721      */ 
    722     protected static $libPathes = array(); 
    723     /** 
    724      * list of classes and the file where they are in 
    725      * 
    726      * @var  array<string,string> 
    727      */ 
    728     protected static $classes   = array(); 
    729     /** 
    730      * list of files and the classes they contain 
    731      * 
    732      * @var  array<string,array<string>> 
    733      */ 
    734     protected static $files     = array(); 
    735  
    736     /** 
    737      * set the path to the star files 
    738      * 
    739      * @param  string  $libPath    path to lib files 
    740      * @param  bool    $recursive  optional  recurse into sub directories of lib path 
    741      */ 
    742     public static function addLibPath($libPath, $recursive = true) 
    743     { 
    744         self::$libPathes[$libPath] = $recursive; 
    745         self::$initDone            = false; 
    746     } 
    747  
    748     /** 
    749      * returns the file where the given classes is stored in 
    750      * 
    751      * @param   string  $fqClassName  the full qualified class name 
    752      * @return  string 
    753      */ 
    754     public static function getFileForClass($fqClassName) 
    755     { 
    756         if (false === self::$initDone) { 
    757             self::init(); 
    758         } 
    759          
    760         if (isset(self::$classes[$fqClassName]) === true) { 
    761             return self::$classes[$fqClassName]; 
    762         } 
    763  
    764         return null; 
    765     } 
    766  
    767     /** 
    768      * returns the uri for the given class 
    769      * 
    770      * @param   string  $fqClassName  the full qualified class name 
    771      * @return  string 
    772      */ 
    773     public static function getUriForClass($fqClassName) 
    774     { 
    775         if (false === self::$initDone) { 
    776             self::init(); 
    777         } 
    778          
    779         if (isset(self::$classes[$fqClassName]) === true) { 
    780             return 'star://' . self::$classes[$fqClassName] . '?' . $fqClassName; 
    781         } 
    782  
    783         return null; 
    784     } 
    785  
    786     /** 
    787      * returns all uris for a given resource 
    788      * 
    789      * @param   string  $fileName  file name of resource 
    790      * @return  array 
    791      */ 
    792     public static function getUrisForResource($resource) 
    793     { 
    794         if (false === self::$initDone) { 
    795             self::init(); 
    796         } 
    797          
    798         $uris = array(); 
    799         foreach (self::$files as $file => $contents) { 
    800             foreach ($contents as $content) { 
    801                 if ($content === $resource) { 
    802                     $uris[] = 'star://' . $file . '?' . $resource; 
    803                     continue 2; 
    804                 } 
    805             } 
    806         } 
    807  
    808         return $uris; 
    809     } 
    810  
    811     /** 
    812      * returns a list of all classes within given file 
    813      * 
    814      * @param   string  $file  name of file 
    815      * @return  array 
    816      */ 
    817     public static function getClassNamesFromFile($file) 
    818     { 
    819         if (false === self::$initDone) { 
    820             self::init(); 
    821         } 
    822          
    823         if (isset(self::$files[$file]) === true) { 
    824             return self::$files[$file]; 
    825         } 
    826  
    827         return array(); 
    828     } 
    829  
    830     /** 
    831      * returns a list of all classes 
    832      * 
    833      * @return  string 
    834      */ 
    835     public static function getClasses() 
    836     { 
    837         return array_keys(self::$classes); 
    838     } 
    839  
    840     /** 
    841      * initialize the class registry 
    842      */ 
    843     protected static function init() 
    844     { 
    845         if (true === self::$initDone) { 
    846             return; 
    847         } 
    848  
    849         if (count(self::$libPathes) == 0) { 
    850             if (substr(__FILE__, 0, 7) === 'star://') { 
    851                 $path = str_replace('star://', '', str_replace('?org::stubbles::star::StarClassRegistry', '', __FILE__)); 
    852                 self::$libPathes[dirname($path)] = true; 
    853             } elseif (class_exists('stubConfig', false) === true) { 
    854                 self::$libPathes[stubConfig::getLibPath()] = true; 
    855             } else { 
    856                 self::$libPathes[realpath(getcwd() . '/../lib')] = true; 
    857             } 
    858         } 
    859  
    860         foreach (self::$libPathes as $libPath => $recursive) { 
    861             if (file_exists($libPath . '/.cache') === true) { 
    862                 $cache = unserialize(file_get_contents($libPath . '/.cache')); 
    863                 self::$files    = array_merge(self::$files, $cache['files']); 
    864                 self::$classes  = array_merge(self::$classes, $cache['classes']); 
    865                 self::$initDone = true; 
    866                 continue; 
    867             } 
    868  
    869             if (true === $recursive) { 
    870                 $dirIt = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($libPath)); 
    871             } else { 
    872                 $dirIt = new DirectoryIterator($libPath); 
    873             } 
    874  
    875             $cache['files']   = array(); 
    876             $cache['classes'] = array(); 
    877             foreach ($dirIt as $file) { 
    878                 if ($file->isFile() === false || substr($file->getPathname(), -14) === 'starReader.php' || (substr($file->getPathname(), -5) !== '.star' && substr($file->getPathname(), -4) !== '.php')) { 
    879                     continue; 
    880                 } 
    881  
    882                 $archiveData = StarStreamWrapper::acquire($file->getPathname()); 
    883                 if (empty($archiveData) == true) { 
    884                     continue; 
    885                 } 
    886  
    887                 $classes = array_keys($archiveData['index']); 
    888                 self::$files[$file->getPathname()]    = $classes; 
    889                 $cache['files'][$file->getPathname()] = $classes; 
    890  
    891                 foreach (array_keys($archiveData['index']) as $fqClassName) { 
    892                     self::$classes[$fqClassName]    = $file->getPathname(); 
    893                     $cache['classes'][$fqClassName] = $file->getPathname(); 
    894                 } 
    895             } 
    896  
    897             $cacheFile = $libPath . '/.cache'; 
    898             if (is_writable($libPath) === false && is_writable($cacheFile) === false) { 
    899                 throw new StarException("Unable to write starRegistry cache file to {$cacheFile}."); 
    900             } 
    901              
    902             file_put_contents($cacheFile, serialize($cache)); 
    903             self::$initDone = true; 
    904         } 
    905902    } 
    906903} 
     
    11351132title => Stubbles Archive Writer 
    11361133package => org::stubbles::star 
    1137 version => 0.7.1 
     1134version => 0.8.0 
    11381135author => Stubbles Development Team <http://stubbles.net> 
    11391136copyright = © 2007-2008 Stubbles Development Team