forked from Netflix/astyanax
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DefaultAnnotationSet.java
57 lines (47 loc) · 1.47 KB
/
DefaultAnnotationSet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.netflix.astyanax.mapping;
import java.lang.reflect.Field;
/**
* The default annotation set. Supports {@link Id} and {@link Column}
*/
public class DefaultAnnotationSet implements AnnotationSet2<Id, Column> {
private Integer defaultTtl = null;
public DefaultAnnotationSet() {
this(null);
}
/**
* Specify a default time-to-live for columns with no own ttl specification.
*
* @param defaultColumnTtl
* a negative value or 0 disables default ttl setting
*/
public DefaultAnnotationSet(Integer defaultColumnTtl) {
this.defaultTtl = defaultColumnTtl;
}
@Override
public Class<Id> getIdAnnotation() {
return Id.class;
}
@Override
public Class<Column> getColumnAnnotation() {
return Column.class;
}
@Override
public String getIdName(Field field, Id annotation) {
String name = annotation.value();
return (name.length() > 0) ? name : field.getName();
}
@Override
public String getColumnName(Field field, Column annotation) {
String name = annotation.value();
return (name.length() > 0) ? name : field.getName();
}
@Override
public int getColumnTtl(Field field, Column annotation) {
if (annotation.ttl() > -1) {
return annotation.ttl();
} else if (defaultTtl != null && defaultTtl.intValue() > 0) {
return defaultTtl.intValue();
}
return -1;
}
}