Skip to content

Commit 72803b6

Browse files
fix bug that super classes can't auto access data
1 parent 193ee5f commit 72803b6

12 files changed

Lines changed: 61 additions & 30 deletions

File tree

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# DataAutoAccess
2+
[![Releases](https://img.shields.io/github/release/ThirtyDegreesRay/DataAutoAccess.svg)](https://github.com/ThirtyDegreesRay/DataAutoAccess/releases/latest)
3+
24
自动存取Android Bundle中数据——给需要自动存取的变量添加注解,编译时会通过注解处理自动生成存取的代码
35

46
* Activity或Service启动时自动取出Intent中的数据,并赋值给相应的field
@@ -59,8 +61,8 @@ Then, apply the 'android-apt' plugin in your module-level build.gradle and add t
5961
}
6062

6163
dependencies {
62-
compile 'com.thirtydegreesray:dataautoaccess:1.2.6'
63-
apt 'com.thirtydegreesray:dataautoaccess-compiler:1.2.6'
64+
compile 'com.thirtydegreesray:dataautoaccess:latestVersion'
65+
apt 'com.thirtydegreesray:dataautoaccess-compiler:latestVersion'
6466
}
6567

6668
## Proguard

build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ buildscript {
66
jcenter()
77
}
88
dependencies {
9-
classpath 'com.android.tools.build:gradle:2.1.3'
10-
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
9+
classpath 'com.android.tools.build:gradle:2.3.3'
1110

1211
classpath "com.github.dcendents:android-maven-gradle-plugin:1.5"
1312
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'

dataautoaccess-annotations/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ dependencies {
88
compile fileTree(dir: 'libs', include: ['*.jar'])
99
}
1010

11-
sourceCompatibility = "1.6"
12-
targetCompatibility = "1.6"
11+
targetCompatibility = '1.7'
12+
sourceCompatibility = '1.7'
1313

1414
def siteUrl = 'https://github.com/ThirtyDegreesRay/DataAutoAccess' // 项目的主页
1515
def gitUrl = 'https://github.com/ThirtyDegreesRay/DataAutoAccess.git' // Git仓库的url

dataautoaccess-compiler/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ dependencies {
1010
compile project(':dataautoaccess-annotations')
1111
}
1212

13-
sourceCompatibility = "1.6"
14-
targetCompatibility = "1.6"
13+
targetCompatibility = '1.7'
14+
sourceCompatibility = '1.7'
1515

1616
def siteUrl = 'https://github.com/ThirtyDegreesRay/DataAutoAccess' // 项目的主页
1717
def gitUrl = 'https://github.com/ThirtyDegreesRay/DataAutoAccess.git' // Git仓库的url

dataautoaccess/build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
apply plugin: 'com.android.library'
2-
32
apply plugin: 'com.github.dcendents.android-maven'
43
apply plugin: 'com.jfrog.bintray'
54
version = VERSION_NAME
65

76
android {
8-
compileSdkVersion 24
9-
buildToolsVersion "24.0.2"
7+
compileSdkVersion 26
8+
buildToolsVersion "26.0.2"
109

1110
defaultConfig {
1211
minSdkVersion 9
13-
targetSdkVersion 24
12+
targetSdkVersion 26
1413
versionCode VERSION_CODE as int
1514
versionName VERSION_NAME
1615

dataautoaccess/src/main/java/com/thirtydegreesray/dataautoaccess/DataAutoAccess.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import java.util.ArrayList;
1010
import java.util.LinkedHashMap;
11+
import java.util.List;
1112

1213
/**
1314
* Data auto access<br>
@@ -70,8 +71,8 @@ public static void getData(Object targetObject, Bundle dataStore) {
7071
return;
7172
}
7273

73-
DataAccessor<Object> dataAccessor = getDataAccessor(targetObject, dataStore);
74-
if (dataAccessor != null) {
74+
List<DataAccessor<Object>> dataAccessors = getDataAccessors(targetObject);
75+
for(DataAccessor<Object> dataAccessor : dataAccessors){
7576
dataAccessor.getData(targetObject, dataStore);
7677
}
7778
}
@@ -87,16 +88,30 @@ public static void saveData(Object targetObject, Bundle dataStore) {
8788
return;
8889
}
8990

90-
DataAccessor<Object> dataAccessor = getDataAccessor(targetObject, dataStore);
91-
if (dataAccessor != null) {
91+
List<DataAccessor<Object>> dataAccessors = getDataAccessors(targetObject);
92+
for(DataAccessor<Object> dataAccessor : dataAccessors){
9293
dataAccessor.saveData(targetObject, dataStore);
9394
}
9495
}
9596

96-
private static DataAccessor<Object> getDataAccessor(Object targetObject, Bundle dataStore) {
97+
private static List<DataAccessor<Object>> getDataAccessors(Object targetObject) {
98+
List<DataAccessor<Object>> dataAccessors = new ArrayList<>();
9799
Class<?> targetClass = targetObject.getClass();
100+
getDataAccessors(dataAccessors, targetClass);
101+
return dataAccessors;
102+
}
103+
104+
private static List<DataAccessor<Object>> getDataAccessors(
105+
List<DataAccessor<Object>> dataAccessors, Class<?> targetClass) {
98106
String className = targetClass.getName() + SUFFIX;
99-
return getDataAccessor(className);
107+
DataAccessor<Object> dataAccessor = getDataAccessor(className);
108+
if(dataAccessor != null){
109+
dataAccessors.add(dataAccessor);
110+
}
111+
if(targetClass.getSuperclass() != null){
112+
getDataAccessors(dataAccessors, targetClass.getSuperclass());
113+
}
114+
return dataAccessors;
100115
}
101116

102117
private static DataAccessor<Object> getDataAccessor(String className) {

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ org.gradle.jvmargs=-Xmx1536m
1717
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
1818
# org.gradle.parallel=true
1919

20-
VERSION_NAME = 1.2.6
21-
VERSION_CODE = 16
20+
VERSION_NAME = 1.2.7
21+
VERSION_CODE = 17
2222

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Mon Dec 28 10:00:20 PST 2015
1+
#Tue Jul 25 21:40:01 CST 2017
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

sample/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
apply plugin: 'com.android.application'
2-
apply plugin: 'android-apt'
32

43
android {
5-
compileSdkVersion 24
6-
buildToolsVersion "24.0.2"
4+
compileSdkVersion 26
5+
buildToolsVersion "26.0.2"
76

87
defaultConfig {
98
applicationId "com.thirtydegreesray.dataautoaccess.sample"
10-
minSdkVersion 9
11-
targetSdkVersion 24
9+
minSdkVersion 14
10+
targetSdkVersion 26
1211
versionCode 1
1312
versionName "1.0"
1413

@@ -32,8 +31,9 @@ dependencies {
3231
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
3332
exclude group: 'com.android.support', module: 'support-annotations'
3433
})
35-
compile 'com.android.support:appcompat-v7:24.2.0'
34+
compile 'com.android.support:appcompat-v7:26.+'
3635
testCompile 'junit:junit:4.12'
37-
compile project(':dataautoaccess')
38-
apt project(':dataautoaccess-compiler')
36+
compile project(path: ':dataautoaccess')
37+
compile project(path: ':dataautoaccess-annotations')
38+
annotationProcessor project(path: ':dataautoaccess-compiler')
3939
}

sample/src/main/java/com/thirtydegreesray/dataautoaccess/sample/BaseActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,16 @@
55
import android.support.v7.app.AppCompatActivity;
66

77
import com.thirtydegreesray.dataautoaccess.DataAutoAccess;
8+
import com.thirtydegreesray.dataautoaccess.annotation.AutoAccess;
89

910
/**
1011
* Created by ThirtyDegreesRay on 2016/9/1 09:58
1112
*/
1213

1314
public class BaseActivity extends AppCompatActivity {
15+
16+
@AutoAccess protected boolean started ;
17+
1418
@Override
1519
protected void onCreate(@Nullable Bundle savedInstanceState) {
1620
super.onCreate(savedInstanceState);
@@ -23,4 +27,5 @@ protected void onSaveInstanceState(Bundle outState) {
2327
//save data
2428
DataAutoAccess.saveData(this, outState);
2529
}
30+
2631
}

0 commit comments

Comments
 (0)