Package org.jostraca

Examples of org.jostraca.Template


    iUserMessageHandler = (UserMessageHandler) Internal.null_arg( pUserMessageHandler );
  }


  public void process( Template pTemplate ) {
    Template tm = (Template) Internal.null_arg( pTemplate );
    processImpl( tm );
  }
View Full Code Here


      }
      if( !(to instanceof Template) ) {
        ProcessException.CODE_not_tm( "stage", getName(), "index", ""+tI, "object", String.valueOf(to) );
      }

      Template tm = (Template) to;
      process( tm );
    }

    // complete templates
    int numTH = iTemplateHandlers.size();
View Full Code Here

    PropertySet ps = new PropertySet();
    ps.set( Property.main_MakeBackup,        Standard.NO  );
    ps.set( Property.main_CompileCodeWriter, Standard.NO );
    ps.set( Property.main_ExecuteCodeWriter, Standard.NO );
    g.setCmdPropertySet( ps );
    Template tm = g.generate( FileUtil.findFile( "org/jostraca/test/simple.jtm" ) );

    // get full properties
    PropertySet mergedps = tm.getMergedPropertySet();
    assertEquals( ".jostraca", mergedps.get( Property.main_WorkFolder ) );

    // this is how you can get the canonical template script language name
    assertEquals( "java", tm.getCodeWriterLang() );

    // get the codewriter path
    assertEquals( ".jostraca\\SimpleWriter.java", tm.getCodeWriterPath().toString() );
   
    // get the codewriter class file / executable file
    assertEquals( ".jostraca\\SimpleWriter.class", tm.getCodeWriterExecutablePath().toString() );

    ps = new PropertySet();
    ps.set( Property.main_MakeBackup,        Standard.NO  );
    ps.set( Property.main_CompileCodeWriter, Standard.YES );
    ps.set( Property.main_ExecuteCodeWriter, Standard.YES );
    g.setCmdPropertySet( ps );
    tm = g.generate( FileUtil.findFile( "org/jostraca/test/simple.jtm" ) );

    assertEquals("[.\\simple.txt]", tm.getSavedFiles().toString() );
  }
