Skip to content

Commit 20be3d7

Browse files
feat: issue 23, issue #58, issue #57 (#59)
* Fixing incorrect JPA Mapping which was failing the Postgres IT test. Closes Issue #53. * Updating postress driver version to latest. * Refactoring to use Jackson 3, and Jackson for XML Serialization. Closes #23 * Adding Jackson 3 deps for Jakarta XML Binding w/JAXB, Closes #23, #58 * Updating test configuration for test containers, also changed H2 to use flyway for migrations * Removing unnecessary services and Spring profiles. Issue #57 * Removing unused profiles, update flyway config to enable migrations for tests. closes #57 * whitespace change to trigger build * feat - fixing failing tests from adding flyway migration for H2
1 parent 10e9172 commit 20be3d7

36 files changed

+715
-368
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,6 @@ jobs:
1414
build-and-test:
1515
name: Build and Test All Modules
1616
runs-on: ubuntu-latest
17-
18-
services:
19-
mysql:
20-
image: mysql:8.0
21-
env:
22-
MYSQL_ROOT_PASSWORD: root
23-
MYSQL_DATABASE: test_db
24-
ports:
25-
- 3306:3306
26-
options: >-
27-
--health-cmd="mysqladmin ping"
28-
--health-interval=10s
29-
--health-timeout=5s
30-
--health-retries=3
31-
32-
postgres:
33-
image: postgres:18
34-
env:
35-
POSTGRES_PASSWORD: postgres
36-
POSTGRES_DB: test_db
37-
ports:
38-
- 5432:5432
39-
options: >-
40-
--health-cmd=pg_isready
41-
--health-interval=10s
42-
--health-timeout=5s
43-
--health-retries=3
44-
4517
steps:
4618
- name: Checkout code
4719
uses: actions/checkout@v4
@@ -75,13 +47,9 @@ jobs:
7547

7648
- name: Run tests - openespi-common
7749
run: mvn test -pl openespi-common -am
78-
env:
79-
SPRING_PROFILES_ACTIVE: test
8050

8151
- name: Run tests - openespi-datacustodian
8252
run: mvn test -pl openespi-datacustodian -am
83-
env:
84-
SPRING_PROFILES_ACTIVE: test
8553

8654
# TODO: Enable when authserver implementation is complete
8755
# - name: Run tests - openespi-authserver
@@ -91,13 +59,9 @@ jobs:
9159

9260
- name: Run tests - openespi-thirdparty
9361
run: mvn test -pl openespi-thirdparty -am
94-
env:
95-
SPRING_PROFILES_ACTIVE: test
9662

9763
- name: Run integration tests with TestContainers
9864
run: mvn verify -Pintegration-tests -pl openespi-common,openespi-datacustodian,openespi-thirdparty
99-
env:
100-
SPRING_PROFILES_ACTIVE: testcontainers
10165

10266
# JaCoCo reports are automatically generated during test phase (configured in root pom.xml)
10367

openespi-common/pom.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,17 @@
300300
<groupId>commons-codec</groupId>
301301
<artifactId>commons-codec</artifactId>
302302
</dependency>
303-
<!-- Jakarta XML Binding Dependencies -->
303+
<!-- Jakarta / Jackson XML Binding Dependencies -->
304+
<dependency>
305+
<groupId>tools.jackson.dataformat</groupId>
306+
<artifactId>jackson-dataformat-xml</artifactId>
307+
<version>${jackson-bom.version}</version>
308+
</dependency>
309+
<dependency>
310+
<groupId>tools.jackson.module</groupId>
311+
<artifactId>jackson-module-jakarta-xmlbind-annotations</artifactId>
312+
<version>${jackson-bom.version}</version>
313+
</dependency>
304314
<dependency>
305315
<groupId>jakarta.xml.bind</groupId>
306316
<artifactId>jakarta.xml.bind-api</artifactId>

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/customer/entity/PhoneNumberEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
import lombok.Getter;
2424
import lombok.NoArgsConstructor;
2525
import lombok.Setter;
26+
import org.hibernate.annotations.JdbcTypeCode;
2627
import org.hibernate.proxy.HibernateProxy;
28+
import org.hibernate.type.SqlTypes;
2729

