Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ private ModelProcessor.ProcessResult processAnnotations(AnnotationElements valid
private void generateSources(ModelProcessor.ProcessResult processResult) throws IOException {
timeStats.start("Generate Sources");
LOGGER.info("Number of files generated by AndroidAnnotations: {}", processResult.codeModel.countArtifacts());
CodeModelGenerator modelGenerator = new CodeModelGenerator(processingEnv.getFiler(), coreVersion);
CodeModelGenerator modelGenerator = new CodeModelGenerator(processingEnv.getFiler(), coreVersion, androidAnnotationsEnv.getOptionValue(CodeModelGenerator.OPTION_ENCODING));
modelGenerator.generate(processResult);
timeStats.stop("Generate Sources");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.androidannotations.Option;
import org.androidannotations.helper.ModelConstants;
import org.androidannotations.holder.BaseGeneratedClassHolder;
import org.androidannotations.internal.generation.CodeModelGenerator;
import org.androidannotations.internal.helper.AndroidManifestFinder;
import org.androidannotations.internal.rclass.ProjectRClassFinder;
import org.androidannotations.logger.LoggerContext;
Expand All @@ -46,6 +47,7 @@ public Options(ProcessingEnvironment processingEnvironment) {
addSupportedOption(LoggerContext.OPTION_LOG_APPENDER_CONSOLE);
addSupportedOption(LoggerContext.OPTION_LOG_APPENDER_FILE);
addSupportedOption(BaseGeneratedClassHolder.OPTION_GENERATE_FINAL_CLASSES);
addSupportedOption(CodeModelGenerator.OPTION_ENCODING);
}

public void addAllSupportedOptions(List<Option> options) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,55 @@
package org.androidannotations.internal.generation;

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.UnsupportedCharsetException;

import javax.annotation.processing.Filer;

import org.androidannotations.Option;
import org.androidannotations.internal.process.ModelProcessor;
import org.androidannotations.logger.Logger;
import org.androidannotations.logger.LoggerFactory;

import com.helger.jcodemodel.writer.PrologCodeWriter;

public class CodeModelGenerator {

public static final Option OPTION_ENCODING = new Option("encoding", "UTF-8");

private static final Logger LOGGER = LoggerFactory.getLogger(CodeModelGenerator.class);

private final Filer filer;
private final String header;
private final String encoding;

public CodeModelGenerator(Filer filer, String aaVersion) {
public CodeModelGenerator(Filer filer, String aaVersion, String encoding) {
this.filer = filer;
this.header = "DO NOT EDIT THIS FILE.\n"
+ "Generated using AndroidAnnotations " + aaVersion + ".\n\n"
+ "You can create a larger work that contains this file and distribute that work under terms of your choice.\n";
this.encoding = encoding;
}

public void generate(ModelProcessor.ProcessResult processResult) throws IOException {
Charset charset = getCharset();

SourceCodeWriter sourceCodeWriter = new SourceCodeWriter(filer, processResult.originatingElements);
SourceCodeWriter sourceCodeWriter = new SourceCodeWriter(filer, processResult.originatingElements, charset);

PrologCodeWriter prologCodeWriter = new PrologCodeWriter(sourceCodeWriter, header);

processResult.codeModel.build(prologCodeWriter, new ResourceCodeWriter(filer));
processResult.codeModel.build(prologCodeWriter, new ResourceCodeWriter(filer, charset));
}

private Charset getCharset() {
try {
return Charset.forName(encoding);
} catch (UnsupportedCharsetException exception) {
Charset defaultCharset = Charset.defaultCharset();

LOGGER.warn("The requested charset ({}) is not available, falling back to platform default ({}).", encoding, defaultCharset);

return defaultCharset;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;

import javax.annotation.processing.Filer;
import javax.tools.FileObject;
Expand All @@ -29,8 +30,8 @@ public class ResourceCodeWriter extends AbstractCodeWriter {

private final Filer filer;

public ResourceCodeWriter(Filer filer) {
super(null);
public ResourceCodeWriter(Filer filer, Charset charset) {
super(charset);
this.filer = filer;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;

import javax.annotation.processing.Filer;
import javax.annotation.processing.FilerException;
Expand Down Expand Up @@ -44,8 +45,8 @@ public void write(int arg0) throws IOException {
}
}

public SourceCodeWriter(Filer filer, OriginatingElements originatingElements) {
super(null);
public SourceCodeWriter(Filer filer, OriginatingElements originatingElements, Charset charset) {
super(charset);
this.filer = filer;
this.originatingElements = originatingElements;
}
Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.