blob: 13c38a3c62907967f115705479187520946a3a33 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 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.util.ArrayList;
import java.util.List;
import javax.annotation.processing.Filer;
import javax.lang.model.element.Element;
import javax.tools.FileObject;
import javax.tools.JavaFileObject;
import javax.tools.JavaFileManager.Location;
import org.eclipse.core.resources.IFile;
import org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager;
import org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeProcessingEnvImpl;
/**
* Implementation of the Filer interface that is used in IDE mode.
* @see org.eclipse.jdt.internal.compiler.apt.dispatch.BatchFilerImpl
* @since 3.3
*/
public class IdeFilerImpl implements Filer {
//private final IdeAnnotationProcessorManager _dispatchManager;
private final IdeProcessingEnvImpl _env;
public IdeFilerImpl(IdeAnnotationProcessorManager dispatchManager,
IdeProcessingEnvImpl env) {
//_dispatchManager = dispatchManager;
_env = env;
}
/* (non-Javadoc)
* @see javax.annotation.processing.Filer#createClassFile(java.lang.CharSequence, javax.lang.model.element.Element[])
*/
@Override
public JavaFileObject createClassFile(CharSequence name, Element... originatingElements)
throws IOException {
//TODO
throw new UnsupportedOperationException("Creating class files is not yet implemented"); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see javax.annotation.processing.Filer#createResource(javax.tools.JavaFileManager.Location, java.lang.CharSequence, java.lang.CharSequence, javax.lang.model.element.Element[])
*/
@Override
public FileObject createResource(Location location, CharSequence pkg,
CharSequence relativeName, Element... originatingElements) throws IOException {
// TODO Auto-generated method stub
return null;
}
/**
* @param originatingElements should all be source types; binary types (ie elements in jar files)
* will be ignored.
* @see javax.annotation.processing.Filer#createSourceFile(java.lang.CharSequence, javax.lang.model.element.Element[])
*/
@Override
public JavaFileObject createSourceFile(CharSequence name, Element... originatingElements)
throws IOException
{
//TODO: check whether file has already been generated in this run
List<IFile> parentFiles = new ArrayList<IFile>(originatingElements.length);
for (Element elem : originatingElements) {
parentFiles.add(_env.getEnclosingIFile(elem));
}
// Convert originatingElements to List<IFile>. The originatingElements should all
// be source types, else they would not be getting
return new IdeJavaFileObject(_env, name, parentFiles);
}
/* (non-Javadoc)
* @see javax.annotation.processing.Filer#getResource(javax.tools.JavaFileManager.Location, java.lang.CharSequence, java.lang.CharSequence)
*/
@Override
public FileObject getResource(Location location, CharSequence pkg, CharSequence relativeName)
throws IOException {
// TODO Auto-generated method stub
return null;
}
}