diff options
author | Adam Lesinski <adamlesinski@google.com> | 2015-10-21 14:42:43 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2015-10-30 13:51:11 -0700 |
commit | ca5638fd85098c3d0a699492751043545f75553a (patch) | |
tree | 9ede79caee33fc201b2d5a2da994a77fa25a7c2c /tools/aapt2/java/AnnotationProcessor.cpp | |
parent | 030cfd3da697d51bf1bffd076881c12acedd851e (diff) |
AAPT2: Support generating Manifest.java
This includes comments from AndroidManifest.xml.
Change-Id: I412d9ecb12bad20a49a683d6b3bea4a0be1235ae
Diffstat (limited to 'tools/aapt2/java/AnnotationProcessor.cpp')
-rw-r--r-- | tools/aapt2/java/AnnotationProcessor.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tools/aapt2/java/AnnotationProcessor.cpp b/tools/aapt2/java/AnnotationProcessor.cpp new file mode 100644 index 000000000000..16440bcf8ad7 --- /dev/null +++ b/tools/aapt2/java/AnnotationProcessor.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "java/AnnotationProcessor.h" +#include "util/Util.h" + +#include <algorithm> + +namespace aapt { + +void AnnotationProcessor::appendCommentLine(const StringPiece16& line) { + static const std::string sDeprecated = "@deprecated"; + static const std::string sSystemApi = "@SystemApi"; + + if (line.empty()) { + return; + } + + std::string comment = util::utf16ToUtf8(line); + + if (comment.find(sDeprecated) != std::string::npos && !mDeprecated) { + mDeprecated = true; + if (!mAnnotations.empty()) { + mAnnotations += "\n"; + } + mAnnotations += mPrefix; + mAnnotations += "@Deprecated"; + } + + if (comment.find(sSystemApi) != std::string::npos && !mSystemApi) { + mSystemApi = true; + if (!mAnnotations.empty()) { + mAnnotations += "\n"; + } + mAnnotations += mPrefix; + mAnnotations += "@android.annotations.SystemApi"; + } + + if (mComment.empty()) { + mComment += mPrefix; + mComment += "/**"; + } + + mComment += "\n"; + mComment += mPrefix; + mComment += " * "; + mComment += std::move(comment); +} + +void AnnotationProcessor::appendComment(const StringPiece16& comment) { + // We need to process line by line to clean-up whitespace and append prefixes. + for (StringPiece16 line : util::tokenize(comment, u'\n')) { + appendCommentLine(util::trimWhitespace(line)); + } +} + +std::string AnnotationProcessor::buildComment() { + mComment += "\n"; + mComment += mPrefix; + mComment += " */"; + return std::move(mComment); +} + +std::string AnnotationProcessor::buildAnnotations() { + return std::move(mAnnotations); +} + +} // namespace aapt |