Example #1
0
 /**
  * Main
  *
  * Exitcodes used:
  * <ul>
  *   <li>127: Archive referenced in -xar [...] does not exist</li>
  *   <li>126: No manifest or manifest does not have a main-class</li>
  * </ul>
  *
  * @see     http://tldp.org/LDP/abs/html/exitcodes.html
  * @param   string[] args
  * @return  int
  */
 public static function main(array $args)
 {
     // Open archive
     $f = new File(array_shift($args));
     if (!$f->exists()) {
         Console::$err->writeLine('*** Cannot find archive ' . $f->getURI());
         return 127;
     }
     // Register class loader
     $cl = ClassLoader::registerLoader(new ArchiveClassLoader(new Archive($f)));
     if (!$cl->providesResource(self::MANIFEST)) {
         Console::$err->writeLine('*** Archive ' . $f->getURI() . ' does not have a manifest');
         return 126;
     }
     // Load manifest
     $pr = Properties::fromString($cl->getResource(self::MANIFEST));
     if (NULL === ($class = $pr->readString('archive', 'main-class', NULL))) {
         Console::$err->writeLine('*** Archive ' . $f->getURI() . '\'s manifest does not have a main class');
         return 126;
     }
     // Run main()
     try {
         return XPClass::forName($class, $cl)->getMethod('main')->invoke(NULL, array($args));
     } catch (TargetInvocationException $e) {
         throw $e->getCause();
     }
 }
 public static function startApplicationServer()
 {
     // Arguments to server process
     $args = array('debugServerProtocolToFile' => NULL);
     // Start server process
     self::$serverProcess = Runtime::getInstance()->newInstance(NULL, 'class', 'net.xp_framework.unittest.remote.TestingServer', array_values($args));
     self::$serverProcess->in->close();
     // Check if startup succeeded
     $status = self::$serverProcess->out->readLine();
     if (2 != sscanf($status, '+ Service %[0-9.]:%d', self::$bindAddress[0], self::$bindAddress[1])) {
         try {
             self::shutdownApplicationServer();
         } catch (IllegalStateException $e) {
             $status .= $e->getMessage();
         }
         throw new PrerequisitesNotMetError('Cannot start EASC server: ' . $status, NULL);
     }
     // Add classloader with CalculatorBean client classes
     $a = XPClass::forName(xp::nameOf(__CLASS__))->getPackage()->getPackage('deploy')->getResourceAsStream('beans.test.CalculatorBean.xar');
     self::$clientClassesLoader = ClassLoader::registerLoader(new ArchiveClassLoader(new Archive($a)));
 }
 /**
  * Register XAR
  *
  * @param  io.File $file
  * @return lang.IClassLoader
  */
 protected function registerXar($file)
 {
     return ClassLoader::registerLoader(new ArchiveClassLoader(new Archive($file)));
 }
Example #4
0
 /**
  * Setup this test. Registeres class loaders deleates for the 
  * afforementioned XARs
  *
  * @return void
  */
 public function setUp()
 {
     $this->libraryLoader = ClassLoader::registerLoader(new ArchiveClassLoader(new Archive((new XPClass(self::class))->getPackage()->getPackage('lib')->getResourceAsStream('three-and-four.xar'))));
 }
 /**
  * Setup this test. Registeres class loaders deleates for the 
  * afforementioned XARs
  *
  */
 public function setUp()
 {
     $this->libraryLoader = ClassLoader::registerLoader(new ArchiveClassLoader(new Archive(XPClass::forName(xp::nameOf(__CLASS__))->getPackage()->getPackage('lib')->getResourceAsStream('three-and-four.xar'))));
 }
 /**
  * Sets up class loader
  */
 public function setUp()
 {
     $this->cl = ClassLoader::registerLoader(new ArchiveClassLoader(new Archive($this->getClass()->getPackage()->getPackage('lib')->getResourceAsStream('three-and-four.xar'))));
 }
Example #7
0
    fputs(STDERR, 'Uncaught exception: ' . xp::stringOf($e));
    exit(0xff);
}
// }}}
// Verify SAPI
if ('cgi' === PHP_SAPI || 'cgi-fcgi' === PHP_SAPI) {
    ini_set('html_errors', 0);
    define('STDIN', fopen('php://stdin', 'rb'));
    define('STDOUT', fopen('php://stdout', 'wb'));
    define('STDERR', fopen('php://stderr', 'wb'));
} else {
    if ('cli' !== PHP_SAPI) {
        trigger_error('[bootstrap] Cannot be run under ' . PHP_SAPI . ' SAPI', E_USER_ERROR);
        exit(0x3d);
    }
}
if (!(include __DIR__ . DIRECTORY_SEPARATOR . 'lang.base.php')) {
    trigger_error('[bootstrap] Cannot determine boot class path', E_USER_ERROR);
    exit(0x3d);
}
$home = getenv('HOME');
list($use, $include) = explode(PATH_SEPARATOR . PATH_SEPARATOR, get_include_path());
bootstrap(scanpath(explode(PATH_SEPARATOR, substr($use, 2) . PATH_SEPARATOR . '.'), $home) . $include);
uses('util.cmd.ParamString', 'util.cmd.Console', 'util.Properties');
ini_set('error_prepend_string', EPREPEND_IDENTIFIER);
set_exception_handler('__except');
ob_start('__output');
$cl = ClassLoader::registerLoader(new ArchiveClassLoader($argv[1]));
$pr = Properties::fromString($cl->getResource('META-INF/manifest.ini'));
array_shift($_SERVER['argv']);
exit(XPClass::forName($pr->readString('archive', 'main-class'), $cl)->getMethod('main')->invoke(NULL, array(array_slice($argv, 2))));