Skip to content
This repository was archived by the owner on Feb 23, 2023. It is now read-only.

Commit 8a54bbd

Browse files
schaudersdeleuze
authored andcommitted
Auditing works with all Spring Data Samples.
Closes #860 Closes #882
1 parent efaee32 commit 8a54bbd

File tree

24 files changed

+393
-64
lines changed

24 files changed

+393
-64
lines changed

samples/data-elasticsearch/src/main/java/com/example/data/elasticsearch/CLR.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public void run(String... args) throws Exception {
5353
{
5454
System.out.println("refresh index");
5555
repository.deleteAll();
56-
operations.indexOps(Conference.class).refresh();
56+
operations.indexOps(Conference.class).delete();
57+
operations.indexOps(Conference.class).create();
5758
}
5859

5960
{

samples/data-elasticsearch/src/main/java/com/example/data/elasticsearch/Conference.java

+27-7
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,45 @@
1515
*/
1616
package com.example.data.elasticsearch;
1717

18-
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
19-
20-
import java.lang.Object;
21-
import java.util.List;
22-
18+
import org.springframework.data.annotation.CreatedBy;
19+
import org.springframework.data.annotation.CreatedDate;
2320
import org.springframework.data.annotation.Id;
21+
import org.springframework.data.annotation.LastModifiedBy;
22+
import org.springframework.data.annotation.LastModifiedDate;
23+
import org.springframework.data.elasticsearch.annotations.DateFormat;
2424
import org.springframework.data.elasticsearch.annotations.Document;
2525
import org.springframework.data.elasticsearch.annotations.Field;
26+
import org.springframework.data.elasticsearch.annotations.FieldType;
2627
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
2728

29+
import java.lang.Object;
30+
import java.time.Instant;
31+
import java.util.List;
32+
33+
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
34+
2835
@Document(indexName = "conference-index")
2936
public class Conference {
3037

31-
private @Id String id;
38+
private @Id
39+
String id;
3240
private String name;
33-
private @Field(type = Date) String date;
41+
private @Field(type = Date)
42+
String date;
3443
private GeoPoint location;
3544
private List<String> keywords;
3645

46+
@CreatedDate
47+
@Field(type = FieldType.Date, format = DateFormat.basic_date_time)
48+
Instant createdAt;
49+
@CreatedBy
50+
String createdBy;
51+
@LastModifiedDate
52+
@Field(type = FieldType.Date, format= DateFormat.basic_date_time)
53+
Instant modifiedAt;
54+
@LastModifiedBy
55+
String modifiedBy;
56+
3757
// do not remove it
3858
public Conference() {
3959
}

samples/data-elasticsearch/src/main/java/com/example/data/elasticsearch/ElasticsearchApplication.java

+9
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@
1818
import org.springframework.boot.SpringApplication;
1919
import org.springframework.boot.WebApplicationType;
2020
import org.springframework.boot.autoconfigure.SpringBootApplication;
21+
import org.springframework.context.annotation.Bean;
22+
import org.springframework.data.domain.AuditorAware;
23+
import org.springframework.data.elasticsearch.config.EnableElasticsearchAuditing;
2124

2225
@SpringBootApplication
26+
@EnableElasticsearchAuditing(auditorAwareRef = "fixedAuditor")
2327
public class ElasticsearchApplication {
2428

2529
public static void main(String[] args) throws Exception {
@@ -29,4 +33,9 @@ public static void main(String[] args) throws Exception {
2933
app.run();
3034
Thread.currentThread().join(); // To be able to measure memory consumption
3135
}
36+
37+
@Bean
38+
AuditorAware<String> fixedAuditor() {
39+
return () -> java.util.Optional.of("Douglas Adams");
40+
}
3241
}

samples/data-jpa/src/main/java/app/main/SampleApplication.java

+8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.springframework.boot.SpringApplication;
88
import org.springframework.boot.autoconfigure.SpringBootApplication;
99
import org.springframework.context.annotation.Bean;
10+
import org.springframework.data.domain.AuditorAware;
11+
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
1012
import org.springframework.transaction.support.TransactionTemplate;
1113
import org.springframework.web.servlet.function.RouterFunction;
1214

@@ -17,6 +19,7 @@
1719
import static org.springframework.web.servlet.function.ServerResponse.*;
1820

1921
@SpringBootApplication
22+
@EnableJpaAuditing(auditorAwareRef = "fixedAuditor")
2023
public class SampleApplication {
2124

2225
private final FooRepository entities;
@@ -41,6 +44,11 @@ public CommandLineRunner runner() {
4144
};
4245
}
4346

47+
@Bean
48+
AuditorAware<String> fixedAuditor() {
49+
return () -> Optional.of("Douglas Adams");
50+
}
51+
4452
@Bean
4553
public RouterFunction<?> userEndpoints() {
4654
return route(GET("/"), request -> ok().body(findOne()));

samples/data-jpa/src/main/java/app/main/model/Foo.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,38 @@
11
package app.main.model;
22

3+
import org.springframework.data.annotation.CreatedBy;
4+
import org.springframework.data.annotation.CreatedDate;
5+
import org.springframework.data.annotation.LastModifiedBy;
6+
import org.springframework.data.annotation.LastModifiedDate;
7+
38
import javax.persistence.CascadeType;
49
import javax.persistence.Entity;
510
import javax.persistence.Enumerated;
611
import javax.persistence.GeneratedValue;
712
import javax.persistence.GenerationType;
813
import javax.persistence.Id;
914
import javax.persistence.OneToOne;
15+
import java.time.Instant;
1016

1117
@Entity
1218
public class Foo {
1319

1420
@Id
1521
@GeneratedValue(strategy = GenerationType.AUTO)
1622
private long id;
17-
1823
private String value;
19-
2024
@Enumerated
2125
private SomeEnum enumerated;
22-
2326
@OneToOne(cascade = CascadeType.ALL)
2427
private Flurb flurb;
28+
@CreatedDate
29+
Instant createdAt;
30+
@CreatedBy
31+
String createdBy;
32+
@LastModifiedDate
33+
Instant modifiedAt;
34+
@LastModifiedBy
35+
String modifiedBy;
2536

2637
public Foo() {
2738
}

samples/data-mongodb-reactive/src/main/java/com/example/data/mongo/MongoApplication.java

+12
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,24 @@
1717

1818
import org.springframework.boot.SpringApplication;
1919
import org.springframework.boot.autoconfigure.SpringBootApplication;
20+
import org.springframework.context.annotation.Bean;
21+
import org.springframework.data.domain.AuditorAware;
22+
import org.springframework.data.domain.ReactiveAuditorAware;
23+
import org.springframework.data.mongodb.config.EnableReactiveMongoAuditing;
24+
import reactor.core.publisher.Mono;
25+
26+
import java.util.Optional;
2027

2128
@SpringBootApplication
29+
@EnableReactiveMongoAuditing(auditorAwareRef = "fixedAuditor")
2230
public class MongoApplication {
2331

2432
public static void main(String[] args) throws Exception {
2533
SpringApplication.run(MongoApplication.class);
2634
Thread.currentThread().join(); // To be able to measure memory consumption
2735
}
36+
37+
@Bean
38+
ReactiveAuditorAware<String> fixedAuditor(){
39+
return () -> Mono.just("Douglas Adams");}
2840
}

samples/data-mongodb-reactive/src/main/java/com/example/data/mongo/Order.java

+14
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@
1515
*/
1616
package com.example.data.mongo;
1717

18+
import java.time.Instant;
1819
import java.util.ArrayList;
1920
import java.util.Date;
2021
import java.util.List;
2122

23+
import org.springframework.data.annotation.CreatedBy;
24+
import org.springframework.data.annotation.CreatedDate;
25+
import org.springframework.data.annotation.LastModifiedBy;
26+
import org.springframework.data.annotation.LastModifiedDate;
2227
import org.springframework.data.annotation.PersistenceConstructor;
2328
import org.springframework.data.mongodb.core.index.Indexed;
2429
import org.springframework.data.mongodb.core.mapping.Document;
@@ -37,6 +42,15 @@ public class Order {
3742

3843
private List<LineItem> items;
3944

45+
@CreatedDate
46+
Instant createdAt;
47+
@CreatedBy
48+
String createdBy;
49+
@LastModifiedDate
50+
Instant modifiedAt;
51+
@LastModifiedBy
52+
String modifiedBy;
53+
4054
protected Order() {
4155
}
4256

samples/data-mongodb/src/main/java/com/example/data/mongo/MongoApplication.java

+11
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,23 @@
1818

1919
import org.springframework.boot.SpringApplication;
2020
import org.springframework.boot.autoconfigure.SpringBootApplication;
21+
import org.springframework.context.annotation.Bean;
22+
import org.springframework.data.domain.AuditorAware;
23+
import org.springframework.data.mongodb.config.EnableMongoAuditing;
24+
25+
import java.util.Optional;
2126

2227
@SpringBootApplication
28+
@EnableMongoAuditing(auditorAwareRef = "fixedAuditor")
2329
public class MongoApplication {
2430

2531
public static void main(String[] args) throws Exception {
2632
SpringApplication.run(MongoApplication.class);
2733
Thread.currentThread().join(); // To be able to measure memory consumption
2834
}
35+
36+
@Bean
37+
AuditorAware<String> fixedAuditor() {
38+
return () -> Optional.of("Douglas Adams");
39+
}
2940
}

samples/data-mongodb/src/main/java/com/example/data/mongo/Order.java

+14
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@
1515
*/
1616
package com.example.data.mongo;
1717

18+
import java.time.Instant;
1819
import java.util.ArrayList;
1920
import java.util.Date;
2021
import java.util.List;
2122

23+
import org.springframework.data.annotation.CreatedBy;
24+
import org.springframework.data.annotation.CreatedDate;
25+
import org.springframework.data.annotation.LastModifiedBy;
26+
import org.springframework.data.annotation.LastModifiedDate;
2227
import org.springframework.data.annotation.PersistenceConstructor;
2328
import org.springframework.data.mongodb.core.index.Indexed;
2429
import org.springframework.data.mongodb.core.mapping.DBRef;
@@ -47,6 +52,15 @@ public class Order {
4752
@DBRef(lazy = true) // JdkProxy
4853
private PriceReduction reduction;
4954

55+
@CreatedDate
56+
Instant createdAt;
57+
@CreatedBy
58+
String createdBy;
59+
@LastModifiedDate
60+
Instant modifiedAt;
61+
@LastModifiedBy
62+
String modifiedBy;
63+
5064
protected Order() {
5165
}
5266

samples/data-neo4j/src/main/java/com/example/data/neo4j/Neo4jApplication.java

+11
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,23 @@
1818

1919
import org.springframework.boot.SpringApplication;
2020
import org.springframework.boot.autoconfigure.SpringBootApplication;
21+
import org.springframework.context.annotation.Bean;
22+
import org.springframework.data.domain.AuditorAware;
23+
import org.springframework.data.neo4j.config.EnableNeo4jAuditing;
24+
25+
import java.util.Optional;
2126

2227
@SpringBootApplication
28+
@EnableNeo4jAuditing(auditorAwareRef = "fixedAuditor")
2329
public class Neo4jApplication {
2430

2531
public static void main(String[] args) throws Exception {
2632
SpringApplication.run(Neo4jApplication.class, args);
2733
Thread.currentThread().join(); // To be able to measure memory consumption
2834
}
35+
36+
@Bean
37+
AuditorAware<String> fixedAuditor() {
38+
return () -> Optional.of("Douglas Adams");
39+
}
2940
}

samples/data-neo4j/src/main/java/com/example/data/neo4j/Order.java

+13
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@
1515
*/
1616
package com.example.data.neo4j;
1717

18+
import java.time.Instant;
1819
import java.util.ArrayList;
1920
import java.util.Date;
2021
import java.util.List;
2122

23+
import org.springframework.data.annotation.CreatedBy;
24+
import org.springframework.data.annotation.CreatedDate;
25+
import org.springframework.data.annotation.LastModifiedBy;
26+
import org.springframework.data.annotation.LastModifiedDate;
2227
import org.springframework.data.annotation.PersistenceConstructor;
2328
import org.springframework.data.neo4j.core.schema.GeneratedValue;
2429
import org.springframework.data.neo4j.core.schema.Id;
@@ -41,6 +46,14 @@ public class Order {
4146
@Relationship(value = "HAS")
4247
private List<LineItem> items;
4348

49+
@CreatedDate
50+
Instant createdAt;
51+
@CreatedBy
52+
String createdBy;
53+
@LastModifiedDate
54+
Instant modifiedAt;
55+
@LastModifiedBy
56+
String modifiedBy;
4457
protected Order() {
4558
}
4659

samples/data-r2dbc/src/main/java/com/example/webflux/Reservation.java

+14
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
package com.example.webflux;
22

3+
import org.springframework.data.annotation.CreatedBy;
4+
import org.springframework.data.annotation.CreatedDate;
35
import org.springframework.data.annotation.Id;
6+
import org.springframework.data.annotation.LastModifiedBy;
7+
import org.springframework.data.annotation.LastModifiedDate;
8+
9+
import java.time.Instant;
410

511
public class Reservation {
612

713
@Id
814
private Integer id;
915
private String name;
16+
@CreatedDate
17+
Instant createdAt;
18+
@CreatedBy
19+
String createdBy;
20+
@LastModifiedDate
21+
Instant modifiedAt;
22+
@LastModifiedBy
23+
String modifiedBy;
1024

1125
public String toString() {
1226
return "Reservation(id="+id+",name="+name+")";

samples/data-r2dbc/src/main/java/com/example/webflux/WebfluxApplication.java

+12
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,21 @@
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
66
import org.springframework.context.annotation.Bean;
7+
import org.springframework.data.domain.AuditorAware;
8+
import org.springframework.data.domain.ReactiveAuditorAware;
9+
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
710
import org.springframework.r2dbc.core.DatabaseClient;
811
import org.springframework.web.reactive.function.server.RouterFunction;
912
import org.springframework.web.reactive.function.server.ServerResponse;
13+
import reactor.core.publisher.Mono;
14+
15+
import java.util.Optional;
1016

1117
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
1218
import static org.springframework.web.reactive.function.server.ServerResponse.ok;
1319

1420
@SpringBootApplication
21+
@EnableR2dbcAuditing(auditorAwareRef = "fixedAuditor")
1522
public class WebfluxApplication {
1623

1724
@Bean
@@ -26,6 +33,11 @@ ApplicationRunner runner(DatabaseClient dbc, ReservationRepository reservationRe
2633
};
2734
}
2835

36+
@Bean
37+
ReactiveAuditorAware<String> fixedAuditor() {
38+
return () -> Mono.just("Douglas Adams");
39+
}
40+
2941
public static void main(String[] args) {
3042
SpringApplication.run(WebfluxApplication.class, args);
3143
}

spring-native-configuration/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@
9999
<artifactId>spring-cloud-task-stream</artifactId>
100100
<scope>provided</scope>
101101
</dependency>
102+
<dependency>
103+
<groupId>org.springframework.data</groupId>
104+
<artifactId>spring-data-elasticsearch</artifactId>
105+
<scope>provided</scope>
106+
</dependency>
102107
<dependency>
103108
<groupId>org.springframework.data</groupId>
104109
<artifactId>spring-data-r2dbc</artifactId>

0 commit comments

Comments
 (0)