private void processWorkflow()

in src/main/java/com/amazonaws/eclipse/simpleworkflow/asynchrony/annotationprocessor/AsynchronyDeciderAnnotationProcessor.java [131:164]


    private void processWorkflow(RoundEnvironment roundEnv, final Element workflow) {
        DeclaredType workflowAnnotationType = ProcessorUtils.getDeclaredType(processingEnv,
                ProcessorConstants.WORKFLOW_ANNOTATION_TYPE_CLASS_NAME);

        com.amazonaws.eclipse.simpleworkflow.asynchrony.objectmodel.Workflow workflowDefinition = ProcessorUtils.getWorkflowModel(
                processingEnv, (TypeElement) workflow, workflowAnnotationType, annotationsToExcludeFromCopying);

        String packageName = processingEnv.getElementUtils().getPackageOf(workflow).getQualifiedName().toString();
        SourceFileCreator fileCreator = new SourceFileCreator() {

            //@Override
            public PrintWriter createSourceFile(String packageName, String className) {
                OutputStream fileStream = null;

                try {
                    JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(packageName + "." + className, workflow);
                    fileStream = sourceFile.openOutputStream();
                }
                catch (IOException e) {
                    processingEnv.getMessager().printMessage(Kind.ERROR,
                            "Unable to generate" + " target class for elmenet [reason: " + e.toString() + "]", workflow);
                }

                if (fileStream != null)
                    return new PrintWriter(fileStream);

                return null;
            }
        };

        WorkflowCodeGenerator workflowCodeGenerator = new WorkflowCodeGenerator(packageName, workflow.getSimpleName().toString(),
                workflowDefinition, fileCreator);
        workflowCodeGenerator.generateCode();
    }