|
36 | 36 | import org.springframework.boot.configurationprocessor.metadata.ItemMetadata;
|
37 | 37 | import org.springframework.boot.configurationprocessor.metadata.Metadata;
|
38 | 38 | import org.springframework.boot.configurationprocessor.metadata.TestJsonConverter;
|
| 39 | +import org.springframework.boot.configurationsample.endpoint.CustomPropertiesEndpoint; |
| 40 | +import org.springframework.boot.configurationsample.endpoint.DisabledEndpoint; |
| 41 | +import org.springframework.boot.configurationsample.endpoint.OnlyJmxEndpoint; |
| 42 | +import org.springframework.boot.configurationsample.endpoint.OnlyWebEndpoint; |
| 43 | +import org.springframework.boot.configurationsample.endpoint.SimpleEndpoint; |
| 44 | +import org.springframework.boot.configurationsample.endpoint.incremental.IncrementalEndpoint; |
| 45 | +import org.springframework.boot.configurationsample.endpoint.incremental.IncrementalJmxEndpoint; |
39 | 46 | import org.springframework.boot.configurationsample.incremental.BarProperties;
|
40 | 47 | import org.springframework.boot.configurationsample.incremental.FooProperties;
|
41 | 48 | import org.springframework.boot.configurationsample.incremental.RenamedBarProperties;
|
@@ -517,6 +524,164 @@ public void lombokInnerClassWithGetterProperties() throws IOException {
|
517 | 524 | assertThat(metadata.getItems()).hasSize(3);
|
518 | 525 | }
|
519 | 526 |
|
| 527 | + |
| 528 | + @Test |
| 529 | + public void simpleEndpoint() throws IOException { |
| 530 | + ConfigurationMetadata metadata = compile(SimpleEndpoint.class); |
| 531 | + assertThat(metadata).has(Metadata.withGroup("endpoints.simple") |
| 532 | + .fromSource(SimpleEndpoint.class)); |
| 533 | + assertThat(metadata).has(enabledFlag("simple", true)); |
| 534 | + assertThat(metadata).has(jmxEnabledFlag("simple", true)); |
| 535 | + assertThat(metadata).has(webEnabledFlag("simple", true)); |
| 536 | + assertThat(metadata).has(cacheTtl("simple")); |
| 537 | + assertThat(metadata.getItems()).hasSize(5); |
| 538 | + } |
| 539 | + |
| 540 | + @Test |
| 541 | + public void disableEndpoint() throws IOException { |
| 542 | + ConfigurationMetadata metadata = compile(DisabledEndpoint.class); |
| 543 | + assertThat(metadata).has(Metadata.withGroup("endpoints.disabled") |
| 544 | + .fromSource(DisabledEndpoint.class)); |
| 545 | + assertThat(metadata).has(enabledFlag("disabled", false)); |
| 546 | + assertThat(metadata).has(jmxEnabledFlag("disabled", false)); |
| 547 | + assertThat(metadata).has(webEnabledFlag("disabled", false)); |
| 548 | + assertThat(metadata).has(cacheTtl("disabled")); |
| 549 | + assertThat(metadata.getItems()).hasSize(5); |
| 550 | + } |
| 551 | + |
| 552 | + @Test |
| 553 | + public void customPropertiesEndpoint() throws IOException { |
| 554 | + ConfigurationMetadata metadata = compile(CustomPropertiesEndpoint.class); |
| 555 | + assertThat(metadata).has(Metadata.withGroup("endpoints.customprops") |
| 556 | + .fromSource(CustomPropertiesEndpoint.class)); |
| 557 | + assertThat(metadata).has(Metadata.withProperty("endpoints.customprops.name"). |
| 558 | + ofType(String.class).withDefaultValue("test")); |
| 559 | + assertThat(metadata).has(enabledFlag("customprops", true)); |
| 560 | + assertThat(metadata).has(jmxEnabledFlag("customprops", true)); |
| 561 | + assertThat(metadata).has(webEnabledFlag("customprops", true)); |
| 562 | + assertThat(metadata).has(cacheTtl("customprops")); |
| 563 | + assertThat(metadata.getItems()).hasSize(6); |
| 564 | + } |
| 565 | + |
| 566 | + @Test |
| 567 | + public void jmxOnlyEndpoint() throws IOException { |
| 568 | + ConfigurationMetadata metadata = compile(OnlyJmxEndpoint.class); |
| 569 | + assertThat(metadata).has(Metadata.withGroup("endpoints.jmx") |
| 570 | + .fromSource(OnlyJmxEndpoint.class)); |
| 571 | + assertThat(metadata).has(enabledFlag("jmx", true)); |
| 572 | + assertThat(metadata).has(jmxEnabledFlag("jmx", true)); |
| 573 | + assertThat(metadata).has(cacheTtl("jmx")); |
| 574 | + assertThat(metadata.getItems()).hasSize(4); |
| 575 | + } |
| 576 | + |
| 577 | + @Test |
| 578 | + public void webOnlyEndpoint() throws IOException { |
| 579 | + ConfigurationMetadata metadata = compile(OnlyWebEndpoint.class); |
| 580 | + assertThat(metadata).has(Metadata.withGroup("endpoints.web") |
| 581 | + .fromSource(OnlyWebEndpoint.class)); |
| 582 | + assertThat(metadata).has(enabledFlag("web", true)); |
| 583 | + assertThat(metadata).has(webEnabledFlag("web", true)); |
| 584 | + assertThat(metadata).has(cacheTtl("web")); |
| 585 | + assertThat(metadata.getItems()).hasSize(4); |
| 586 | + } |
| 587 | + |
| 588 | + @Test |
| 589 | + public void incrementalEndpointBuildChangeGeneralEnabledFlag() throws Exception { |
| 590 | + TestProject project = new TestProject(this.temporaryFolder, |
| 591 | + IncrementalEndpoint.class); |
| 592 | + ConfigurationMetadata metadata = project.fullBuild(); |
| 593 | + assertThat(metadata).has(Metadata.withGroup("endpoints.incremental") |
| 594 | + .fromSource(IncrementalEndpoint.class)); |
| 595 | + assertThat(metadata).has(enabledFlag("incremental", true)); |
| 596 | + assertThat(metadata).has(jmxEnabledFlag("incremental", true)); |
| 597 | + assertThat(metadata).has(webEnabledFlag("incremental", true)); |
| 598 | + assertThat(metadata).has(cacheTtl("incremental")); |
| 599 | + assertThat(metadata.getItems()).hasSize(5); |
| 600 | + project.replaceText(IncrementalEndpoint.class, "id = \"incremental\"", |
| 601 | + "id = \"incremental\", enabledByDefault = false"); |
| 602 | + metadata = project.incrementalBuild(IncrementalEndpoint.class); |
| 603 | + assertThat(metadata).has(Metadata.withGroup("endpoints.incremental") |
| 604 | + .fromSource(IncrementalEndpoint.class)); |
| 605 | + assertThat(metadata).has(enabledFlag("incremental", false)); |
| 606 | + assertThat(metadata).has(jmxEnabledFlag("incremental", false)); |
| 607 | + assertThat(metadata).has(webEnabledFlag("incremental", false)); |
| 608 | + assertThat(metadata).has(cacheTtl("incremental")); |
| 609 | + assertThat(metadata.getItems()).hasSize(5); |
| 610 | + } |
| 611 | + |
| 612 | + @Test |
| 613 | + public void incrementalEndpointBuildDisableJmxEndpoint() throws Exception { |
| 614 | + TestProject project = new TestProject(this.temporaryFolder, |
| 615 | + IncrementalEndpoint.class); |
| 616 | + ConfigurationMetadata metadata = project.fullBuild(); |
| 617 | + assertThat(metadata).has(Metadata.withGroup("endpoints.incremental") |
| 618 | + .fromSource(IncrementalEndpoint.class)); |
| 619 | + assertThat(metadata).has(enabledFlag("incremental", true)); |
| 620 | + assertThat(metadata).has(jmxEnabledFlag("incremental", true)); |
| 621 | + assertThat(metadata).has(webEnabledFlag("incremental", true)); |
| 622 | + assertThat(metadata).has(cacheTtl("incremental")); |
| 623 | + assertThat(metadata.getItems()).hasSize(5); |
| 624 | + project.replaceText(IncrementalEndpoint.class, "id = \"incremental\"", |
| 625 | + "id = \"incremental\", types = Endpoint.Type.WEB"); |
| 626 | + metadata = project.incrementalBuild(IncrementalEndpoint.class); |
| 627 | + assertThat(metadata).has(Metadata.withGroup("endpoints.incremental") |
| 628 | + .fromSource(IncrementalEndpoint.class)); |
| 629 | + assertThat(metadata).has(enabledFlag("incremental", true)); |
| 630 | + assertThat(metadata).has(webEnabledFlag("incremental", true)); |
| 631 | + assertThat(metadata).has(cacheTtl("incremental")); |
| 632 | + assertThat(metadata.getItems()).hasSize(4); |
| 633 | + } |
| 634 | + |
| 635 | + @Test |
| 636 | + public void incrementalEndpointBuildEnableJmxEndpoint() throws Exception { |
| 637 | + TestProject project = new TestProject(this.temporaryFolder, |
| 638 | + IncrementalJmxEndpoint.class); |
| 639 | + ConfigurationMetadata metadata = project.fullBuild(); |
| 640 | + assertThat(metadata).has(Metadata.withGroup("endpoints.incremental") |
| 641 | + .fromSource(IncrementalJmxEndpoint.class)); |
| 642 | + assertThat(metadata).has(enabledFlag("incremental", true)); |
| 643 | + assertThat(metadata).has(jmxEnabledFlag("incremental", true)); |
| 644 | + assertThat(metadata).has(cacheTtl("incremental")); |
| 645 | + assertThat(metadata.getItems()).hasSize(4); |
| 646 | + project.replaceText(IncrementalJmxEndpoint.class, ", types = Endpoint.Type.JMX", |
| 647 | + ""); |
| 648 | + metadata = project.incrementalBuild(IncrementalJmxEndpoint.class); |
| 649 | + assertThat(metadata).has(Metadata.withGroup("endpoints.incremental") |
| 650 | + .fromSource(IncrementalJmxEndpoint.class)); |
| 651 | + assertThat(metadata).has(enabledFlag("incremental", true)); |
| 652 | + assertThat(metadata).has(jmxEnabledFlag("incremental", true)); |
| 653 | + assertThat(metadata).has(webEnabledFlag("incremental", true)); |
| 654 | + assertThat(metadata).has(cacheTtl("incremental")); |
| 655 | + assertThat(metadata.getItems()).hasSize(5); |
| 656 | + } |
| 657 | + |
| 658 | + private Metadata.MetadataItemCondition enabledFlag(String endpointId, |
| 659 | + boolean defaultValue) { |
| 660 | + return Metadata.withEnabledFlag("endpoints." + endpointId + ".enabled") |
| 661 | + .withDefaultValue(defaultValue).withDescription( |
| 662 | + String.format("Enable the %s endpoint.", endpointId)); |
| 663 | + } |
| 664 | + |
| 665 | + private Metadata.MetadataItemCondition jmxEnabledFlag(String endpointId, |
| 666 | + boolean defaultValue) { |
| 667 | + return Metadata.withEnabledFlag("endpoints." + endpointId + ".jmx.enabled") |
| 668 | + .withDefaultValue(defaultValue).withDescription(String.format( |
| 669 | + "Expose the %s endpoint as a JMX MBean.", endpointId)); |
| 670 | + } |
| 671 | + |
| 672 | + private Metadata.MetadataItemCondition webEnabledFlag(String endpointId, |
| 673 | + boolean defaultValue) { |
| 674 | + return Metadata.withEnabledFlag("endpoints." + endpointId + ".web.enabled") |
| 675 | + .withDefaultValue(defaultValue).withDescription(String.format( |
| 676 | + "Expose the %s endpoint as a Web endpoint.", endpointId)); |
| 677 | + } |
| 678 | + |
| 679 | + private Metadata.MetadataItemCondition cacheTtl(String endpointId) { |
| 680 | + return Metadata.withProperty("endpoints." + endpointId + ".cache.time-to-live") |
| 681 | + .ofType(Long.class).withDefaultValue(0).withDescription( |
| 682 | + "Maximum time in milliseconds that a response can be cached."); |
| 683 | + } |
| 684 | + |
520 | 685 | @Test
|
521 | 686 | public void mergingOfAdditionalProperty() throws Exception {
|
522 | 687 | ItemMetadata property = ItemMetadata.newProperty(null, "foo", "java.lang.String",
|
|
0 commit comments