You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mnemonic.apache.org by ga...@apache.org on 2017/04/17 22:36:31 UTC
incubator-mnemonic git commit: MNEMONIC-237: Incorrect offset for
primitive type fields
Repository: incubator-mnemonic
Updated Branches:
refs/heads/master ff7e648d4 -> c7ce58c21
MNEMONIC-237: Incorrect offset for primitive type fields
Project: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/commit/c7ce58c2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/tree/c7ce58c2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/diff/c7ce58c2
Branch: refs/heads/master
Commit: c7ce58c21d90a95abcb1ed9e9c6e05a89bdf9737
Parents: ff7e648
Author: Johnu George <jo...@cisco.com>
Authored: Mon Apr 17 15:09:59 2017 -0700
Committer: Johnu George <jo...@cisco.com>
Committed: Mon Apr 17 15:09:59 2017 -0700
----------------------------------------------------------------------
.../mnemonic/AnnotatedDurableEntityClass.java | 62 +++++++++++---------
1 file changed, 33 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/c7ce58c2/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java b/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
index a6cbaf0..7b3d3cc 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
@@ -115,36 +115,40 @@ public class AnnotatedDurableEntityClass {
private Map<String, MethodInfo> m_durablemtdinfo = new HashMap<String, MethodInfo>();
private Map<String, MethodInfo> m_entitymtdinfo = new HashMap<String, MethodInfo>();
- private long computeTypeSize(TypeMirror type) {
- long ret;
- switch (type.getKind()) {
- case BYTE:
- ret = 1L;
- break;
- case BOOLEAN:
- ret = 1L;
- break;
- case CHAR:
- ret = 2L;
- break;
- case DOUBLE:
- ret = 8L;
- break;
- case FLOAT:
- ret = 4L;
- break;
- case SHORT:
- ret = 2L;
- break;
- case INT:
- ret = 4L;
- break;
- case LONG:
- ret = 8L;
- break;
- default:
+ private long computeTypeSize(TypeName tname) throws AnnotationProcessingException {
+ long ret = 0L;
+ if (isUnboxPrimitive(tname)) {
+ TypeName tn = unboxTypeName(tname);
+ if (tn.equals(TypeName.BOOLEAN)) {
+ ret = 1L;
+ }
+ if (tn.equals(TypeName.BYTE)) {
+ ret = 1L;
+ }
+ if (tn.equals(TypeName.CHAR)) {
+ ret = 2L;
+ }
+ if (tn.equals(TypeName.DOUBLE)) {
+ ret = 8L;
+ }
+ if (tn.equals(TypeName.FLOAT)) {
+ ret = 4L;
+ }
+ if (tn.equals(TypeName.INT)) {
+ ret = 4L;
+ }
+ if (tn.equals(TypeName.LONG)) {
+ ret = 8L;
+ }
+ if (tn.equals(TypeName.SHORT)) {
+ ret = 2L;
+ }
+ } else {
ret = 8L;
}
+ if (0L == ret) {
+ throw new AnnotationProcessingException(null, "%s is not supported for type names", tname.toString());
+ }
return ret;
}
@@ -280,7 +284,7 @@ public class AnnotatedDurableEntityClass {
}
fieldinfo.name = String.format("m_%s_%s", methodname.substring(3).toLowerCase(), Utils.genRandomString());
fieldinfo.specbuilder = FieldSpec.builder(fieldinfo.type, fieldinfo.name, Modifier.PRIVATE);
- fieldinfo.fieldsize = computeTypeSize(methodinfo.elem.getReturnType());
+ fieldinfo.fieldsize = computeTypeSize(TypeName.get(methodinfo.elem.getReturnType()));
fieldinfo.fieldoff = fieldoff;
fieldoff += fieldinfo.fieldsize;
fieldinfo.efproxiesname = pgetter.EntityFactoryProxies();