javax.annotation.processing.FilerException Java Examples

The following examples show how to use javax.annotation.processing.FilerException. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: FilerImplTest.java    From takari-lifecycle with Eclipse Public License 1.0 6 votes vote down vote up
@Test
public void testRecreateSourceFile() throws Exception {
  EclipseFileManager fileManager = new EclipseFileManager(null, Charsets.UTF_8);

  File outputDir = temp.newFolder();
  fileManager.setLocation(StandardLocation.SOURCE_OUTPUT, Collections.singleton(outputDir));

  FilerImpl filer = new FilerImpl(null /* context */, fileManager, null /* compiler */, null /* env */);

  filer.createSourceFile("test.Source");
  try {
    filer.createSourceFile("test.Source");
    Assert.fail();
  } catch (FilerException expected) {
    // From Filer javadoc:
    // @throws FilerException if the same pathname has already been
    // created, the same type has already been created, or the name is
    // not valid for a type
  }
}
 
Example #2
Source File: FilerImpl.java    From takari-lifecycle with Eclipse Public License 1.0 6 votes vote down vote up
@Override
public JavaFileObject createSourceFile(CharSequence name, Element... originatingElements) throws IOException {
  JavaFileObject sourceFile = fileManager.getJavaFileForOutput(StandardLocation.SOURCE_OUTPUT, name.toString(), JavaFileObject.Kind.SOURCE, null);
  if (!createdResources.add(sourceFile.toUri())) {
    throw new FilerException("Attempt to recreate file for type " + name);
  }
  return new JavaFileObjectImpl(sourceFile, new FileObjectDelegate() {

    private boolean closed = false;

    @Override
    protected void onClose(Output<File> generatedSource) {
      if (!closed) {
        closed = true;
        // TODO optimize if the regenerated sources didn't change compared the previous build
        CompilationUnit unit = new CompilationUnit(null, generatedSource.getResource().getAbsolutePath(), null /* encoding */);
        processingEnv.addNewUnit(unit);
        incrementalCompiler.addGeneratedSource(generatedSource);
      }
    }
  });
}
 
Example #3
Source File: BatchFilerImpl.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 6 votes vote down vote up
@Override
public FileObject getResource(Location location, CharSequence pkg,
		CharSequence relativeName) throws IOException {
	validateName(relativeName);
	FileObject fo = _fileManager.getFileForInput(
			location, pkg.toString(), relativeName.toString());
	if (fo == null) {
		throw new FileNotFoundException("Resource does not exist : " + location + '/' + pkg + '/' + relativeName); //$NON-NLS-1$
	}
	URI uri = fo.toUri();
	if (_createdFiles.contains(uri)) {
		throw new FilerException("Resource already created : " + location + '/' + pkg + '/' + relativeName); //$NON-NLS-1$
	}

	_createdFiles.add(uri);
	return fo;
}
 
Example #4
Source File: TurbineFiler.java    From turbine with Apache License 2.0 5 votes vote down vote up
private JavaFileObject create(StandardLocation location, Kind kind, String path)
    throws FilerException {
  checkArgument(location.isOutputLocation());
  if (!seen.add(path)) {
    throw new FilerException("already created " + path);
  }
  TurbineJavaFileObject result = new TurbineJavaFileObject(location, kind, path);
  files.add(result);
  return result;
}
 
Example #5
Source File: FilerImpl.java    From takari-lifecycle with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public FileObject getResource(Location location, CharSequence pkg, CharSequence relativeName) throws IOException {
  FileObject file = fileManager.getFileForInput(location, pkg.toString(), relativeName.toString());
  if (file == null) {
    throw new FileNotFoundException("Resource does not exist " + location + '/' + pkg + '/' + relativeName);
  }
  if (createdResources.contains(file.toUri())) {
    throw new FilerException("Resource already created " + pkg + "." + relativeName);
  }
  return file;
}
 
Example #6
Source File: FilerImpl.java    From takari-lifecycle with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public FileObject createResource(Location location, CharSequence pkg, CharSequence relativeName, Element... originatingElements) throws IOException {
  FileObject file = fileManager.getFileForOutput(location, pkg.toString(), relativeName.toString(), null);
  if (!createdResources.add(file.toUri())) {
    throw new FilerException("Attempt to recreate file for resource " + pkg + "." + relativeName);
  }
  return new FileObjectImpl(file, new FileObjectDelegate());
}
 