2830
import java.util.Objects;
2931
import java.util.UUID;
@@ -49,7 +51,8 @@ public class PhoneNumberEntity {
4951
*/
5052
@Id
5153
@GeneratedValue(strategy = GenerationType.UUID)
52-
@Column(name = "id", nullable = false)
54+
@JdbcTypeCode(SqlTypes.CHAR)
55+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
5356
private UUID id;
5457

5558
/**

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/customer/entity/StatementRefEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
import lombok.Getter;
2424
import lombok.NoArgsConstructor;
2525
import lombok.Setter;
26+
import org.hibernate.annotations.JdbcTypeCode;
2627
import org.hibernate.proxy.HibernateProxy;
28+
import org.hibernate.type.SqlTypes;
2729

2830
import java.util.Objects;
2931
import java.util.UUID;
@@ -48,7 +50,8 @@ public class StatementRefEntity {
4850
*/
4951
@Id
5052
@GeneratedValue(strategy = GenerationType.UUID)
51-
@Column(name = "id", nullable = false)
53+
@JdbcTypeCode(SqlTypes.CHAR)
54+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
5255
private UUID id;
5356

5457
/**

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/usage/AggregatedNodeRefEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
import lombok.Getter;
2424
import lombok.NoArgsConstructor;
2525
import lombok.Setter;
26+
import org.hibernate.annotations.JdbcTypeCode;
2627
import org.hibernate.proxy.HibernateProxy;
28+
import org.hibernate.type.SqlTypes;
2729

2830
import java.util.Objects;
2931
import java.util.UUID;
@@ -49,7 +51,8 @@ public class AggregatedNodeRefEntity {
4951
*/
5052
@Id
5153
@GeneratedValue(strategy = GenerationType.UUID)
52-
@Column(name = "id", nullable = false)
54+
@JdbcTypeCode(SqlTypes.CHAR)
55+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
5356
private UUID id;
5457

5558
/**

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/usage/BatchListEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import lombok.Getter;
2626
import lombok.NoArgsConstructor;
2727
import lombok.Setter;
28+
import org.hibernate.annotations.JdbcTypeCode;
2829
import org.hibernate.proxy.HibernateProxy;
30+
import org.hibernate.type.SqlTypes;
2931

3032
import java.net.URI;
3133
import java.net.URISyntaxException;
@@ -59,7 +61,8 @@ public class BatchListEntity {
5961
*/
6062
@Id
6163
@GeneratedValue(strategy = GenerationType.UUID)
62-
@Column(name = "id", nullable = false)
64+
@JdbcTypeCode(SqlTypes.CHAR)
65+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
6366
private UUID id;
6467

6568
/**

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/usage/IntervalReadingEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import lombok.Setter;
2626
import org.greenbuttonalliance.espi.common.domain.common.DateTimeInterval;
2727
import org.hibernate.annotations.BatchSize;
28+
import org.hibernate.annotations.JdbcTypeCode;
2829
import org.hibernate.proxy.HibernateProxy;
30+
import org.hibernate.type.SqlTypes;
2931

3032
import java.util.ArrayList;
3133
import java.util.List;
@@ -54,7 +56,8 @@ public class IntervalReadingEntity {
5456
*/
5557
@Id
5658
@GeneratedValue(strategy = GenerationType.UUID)
57-
@Column(name = "id", nullable = false)
59+
@JdbcTypeCode(SqlTypes.CHAR)
60+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
5861
private UUID id;
5962

6063
/**

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/usage/LineItemEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import lombok.Getter;
2626
import lombok.NoArgsConstructor;
2727
import lombok.Setter;
28+
import org.hibernate.annotations.JdbcTypeCode;
2829
import org.hibernate.proxy.HibernateProxy;
30+
import org.hibernate.type.SqlTypes;
2931

3032
import java.math.BigDecimal;
3133
import java.math.RoundingMode;
@@ -62,7 +64,8 @@ public class LineItemEntity {
6264
*/
6365
@Id
6466
@GeneratedValue(strategy = GenerationType.UUID)
65-
@Column(name = "id", nullable = false)
67+
@JdbcTypeCode(SqlTypes.CHAR)
68+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
6669
private UUID id;
6770

6871
/**

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/domain/usage/ReadingQualityEntity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import lombok.Getter;
2626
import lombok.NoArgsConstructor;
2727
import lombok.Setter;
28+
import org.hibernate.annotations.JdbcTypeCode;
2829
import org.hibernate.proxy.HibernateProxy;
30+
import org.hibernate.type.SqlTypes;
2931

3032
import java.util.Objects;
3133
import java.util.UUID;
@@ -57,7 +59,8 @@ public class ReadingQualityEntity {
5759
*/
5860
@Id
5961
@GeneratedValue(strategy = GenerationType.UUID)
60-
@Column(name = "id", nullable = false)
62+
@JdbcTypeCode(SqlTypes.CHAR)
63+
@Column(length = 36, columnDefinition = "char(36)", updatable = false, nullable = false)
6164
private UUID id;
6265

6366
// Quality constants based on common industry standards

openespi-common/src/main/java/org/greenbuttonalliance/espi/common/dto/atom/AtomContentDto.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,41 @@
1919

2020
package org.greenbuttonalliance.espi.common.dto.atom;
2121

22+
import com.fasterxml.jackson.annotation.*;
2223
import jakarta.xml.bind.annotation.*;
24+
import org.greenbuttonalliance.espi.common.dto.usage.MeterReadingDto;
25+
import org.greenbuttonalliance.espi.common.dto.usage.ReadingTypeDto;
26+
import org.greenbuttonalliance.espi.common.dto.usage.UsagePointDto;
27+
import tools.jackson.dataformat.xml.annotation.JacksonXmlProperty;
2328

2429
/**
2530
* Atom Content DTO record for content within Atom entries.
2631
*
2732
* Represents the content section of an Atom entry containing the actual
2833
* Green Button resource data (Customer, UsagePoint, MeterReading, etc.).
34+
*
35+
* @deprecated AtomContentDto no longer used. Payload moved to AtomEntryDto
2936
*/
37+
@Deprecated
3038
@XmlAccessorType(XmlAccessType.FIELD)
3139
@XmlType(name = "AtomContent", namespace = "http://www.w3.org/2005/Atom")
3240
public record AtomContentDto(
3341

3442
@XmlAttribute(name = "type")
3543
String type,
36-
44+
45+
@JsonProperty("resource")
46+
@JacksonXmlProperty(namespace = "http://naesb.org/espi")
47+
48+
@XmlElementWrapper(name = "resource", namespace = "http://naesb.org/espi")
49+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
50+
include = JsonTypeInfo.As.WRAPPER_OBJECT,
51+
property = "type")
52+
@JsonSubTypes({
53+
@JsonSubTypes.Type(value = UsagePointDto.class, name = "UsagePoint"),
54+
@JsonSubTypes.Type(value = MeterReadingDto.class, name = "MeterReading"),
55+
@JsonSubTypes.Type(value = ReadingTypeDto.class, name = "ReadingType")
56+
})
3757
@XmlAnyElement(lax = true)
3858
Object resource
3959
) {

0 commit comments

Comments
 (0)