/******************************************************************************* * Copyright (c) 2007, 2008 BEA Systems, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * wharley@bea.com - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.apt.pluggable.core.filer; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.io.Writer; import java.net.URI; import java.util.Collection; import java.util.Set; import javax.tools.JavaFileManager.Location; import org.eclipse.core.resources.IFile; import org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeProcessingEnvImpl; /** * Implementation of FileObject for generating resource files in the IDE. * This is used for files that are neither class files nor Java source files. * @see IdeOutputJavaFileObject */ public class IdeOutputNonSourceFileObject extends IdeOutputFileObject { private final IdeProcessingEnvImpl _env; private final IFile _file; private final Collection<IFile> _parentFiles; /** * Create a new IdeOutputFileObject for writing. The file will not actually be written until the Writer or OutputStream is closed. * @param env among other roles, the ProcessingEnvironment tracks what files have been generated in a given build. * @param location must be an output location (see {@link Location#isOutputLocation()}). * @param pkg * @param relativeName * @param parentFiles * @see javax.tools.StandardLocation */ public IdeOutputNonSourceFileObject(IdeProcessingEnvImpl env, IFile file, Set<IFile> parentFiles) { _env = env; _file = file; _parentFiles = parentFiles; } /* (non-Javadoc) * @see javax.tools.FileObject#getName() */ @Override public String getName() { return _file.getLocation().toOSString(); } /* (non-Javadoc) * @see javax.tools.FileObject#openOutputStream() */ @Override public OutputStream openOutputStream() throws IOException { return new IdeNonSourceOutputStream(_env, _file, _parentFiles); } /* (non-Javadoc) * @see javax.tools.FileObject#openWriter() */ @Override public Writer openWriter() throws IOException { return new PrintWriter(openOutputStream()); } /* (non-Javadoc) * @see javax.tools.FileObject#toUri() */ @Override public URI toUri() { return _file.getLocationURI(); } }