public void execute()

in lightning-maven-plugin/src/main/java/org/apache/directmemory/lightning/maven/LightningGeneratorMojo.java [93:164]


    public void execute()
        throws MojoExecutionException, CompilationFailureException
    {
        if ( encoding == null )
        {
            encoding = "UTF-8";
        }

        SerializationStrategy serializationStrategy =
            "size".equalsIgnoreCase( strategy ) ? SerializationStrategy.SizeOptimized
                            : SerializationStrategy.SpeedOptimized;

        MavenLoggerAdapter logger = new MavenLoggerAdapter( LightningGeneratorMojo.class.getCanonicalName() );
        getLog().info( "Searching in path " + targetBuildDirectory.getAbsolutePath() );
        List<File> files =
            SupportUtil.recursiveGetAllJavaSources( targetBuildDirectory, new ArrayList<File>(), fileFilter );

        List<URL> urlClasspathElements = new ArrayList<URL>();
        if ( getClasspathElements() != null )
        {
            for ( String classpathElement : getClasspathElements() )
            {
                try
                {
                    URL url = new File( classpathElement ).toURI().toURL();
                    urlClasspathElements.add( url );
                }
                catch ( Exception e )
                {
                    // Intentionally left blank
                }
            }
        }
        ClassLoader classLoader =
            new URLClassLoader( urlClasspathElements.toArray( new URL[urlClasspathElements.size()] ),
                                getClass().getClassLoader() );

        for ( File file : files )
        {
            try
            {
                String className = file.getAbsolutePath().replace( targetBuildDirectory.getAbsolutePath(), "" );
                if ( className.startsWith( "/" ) || className.startsWith( "\\" ) )
                {
                    className = className.substring( 1 );
                }

                className = className.replace( ".class", "" ).replace( "/", "." ).replace( "\\", "." );

                getLog().debug( "Trying class " + className );
                Class<?> clazz = classLoader.loadClass( className );
                if ( AbstractSerializerDefinition.class.isAssignableFrom( clazz ) )
                {
                    getLog().debug( "Found SerializerDefinition in class " + className );

                    AbstractSerializerDefinition definition = (AbstractSerializerDefinition) clazz.newInstance();

                    SerializerDefinitionAnalyser analyser = new SerializerDefinitionAnalyser( logger );
                    analyser.analyse( definition );
                    analyser.build( generatedSourceDirectory, serializationStrategy, encoding );
                }
            }
            catch ( Exception e )
            {
                logger.error( "Could not generate Lightning source for file " + file.getName(), e );
            }
        }

        super.execute();

        // session.getCurrentProject().addCompileSourceRoot(generatedSourceDirectory.getAbsolutePath());
    }