Skip to content

Commit 59c9928

Browse files
committed
move @DaTa annotation to act.data.annotations package; StringValueResolverPlugin updates
1 parent 782e446 commit 59c9928

24 files changed

Lines changed: 139 additions & 43 deletions

src/main/java/act/app/data/StringValueResolverManager.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,8 @@ private void registerBuiltInResolvers(AppConfig config) {
7777
put(LocalDateTime.class, new JodaLocalDateTimeCodec(config));
7878
put(LocalTime.class, new JodaLocalTimeCodec(config));
7979
put(DateTime.class, new JodaDateTimeCodec(config));
80-
put(File.class, FileResolver.INSTANCE);
80+
// rebind SObjectResolver to ISObject.class in addition to SObject.class
8181
put(ISObject.class, SObjectResolver.INSTANCE);
82-
put(SObject.class, SObjectResolver.INSTANCE);
8382
}
8483

8584
private void put(Class type, StringValueResolver resolver) {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package act.data;
2+
3+
import org.osgl.util.C;
4+
import org.osgl.util.IO;
5+
import org.osgl.util.StringValueResolver;
6+
7+
import java.util.List;
8+
9+
/**
10+
* Read content lines from resource URL
11+
*/
12+
public class ContentLinesResolver extends StringValueResolver<List<String>> {
13+
14+
public static final ContentLinesResolver INSTANCE = new ContentLinesResolver();
15+
16+
@Override
17+
public List<String> resolve(String value) {
18+
Boolean reportingError = attribute("reportError");
19+
if (null == reportingError) {
20+
reportingError = false;
21+
}
22+
if (reportingError) {
23+
return IO.readLines(SObjectResolver.INSTANCE.resolve(value).asInputStream());
24+
} else {
25+
try {
26+
return IO.readLines(SObjectResolver.INSTANCE.resolve(value).asInputStream());
27+
} catch (Exception e) {
28+
// ignore and return the value in list
29+
return C.list(value);
30+
}
31+
}
32+
}
33+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package act.data;
2+
3+
import org.osgl.util.IO;
4+
import org.osgl.util.StringValueResolver;
5+
6+
/**
7+
* Read content as string from resource URL
8+
*/
9+
public class ContentStringResolver extends StringValueResolver<String> {
10+
11+
public static final ContentStringResolver INSTANCE = new ContentStringResolver();
12+
13+
@Override
14+
public String resolve(String value) {
15+
Boolean reportingError = attribute("reportError");
16+
if (null == reportingError) {
17+
reportingError = false;
18+
}
19+
if (reportingError) {
20+
return IO.readContentAsString(SObjectResolver.INSTANCE.resolve(value).asInputStream());
21+
} else {
22+
try {
23+
return IO.readContentAsString(SObjectResolver.INSTANCE.resolve(value).asInputStream());
24+
} catch (Exception e) {
25+
// ignore and return the value
26+
return value;
27+
}
28+
}
29+
}
30+
}

src/main/java/act/data/FileResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/**
88
* Resolver File from path
99
*/
10-
public class FileResolver extends StringValueResolver<File> {
10+
public class FileResolver extends StringValueResolverPlugin<File> {
1111

1212
public static final FileResolver INSTANCE = new FileResolver();
1313

src/main/java/act/data/HttpFormatValueResolver.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
import org.osgl.http.H;
44

55
public class HttpFormatValueResolver extends StringValueResolverPlugin<H.Format> {
6-
@Override
7-
protected Class<H.Format> targetType() {
8-
return H.Format.class;
9-
}
106

117
@Override
128
public H.Format resolve(String value) {

src/main/java/act/data/JodaDateTimeCodec.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public JodaDateTimeCodec(String format) {
3333
@Inject
3434
public JodaDateTimeCodec(AppConfig config) {
3535
String patten = config.dateTimeFormat();
36-
if (patten.contains("8601")) {
36+
if (patten.contains("8601") || patten.contains("iso")) {
3737
dateFormat = ISODateTimeFormat.dateTime();
3838
} else {
3939
dateFormat = DateTimeFormat.forPattern(patten);

src/main/java/act/data/SObjectResolver.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
import okhttp3.OkHttpClient;
44
import okhttp3.Request;
55
import okhttp3.Response;
6-
import org.osgl.storage.ISObject;
76
import org.osgl.storage.impl.SObject;
87
import org.osgl.util.Codec;
98
import org.osgl.util.E;
10-
import org.osgl.util.StringValueResolver;
119

1210
import java.io.File;
1311
import java.io.IOException;
@@ -16,7 +14,7 @@
1614
/**
1715
* Resolver String value into SObject
1816
*/
19-
public class SObjectResolver extends StringValueResolver<ISObject> {
17+
public class SObjectResolver extends StringValueResolverPlugin<SObject> {
2018

2119
public static final SObjectResolver INSTANCE = new SObjectResolver();
2220

@@ -30,7 +28,7 @@ public SObjectResolver() {
3028
}
3129

3230
@Override
33-
public ISObject resolve(String value) {
31+
public SObject resolve(String value) {
3432
if (value.startsWith("http://") || value.startsWith("https://")) {
3533
return resolveFromURL(value);
3634
} else if (value.startsWith("data:")) {
@@ -54,7 +52,7 @@ public ISObject resolve(String value) {
5452
}
5553
}
5654

57-
private ISObject resolveFromURL(String url) {
55+
private SObject resolveFromURL(String url) {
5856
try {
5957
Response resp = http.newCall(new Request.Builder().url(url).build()).execute();
6058
return SObject.of(resp.body().byteStream());
@@ -63,7 +61,7 @@ private ISObject resolveFromURL(String url) {
6361
}
6462
}
6563

66-
private ISObject resolveFromBase64(String encoded) {
64+
private SObject resolveFromBase64(String encoded) {
6765
return SObject.of(Codec.decodeBase64(encoded));
6866
}
6967

src/main/java/act/data/StringValueResolverPlugin.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
public abstract class StringValueResolverPlugin<T> extends StringValueResolver<T> implements Plugin {
77

8-
protected abstract Class<T> targetType();
9-
108
@Override
119
public void register() {
1210
StringValueResolver.addPredefinedResolver(targetType(), this);

src/main/java/act/data/Data.java renamed to src/main/java/act/data/annotation/Data.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package act.data;
1+
package act.data.annotation;
22

33
import act.util.EqualField;
44
import act.util.EqualIgnore;

src/main/java/act/cli/ReadContent.java renamed to src/main/java/act/data/annotation/ReadContent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package act.cli;
1+
package act.data.annotation;
22

33
import java.lang.annotation.ElementType;
44
import java.lang.annotation.Retention;
@@ -11,6 +11,7 @@
1111
*
1212
* Note this assumes the file or URL resource is a text file
1313
*/
14+
@ResolveStringValue({})
1415
@Retention(RetentionPolicy.RUNTIME)
1516
@Target({ElementType.PARAMETER, ElementType.FIELD})
1617
public @interface ReadContent {

0 commit comments

Comments
 (0)