aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/eclipse
diff options
context:
space:
mode:
authorgrootjans <grootjans@gmail.com>2011-02-14 20:25:44 +0100
committergrootjans <grootjans@gmail.com>2011-02-14 22:51:53 +0100
commit3a6615234d40cf7e300dfc52c9a212e7b65eed8b (patch)
tree26ac21852efcabc5529cbe1e645bc636beb9a9e2 /src/core/lombok/eclipse
parentb15bcb09e9e05b584e73c999dd9c29b6cfb94a44 (diff)
downloadlombok-3a6615234d40cf7e300dfc52c9a212e7b65eed8b.tar.gz
lombok-3a6615234d40cf7e300dfc52c9a212e7b65eed8b.tar.bz2
lombok-3a6615234d40cf7e300dfc52c9a212e7b65eed8b.zip
Added annotation for handleconstructor: issue 172
Diffstat (limited to 'src/core/lombok/eclipse')
-rw-r--r--src/core/lombok/eclipse/handlers/HandleConstructor.java21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleConstructor.java b/src/core/lombok/eclipse/handlers/HandleConstructor.java
index db071329..db26beed 100644
--- a/src/core/lombok/eclipse/handlers/HandleConstructor.java
+++ b/src/core/lombok/eclipse/handlers/HandleConstructor.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans.
+ * Copyright © 2010-2011 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -81,7 +81,8 @@ public class HandleConstructor {
String staticName = ann.staticName();
if (level == AccessLevel.NONE) return true;
List<EclipseNode> fields = new ArrayList<EclipseNode>();
- new HandleConstructor().generateConstructor(typeNode, level, fields, staticName, false, false, ast);
+ Annotation[] onConstructor = getAndRemoveAnnotationParameter(ast, "onConstructor");
+ new HandleConstructor().generateConstructor(typeNode, level, fields, staticName, onConstructor, false, false, ast);
return true;
}
}
@@ -97,7 +98,8 @@ public class HandleConstructor {
@SuppressWarnings("deprecation")
boolean suppressConstructorProperties = ann.suppressConstructorProperties();
if (level == AccessLevel.NONE) return true;
- new HandleConstructor().generateConstructor(typeNode, level, findRequiredFields(typeNode), staticName, false, suppressConstructorProperties, ast);
+ Annotation[] onConstructor = getAndRemoveAnnotationParameter(ast, "onConstructor");
+ new HandleConstructor().generateConstructor(typeNode, level, findRequiredFields(typeNode), staticName, onConstructor, false, suppressConstructorProperties, ast);
return true;
}
}
@@ -137,7 +139,8 @@ public class HandleConstructor {
fields.add(child);
}
- new HandleConstructor().generateConstructor(typeNode, level, fields, staticName, false, suppressConstructorProperties, ast);
+ Annotation[] onConstructor = getAndRemoveAnnotationParameter(ast, "onConstructor");
+ new HandleConstructor().generateConstructor(typeNode, level, fields, staticName, onConstructor, false, suppressConstructorProperties, ast);
return true;
}
}
@@ -157,10 +160,10 @@ public class HandleConstructor {
}
public void generateRequiredArgsConstructor(EclipseNode typeNode, AccessLevel level, String staticName, boolean skipIfConstructorExists, ASTNode source) {
- generateConstructor(typeNode, level, findRequiredFields(typeNode), staticName, skipIfConstructorExists, false, source);
+ generateConstructor(typeNode, level, findRequiredFields(typeNode), staticName, null, skipIfConstructorExists, false, source);
}
- public void generateConstructor(EclipseNode typeNode, AccessLevel level, List<EclipseNode> fields, String staticName, boolean skipIfConstructorExists, boolean suppressConstructorProperties, ASTNode source) {
+ public void generateConstructor(EclipseNode typeNode, AccessLevel level, List<EclipseNode> fields, String staticName, Annotation[] onConstructor, boolean skipIfConstructorExists, boolean suppressConstructorProperties, ASTNode source) {
if (skipIfConstructorExists && constructorExists(typeNode) != MemberExistsResult.NOT_EXISTS) return;
if (skipIfConstructorExists) {
for (EclipseNode child : typeNode.down()) {
@@ -175,7 +178,7 @@ public class HandleConstructor {
boolean staticConstrRequired = staticName != null && !staticName.equals("");
- ConstructorDeclaration constr = createConstructor(staticConstrRequired ? AccessLevel.PRIVATE : level, typeNode, fields, suppressConstructorProperties, source);
+ ConstructorDeclaration constr = createConstructor(staticConstrRequired ? AccessLevel.PRIVATE : level, typeNode, fields, suppressConstructorProperties, onConstructor, source);
injectMethod(typeNode, constr);
if (staticConstrRequired) {
MethodDeclaration staticConstr = createStaticConstructor(level, staticName, typeNode, fields, source);
@@ -218,7 +221,7 @@ public class HandleConstructor {
}
private ConstructorDeclaration createConstructor(AccessLevel level,
- EclipseNode type, Collection<EclipseNode> fields, boolean suppressConstructorProperties, ASTNode source) {
+ EclipseNode type, Collection<EclipseNode> fields, boolean suppressConstructorProperties, Annotation[] onConstructor, ASTNode source) {
long p = (long)source.sourceStart << 32 | source.sourceEnd;
boolean isEnum = (((TypeDeclaration)type.get()).modifiers & ClassFileConstants.AccEnum) != 0;
@@ -230,7 +233,7 @@ public class HandleConstructor {
Eclipse.setGeneratedBy(constructor, source);
constructor.modifiers = EclipseHandlerUtil.toEclipseModifier(level);
- constructor.annotations = null;
+ constructor.annotations = onConstructor;
constructor.selector = ((TypeDeclaration)type.get()).name;
constructor.constructorCall = new ExplicitConstructorCall(ExplicitConstructorCall.ImplicitSuper);
Eclipse.setGeneratedBy(constructor.constructorCall, source);