Files
Vickey d2c897846c refactor(common): split ResponseEnum into SuccessCode/ErrorCode and align body code with HTTP status
Replace the mixed-purpose ResponseEnum with a ResponseCode interface implemented
by SuccessCode (OK/ADD/DELETE/UPDATE) and ErrorCode (NOT_FOUND/UNAUTHORIZED/
TOKEN_INVALID/IP_INVALID/FORBIDDEN/PASSWORD_*/VALIDATION/OUT_OF_RANGE/FAILURE),
each carrying its HTTP status so the envelope body code and transport status no
longer diverge.

- Introduce abstract BusinessException carrying an ErrorCode; all 23 business
  exceptions extend it and bind a fixed code. ExceptionConfig reads the carried
  code to set both body code and HTTP status (404->R404, 401->R401, 422->R422).
- Add GrpcRFactory (ok/fail/notFound) and remove the hand-written GrpcR builder
  boilerplate across 19 gRPC servers.
- Drop the dead @EnumValue index and ofIndex/ofCode/ofName lookups; OUT_OF_RANGE
  is now carried by OutRangeException.
- Update R factory methods to accept ResponseCode; migrate 90+ controllers,
  11 gRPC facades, OpenAPI specs and README to the split enums.

Also fix several pre-existing red tests surfaced by the full suite:
- OAuthMcpRuntimeServiceImplTest: setUp set @Value fields refactored into
  OAuthProperties; inject the properties object instead.
- DriverReadServiceImplTest: reset leaked ConnectionBackoff static state via a
  new clear() in @BeforeEach.
- modbus-rtu/tcp: make the static modbusFactory non-final so tests can swap it.
- ble: override no-arg health() to report OFFLINE before initialization.
- PlcS7/facade-local tests: expect the thrown exception / use the single-arg
  overload matching production behaviour.
- Remove a duplicate dc3-common-constant dependency in dc3-common-data/pom.xml.
2026-06-18 23:53:41 +08:00
..
2026-05-26 00:30:11 +08:00

DC3 Common Exception

Overview

dc3-common-exception defines the standard exception types and exception utility class for the IoT DC3 platform. All services and modules use these exceptions to signal business errors consistently.

Module Information

  • Group ID: io.github.pnoker
  • Artifact ID: dc3-common-exception
  • Version: 2026.5.22

Key Components

Exception Types

Exception Usage
ServiceException General service-level business error
UpdateException Entity update failure
AddException Entity add failure
DeleteException Entity delete failure
NotFoundException Entity or resource not found
JsonException JSON serialization/deserialization error
AuthException Authentication/authorization failure
DuplicateException Duplicate entity conflict

Utilities

  • ExceptionUtil — Helper methods for wrapping and rethrowing exceptions with context
  • ExceptionConstant — Standard exception message strings (e.g., UTILITY_CLASS)

Usage

throw new NotFoundException("Driver not found for device: " + deviceId);
throw new AddException("Failed to add driver: " + entityBO.getServiceName());

Build Instructions

mvn -s ../../.mvn/settings.xml clean package

Used by all dc3-common-* service modules and dc3-center-* services.

License

Copyright 2016-present the IoT DC3 original author or authors.

Licensed under the GNU Affero General Public License v3.0 (AGPL 3.0)