Package org.codehaus.mojo.appassembler.model

Examples of org.codehaus.mojo.appassembler.model.Daemon


    private void testNormalShellScriptGeneration( Platform platform )
        throws Exception
    {
        ScriptGenerator generator = (ScriptGenerator) lookup( ScriptGenerator.ROLE );

        Daemon daemon = new Daemon();

        daemon.setId( "test" );
        daemon.setMainClass( "foo.Bar" );
        daemon.setJvmSettings( new JvmSettings() );
        daemon.getJvmSettings().setExtraArguments( Arrays.asList( new String[]{"Yo", "dude"} ) );
        daemon.setEnvironmentSetupFileName( "setup" );
        daemon.setRepositoryName("repo");
        File outputDirectory = getTestFile( "target/test-output/normal-shell/" + platform.getName() );

        generator.createBinScript( platform.getName(), daemon, outputDirectory );

        File expectedFile = getTestFile( PREFIX + "expected-" + daemon.getId() + platform.getBinFileExtension() );
        File actualFile = new File( outputDirectory, "bin/" + daemon.getId() + platform.getBinFileExtension() );

        assertEquals( FileUtils.fileRead( expectedFile ), FileUtils.fileRead( actualFile ) );
    }
View Full Code Here


    }

    private void testGetAppArguments( Platform util )
        throws Exception
    {
        Daemon daemon = new Daemon();
        assertEquals( null, util.getAppArguments( daemon ) );

        List commandLineArguments = new ArrayList();
        daemon.setCommandLineArguments( commandLineArguments );

        assertEquals( null, util.getAppArguments( daemon ) );

        commandLineArguments.add( "yo" );
        assertEquals( "yo", util.getAppArguments( daemon ) );
View Full Code Here

    // -----------------------------------------------------------------------

    private void test( Platform util, String[] asserts )
        throws Exception
    {
        Daemon daemon = new Daemon();
        daemon.setClasspath( new Classpath() );

        assertEquals( "", util.getClassPath( daemon ) );

        List classpath = daemon.getClasspath().getDirectories();
        classpath.add( createDirectory( asserts[0] ) );
        classpath.add( createDirectory( asserts[1] ) );
        assertEquals( asserts[2], util.getClassPath( daemon ) );

        classpath.add( createDependency( asserts[3] ) );
View Full Code Here

        if ( recessive == null )
        {
            return dominant;
        }

        Daemon result = new Daemon();

        result.setId( select( dominant.getId(), recessive.getId() ) );
        result.setMainClass( select( dominant.getMainClass(), recessive.getMainClass() ) );
        result.setClasspath( (Classpath) select( dominant.getClasspath(), recessive.getClasspath() ) );
        result.setCommandLineArguments(
            select( dominant.getCommandLineArguments(), recessive.getCommandLineArguments() ) );
        // This should probably be improved
        result.setJvmSettings( (JvmSettings) select( dominant.getJvmSettings(), recessive.getJvmSettings() ) );
        result.setShowConsoleWindow( dominant.isShowConsoleWindow() );
        result.setRepositoryName( dominant.getRepositoryName() );
        result.setGeneratorConfigurations(
                select( dominant.getGeneratorConfigurations(), recessive.getGeneratorConfigurations()) );

        return result;
    }
View Full Code Here

        // -----------------------------------------------------------------------
        // Assert id generation
        // -----------------------------------------------------------------------

        Daemon daemon = generatorService.loadModel( getTestFile( "src/test/resources/model-2.xml" ) );

        assertEquals( "Foo", daemon.getMainClass() );
        assertNotNull( daemon.getId() );
        assertEquals( "foo", daemon.getId() );

        daemon = generatorService.loadModel( getTestFile( "src/test/resources/model-3.xml" ) );

        assertEquals( "foo.Bar", daemon.getMainClass() );
        assertNotNull( daemon.getId() );
        assertEquals( "bar", daemon.getId() );

        daemon = generatorService.loadModel( getTestFile( "src/test/resources/model-4.xml" ) );

        assertEquals( "foo.Bar", daemon.getMainClass() );
        assertNotNull( daemon.getId() );
        assertEquals( "jezloius", daemon.getId() );
    }
