Skip to content

Commit 9a4e04d

Browse files
committed
Merge master keeping reworked code only
2 parents f21ea10 + cec0f54 commit 9a4e04d

File tree

2 files changed

+119
-3
lines changed

2 files changed

+119
-3
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- uses: actions/checkout@v4
1616
- uses: actions/setup-java@v4
1717
with:
18-
java-version: '11'
18+
java-version: '17'
1919
distribution: 'adopt'
2020
- uses: actions/cache@v4
2121
with:

README.md

Lines changed: 118 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE.txt)
77
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fgooddata%2Fgooddata-java.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fgooddata%2Fgooddata-java?ref=badge_shield)
88

9-
[![Javadocs](http://javadoc.io/badge/com.gooddata/gooddata-java.svg)](http://javadoc.io/doc/com.gooddata/gooddata-java)
9+
[![Javadocs](https://javadoc.io/badge/com.gooddata/gooddata-java.svg)](https://javadoc.io/doc/com.gooddata/gooddata-java)
1010
[![Javadocs Model](https://javadoc.io/badge2/com.gooddata/gooddata-java-model/javadoc--model.svg)](https://javadoc.io/doc/com.gooddata/gooddata-java-model)
1111
[![Maven Central](https://img.shields.io/maven-central/v/com.gooddata/gooddata-java)](https://central.sonatype.com/artifact/com.gooddata/gooddata-java)
1212
[![Release](https://img.shields.io/github/v/release/gooddata/gooddata-java?sort=semver)](https://github.com/gooddata/gooddata-java/releases)
@@ -39,6 +39,18 @@ The most recent major will be supported in the following mode:
3939
Please follow the [upgrade instructions](https://github.com/gooddata/gooddata-java/wiki/Upgrading) to update to the
4040
newest version.
4141

42+
### Version 5.0 Release Notes
43+
44+
**Version 5.0.0** represents a major modernization release with the following key updates:
45+
46+
- **Java 17**: Minimum runtime requirement upgraded from Java 11
47+
- **Spring 6**: Framework upgraded from Spring 5.x to Spring 6.0.15
48+
- **Apache HTTP Client 5**: Primary HTTP client upgraded from version 4.5.x to 5.5.1
49+
- **Enhanced Compatibility**: Improved support for modern Java environments and cloud platforms
50+
51+
This release maintains API compatibility while modernizing the underlying infrastructure for better performance,
52+
security, and future extensibility.
53+
4254
## Modules
4355

4456
The *GoodData Java SDK* contains following modules:
@@ -87,9 +99,110 @@ The *GoodData Java SDK* uses:
8799
* the *Slf4j API* version 2.0.17
88100
* the *Java Development Kit (JDK)* version 17 or later to build
89101

102+
### Migration from version 4.x to 5.0
103+
104+
**Version 5.0 introduces several significant upgrades that may require code changes in your application:**
105+
106+
#### Breaking Changes
107+
108+
1. **Java Runtime Requirement**: Minimum Java version is now **Java 17** (previously Java 11)
109+
2. **Spring Framework**: Upgraded from Spring 5.x to **Spring 6.0.15**
110+
3. **Apache HTTP Client**: Primary HTTP client upgraded from version 4.5.x to **version 5.5.1**
111+
4. **SLF4J**: Upgraded from version 1.7.x to **version 2.0.17**
112+
113+
#### Migration Steps
114+
115+
**1. Update Java Runtime**
116+
- Ensure your application runs on Java 17 or later
117+
- Update your build tools (Maven/Gradle) to use Java 17
118+
119+
**2. Spring Framework Compatibility**
120+
- If your application uses Spring Framework, upgrade to Spring 6.x or later
121+
- Review Spring 6 migration guide for additional breaking changes: https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x
122+
- Update Spring Boot to version 3.0+ if applicable
123+
124+
**3. Dependency Updates**
125+
Update your `pom.xml` or `build.gradle`:
126+
127+
```xml
128+
<!-- Update GoodData Java SDK -->
129+
<dependency>
130+
<groupId>com.gooddata</groupId>
131+
<artifactId>gooddata-java</artifactId>
132+
<version>5.0.0+api3</version>
133+
</dependency>
134+
135+
<!-- If you use Spring, upgrade to 6.x -->
136+
<dependency>
137+
<groupId>org.springframework</groupId>
138+
<artifactId>spring-core</artifactId>
139+
<version>6.0.15</version>
140+
</dependency>
141+
142+
<!-- Update SLF4J if you use it directly -->
143+
<dependency>
144+
<groupId>org.slf4j</groupId>
145+
<artifactId>slf4j-api</artifactId>
146+
<version>2.0.17</version>
147+
</dependency>
148+
```
149+
150+
**4. HTTP Client Configuration**
151+
- The SDK now internally uses Apache HTTP Client 5.x
152+
- If you customize HTTP client settings via `GoodDataSettings`, the API remains compatible
153+
- Custom HTTP interceptors or low-level HTTP client configurations may need updates
154+
155+
**5. Testing**
156+
- Thoroughly test your application after upgrade
157+
- Pay special attention to HTTP client behavior, especially with authentication and connection pooling
158+
- Verify logging functionality works as expected with SLF4J 2.x
159+
160+
#### Compatibility Notes
161+
162+
- **API Compatibility**: The public SDK API remains largely backward compatible
163+
- **Internal Changes**: HTTP client implementation has been modernized but SDK interfaces are unchanged
164+
- **Jakarta EE**: Spring 6 uses Jakarta EE namespaces instead of Java EE (affects annotations if you use them directly)
165+
166+
#### Known Migration Issues and Solutions
167+
168+
**1. ClassNotFoundException for Apache HTTP Client classes**
169+
If you see errors like `ClassNotFoundException: org.apache.http.impl.client.HttpClientBuilder`:
170+
- Remove any direct dependencies on Apache HTTP Client 4.x from your project
171+
- The SDK now uses HTTP Client 5.x internally, which has different package names
172+
173+
**2. Spring Boot Applications**
174+
- Ensure you're using Spring Boot 3.0+ which includes Spring 6
175+
- Update your `@SpringBootApplication` and other Spring annotations if needed
176+
- Check Spring Boot 3.0 migration guide for additional changes
177+
178+
**3. Logging Configuration**
179+
- SLF4J 2.x has some configuration changes compared to 1.7.x
180+
- Update your `logback.xml` or `log4j2.xml` if you use advanced logging features
181+
- Basic logging configuration should work without changes
182+
183+
**4. Build Tools**
184+
```xml
185+
<!-- Maven: Ensure Java 17 in your pom.xml -->
186+
<properties>
187+
<maven.compiler.source>17</maven.compiler.source>
188+
<maven.compiler.target>17</maven.compiler.target>
189+
</properties>
190+
```
191+
192+
```gradle
193+
// Gradle: Ensure Java 17 in your build.gradle
194+
java {
195+
sourceCompatibility = JavaVersion.VERSION_17
196+
targetCompatibility = JavaVersion.VERSION_17
197+
}
198+
```
199+
200+
For additional help, please refer to the [upgrading wiki page](https://github.com/gooddata/gooddata-java/wiki/Upgrading)
201+
or [create an issue](https://github.com/gooddata/gooddata-java/issues) if you encounter problems during migration.
202+
90203
##### Retry of failed API calls
91204

92-
You can retry your failed requests since version *2.34.0*. Turn it on by configuring
205+
You can retry your failed requests since *GoodData Java SDK* version *2.34.0*. Turn it on by configuring
93206
[RetrySettings](https://github.com/gooddata/gooddata-java/blob/master/src/main/java/com/gooddata/retry/RetrySettings.java)
94207
and add [Spring retry](https://github.com/spring-projects/spring-retry) to your classpath:
95208

@@ -101,6 +214,9 @@ and add [Spring retry](https://github.com/spring-projects/spring-retry) to your
101214
</dependency>
102215
```
103216

217+
**Note**: Spring Retry 2.0.12 is compatible with Spring 6. If you're upgrading from prior versions of the SDK,
218+
ensure you also upgrade your Spring Retry dependency to version 2.x for compatibility.
219+
104220
### Logging
105221

106222
The *GoodData Java SDK* logs using `slf4j-api`. Please adjust your logging configuration for

0 commit comments

Comments
 (0)