001    package com.hammurapi.render;
002    
003    import java.io.File;
004    import java.io.IOException;
005    import java.io.OutputStream;
006    import java.io.OutputStreamWriter;
007    import java.util.Locale;
008    import java.util.Map;
009    
010    import com.hammurapi.common.Context;
011    
012    /**
013     * Adapter to make FileRenderer from InlineRenderer
014     * @author Pavel Vlasov
015     *
016     */
017    public class OutputStreamRendererAdapter implements OutputStreamRenderer {
018            
019            private WriterRenderer renderer;
020            
021            /**
022             * Constructs FileRenderer from WriterRenderer.
023             * @param writerRenderer
024             */
025            public OutputStreamRendererAdapter(WriterRenderer writerRenderer) {
026                    this.renderer = writerRenderer;
027            }
028    
029    
030            @Override
031            public boolean render(
032                            OutputStream out, 
033                            Map<String, Object> environment,
034                            Context context, 
035                            String profile, 
036                            Locale locale, 
037                            File outputDir) throws RenderingException {
038                    
039                    OutputStreamWriter writer = new OutputStreamWriter(out);
040                    try {
041                            return renderer.render(writer, environment, context, profile, locale, outputDir);
042                    } finally {
043                            try {
044                                    writer.flush();
045                            } catch (IOException e) {
046                                    throw new RenderingException(e);
047                            }
048                    }
049            }
050    
051    }