001// Copyright 2007 by Basil Vandegriend. All rights reserved. 002package com.basilv.envgen; 003 004import java.io.IOException; 005import java.io.Writer; 006import java.util.Map; 007 008import freemarker.template.TemplateModelException; 009import freemarker.template.TemplateTransformModel; 010 011/** 012 * Template to skip generation of the target file. 013 * If the target file exists previously it is deleted. 014 */ 015public class SkipGenerationTransform implements TemplateTransformModel { 016 017 018 private static final ThreadLocal skipGenerationFlag = new ThreadLocal(); 019 020 public static boolean isSkipGenerationAndResetFlag() { 021 boolean isSkipGen = Boolean.TRUE.equals(skipGenerationFlag.get()); 022 skipGenerationFlag.set(null); 023 return isSkipGen; 024 } 025 026 027 /** 028 * Must have a default no-arg constructor. 029 */ 030 public SkipGenerationTransform() { 031 } 032 033 034 public Writer getWriter(Writer out, Map args) throws TemplateModelException { 035 SkipGenerationTransform.skipGenerationFlag.set(Boolean.TRUE); 036 // Return a do-nothing writer. 037 return new Writer() { 038 public void write(char cbuf[], int off, int len) { 039 } 040 041 public void flush() throws IOException { 042 } 043 044 public void close() throws IOException { 045 } 046 }; 047 048 } 049 050 051}