- Rename json schema document:
- Short name to keep schema ref in YAML instance documents short
- Ideas:
- membrane-v1.schema.json
- membrane-v1.json
- v1.json
- Name from metadata/name or spec/name?
- Correct YAML example on GitHub README
- Rename in apis.yaml
- Do we need add(Rule,Source) and getRuleBySource(Manual|Spring)?
- Rewrite ACL to use the YAML configuration instead of external XML files
- Fix maven central publish job
- JMXExporter:
- Tutorial
- Documentation
- See JmxExporter
- Synchronization of BeanRegistry
- Move YAML Parsing to core?
- Core isn't visible.
- YAML parsing:
- When the reason for a parse error is clear. Shorten error message.
- reverseDNS
- Now it is in transport
- Maybe move it to configuration
- Register JSON Schema for YAML at: https://www.schemastore.org
- Grafana Dashboard: Complete Dashboard for Membrane with documentation in examples/monitoring/grafana
- Remove GroovyTemplateInterceptor (Not Template Interceptor)
- Old an unused
- Discuss renaming the WebSocketInterceptor.flow to something else to avoid confusion with flowParser
- do not pass a
Routerreference into all sorts of beans: Access to global functionality should happen only on a very limited basis.
- Adding a configuration flag to enable/disable colorized output
- Constant or methods to centralize color formatting: ANSIColors
- Detecting terminal support before applying colors (e.g., check if System.console() is available)
- Central description of Membrane Languages, Cheat Sheets, links to their docs.
- Central desciption of MEMBRANE_* environment variables
- Like MEMBRANE_HOME...
- @coderabbitai look through the code base for usages of these variables and suggest documentation
- Restore Kubernetes Startup Thread
- Fix
YAMLParsingTest.errorInListItemUniqueness() - Check 404 in AdminConsole => Client Requests
- API to get client requests returns 404, if called without admin console access
-
JMX: Name changes to "io.membrane-api:00=routers, name="
-
Removed GateKeeperClientInterceptor
-
Removed support for
internal:<name>syntax in target URLs, leavinginternal://<name>as the only valid way to call internal APIs. -
Remove WADLInterceptor
-
HttpClient TB (done)
- Change Signature: public Exchange call(Exchange exc) throws Exception => public void call(Exchange exc) throws Exception {
-
Remove HttpClientInterceptor.setAdjustHeader(boolean) it is already in HttpClientConfiguration
-
Remove xmlSessionIdExtractor if we have a replacement with language
-
Remove HttpUtil.getHTMLErrorBody()
-
LogInterceptor:
- Remove: headerOnly
-
ValidatorInterceptor: remove FailureHandler
- Predominantly used for logging; move logging into validators.
- Migration: replace FailureHandler usages with validator-level logging; ensure correlation IDs/Exchange context remain available for logs.
- Check if it is used by customer installations
-
Groovy:
- ScriptingUtils: Variable bindings: headers references message.headers with the headers class instead of a map<String,Object>.
- Difference to SpEL
- SpEL headers.foo should return comma separated list of all values.
- ScriptingUtils: Variable bindings: headers references message.headers with the headers class instead of a map<String,Object>.
-
Delete unneeded proxies.xml in examples CG
-
for distribution: README with Link to Github for XML-based example configurations TB
-
update schema reference to 7.0.0, integrate into ConsistentVersionNumbers.java (done)
-
improve error output on
- schema validation error
- bean setter exception
- port occupied (done)
-
header['x-unknown'] returns null instead of empty string !!!!!!!!!!!!
-
SpEL: header is now of class HeaderMap insteadof SpelHeader
- YAML Configuration as default
- Use of colors in logs
- Removed camelCase conversion of header access in Groovy scripts instead of header.contentType use header['Content-Type']
- JMX namespace changed from org.membrane-soa to io.membrane-api.
- Rewrite JSONAssert Tests with RESTAssured
- YAML:
- apiKey:
- simple method for specifying a couple of keys in the YAML
- SimpleKeyStore: scope feels strange in YAML. Maybe not TextContent for Value
- apiKey:
- Data Masking
- Is JSONPath replacement with Jayway possible? $.cusomter.payment.creditcard
- Other ways to do it.
- Is JSONPath replacement with Jayway possible? $.cusomter.payment.creditcard
- ${json[key]} - See: RateLimitInterceptor
- OpenAPIValidator:
- <openapi unknownQueryParameters="accept|report|block" .../> Default: accept
- YAML: JsonSchemaGenerator enable description fields for editor
Breaking Changes:
-
JSONPath: List-to-String conversion now renders full list instead of first element only. Behavior is now different from XPath that returns the first element of a nodelist but it is more consistent with most of JSONPath implementations.
-
Migraton Nots:
- Check JSONPath expressions when returning lists.
-
SessionManagerTest: refactor, too slow for Unittest. Move to integration tests.
-
Refactor: Cookie maybe centralize Cookie Handling in a Cookie class
-
Loadbalancing description with pacemaker
-
JSONBody
- Store body as parsed JsonNode or Document
- If JSON is needed by an interceptor use already parsed JSON
- Store body as parsed JsonNode or Document
-
JdbcUserDataProvider
- Migrate to PreparedStatement
-
OAuth2 refactoring
- In Interface com.predic8.membrane.core.interceptor.oauth2.authorizationservice.AuthorizationService
- Remove throws:
- public abstract String getJwksEndpoint() throws Exception;
- public abstract void init() throws Exception;
- getEndSessionEndpoint() throws Exception
- doDynamicRegistration(List callbackURLs) throws Exception
- Remove throws:
- In Interface com.predic8.membrane.core.interceptor.oauth2.authorizationservice.AuthorizationService
-
Reduce compiler warnings when building the project with maven
- JSON Schema validation support for JSON Schema 2019-09 and 2020-12 (via networknt json-schema-validator).
- Document how to select the schema version (e.g., schemaVersion attribute) and the "format" behavior (annotation vs assertion), with a link to usage docs/examples.
- Refactor: Beautifier to use the Code from above
- Describe RPM Setup (TP)
- Refactor: interceptor.session
- proxies-6.xsd
- new Namespace e.g. https://membrane-api.io...6
- '<spring:bean class="com.predic8.membrane.core.interceptor.apikey.stores.ApiKeyFileStore">' durch '<apiKeyFileStore .. />' ersetzen (dafür topLevel=true) BT
-
Util function to sanitize HTTP Headers in Logs: Authorization, Proxy-Authorization, Cookie, Set-Cookie Replace value with *****
- Use it in MessageTracer
-
without port => Change from port 80 to matches all open ports
-
ProblemDetails: (TB)
- When flow = RESPONSE it should always be an internal error!
-
For ADRs
- Response Flow guarantee there is a response
- Request Flow guarantee there is a request
- Return guarantee Response is there
-
Wenn Exception/Abort passiert sofort Response mit Error setzen.
-
Refactor
- RouterCli:
- Extract JWT functions
- SpringConfigurationXSDGeneratingAnnotationProcessor
- RouterCli: