Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support customized status #32

Merged
merged 1 commit into from
Mar 15, 2025
Merged

support customized status #32

merged 1 commit into from
Mar 15, 2025

Conversation

weihubeats
Copy link
Owner

@weihubeats weihubeats commented Mar 15, 2025

#30

Summary by CodeRabbit

  • Chores

    • Updated the project version to 0.0.3.
  • New Features

    • Introduced a new configuration option to customize web response codes.
    • Enhanced auto-configuration for error handling and web services, simplifying setup and integration of dynamic web responses.

Copy link

coderabbitai bot commented Mar 15, 2025

Walkthrough

This pull request updates the project’s revision properties in two Maven POM files, adds a new configuration property to an application YAML file, and modifies web configuration classes to integrate configurable response handling. A new auto-configuration class and properties class are introduced to support dependency injection and dynamic response codes. Additionally, auto-configuration entries have been reorganized by removing legacy entries and adding new ones in the appropriate Spring Boot configuration files.

Changes

File(s) Change Summary
pom.xml
spring-boot-nebula-dependencies/pom.xml
Updated <revision> property from 0.0.2 to 0.0.3.
spring-boot-nebula-samples/.../application.yaml Added new configuration under the nebula key: nebula.web.response-code: 100.
spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/BaseWebMvcConfig.java
spring-boot-nebula-web/src/main/java/com/nebula/web/boot/interceptor/NebulaResponseBodyHandleReturnValue.java
Modified web configuration: introduced a new nebulaWebProperties field in BaseWebMvcConfig and updated return value handling to use injected NebulaWebProperties (via Lombok’s @RequiredArgsConstructor).
spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebAutoConfiguration.java
spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebProperties.java
Added new configuration classes: NebulaWebAutoConfiguration creates a BaseWebMvcConfig bean and NebulaWebProperties binds external configuration using @ConfigurationProperties.
spring-boot-nebula-web/src/main/resources/META-INF/spring.factories
spring-boot-nebula-web/src/main/resources/META-INF/spring/.../AutoConfiguration.imports
Removed auto-configuration entries for NebulaRestExceptionHandler and BaseWebMvcConfig in spring.factories, and added new auto-configuration entries for NebulaRestExceptionHandler and NebulaWebAutoConfiguration in the AutoConfiguration.imports file.

Sequence Diagram(s)

sequenceDiagram
    participant App as Application Startup
    participant SBAC as Spring Boot Auto-Configuration
    participant AutoConf as NebulaWebAutoConfiguration
    participant WebConf as BaseWebMvcConfig
    participant RetHandler as NebulaResponseBodyHandleReturnValue
    participant Props as NebulaWebProperties

    App->>SBAC: Initiate auto-configuration
    SBAC->>AutoConf: Load Nebula web auto-configuration
    AutoConf->>WebConf: Instantiate BaseWebMvcConfig(ObjectMapper, NebulaWebProperties)
    WebConf->>RetHandler: Configure return value handling with NebulaWebProperties
    RetHandler->>Props: Retrieve dynamic response code property
Loading

Poem

I'm a bouncy rabbit in a code-filled dell,
Hopping through changes where new configs dwell.
With versions bumped and properties in sight,
Auto magic unfolds, making Spring Boot bright.
I nibble on carrots of code with delight—
CodeRabbit leaps, happy in every byte! 🐇

Tip

⚡🧪 Multi-step agentic review comment chat (experimental)
  • We're introducing multi-step agentic chat in review comments. This experimental feature enhances review discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments.
    - To enable this feature, set early_access to true under in the settings.
✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (6)
spring-boot-nebula-samples/spring-boot-nebula-web-sample/src/main/resources/application.yaml (1)

12-12: Add a newline at the end of the file

The YAML file is missing a newline character at the end. Adding this follows standard text file conventions and would resolve the linting warning.

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 12-12: no new line character at the end of file

(new-line-at-end-of-file)

spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebProperties.java (3)

7-11: Complete the Javadoc description

The class has a Javadoc comment with an empty description. Consider adding a meaningful description such as "Configuration properties for Nebula web response handling" to improve documentation.


13-14: Consider using more specific Lombok annotations

@Data provides a lot of functionality that might not be needed for a simple properties class. Consider using more specific annotations like @Getter @Setter @ToString instead, which would be more explicit about the needed functionality.


19-19: Consider adding validation for responseCode

To prevent misconfiguration, consider adding validation to ensure valid values for the response code. For example, you could use Bean Validation annotations like @Min and @Max to define acceptable ranges.

+ import javax.validation.constraints.Min;
+ import javax.validation.constraints.Max;

 /**
  * 返回状态码
  */