Example #7
Source File: FilerImpl.java    From takari-lifecycle with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public JavaFileObject createClassFile(CharSequence name, Element... originatingElements) throws IOException {
  JavaFileObject classFile = fileManager.getJavaFileForOutput(StandardLocation.CLASS_OUTPUT, name.toString(), JavaFileObject.Kind.CLASS, null);
  if (!createdResources.add(classFile.toUri())) {
    throw new FilerException("Attempt to recreate file for class " + name);
  }
  return new JavaFileObjectImpl(classFile, new FileObjectDelegate() {
    @Override
    protected void onClose(Output<File> generatedClass) {
      // TODO processingEnv.addNewClassFile
      throw new UnsupportedOperationException();
    }
  });
}
 
Example #8
Source File: BatchFilerImpl.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public JavaFileObject createSourceFile(CharSequence name,
		Element... originatingElements) throws IOException {
	JavaFileObject jfo = _fileManager.getJavaFileForOutput(
			StandardLocation.SOURCE_OUTPUT, name.toString(), JavaFileObject.Kind.SOURCE, null);
	URI uri = jfo.toUri();
	if (_createdFiles.contains(uri)) {
		throw new FilerException("Source file already created : " + name); //$NON-NLS-1$
	}

	_createdFiles.add(uri);
	// hook the file object's writers to create compilation unit and add to addedUnits()
	return new HookedJavaFileObject(jfo, jfo.getName(), name.toString(), this);
}
 
Example #9
Source File: BatchFilerImpl.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public FileObject createResource(Location location, CharSequence pkg,
		CharSequence relativeName, Element... originatingElements)
		throws IOException {
	validateName(relativeName);
	FileObject fo = _fileManager.getFileForOutput(
			location, pkg.toString(), relativeName.toString(), null);
	URI uri = fo.toUri();
	if (_createdFiles.contains(uri)) {
		throw new FilerException("Resource already created : " + location + '/' + pkg + '/' + relativeName); //$NON-NLS-1$
	}

	_createdFiles.add(uri);
	return fo;
}
 
Example #10
Source File: BatchFilerImpl.java    From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public JavaFileObject createClassFile(CharSequence name,
		Element... originatingElements) throws IOException {
	JavaFileObject jfo = _fileManager.getJavaFileForOutput(
			StandardLocation.CLASS_OUTPUT, name.toString(), JavaFileObject.Kind.CLASS, null);
	URI uri = jfo.toUri();
	if (_createdFiles.contains(uri)) {
		throw new FilerException("Class file already created : " + name); //$NON-NLS-1$
	}

	_createdFiles.add(uri);
	return new HookedJavaFileObject(jfo, jfo.getName(), name.toString(), this);
}
 
Example #11
Source File: JavaGeneratingProcessor.java    From sundrio with Apache License 2.0 5 votes vote down vote up
/**
 * Generates a source file from the specified {@link io.sundr.codegen.model.TypeDef}.
 * @param model                     The model of the class to generate.
 * @param resourceName              The template to use.
 * @throws IOException              If it fails to create the source file.
 */
public void generateFromResources(TypeDef model, String resourceName) throws IOException {
    try {
        generateFromResources(model, processingEnv
                .getFiler()
                .createSourceFile(model.getFullyQualifiedName()), resourceName);
    } catch (FilerException e) {
        //TODO: Need to avoid dublicate interfaces here.
    }
}
 
Example #12
Source File: ServiceProviderProcessor.java    From openjdk-jdk9 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Determines if a given exception is (most likely) caused by
 * <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599">Bug 367599</a>.
 */
public static boolean isBug367599(Throwable t) {
    if (t instanceof FilerException) {
        for (StackTraceElement ste : t.getStackTrace()) {
            if (ste.toString().contains("org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.create")) {
                // See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599
                return true;
            }
        }
    }
    if (t.getCause() != null) {
        return isBug367599(t.getCause());
    }
    return false;
}
 
Example #13
Source File: GraphNodeProcessor.java    From openjdk-jdk9 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Determines if a given exception is (most likely) caused by
 * <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599">Bug 367599</a>.
 */
