Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Flexmojos is a set of maven goals to allow maven users to compile, optimize and test Flex SWF, Flex SWC, Air SWF and Air SWC. Copyright (C) 2008-2012 Marvin Froeder <marvin@flexmojos.net> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
 
 package net.flexmojos.oss.generator.granitedsv2d0d0;
 
 import static java.lang.Thread.currentThread;
 import static org.granite.generator.template.StandardTemplateUris.BEAN;
 import static org.granite.generator.template.StandardTemplateUris.BEAN_BASE;
 import static org.granite.generator.template.StandardTemplateUris.ENTITY;
 import static org.granite.generator.template.StandardTemplateUris.ENTITY_BASE;
 import static org.granite.generator.template.StandardTemplateUris.ENUM;
 import static org.granite.generator.template.StandardTemplateUris.INTERFACE;
 import static org.granite.generator.template.StandardTemplateUris.TIDE_ENTITY_BASE;
 
 import java.io.File;
 import java.util.List;
 import java.util.Map;
 

Author(s):
edward.yakop@gmail.com
Since:
3.2
 
 @Component( role = net.flexmojos.oss.generator.Generator.class, hint = "graniteds2" )
 public final class GraniteDsGenerator
     extends AbstractLogEnabled
     implements net.flexmojos.oss.generator.Generator
 {
 
     private static final String PREFIX_TO_REPLACE = "class:";
 
     private static final String SHADED_PREFIX = "class:";
 
     private String uid = "uid";
 
     private String as3typefactory = null;
 
     private boolean tide = false;
 
     private String transformer = null;
 
 
     // /////////////////////////////////////////////////////////////////////////
     // Configuration implementation fields.
     private As3TypeFactory as3TypeFactoryImpl = null;
 
     private GroovyTemplateFactory groovyTemplateFactory = null;
 
     private TemplateUri[] entityTemplateUris;
 
     private TemplateUri[] interfaceTemplateUris;
 
     private TemplateUri[] beanTemplateUris;
 
     private TemplateUri[] enumTemplateUris;
 
     private Map<StringFileclasses;
 
     private File outputDirectory;
 
     private File baseOutputDirectory;
 
     private TemplateUri[] initializeEnumTemplateURIsString[] enumTemplate )
     {
         String templateUri = getStringIndex0enumTemplate );
        if ( templateUri == null )
        {
            templateUri = .replaceFirst );
        }
        return createTemplateUrisnulltemplateUri );
    }
    private TemplateUri[] initializeInterfaceTemplateURIsString[] interfaceTemplate )
    {
        String baseTemplateUri = null;
        String templateUri = .replaceFirst );
        if ( getStringIndex1interfaceTemplate ) != null )
        {
            templateUri = getStringIndex1interfaceTemplate );
        }
        if ( getStringIndex0interfaceTemplate ) != null )
        {
            baseTemplateUri = getStringIndex0interfaceTemplate );
        }
        return createTemplateUrisbaseTemplateUritemplateUri );
    }
    private TemplateUri[] initializeEntityTemplateURIsString[] entityTemplate )
    {
        String baseTemplateUri = .replaceFirst );
        String templateUri = .replaceFirst );
        if ( getStringIndex1entityTemplate ) != null )
        {
            templateUri = getStringIndex1entityTemplate );
        }
        if ( getStringIndex0entityTemplate ) != null )
        {
            baseTemplateUri = getStringIndex0entityTemplate );
        }
        else if (  )
        {
            baseTemplateUri = .replaceFirst );
        }
        return createTemplateUrisbaseTemplateUritemplateUri );
    }
    private TemplateUri[] initializeBeanTemplateURIsString[] beanTemplate )
    {
        String baseTemplateUri = .replaceFirst );
        String templateUri = .replaceFirst );
        if ( getStringIndex1beanTemplate ) != null )
        {
            templateUri = getStringIndex1beanTemplate );
        }
        if ( getStringIndex0beanTemplate ) != null )
        {
            baseTemplateUri = getStringIndex0beanTemplate );
        }
        return createTemplateUrisbaseTemplateUritemplateUri );
    }
    private String getStringIndex0String[] a )
    {
        return getStringByIndexa, 0 );
    }
    private String getStringIndex1String[] a )
    {
        return getStringByIndexa, 1 );
    }
    private String getStringByIndexString[] aint index )
    {
        String s = a == null ? null : ( a.length < index + 1 ? null : a[index] );
        return s == null ? null : new Files ).toURI().toString();
    }
    private TemplateUri[] createTemplateUrisString baseUriString uri )
    {
        TemplateUri[] templateUris = new TemplateUri[baseUri == null ? 1 : 2];
        int i = 0;
        if ( baseUri != null )
        {
            templateUris[i++] = new TemplateUribaseUritrue );
        }
        templateUris[i] = new TemplateUriurifalse );
        return templateUris;
    }
    public final void generateGenerationRequest request )
        throws GenerationException
    {
    	
    	// add / create package translators
    	for(String currentTranslator : request.getTranslators()){
    		String[] splitTranslator = currentTranslator.split("=");
    		if(splitTranslator.length != 2){
    			throw new GenerationException("Invalid format: translators must be in format 'java.package=as3.package'");
    		}
    		String java = splitTranslator[0];
    		String as3 = splitTranslator[1];
    		
    		getLogger().info("Adding translator: [" + java + ", " + as3 + "]");
    		.add(new PackageTranslator(javaas3));
    	}
    	// tide
    	String useTide = request.getExtraOptions().get("tide");
    	if(useTide != null)
    	{
    		 = new Boolean(useTide.trim());
    	}
         = request.getExtraOptions().get"uid" );
        
         = request.getExtraOptions().get"transformer" );
         = request.getPersistentOutputFolder();
        
         = request.getTransientOutputFolder();
        String[] enumTemplate = getTemplaterequest"enum-template" );
         = initializeEnumTemplateURIsnew String[]{enumTemplate[1]} );
        String[] interfaceTemplate = getTemplaterequest"interface-template" );
         = initializeInterfaceTemplateURIsinterfaceTemplate );
        String[] entityTemplate = getTemplaterequest"entity-template" );
         = initializeEntityTemplateURIsentityTemplate );
        String[] beanTemplate = getTemplaterequest"bean-template" );
         = initializeBeanTemplateURIsbeanTemplate );
         = request.getClasses();
        if ( .isEmpty() )
        {
            getLogger().warn"No classes to generate." );
            return;
        }
        ClassLoader classLoader = request.getClassLoader();
        ClassLoader originalClassLoader = currentThread().getContextClassLoader();
        currentThread().setContextClassLoaderclassLoader );
        try
        {
            // As3TypeFactory.
             = request.getExtraOptions().get("as3typefactory");
            if (  == null )
            {
                 = new DefaultAs3TypeFactory();
            }
            else
            {
                getLogger().info"Instantiating custom As3TypeFactory class: [" +  + "]" );
                 = newInstanceclassLoader );
            }
            // Listener.
            GeneratorConfiguration configuration = new GeneratorConfiguration();
            // Transformer
            Transformer<?, ?, ?> transformerImpl = createTransformerclassLoaderconfiguration );
            // Create the generator.
            Generator generator = new Generatorconfiguration );
            generator.addtransformerImpl );
            
            // Call the generator for each class
            getLogger().info"Calling the generator for each Java class." );
            int count = generateClassclassLoadergenerator );
            getLogger().info"Files affected: " + count + ( count == 0 ? " (nothing to do)." : "." ) );
        }
        finally
        {
            currentThread().setContextClassLoaderoriginalClassLoader );
        }
    }
    private String[] getTemplateGenerationRequest configurationString name )
    {
        String baseTemplate = configuration.getTemplates().get"base-" + name );
        String template = configuration.getTemplates().getname );
        return new String[] { baseTemplatetemplate };
    }
    private Transformer<?, ?, ?> createTransformerClassLoader classLoaderGeneratorConfiguration configuration )
        throws GenerationException
    {
        Transformer<?, ?, ?> transformerImpl;
        if (  != null )
        {
            getLogger().info"Instantiating custom Transformer class: [" +  + "]" );
            transformerImpl = newInstanceclassLoader );
        }
        else
        {
            transformerImpl = new JavaAs3GroovyTransformer();
        }
        transformerImpl.setListenernew Gas3ListenergetLogger() ) );
        return transformerImpl;
    }
    private int generateClassClassLoader classLoaderGenerator generator )
        throws GenerationException
    {
        int count = 0;
        for ( Map.Entry<StringFileclassFile : .entrySet() )
        {
            String className = classFile.getKey();
            try
            {
                Class<?> classToGenerate = classLoader.loadClassclassName );
				ifclassToGenerate.isMemberClass() && !classToGenerate.isEnum() )
				{
					continue;
				}
                JavaAs3Input input = new JavaAs3InputclassToGenerateclassFile.getValue() );
                
                for ( Output<?> output : generator.generateinput ) )
                {
                    if ( output.isOutdated() )
                    {
                        count++;
                    }
                }
            }
            catch ( Exception e )
            {
                getLogger().errorgetStackTracee ) );
                throw new GenerationException"Fail to generate class [" + className + "]"e );
            }
        }
        return count;
    }
    // /////////////////////////////////////////////////////////////////////////
    // Utilities.
    @SuppressWarnings"unchecked" )
    private <T> T newInstanceClassLoader loaderString className )
        throws GenerationException
    {
        try
        {
            return (T) loader.loadClassclassName ).newInstance();
        }
        catch ( Exception e )
        {
            throw new GenerationException"Instantiate [" + className + "] failed." );
        }
    }
    private static String getStackTraceException e )
    {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWritersw );
        e.printStackTracepw );
        return sw.toString();
    }
    // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Generator configuration
    // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    private class GeneratorConfiguration
        implements JavaAs3GroovyConfiguration
    {
        public String getUid()
        {
            return ;
        }
        public boolean isGeneratedClass<?> clazz )
        {
            if ( !clazz.isMemberClass() || clazz.isEnum() )
            {
                return .containsKeyclazz.getName() );
            }
            return false;
        }
        public As3TypeFactory getAs3TypeFactory()
        {
            return ;
        }
        public List<PackageTranslatorgetTranslators()
        {
            return ;
        }
        public TemplateUri[] getTemplateUrisJavaType.Kind kindClass<?> clazz )
        {
            switch ( kind )
            {
                case :
                    return ;
                case :
                    return ;
                case :
                    return ;
                case :
                    return ;
                default:
                    throw new IllegalArgumentException"Unknown template kind: " + kind + " / " + clazz );
            }
        }
        public File getOutputDirJavaAs3Input input )
        {
            return ;
        }
        public File getBaseOutputDirJavaAs3Input input )
        {
            return ;
        }
        {
            if (  == null )
            {
                 = new GroovyTemplateFactory();
            }
            return ;
        }
        public ClassLoader getClassLoader()
        {
            return currentThread().getContextClassLoader();
        }
    }
New to GrepCode? Check out our FAQ X