View Full Code Here

    // do nothing
  }


  protected void processImpl( Template pTemplate ) {
    Template    template   = pTemplate;
    PropertySet tmps       = template.getMergedPropertySet();

    boolean     successful = false;
    PrintStream sysOut     = null;
    PrintStream sysErr     = null;
    RecordingUserMessageHandler rumh = new RecordingUserMessageHandler();

    try {
      String   cw   = makeCodeWriter( tmps );
      String   cwo  = makeCodeWriterOptions( tmps, template );
      String[] args = ArgUtil.splitQuoted( cwo );

      String jcwp = getCodeWriterPath( tmps );
      jcwp = TextUtil.replace( jcwp, ".java", ".class" );
      File jcwpf = new File( jcwp );
      String cwp = jcwpf.getAbsolutePath();

      iUserMessageHandler.debug( UserText.get(UserText.TXT_generating), "class-file:"+cwp+Standard.SPACE+cwo );

      // NOTE: has to be _generate to prevent exit
      Class  cwClass        = ClassUtil.makeClassFromFile( cwp );
      Object cwInstance     = cwClass.newInstance();
      Method generateMethod = cwClass.getMethod( "_generate", new Class[] { (new String[] {}).getClass(), Boolean.TYPE } );

      // DO NOT use CommandLineUserMessageHandler here - causes infinite recursion
      MessageHandlerOutputStream  out  = new MessageHandlerOutputStream( UserMessageHandler.INFO,  rumh );
      MessageHandlerOutputStream  err  = new MessageHandlerOutputStream( UserMessageHandler.ERROR, rumh );

      // space out dots to avoid accidental replace on System DOT out search
      sysOut = System . out;
      sysErr = System . err;
   
      // set context if not null
      Object context = template.getContext();
      if( null != context ) {
        Method setContextMethod = cwClass.getMethod( "_setContext", new Class[] { Object.class } );
        setContextMethod.invoke( cwInstance, new Object[] { context } );
      }

      boolean throwWriterExceptions = tmps.isYes( Property.main_CodeWriter_throwExceptions );

      // DO NOT put System.out in MessageHandler as this will case infinite loop
      System.setOut( new PrintStream( out ) );
      System.setErr( new PrintStream( err ) );

      Object result = generateMethod.invoke( cwInstance, new Object[] { args, new Boolean(throwWriterExceptions) } );
      WayPointRecorder.add( BasicWayPoint.ExecutingCodeWriter.make( template.getCodeWriterPath().getAbsolutePath() ) );

      if( result instanceof Integer ) {
        successful = ( 0 == ((Integer)result).intValue() );
      }
      else {
        successful = true;
      }

      template.setResult( result );
    }

    catch( InvocationTargetException ite ) {
      if( null != sysOut ) {
        System.setOut( sysOut );
View Full Code Here



  protected void compileAsFirst( List pTemplateList ) {
    List        tmlist  = pTemplateList;
    Template    firsttm = (Template) pTemplateList.get(0);
    PropertySet tmps    = firsttm.getMergedPropertySet();

    StringBuffer sourceFilesB = new StringBuffer( tmlist.size() * 33 );
    boolean      compile      = makeCompileList( tmlist, sourceFilesB );
    String       sourceFiles  = sourceFilesB.toString();

View Full Code Here

    // sort each template into an equivalent compile operation
    HashMap compileBag = new HashMap();

    for( Iterator tmT = tmlist.iterator(); tmT.hasNext(); ) {
      Template tm      = (Template) tmT.next();
      String   bagname = resolveBagName( tm );

      ArrayList bagtmlist = null;
      if( !compileBag.containsKey( bagname ) ) {
        bagtmlist = new ArrayList();
View Full Code Here

  }



  protected String resolveBagName( Template pTemplate ) {
    Template    tm   = pTemplate;
    PropertySet tmps = tm.getMergedPropertySet();

    StringBuffer bagname = new StringBuffer();
    bagname.append( " "+tmps.get( Property.main_ExternalCompiler ) );
    bagname.append( " "+tmps.get( Property.main_ExternalCompilerOptions ) );
View Full Code Here


  // compile using props from first tm
  protected void compileAsFirst( List pTemplateList ) {
    List        tmlist  = pTemplateList;
    Template    firsttm = (Template) pTemplateList.get(0);
    PropertySet tmps    = firsttm.getMergedPropertySet();

    boolean successful = false;
    boolean compile    = false;
    StringBuffer sourceFilesB = new StringBuffer();
    for( Iterator tmT = tmlist.iterator(); tmT.hasNext(); ) {
      Template tm  = (Template) tmT.next();

      File executablePath = makeExecutablePath( tm );
      tm.setCodeWriterExecutablePath( executablePath );

      boolean compileRequired = compileRequired( tm );

      if( compileRequired ) {
        File cwF = tm.getCodeWriterPath();
        sourceFilesB.append( " "+TextUtil.quoteSpaces( cwF.getPath() ) );
        WayPointRecorder.add( BasicWayPoint.CompilingCodeWriter.make( cwF.getAbsolutePath() ) );
        compile = true;
      }
    }
View Full Code Here

  }


  protected boolean compileRequired( Template pTemplate ) {
    try {
      Template     tm              = pTemplate;
      boolean      compileRequired = true;
      PropertySet  tmps            = tm.getMergedPropertySet();
      StringBuffer reason          = new StringBuffer();
      File         executablePath  = pTemplate.getCodeWriterExecutablePath();

      // definitely compile
      if( tmps.isYes( Property.main_CompileCodeWriter ) ) {
        compileRequired = true;
        reason.append( "main.CompileCodeWriter="+tmps.get( Property.main_CompileCodeWriter ) );
      }

      // definitely do not compile
      else if( tmps.isNo( Property.main_CompileCodeWriter ) ) {
        compileRequired = false;
        reason.append( "main.CompileCodeWriter="+tmps.get( Property.main_CompileCodeWriter ) );
      }

      // otherwise, compile only if needed
      else if( tmps.isYes( Property.lang_HasExecutable ) ) {

        // no executable => definitely compile
        if( ! executablePath.exists() ) {
          compileRequired = true;
          reason.append( "executable not found: "+executablePath );
        }

        // code writer changed => definitely compile
        else if( tm.getCodeWriterChanged() ) {
          compileRequired = true;
          reason.append( "CodeWriter changed" );
        }
       
        // no changes, so use the existing executable
View Full Code Here

    List         tmlist       = pTemplateList;
    StringBuffer sourceFilesB = pSourceFilesBuffer;
    boolean      compile      = false;

    for( Iterator tmT = tmlist.iterator(); tmT.hasNext(); ) {
      Template tm  = (Template) tmT.next();

      File executablePath = makeExecutablePath( tm );
      tm.setCodeWriterExecutablePath( executablePath );

      boolean compileRequired = compileRequired( tm );

      if( compileRequired ) {
        File cwF = tm.getCodeWriterPath();
        sourceFilesB.append( " "+TextUtil.quoteSpaces( cwF.getPath() ) );
        WayPointRecorder.add( BasicWayPoint.CompilingCodeWriter.make( cwF.getAbsolutePath() ) );
        compile = true;
      }
    }
View Full Code Here

TOP

Related Classes of org.jostraca.Template

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.