public static boolean isBug367599(Throwable t) {
    if (t instanceof FilerException) {
        for (StackTraceElement ste : t.getStackTrace()) {
            if (ste.toString().contains("org.eclipse.jdt.internal.apt.pluggable.core.filer.IdeFilerImpl.create")) {
                // See: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367599
                return true;
            }
        }
    }
    if (t.getCause() != null) {
        return isBug367599(t.getCause());
    }
    return false;
}
 
Example #14
Source File: JavacFiler.java    From javaide with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Check to see if the file has already been opened; if so, throw
 * an exception, otherwise add it to the set of files.
 */
private void checkFileReopening(FileObject fileObject, boolean addToHistory) throws FilerException {
    for(FileObject veteran : fileObjectHistory) {
        if (fileManager.isSameFile(veteran, fileObject)) {
            if (lint)
                log.warning("proc.file.reopening", fileObject.getName());
            throw new FilerException("Attempt to reopen a file for path " + fileObject.getName());
        }
    }
    if (addToHistory)
        fileObjectHistory.add(fileObject);
}
 
Example #15
Source File: JavacFiler.java    From javaide with GNU General Public License v3.0 5 votes vote down vote up
private void checkNameAndExistence(String typename, boolean allowUnnamedPackageInfo) throws FilerException {
    // TODO: Check if type already exists on source or class path?
    // If so, use warning message key proc.type.already.exists
    checkName(typename, allowUnnamedPackageInfo);
    if (aggregateGeneratedSourceNames.contains(typename) ||
        aggregateGeneratedClassNames.contains(typename)) {
        if (lint)
            log.warning("proc.type.recreate", typename);
        throw new FilerException("Attempt to recreate a file for type " + typename);
    }
}
 
Example #16
Source File: JavacFiler.java    From javaide with GNU General Public License v3.0 5 votes vote down vote up
private void checkName(String name, boolean allowUnnamedPackageInfo) throws FilerException {
    if (!SourceVersion.isName(name) && !isPackageInfo(name, allowUnnamedPackageInfo)) {
        if (lint)
            log.warning("proc.illegal.file.name", name);
        throw new FilerException("Illegal name " + name);
    }
}
 
Example #17
Source File: JavacFiler.java    From java-n-IDE-for-Android with Apache License 2.0 5 votes vote down vote up
/**
 * Check to see if the file has already been opened; if so, throw
 * an exception, otherwise add it to the set of files.
 */
private void checkFileReopening(FileObject fileObject, boolean addToHistory) throws FilerException {
    for(FileObject veteran : fileObjectHistory) {
        if (fileManager.isSameFile(veteran, fileObject)) {
            if (lint)
                log.warning("proc.file.reopening", fileObject.getName());
            throw new FilerException("Attempt to reopen a file for path " + fileObject.getName());
        }
    }
    if (addToHistory)
        fileObjectHistory.add(fileObject);
}
 
Example #18
Source File: JavacFiler.java    From java-n-IDE-for-Android with Apache License 2.0 5 votes vote down vote up
private void checkNameAndExistence(String typename, boolean allowUnnamedPackageInfo) throws FilerException {
    // TODO: Check if type already exists on source or class path?
    // If so, use warning message key proc.type.already.exists
    checkName(typename, allowUnnamedPackageInfo);
    if (aggregateGeneratedSourceNames.contains(typename) ||
        aggregateGeneratedClassNames.contains(typename)) {
        if (lint)
            log.warning("proc.type.recreate", typename);
        throw new FilerException("Attempt to recreate a file for type " + typename);
    }
}
 
Example #19
Source File: JavacFiler.java    From java-n-IDE-for-Android with Apache License 2.0 5 votes vote down vote up
private void checkName(String name, boolean allowUnnamedPackageInfo) throws FilerException {
    if (!SourceVersion.isName(name) && !isPackageInfo(name, allowUnnamedPackageInfo)) {
        if (lint)
            log.warning("proc.illegal.file.name", name);
        throw new FilerException("Illegal name " + name);
    }
}
 
Example #20
Source File: JavacFiler.java    From java-n-IDE-for-Android with Apache License 2.0 4 votes vote down vote up
private void checkName(String name) throws FilerException {
    checkName(name, false);
}
 
Example #21
Source File: JavacFiler.java    From javaide with GNU General Public License v3.0 4 votes vote down vote up
private void checkName(String name) throws FilerException {
    checkName(name, false);
}