View Full Code Here

    public void testDaemonMerging()
        throws Exception
    {
        DaemonGeneratorService generatorService = (DaemonGeneratorService) lookup( DaemonGeneratorService.ROLE );

        Daemon dominant = new Daemon();
        Daemon recessive = new Daemon();

        assertNull( generatorService.mergeDaemons( null, null ) );

        assertEquals( dominant, generatorService.mergeDaemons( dominant, null ) );

        assertEquals( recessive, generatorService.mergeDaemons( null, recessive ) );

        // -----------------------------------------------------------------------
        //
        // -----------------------------------------------------------------------

        recessive.setMainClass( "bar" );
        assertEquals( "bar", generatorService.mergeDaemons( dominant, recessive ).getMainClass() );
        dominant.setMainClass( "foo" );
        assertEquals( "foo", generatorService.mergeDaemons( dominant, recessive ).getMainClass() );

        dominant = new Daemon();
        recessive = new Daemon();
        recessive.setId( "bar" );
        assertEquals( "bar", generatorService.mergeDaemons( dominant, recessive ).getId() );
        dominant.setId( "foo" );
        assertEquals( "foo", generatorService.mergeDaemons( dominant, recessive ).getId() );

        dominant = new Daemon();
        recessive = new Daemon();
        assertEquals( 0, generatorService.mergeDaemons( dominant, recessive ).getCommandLineArguments().size() );

        recessive.getCommandLineArguments().add( "1" );
        recessive.getCommandLineArguments().add( "2" );
        recessive.getCommandLineArguments().add( "3" );
        assertEquals( 3, generatorService.mergeDaemons( dominant, recessive ).getCommandLineArguments().size() );

        dominant.getCommandLineArguments().add( "1" );
        dominant.getCommandLineArguments().add( "2" );
        assertEquals( 2, generatorService.mergeDaemons( dominant, recessive ).getCommandLineArguments().size() );

        // -----------------------------------------------------------------------
        // System properties
        // -----------------------------------------------------------------------

        dominant = new Daemon();
        recessive = new Daemon();
        assertNull( generatorService.mergeDaemons( dominant, recessive ).getJvmSettings() );

        JvmSettings settings = new JvmSettings();
        dominant.setJvmSettings( settings );
        assertEquals( settings, generatorService.mergeDaemons( dominant, recessive ).getJvmSettings() );
        recessive.setJvmSettings( settings );
        assertEquals( settings, generatorService.mergeDaemons( dominant, recessive ).getJvmSettings() );

        dominant = new Daemon();
        recessive = new Daemon();
        dominant.setJvmSettings( new JvmSettings() );
        recessive.setJvmSettings( new JvmSettings() );
        dominant.getJvmSettings().addSystemProperty( "1" );
        dominant.getJvmSettings().addSystemProperty( "2" );
        JvmSettings mergedSettings = generatorService.mergeDaemons( dominant, recessive ).getJvmSettings();
        assertEquals( 2, mergedSettings.getSystemProperties().size() );

        dominant = new Daemon();
        recessive = new Daemon();
        dominant.setJvmSettings( new JvmSettings() );
        recessive.setJvmSettings( new JvmSettings() );
        dominant.getJvmSettings().addSystemProperty( "1" );
        dominant.getJvmSettings().addSystemProperty( "2" );
        dominant.getJvmSettings().addSystemProperty( "3" );
        recessive.getJvmSettings().addSystemProperty( "a" );
        recessive.getJvmSettings().addSystemProperty( "b" );
        mergedSettings = generatorService.mergeDaemons( dominant, recessive ).getJvmSettings();
        assertEquals( 3, mergedSettings.getSystemProperties().size() );
        assertEquals( "1", mergedSettings.getSystemProperties().get( 0 ) );
        assertEquals( "2", mergedSettings.getSystemProperties().get( 1 ) );
        assertEquals( "3", mergedSettings.getSystemProperties().get( 2 ) );
View Full Code Here

    // -----------------------------------------------------------------------

    public void generate( DaemonGenerationRequest request )
        throws DaemonGeneratorException
    {
        Daemon daemon = request.getDaemon();
        JvmSettings jvmSettings = daemon.getJvmSettings();

        File outputDirectory = request.getOutputDirectory();

        // -----------------------------------------------------------------------
        // Generate the generic XML file
        // -----------------------------------------------------------------------

        request.setOutputDirectory( new File( outputDirectory, "etc" ) );

        // TODO: we're assuming state for things that don't really appear stateful
        /*
         * The JVM settings are written to the script, and do not need to go into
         * the manifest.
         */
        daemon.setJvmSettings( null );

        genericDaemonGenerator.generate( request );

        // set back
        daemon.setJvmSettings( jvmSettings );

        // -----------------------------------------------------------------------
        // Generate the shell script
        // -----------------------------------------------------------------------

        Daemon booterDaemon = new Daemon();
        booterDaemon.setId( daemon.getId() );
        booterDaemon.setEnvironmentSetupFileName( daemon.getEnvironmentSetupFileName() );
        booterDaemon.setModelEncoding( daemon.getModelEncoding() );
        // TODO: replace with org.codehaus.mojo.appassembler.booter.AppassemblerBooter.class.getName() and test - trygve
        booterDaemon.setMainClass( "org.codehaus.mojo.appassembler.booter.AppassemblerBooter" );
        booterDaemon.setShowConsoleWindow( daemon.isShowConsoleWindow() );

        booterDaemon.setJvmSettings( jvmSettings );

        MavenProject project = request.getMavenProject();

        Classpath classpath = new Classpath();
        booterDaemon.setClasspath( classpath );
        classpath.addDirectory( createDirectory( "etc" ) );
        classpath.addDependency( createDependency( project, "org.codehaus.mojo.appassembler:appassembler-booter",
                                                   request.getRepositoryLayout() ) );

        // TODO: Transitively resolve the dependencies of the booter - for now we're just hardcoding them in
View Full Code Here

   * @throws DaemonGeneratorException
   */
  public void generate(DaemonGenerationRequest request)
    throws DaemonGeneratorException
  {
    Daemon createdDaemon = createDaemon(request.getMavenProject(),
                             request.getRepositoryLayout());

    Daemon daemon = daemonMerger.mergeDaemons(request.getDaemon(),
                      createdDaemon);

    boolean darwinArch = true;
    String configDirectory = null;
    String startup = "manual";
    String[] windowsServiceDependencies = null;

    for (Iterator i = daemon.getGeneratorConfigurations().iterator();
      i.hasNext(); )
    {
      GeneratorConfiguration generatorConfiguration =
        (GeneratorConfiguration) i.next();

      if (generatorConfiguration.getGenerator().equals(NATIVE_GROUPID))
      {
        String winSerDep =
          generatorConfiguration.getConfiguration().getProperty(
            PROPERTY_WIN_DEPENDENCIES);

        if ((winSerDep != null) && (winSerDep.length() > 0))
        {
          windowsServiceDependencies = winSerDep.split(",");
        }
        else
        {
          windowsServiceDependencies = new String[0];
        }

        startup = generatorConfiguration.getConfiguration().getProperty(
          PROPERTY_WIN_STARTUP, startup);

        if (startup.equalsIgnoreCase("manual")
          || startup.equalsIgnoreCase("auto"))
        {
          startup = startup.toLowerCase(Locale.ENGLISH);
        }
        else
        {
          throw new IllegalArgumentException(
            "wrong value for windows.service.startup, possible values are manual or auto");
        }

        configDirectory = generatorConfiguration.getConfiguration().getProperty(
          PROPERTY_CONFIGDIRECTORY);

        String value = generatorConfiguration.getConfiguration().getProperty(
                         PROPERTY_DARWIN_USE_ARCH);

        if ((value != null) && value.equalsIgnoreCase("false"))
        {
          darwinArch = false;
        }
      }
    }

    if (configDirectory != null)
    {
      Directory directory = new Directory();

      directory.setRelativePath(configDirectory);
      daemon.getClasspath().addDirectory(directory);
    }

    File outputDirectory = new File(request.getOutputDirectory(),
                             daemon.getId());

    if (!outputDirectory.exists() &&!outputDirectory.mkdirs())
    {
      throw new DaemonGeneratorException(
        "could not create directory ".concat(outputDirectory.getPath()));
    }

    File nativeDirectory = downloadAndUnpackCommonsDaemon(request,
                             outputDirectory);

    if (nativeDirectory == null)
    {
      throw new DaemonGeneratorException("could not find native directory");
    }

    File libexecDirectory = new File(outputDirectory, "libexec");

    if (!nativeDirectory.renameTo(libexecDirectory))
    {
      throw new DaemonGeneratorException("could not move native directory");
    }

    try
    {
      File varDirectory = new File(outputDirectory, "var");

      FileUtils.forceMkdir(varDirectory);

      File logDirectory = new File(varDirectory, "log");

      FileUtils.forceMkdir(logDirectory);
    }
    catch (IOException ex)
    {
      throw new DaemonGeneratorException("could not create directory", ex);
    }

    Iterator platformIt = Platform.getAllPlatformNames().iterator();

    while (platformIt.hasNext())
    {
      String platformName = (String) platformIt.next();
      Map extraVars = new HashMap();

      if (Platform.WINDOWS_NAME.equals(platformName))
      {
        extraVars.put("SERVICE_STARTUP", startup);
        extraVars.put("SERVICE_DEPENDENCIES",
          createWindowsServiceDependencyString(windowsServiceDependencies));
        extraVars.put("PROCRUN_JVM_ARGUMENTS",
          createProcrunJVMOptions(daemon.getJvmSettings()));
      }

      extraVars.put("DARWIN_USEARCH", Boolean.toString(darwinArch));

      scriptGenerator.createBinScript(platformName, daemon, outputDirectory,
View Full Code Here

        // -----------------------------------------------------------------------
        // Load the model
        // -----------------------------------------------------------------------

        Daemon fileDaemon = null;

        File stubDescriptor = request.getStubDescriptor();

        if ( stubDescriptor != null )
        {
            getLogger().debug( "Loading daemon descriptor: " + stubDescriptor.getAbsolutePath() );

            fileDaemon = loadModel( stubDescriptor );
        }

        // -----------------------------------------------------------------------
        // Merge the given stub daemon
        // -----------------------------------------------------------------------

        Daemon mergedDaemon = mergeDaemons( request.getStubDaemon(), fileDaemon );

        // -----------------------------------------------------------------------
        //
        // -----------------------------------------------------------------------
View Full Code Here

        try
        {
            fileReader = new FileReader( stubDescriptor );

            AppassemblerModelStaxReader reader = new AppassemblerModelStaxReader();
            Daemon stubDaemon = reader.read( fileReader );

            validateDaemon( stubDaemon, stubDescriptor );

            return stubDaemon;
        }
View Full Code Here

TOP

Related Classes of org.codehaus.mojo.appassembler.model.Daemon

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.