|
34 | 34 | import org.springframework.sbm.engine.context.ProjectContextHolder;
|
35 | 35 | import org.springframework.sbm.java.api.Member;
|
36 | 36 | import org.springframework.sbm.java.impl.DependenciesChangedEventHandler;
|
| 37 | +import org.springframework.sbm.java.impl.RewriteJavaParser; |
| 38 | +import org.springframework.sbm.project.resource.SbmApplicationProperties; |
37 | 39 | import org.springframework.sbm.project.resource.TestProjectContext;
|
38 | 40 |
|
39 | 41 | import java.nio.file.Path;
|
@@ -506,62 +508,62 @@ void testResolvedDependenciesWithPomTypeDependency() {
|
506 | 508 | }
|
507 | 509 |
|
508 | 510 | @Test
|
509 |
| - void addDependencyWithNoTransitiveDependencies() { |
510 |
| - String pomXml = |
511 |
| - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + |
512 |
| - "<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"\n" + |
513 |
| - " xmlns=\"http://maven.apache.org/POM/4.0.0\"\n" + |
514 |
| - " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" + |
515 |
| - " <modelVersion>4.0.0</modelVersion>\n" + |
516 |
| - " <groupId>org.springframework.sbm</groupId>\n" + |
517 |
| - " <artifactId>dummy-test-artifact</artifactId>\n" + |
518 |
| - " <version>1.0.0</version>\n" + |
519 |
| - "</project>\n"; |
520 |
| - |
521 |
| - String javaSource = "import javax.validation.constraints.Email;\n" + |
522 |
| - "public class Cat {\n" + |
523 |
| - " @Email\n" + |
524 |
| - " private String email;\n" + |
525 |
| - "}"; |
526 |
| - |
527 |
| - // precondition: jar does not exist |
528 |
| - // precondition: types from jar not resolvable |
529 |
| - |
530 |
| - // verify jar was downloaded |
531 |
| - // verify types from jar can be resolved |
532 |
| - |
| 511 | + void addDependencyShouldPublishEvent() { |
533 | 512 | ApplicationEventPublisher eventPublisher = mock(ApplicationEventPublisher.class);
|
| 513 | + |
534 | 514 | ProjectContext context = TestProjectContext.buildProjectContext(eventPublisher)
|
535 |
| - .withMavenRootBuildFileSource(pomXml) |
536 |
| - .addJavaSource("src/main/java", javaSource) |
| 515 | + .withMavenRootBuildFileSource( |
| 516 | + """ |
| 517 | + <?xml version="1.0" encoding="UTF-8"?> |
| 518 | + <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" |
| 519 | + xmlns="http://maven.apache.org/POM/4.0.0" |
| 520 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
| 521 | + <modelVersion>4.0.0</modelVersion> |
| 522 | + <groupId>org.springframework.sbm</groupId> |
| 523 | + <artifactId>dummy-test-artifact</artifactId> |
| 524 | + <version>1.0.0</version> |
| 525 | + </project> |
| 526 | + """ |
| 527 | + ) |
| 528 | + .addJavaSource("src/main/java", |
| 529 | + """ |
| 530 | + import javax.validation.constraints.Email; |
| 531 | + public class Cat { |
| 532 | + @Email |
| 533 | + private String email; |
| 534 | + } |
| 535 | + """ |
| 536 | + ) |
537 | 537 | .build();
|
538 | 538 |
|
539 | 539 | BuildFile buildFile = context.getBuildFile();
|
540 | 540 |
|
541 | 541 | Member member = context.getProjectJavaSources().list().get(0).getTypes().get(0).getMembers().get(0);
|
542 | 542 |
|
| 543 | + // The Email annotation cannot be resolved |
543 | 544 | boolean b = member.hasAnnotation("javax.validation.constraints.Email");
|
544 | 545 | assertThat(b).isFalse();
|
545 | 546 |
|
| 547 | + // adding the validation-api brings the Email annotation |
546 | 548 | buildFile.addDependency(Dependency.builder()
|
547 | 549 | .groupId("javax.validation")
|
548 | 550 | .artifactId("validation-api")
|
549 | 551 | .version("2.0.1.Final")
|
550 | 552 | .build());
|
551 | 553 |
|
552 | 554 |
|
553 |
| - |
554 | 555 | Class<DependenciesChangedEvent> event = DependenciesChangedEvent.class;
|
555 | 556 | ArgumentCaptor<DependenciesChangedEvent> argumentCaptor = ArgumentCaptor.forClass(event);
|
556 | 557 | assertEventPublished(eventPublisher, argumentCaptor, event, 1);
|
557 | 558 |
|
558 |
| -// verify(eventPublisher).publishEvent(argumentCaptor); |
559 |
| - assertThat(argumentCaptor.getValue().getResolvedDependencies().get(0).toString()).endsWith("javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar"); |
560 |
| - |
561 | 559 | DependenciesChangedEvent fireEvent = argumentCaptor.getValue();
|
| 560 | + assertThat(fireEvent.getResolvedDependencies().get(0).toString()).endsWith("javax/validation/validation-api/2.0.1.Final/validation-api-2.0.1.Final.jar"); |
| 561 | + |
| 562 | + // call DependenciesChangedEventHandler to trigger recompile |
| 563 | + RewriteJavaParser rewriteJavaParser = new RewriteJavaParser(new SbmApplicationProperties()); |
562 | 564 | ProjectContextHolder projectContextHolder = new ProjectContextHolder();
|
563 | 565 | projectContextHolder.setProjectContext(context);
|
564 |
| - DependenciesChangedEventHandler handler = new DependenciesChangedEventHandler(projectContextHolder, eventPublisher); |
| 566 | + DependenciesChangedEventHandler handler = new DependenciesChangedEventHandler(projectContextHolder, eventPublisher, rewriteJavaParser); |
565 | 567 | handler.onDependenciesChanged(fireEvent);
|
566 | 568 |
|
567 | 569 | Member member2 = context.getProjectJavaSources().list().get(0).getTypes().get(0).getMembers().get(0);
|
|
0 commit comments