+ @Min(0) @Max(999)
 private Integer responseCode = ResultCode.SUCCESS.getCode();
spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebAutoConfiguration.java (1)

8-12: Complete the Javadoc description

The class has a Javadoc comment with an empty description. Consider adding a meaningful description such as "Auto-configuration for Nebula web module" to improve documentation.

spring-boot-nebula-web/src/main/java/com/nebula/web/boot/interceptor/NebulaResponseBodyHandleReturnValue.java (1)

65-65: Configurable response code implementation looks good.

The hardcoded response code has been replaced with a configurable one from properties, which improves flexibility.

You might consider making the message configurable as well, similar to how you've made the response code configurable. This would provide consistent configurability throughout the response.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2a5c19b and c65cbb2.

📒 Files selected for processing (9)
  • pom.xml (1 hunks)
  • spring-boot-nebula-dependencies/pom.xml (1 hunks)
  • spring-boot-nebula-samples/spring-boot-nebula-web-sample/src/main/resources/application.yaml (1 hunks)
  • spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/BaseWebMvcConfig.java (1 hunks)
  • spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebAutoConfiguration.java (1 hunks)
  • spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebProperties.java (1 hunks)
  • spring-boot-nebula-web/src/main/java/com/nebula/web/boot/interceptor/NebulaResponseBodyHandleReturnValue.java (3 hunks)
  • spring-boot-nebula-web/src/main/resources/META-INF/spring.factories (0 hunks)
  • spring-boot-nebula-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (1 hunks)
💤 Files with no reviewable changes (1)
  • spring-boot-nebula-web/src/main/resources/META-INF/spring.factories
🧰 Additional context used
🪛 YAMLlint (1.35.1)
spring-boot-nebula-samples/spring-boot-nebula-web-sample/src/main/resources/application.yaml

[error] 12-12: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (11)
pom.xml (1)

27-34: Revision Property Update in pom.xml
The <revision> property has been successfully updated to 0.0.3. This incremental version bump appears appropriate for synchronizing the version across all modules, and the change is simple yet crucial for ensuring consistency.

spring-boot-nebula-dependencies/pom.xml (1)

14-20: Revision Property Update in Dependencies Module
The <revision> property is updated to 0.0.3, ensuring alignment with the parent project's version. Please verify that all modules depending on this property are correctly synchronized and that this version bump aligns with your overall release strategy.

spring-boot-nebula-samples/spring-boot-nebula-web-sample/src/main/resources/application.yaml (1)

10-12: Verify that response-code value of 100 is intentional

The configured value of 100 is unusual if this is meant to represent an HTTP status code, as HTTP success codes typically start at 200, with 100s being informational status codes. Please confirm that this value aligns with your ResultCode.SUCCESS.getCode() implementation.

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 12-12: no new line character at the end of file

(new-line-at-end-of-file)

spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/BaseWebMvcConfig.java (2)

50-50: LGTM - Good implementation of dependency injection

The addition of the NebulaWebProperties field is properly implemented with constructor injection through @AllArgsConstructor. This change enables configurable response handling instead of hardcoded values.


55-55: LGTM - Handler now uses configurable properties

The handler now correctly receives the nebulaWebProperties object, enabling dynamic configuration of response handling.

spring-boot-nebula-web/src/main/java/com/nebula/web/boot/config/NebulaWebAutoConfiguration.java (2)

13-15: LGTM - Well-structured auto-configuration

The auto-configuration class is properly implemented with the @EnableConfigurationProperties annotation referring to the correct properties class. The structure follows Spring Boot's auto-configuration best practices.


17-21: LGTM - Properly configured bean definition

The bean method correctly creates a BaseWebMvcConfig instance with the required dependencies. The use of constructor injection is a good practice, ensuring all dependencies are properly provided.

spring-boot-nebula-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (1)

1-2: Auto-configuration entries look good!

These entries will enable automatic configuration of the Nebula web module's error handling and web configuration components in your Spring Boot application. The imports follow standard Spring Boot auto-configuration conventions.

spring-boot-nebula-web/src/main/java/com/nebula/web/boot/interceptor/NebulaResponseBodyHandleReturnValue.java (3)

25-25: Import for the new configuration properties class correctly added.

This import is necessary for accessing the configurable web properties.


28-28: Lombok annotation added correctly.

Using @RequiredArgsConstructor is a good approach for constructor-based dependency injection with Spring.


39-42: Constructor injection implementation looks good.

The class now uses constructor injection for NebulaWebProperties, which follows Spring best practices for dependency injection.

@weihubeats weihubeats merged commit 69038c9 into develop Mar 15, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant