Skip to content

Commit e2c3f80

Browse files
authored
Merge pull request #41 from oracle/release_2018-02-09
Releasing version 1.2.27
2 parents e7971af + ad6097b commit e2c3f80

File tree

208 files changed

+19966
-116
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

208 files changed

+19966
-116
lines changed

CHANGELOG.md

+13-1
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,22 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
1313
### Added
1414
- N/A
1515

16+
## 1.2.27 - 2018-02-08
17+
18+
### Fixed
19+
- Bug fix for not serializing dates in request bodies correctly to RFC-3339
20+
21+
### Added
22+
- Support for DNS Service. An example of calling this service is available [here](https://github.com/oracle/oci-java-sdk/blob/master/bmc-examples/src/main/java/DnsExample.java)
23+
- Support for Reserved Public IPs in Virtual Networking Service
24+
- Support for path route sets in Load Balancing Service
25+
- Support for automated and policy-based backups, read-only volume attachments, and incremental backups in Block Storage Service
26+
- Support for filtering by backupId in ListDbSystems operation in Database Service
27+
1628
## 1.2.23 - 2018-01-29
1729

1830
### Fixed
19-
* Javadoc for the Object Storage Service is being generated again
31+
- Javadoc for the Object Storage Service is being generated again
2032

2133
## 1.2.22 - 2018-01-25
2234

bmc-audit/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.oracle.oci.sdk</groupId>
77
<artifactId>oci-java-sdk</artifactId>
8-
<version>1.2.23</version>
8+
<version>1.2.27</version>
99
<relativePath>../pom.xml</relativePath>
1010
</parent>
1111

@@ -18,7 +18,7 @@
1818
<dependency>
1919
<groupId>com.oracle.oci.sdk</groupId>
2020
<artifactId>oci-java-sdk-common</artifactId>
21-
<version>1.2.23</version>
21+
<version>1.2.27</version>
2222
</dependency>
2323
</dependencies>
2424

bmc-bom/pom.xml

+14-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.oracle.oci.sdk</groupId>
99
<artifactId>oci-java-sdk</artifactId>
10-
<version>1.2.23</version>
10+
<version>1.2.27</version>
1111
<relativePath>../pom.xml</relativePath>
1212
</parent>
1313

@@ -24,7 +24,7 @@
2424
<dependency>
2525
<groupId>com.oracle.oci.sdk</groupId>
2626
<artifactId>oci-java-sdk-common</artifactId>
27-
<version>1.2.23</version>
27+
<version>1.2.27</version>
2828
<optional>false</optional>
2929
</dependency>
3030

@@ -33,37 +33,43 @@
3333
<dependency>
3434
<groupId>com.oracle.oci.sdk</groupId>
3535
<artifactId>oci-java-sdk-audit</artifactId>
36-
<version>1.2.23</version>
36+
<version>1.2.27</version>
3737
<optional>false</optional>
3838
</dependency>
3939
<dependency>
4040
<groupId>com.oracle.oci.sdk</groupId>
4141
<artifactId>oci-java-sdk-core</artifactId>
42-
<version>1.2.23</version>
42+
<version>1.2.27</version>
4343
<optional>false</optional>
4444
</dependency>
4545
<dependency>
4646
<groupId>com.oracle.oci.sdk</groupId>
4747
<artifactId>oci-java-sdk-database</artifactId>
48-
<version>1.2.23</version>
48+
<version>1.2.27</version>
49+
<optional>false</optional>
50+
</dependency>
51+
<dependency>
52+
<groupId>com.oracle.oci.sdk</groupId>
53+
<artifactId>oci-java-sdk-dns</artifactId>
54+
<version>1.2.27</version>
4955
<optional>false</optional>
5056
</dependency>
5157
<dependency>
5258
<groupId>com.oracle.oci.sdk</groupId>
5359
<artifactId>oci-java-sdk-identity</artifactId>
54-
<version>1.2.23</version>
60+
<version>1.2.27</version>
5561
<optional>false</optional>
5662
</dependency>
5763
<dependency>
5864
<groupId>com.oracle.oci.sdk</groupId>
5965
<artifactId>oci-java-sdk-loadbalancer</artifactId>
60-
<version>1.2.23</version>
66+
<version>1.2.27</version>
6167
<optional>false</optional>
6268
</dependency>
6369
<dependency>
6470
<groupId>com.oracle.oci.sdk</groupId>
6571
<artifactId>oci-java-sdk-objectstorage</artifactId>
66-
<version>1.2.23</version>
72+
<version>1.2.27</version>
6773
<optional>false</optional>
6874
</dependency>
6975
</dependencies>

bmc-common/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.oracle.oci.sdk</groupId>
77
<artifactId>oci-java-sdk</artifactId>
8-
<version>1.2.23</version>
8+
<version>1.2.27</version>
99
<relativePath>../pom.xml</relativePath>
1010
</parent>
1111

bmc-common/src/main/java/com/oracle/bmc/http/internal/HttpDateUtils.java

+21-34
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
*/
44
package com.oracle.bmc.http.internal;
55

6+
import java.text.DateFormat;
67
import java.text.ParseException;
78
import java.text.SimpleDateFormat;
89
import java.util.ArrayList;
910
import java.util.Calendar;
11+
import java.util.Collections;
1012
import java.util.Date;
1113
import java.util.List;
1214
import java.util.Locale;
@@ -25,19 +27,20 @@ public class HttpDateUtils {
2527
private static final TimeZone TIMEZONE_GMT = TimeZone.getTimeZone("GMT");
2628
private static final Date AMBIGUOUS_YEAR_TWO_DIGIT_YEAR_START;
2729

28-
private static final ThreadLocal<List<SimpleDateFormat>> RFC2616_DATE_FORMATS =
29-
new ThreadLocal<List<SimpleDateFormat>>() {
30+
private static final ThreadLocal<List<DateFormat>> RFC2616_DATE_FORMATS =
31+
new ThreadLocal<List<DateFormat>>() {
3032
@Override
31-
protected synchronized List<SimpleDateFormat> initialValue() {
33+
protected synchronized List<DateFormat> initialValue() {
3234
return createRfc2616DateFormats();
3335
}
3436
};
3537

36-
private static final ThreadLocal<List<SimpleDateFormat>> RFC3339_DATE_FORMATS =
37-
new ThreadLocal<List<SimpleDateFormat>>() {
38+
private static final ThreadLocal<List<DateFormat>> RFC3339_DATE_FORMATS =
39+
new ThreadLocal<List<DateFormat>>() {
3840
@Override
39-
protected synchronized List<SimpleDateFormat> initialValue() {
40-
return createRfc3339DateFormats();
41+
protected List<DateFormat> initialValue() {
42+
DateFormat format = new RFC3339DateFormat();
43+
return Collections.singletonList(format);
4144
}
4245
};
4346

@@ -49,8 +52,8 @@ protected synchronized List<SimpleDateFormat> initialValue() {
4952
AMBIGUOUS_YEAR_TWO_DIGIT_YEAR_START = calendar.getTime();
5053
}
5154

52-
private static List<SimpleDateFormat> createRfc2616DateFormats() {
53-
List<SimpleDateFormat> dateFormats = new ArrayList<>();
55+
private static List<DateFormat> createRfc2616DateFormats() {
56+
List<DateFormat> dateFormats = new ArrayList<>();
5457

5558
// rfc 1123
5659
dateFormats.add(new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US));
@@ -67,22 +70,8 @@ private static List<SimpleDateFormat> createRfc2616DateFormats() {
6770
return dateFormats;
6871
}
6972

70-
private static List<SimpleDateFormat> createRfc3339DateFormats() {
71-
List<SimpleDateFormat> dateFormats = new ArrayList<>();
72-
73-
// 'date-time' format
74-
dateFormats.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"));
75-
// 'date-time' with millis format
76-
dateFormats.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"));
77-
// 'full-date' format
78-
dateFormats.add(new SimpleDateFormat("yyyy-MM-dd"));
79-
80-
init(dateFormats);
81-
return dateFormats;
82-
}
83-
84-
private static void init(List<SimpleDateFormat> formats) {
85-
for (SimpleDateFormat format : formats) {
73+
private static void init(List<DateFormat> formats) {
74+
for (DateFormat format : formats) {
8675
format.setTimeZone(TIMEZONE_GMT);
8776
}
8877
}
@@ -119,23 +108,21 @@ static Date parse(String headerName, String value) {
119108
}
120109

121110
/**
122-
* Format the given date into Swagger date-time format.
111+
* Format the given date into Swagger RFC3339 date-time format.
123112
*
124113
* @param date
125114
* The date to format.
126115
* @return The formatted date.
127116
*/
128117
public static String format(Date date) {
129-
final SimpleDateFormat format =
130-
(date.getTime() % 1000 == 0)
131-
? new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
132-
: new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'");
133-
format.setTimeZone(TimeZone.getTimeZone("UTC"));
134-
return format.format(date);
118+
// for backwards compatibility, if there are no millis, do not
119+
// include them in the string.
120+
boolean includeMillis = date.getTime() % 1000 != 0;
121+
return RFC3339DateFormat.formatRfc3339(date, includeMillis);
135122
}
136123

137-
private static Date tryParse(String date, List<SimpleDateFormat> formats) {
138-
for (final SimpleDateFormat format : formats) {
124+
private static Date tryParse(String date, List<DateFormat> formats) {
125+
for (final DateFormat format : formats) {
139126
try {
140127
Date result = format.parse(date);
141128
// parse can modify TZ, reset it
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
3+
*/
4+
package com.oracle.bmc.http.internal;
5+
6+
import java.text.FieldPosition;
7+
import java.util.Date;
8+
9+
import com.fasterxml.jackson.databind.util.ISO8601Utils;
10+
import com.fasterxml.jackson.databind.util.StdDateFormat;
11+
12+
import lombok.AccessLevel;
13+
import lombok.NoArgsConstructor;
14+
15+
/**
16+
* Swagger uses RFC3339 formats for date. By default, Jackson's StdDateFormatter
17+
* will use a format that is not exactly compatible (ex, uses hour offsets instead of 'Z').
18+
* <p>
19+
* Leave deserialization alone, only take over serialization.
20+
*/
21+
@NoArgsConstructor(access = AccessLevel.PACKAGE)
22+
@SuppressWarnings({"deprecation", "serial"})
23+
public class RFC3339DateFormat extends StdDateFormat {
24+
@Override
25+
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
26+
// Same as ISO8601DateFormat but we always serialize millis
27+
toAppendTo.append(formatRfc3339(date, true));
28+
return toAppendTo;
29+
}
30+
31+
public static String formatRfc3339(Date date, boolean includeMillis) {
32+
return ISO8601Utils.format(date, includeMillis);
33+
}
34+
35+
@Override
36+
public RFC3339DateFormat clone() {
37+
return new RFC3339DateFormat();
38+
}
39+
}

bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClientFactory.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@ public class RestClientFactory {
3838
// Our default object mapper will ignore unknown properties when
3939
// deserializing results
4040
DEFAULT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
41-
// Serialize Date instances using com.fasterxml.jackson.databind.util.StdDateFormat,
42-
// which corresponds to format string of "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
41+
// Serialize Date instances using the DateFormat we specify, do not serialize into
42+
// timestamps.
4343
DEFAULT_MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
44+
// set explicit formatter that will serialize correctly
45+
DEFAULT_MAPPER.setDateFormat(new RFC3339DateFormat());
4446

4547
FilterProvider filters =
4648
new SimpleFilterProvider()

bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClientFactoryBuilder.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ public static RestClientFactoryBuilder builder() {
4040
*/
4141
public RestClientFactoryBuilder defaultConfigurator(ClientConfigurator defaultConfigurator) {
4242
if (defaultConfigurator != null) {
43-
defaultConfigurator = defaultConfigurator;
43+
this.defaultConfigurator = defaultConfigurator;
4444
} else {
45-
defaultConfigurator = DEFAULT_CONFIGURATOR;
45+
this.defaultConfigurator = DEFAULT_CONFIGURATOR;
4646
}
4747
return this;
4848
}

bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/RequestSignerImpl.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,9 @@ private Map<String, String> calculateMissingHeaders(
246246

247247
boolean isPost = httpMethod.equals("post");
248248
boolean isPut = httpMethod.equals("put");
249+
boolean isPatch = httpMethod.equals("patch");
249250
// for post and put, also verify the presence of content headers
250-
if (!(isPut || isPost)) {
251+
if (!(isPut || isPost || isPatch)) {
251252
// Asking to sign a body on GET/DELETE/HEAD is not allowed
252253
if (body != null) {
253254
throw new RuntimeException("MUST NOT send body on non-POST/PUT request");
@@ -259,7 +260,7 @@ private Map<String, String> calculateMissingHeaders(
259260

260261
// the one exception for the below is when doing a PUT if the body is an InputStream
261262
// and the configuration allows it to be skipped
262-
if (isPut) {
263+
if (isPut || isPatch) {
263264
if (body instanceof InputStream) {
264265
if (signingConfiguration.skipContentHeadersForStreamingPutRequests) {
265266
return missingHeaders;

bmc-common/src/test/java/com/oracle/bmc/http/internal/HttpDateUtilsTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public void lastModifiedHeader_ansiC() {
3636

3737
@Test
3838
public void otherDateHeader_rfc3339_dateTime_withMillis_utc() {
39-
Date date = HttpDateUtils.parse("other-date", "1985-04-12T23:20:50.52Z");
39+
Date date = HttpDateUtils.parse("other-date", "1985-04-12T23:20:50.052Z");
4040
assertEquals(482196050052L, date.getTime());
4141
}
4242

@@ -74,6 +74,6 @@ public void format_rfc3339_nonZeroMillis() {
7474
cal.set(1985, 3, 12, 23, 20, 50);
7575
cal.set(Calendar.MILLISECOND, 52);
7676
Date date = cal.getTime();
77-
assertEquals("1985-04-12T23:20:50.52Z", HttpDateUtils.format(date));
77+
assertEquals("1985-04-12T23:20:50.052Z", HttpDateUtils.format(date));
7878
}
7979
}

bmc-core/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.oracle.oci.sdk</groupId>
77
<artifactId>oci-java-sdk</artifactId>
8-
<version>1.2.23</version>
8+
<version>1.2.27</version>
99
<relativePath>../pom.xml</relativePath>
1010
</parent>
1111

@@ -18,7 +18,7 @@
1818
<dependency>
1919
<groupId>com.oracle.oci.sdk</groupId>
2020
<artifactId>oci-java-sdk-common</artifactId>
21-
<version>1.2.23</version>
21+
<version>1.2.27</version>
2222
</dependency>
2323
</dependencies>
2424

0 commit comments

Comments
 (0)