2929import org .springframework .data .neo4j .core .transaction .Neo4jBookmarkManager ;
3030import org .springframework .data .neo4j .core .transaction .Neo4jTransactionManager ;
3131import org .springframework .data .neo4j .integration .shared .common .UserDefinedChangeEntityA ;
32- import org .springframework .data .neo4j .integration .shared .common .UserDefinedChangeEntityWithBeanA ;
32+ import org .springframework .data .neo4j .integration .shared .common .UserDefinedChangeEntityB ;
3333import org .springframework .data .neo4j .repository .Neo4jRepository ;
3434import org .springframework .data .neo4j .repository .config .EnableNeo4jRepositories ;
3535import org .springframework .data .neo4j .test .BookmarkCapture ;
@@ -70,10 +70,6 @@ protected void setupData() {
7070 CREATE (a:UserDefinedChangeEntityB)<-[:PROPERTY]-(b:UserDefinedChangeEntityA)-[:DIRECT]->(c:UserDefinedChangeEntityB)
7171 SET a.name= 'viaProperty', b.name = 'changeMeIfYouCan', c.name = 'direct'
7272 """ ).consume ();
73- transaction .run ("""
74- CREATE (a:UserDefinedChangeEntityWithBeanB)<-[:PROPERTY]-(b:UserDefinedChangeEntityWithBeanA)-[:DIRECT]->(c:UserDefinedChangeEntityWithBeanB)
75- SET a.name= 'viaProperty', b.name = 'changeMeIfYouCan', c.name = 'direct'
76- """ ).consume ();
7773 transaction .commit ();
7874 }
7975 this .bookmarkCapture .seedWith (session .lastBookmarks ());
@@ -83,8 +79,7 @@ protected void setupData() {
8379 @ Test
8480 void entityShouldBeUpdated (@ Autowired UserDefinedChangeARepository repository , @ Autowired Driver driver ) {
8581 var entity = repository .findByName ("changeMeIfYouCan" );
86- entity .name = "updatedName" ;
87- entity .needsUpdate = true ;
82+ entity .name = "please update me" ;
8883 repository .save (entity );
8984
9085 try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
@@ -93,15 +88,14 @@ void entityShouldBeUpdated(@Autowired UserDefinedChangeARepository repository, @
9388 var node = result .get (0 ).get ("n" ).asNode ();
9489 assertThat (node .labels ()).hasSize (1 );
9590 assertThat (node .keys ()).hasSize (1 );
96- assertThat (node .get ("name" ).asString ()).isEqualTo ("updatedName " );
91+ assertThat (node .get ("name" ).asString ()).isEqualTo ("please update me " );
9792 }
9893 }
9994
10095 @ Test
10196 void entityShouldNotBeUpdated (@ Autowired UserDefinedChangeARepository repository , @ Autowired Driver driver ) {
10297 var entity = repository .findByName ("changeMeIfYouCan" );
10398 entity .name = "updatedName" ;
104- entity .needsUpdate = false ;
10599 repository .save (entity );
106100
107101 try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
@@ -118,9 +112,8 @@ void entityShouldNotBeUpdated(@Autowired UserDefinedChangeARepository repository
118112 void directRelatedEntityShouldBeUpdated (@ Autowired UserDefinedChangeARepository repository , @ Autowired Driver driver ) {
119113 var entity = repository .findByName ("changeMeIfYouCan" );
120114 var firstB = entity .bs .get (0 );
121- firstB .name = "changed" ;
122- entity .needsUpdate = true ;
123- firstB .needsUpdate = true ;
115+ entity .name = "please update me" ;
116+ firstB .name = "please update me" ;
124117 repository .save (entity );
125118
126119 try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
@@ -129,17 +122,16 @@ void directRelatedEntityShouldBeUpdated(@Autowired UserDefinedChangeARepository
129122 var node = result .get (0 ).get ("n" ).asNode ();
130123 assertThat (node .labels ()).hasSize (1 );
131124 assertThat (node .keys ()).hasSize (1 );
132- assertThat (node .get ("name" ).asString ()).isEqualTo ("changed " );
125+ assertThat (node .get ("name" ).asString ()).isEqualTo ("please update me " );
133126 }
134127 }
135128
136129 @ Test
137130 void directRelatedEntityShouldNotBeUpdated (@ Autowired UserDefinedChangeARepository repository , @ Autowired Driver driver ) {
138131 var entity = repository .findByName ("changeMeIfYouCan" );
139132 var firstB = entity .bs .get (0 );
133+ entity .name = "please update me" ;
140134 firstB .name = "changed" ;
141- entity .needsUpdate = true ;
142- firstB .needsUpdate = false ;
143135 repository .save (entity );
144136
145137 try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
@@ -156,9 +148,8 @@ void directRelatedEntityShouldNotBeUpdated(@Autowired UserDefinedChangeAReposito
156148 void relationshipPropertyRelatedEntityShouldBeUpdated (@ Autowired UserDefinedChangeARepository repository , @ Autowired Driver driver ) {
157149 var entity = repository .findByName ("changeMeIfYouCan" );
158150 var firstB = entity .relationshipProperties .get (0 ).target ;
159- firstB .name = "changed" ;
160- entity .needsUpdate = true ;
161- firstB .needsUpdate = true ;
151+ entity .name = "please update me" ;
152+ firstB .name = "please update me" ;
162153 repository .save (entity );
163154
164155 try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
@@ -167,17 +158,16 @@ void relationshipPropertyRelatedEntityShouldBeUpdated(@Autowired UserDefinedChan
167158 var node = result .get (0 ).get ("n" ).asNode ();
168159 assertThat (node .labels ()).hasSize (1 );
169160 assertThat (node .keys ()).hasSize (1 );
170- assertThat (node .get ("name" ).asString ()).isEqualTo ("changed " );
161+ assertThat (node .get ("name" ).asString ()).isEqualTo ("please update me " );
171162 }
172163 }
173164
174165 @ Test
175166 void relationshipPropertyRelatedEntityShouldNotBeUpdated (@ Autowired UserDefinedChangeARepository repository , @ Autowired Driver driver ) {
176167 var entity = repository .findByName ("changeMeIfYouCan" );
177168 var firstB = entity .relationshipProperties .get (0 ).target ;
169+ entity .name = "please update me" ;
178170 firstB .name = "changed" ;
179- entity .needsUpdate = true ;
180- firstB .needsUpdate = false ;
181171 repository .save (entity );
182172
183173 try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
@@ -190,46 +180,10 @@ void relationshipPropertyRelatedEntityShouldNotBeUpdated(@Autowired UserDefinedC
190180 }
191181 }
192182
193- @ Test
194- void beanControlledEntityShouldBeUpdated (@ Autowired UserDefinedChangeWithBeanARepository repository , @ Autowired Driver driver ) {
195- var entity = repository .findByName ("changeMeIfYouCan" );
196- entity .name = "please update me" ;
197- repository .save (entity );
198-
199- try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
200- var result = session .run ("MATCH (n:UserDefinedChangeEntityWithBeanA) return n" ).list ();
201- assertThat (result .size ()).isEqualTo (1 );
202- var node = result .get (0 ).get ("n" ).asNode ();
203- assertThat (node .labels ()).hasSize (1 );
204- assertThat (node .keys ()).hasSize (1 );
205- assertThat (node .get ("name" ).asString ()).isEqualTo ("please update me" );
206- }
207- }
208-
209- @ Test
210- void beanControlledEntityShouldNotBeUpdated (@ Autowired UserDefinedChangeWithBeanARepository repository , @ Autowired Driver driver ) {
211- var entity = repository .findByName ("changeMeIfYouCan" );
212- entity .name = "updatedName" ;
213- repository .save (entity );
214-
215- try (var session = this .driver .session (this .bookmarkCapture .createSessionConfig ())) {
216- var result = session .run ("MATCH (n:UserDefinedChangeEntityWithBeanA) return n" ).list ();
217- assertThat (result .size ()).isEqualTo (1 );
218- var node = result .get (0 ).get ("n" ).asNode ();
219- assertThat (node .labels ()).hasSize (1 );
220- assertThat (node .keys ()).hasSize (1 );
221- assertThat (node .get ("name" ).asString ()).isEqualTo ("changeMeIfYouCan" );
222- }
223- }
224-
225183 interface UserDefinedChangeARepository extends Neo4jRepository <UserDefinedChangeEntityA , String > {
226184 UserDefinedChangeEntityA findByName (String name );
227185 }
228186
229- interface UserDefinedChangeWithBeanARepository extends Neo4jRepository <UserDefinedChangeEntityWithBeanA , String > {
230- UserDefinedChangeEntityWithBeanA findByName (String name );
231- }
232-
233187 @ Configuration
234188 @ EnableNeo4jRepositories (considerNestedRepositories = true )
235189 @ EnableTransactionManagement
@@ -256,16 +210,31 @@ public PlatformTransactionManager transactionManager(Driver driver,
256210 }
257211
258212 @ Bean
259- public UserDefinedChangeEvaluator <UserDefinedChangeEntityWithBeanA > udceForUdcewba () {
260- return new UserDefinedChangeEvaluator <UserDefinedChangeEntityWithBeanA >() {
213+ UserDefinedChangeEvaluator <UserDefinedChangeEntityA > udceForUdcewba () {
214+ return new UserDefinedChangeEvaluator <UserDefinedChangeEntityA >() {
215+ @ Override
216+ public boolean needsUpdate (UserDefinedChangeEntityA instance ) {
217+ return instance .name .equals ("please update me" );
218+ }
219+
220+ @ Override
221+ public Class <UserDefinedChangeEntityA > getEvaluatingClass () {
222+ return UserDefinedChangeEntityA .class ;
223+ }
224+ };
225+ }
226+
227+ @ Bean
228+ UserDefinedChangeEvaluator <UserDefinedChangeEntityB > udceForUdcewbb () {
229+ return new UserDefinedChangeEvaluator <UserDefinedChangeEntityB >() {
261230 @ Override
262- public boolean needsUpdate (UserDefinedChangeEntityWithBeanA instance ) {
231+ public boolean needsUpdate (UserDefinedChangeEntityB instance ) {
263232 return instance .name .equals ("please update me" );
264233 }
265234
266235 @ Override
267- public Class <UserDefinedChangeEntityWithBeanA > getEvaluatingClass () {
268- return UserDefinedChangeEntityWithBeanA .class ;
236+ public Class <UserDefinedChangeEntityB > getEvaluatingClass () {
237+ return UserDefinedChangeEntityB .class ;
269238 }
270239 };
271240 }
0 commit comments