add even more integration tests

This commit is contained in:
Athou
2025-07-21 07:58:59 +02:00
parent c6cc47192c
commit f7ae2e6689
27 changed files with 1772 additions and 107 deletions

View File

@@ -0,0 +1,2 @@
# we generate the jacoco report ourselves by aggregating the unit tests and integration tests jacoco.exec files
quarkus.jacoco.report=false

View File

@@ -0,0 +1,150 @@
# Whether to expose a robots.txt file that disallows web crawlers and search engine indexers.
commafeed.hide-from-web-crawlers=true
# If enabled, images in feed entries will be proxied through the server instead of accessed directly by the browser.
#
# This is useful if commafeed is accessed through a restricting proxy that blocks some feeds that are followed.
commafeed.image-proxy-enabled=false
# Enable password recovery via email.
#
# Quarkus mailer will need to be configured.
commafeed.password-recovery-enabled=false
# Message displayed in a notification at the bottom of the page.
commafeed.announcement=
# Google Analytics tracking code.
commafeed.google-analytics-tracking-code=
# Google Auth key for fetching Youtube channel favicons.
commafeed.google-auth-key=
# User-Agent string that will be used by the http client, leave empty for the default one.
commafeed.http-client.user-agent=
# Time to wait for a connection to be established.
commafeed.http-client.connect-timeout=5s
# Time to wait for SSL handshake to complete.
commafeed.http-client.ssl-handshake-timeout=5s
# Time to wait between two packets before timeout.
commafeed.http-client.socket-timeout=10s
# Time to wait for the full response to be received.
commafeed.http-client.response-timeout=10s
# Time to live for a connection in the pool.
commafeed.http-client.connection-time-to-live=30s
# Time between eviction runs for idle connections.
commafeed.http-client.idle-connections-eviction-interval=1m
# If a feed is larger than this, it will be discarded to prevent memory issues while parsing the feed.
commafeed.http-client.max-response-size=5m
# Prevent access to local addresses to mitigate server-side request forgery (SSRF) attacks, which could potentially expose internal
# resources.
#
# You may want to disable this if you subscribe to feeds that are only available on your local network and you trust all users of
# your CommaFeed instance.
commafeed.http-client.block-local-addresses=true
# Whether to enable the cache. This cache is used to avoid spamming feeds in short bursts (e.g. when subscribing to a feed for the
# first time or when clicking "fetch all my feeds now").
commafeed.http-client.cache.enabled=true
# Maximum amount of memory the cache can use.
commafeed.http-client.cache.maximum-memory-size=10m
# Duration after which an entry is removed from the cache.
commafeed.http-client.cache.expiration=1m
# Default amount of time CommaFeed will wait before refreshing a feed.
commafeed.feed-refresh.interval=5m
# Maximum amount of time CommaFeed will wait before refreshing a feed. This is used as an upper bound when:
#
# <ul>
# <li>an error occurs while refreshing a feed and we're backing off exponentially</li>
# <li>we receive a Cache-Control header from the feed</li>
# <li>we receive a Retry-After header from the feed</li>
# </ul>
commafeed.feed-refresh.max-interval=4h
# If enabled, CommaFeed will calculate the next refresh time based on the feed's average time between entries and the time since
# the last entry was published. The interval will be sometimes between the default refresh interval
# (`commafeed.feed-refresh.interval`) and the maximum refresh interval (`commafeed.feed-refresh.max-interval`).
#
# See {@link FeedRefreshIntervalCalculator} for details.
commafeed.feed-refresh.interval-empirical=true
# Number of retries before backoff is applied.
commafeed.feed-refresh.errors.retries-before-backoff=3
# Duration to wait before retrying after an error. Will be multiplied by the number of errors since the last successful fetch.
commafeed.feed-refresh.errors.backoff-interval=1h
# Amount of http threads used to fetch feeds.
commafeed.feed-refresh.http-threads=3
# Amount of threads used to insert new entries in the database.
commafeed.feed-refresh.database-threads=1
# Duration after which a user is considered inactive. Feeds for inactive users are not refreshed until they log in again.
#
# 0 to disable.
commafeed.feed-refresh.user-inactivity-period=0s
# Duration after which the evaluation of a filtering expresion to mark an entry as read is considered to have timed out.
commafeed.feed-refresh.filtering-expression-evaluation-timeout=500ms
# Duration after which the "Fetch all my feeds now" action is available again after use to avoid spamming feeds.
commafeed.feed-refresh.force-refresh-cooldown-duration=0s
# Timeout applied to all database queries.
#
# 0 to disable.
commafeed.database.query-timeout=0s
# Maximum age of feed entries in the database. Older entries will be deleted.
#
# 0 to disable.
commafeed.database.cleanup.entries-max-age=365d
# Maximum age of feed entry statuses (read/unread) in the database. Older statuses will be deleted.
#
# 0 to disable.
commafeed.database.cleanup.statuses-max-age=0s
# Maximum number of entries per feed to keep in the database.
#
# 0 to disable.
commafeed.database.cleanup.max-feed-capacity=500
# Limit the number of feeds a user can subscribe to.
#
# 0 to disable.
commafeed.database.cleanup.max-feeds-per-user=0
# Rows to delete per query while cleaning up old entries.
commafeed.database.cleanup.batch-size=100
# Whether to let users create accounts for themselves.
commafeed.users.allow-registrations=false
# Whether to enable strict password validation (1 uppercase char, 1 lowercase char, 1 digit, 1 special char).
commafeed.users.strict-password-policy=true
# Whether to create a demo account the first time the app starts.
commafeed.users.create-demo-account=false
# Enable websocket connection so the server can notify web clients that there are new entries for feeds.
commafeed.websocket.enabled=true
# Interval at which the client will send a ping message on the websocket to keep the connection alive.
commafeed.websocket.ping-interval=15m
# If the websocket connection is disabled or the connection is lost, the client will reload the feed tree at this interval.
commafeed.websocket.tree-reload-interval=30s

View File

@@ -0,0 +1,186 @@
---
extension:
groupId: "com.commafeed"
artifactId: "commafeed-server"
name: "CommaFeed Server"
nameSource: "POM_XML"
detected: true
elements:
com.commafeed.CommaFeedConfiguration.HttpClient.maxResponseSize:
description: "If a feed is larger than this, it will be discarded to prevent memory\
\ issues while parsing the feed."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.passwordRecoveryEnabled:
description: "Enable password recovery via email.\n\nQuarkus mailer will need\
\ to be configured."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.imageProxyEnabled:
description: "If enabled, images in feed entries will be proxied through the server\
\ instead of accessed directly by the browser.\n\nThis is useful if commafeed\
\ is accessed through a restricting proxy that blocks some feeds that are followed."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.forceRefreshCooldownDuration:
description: "Duration after which the \"Fetch all my feeds now\" action is available\
\ again after use to avoid spamming feeds."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.queryTimeout:
description: "Timeout applied to all database queries.\n\n0 to disable."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.Cleanup.statusesMaxAge:
description: "Maximum age of feed entry statuses (read/unread) in the database.\
\ Older statuses will be deleted.\n\n0 to disable."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.filteringExpressionEvaluationTimeout:
description: "Duration after which the evaluation of a filtering expresion to\
\ mark an entry as read is considered to have timed out."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.Cleanup.maxFeedCapacity:
description: "Maximum number of entries per feed to keep in the database.\n\n\
0 to disable."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.maxInterval:
description: "Maximum amount of time CommaFeed will wait before refreshing a feed.\
\ This is used as an upper bound when:\n\n<ul>\n<li>an error occurs while refreshing\
\ a feed and we're backing off exponentially</li>\n<li>we receive a Cache-Control\
\ header from the feed</li>\n<li>we receive a Retry-After header from the feed</li>\n\
</ul>"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.cleanup:
description: "Database cleanup settings"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.databaseThreads:
description: "Amount of threads used to insert new entries in the database."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.connectTimeout:
description: "Time to wait for a connection to be established."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.Cleanup.batchSize:
description: "Rows to delete per query while cleaning up old entries."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.responseTimeout:
description: "Time to wait for the full response to be received."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Users.strictPasswordPolicy:
description: "Whether to enable strict password validation (1 uppercase char,\
\ 1 lowercase char, 1 digit, 1 special char)."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.Cleanup.maxFeedsPerUser:
description: "Limit the number of feeds a user can subscribe to.\n\n0 to disable."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.database:
description: "Database settings"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClientCache.maximumMemorySize:
description: "Maximum amount of memory the cache can use."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.sslHandshakeTimeout:
description: "Time to wait for SSL handshake to complete."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.users:
description: "Users settings"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.intervalEmpirical:
description: "If enabled, CommaFeed will calculate the next refresh time based\
\ on the feed's average time between entries and the time since\nthe last entry\
\ was published. The interval will be sometimes between the default refresh\
\ interval\n(`commafeed.feed-refresh.interval`) and the maximum refresh interval\
\ (`commafeed.feed-refresh.max-interval`).\n\nSee {@link FeedRefreshIntervalCalculator}\
\ for details."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.feedRefresh:
description: "Feed refresh engine settings"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.googleAuthKey:
description: "Google Auth key for fetching Youtube channel favicons."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.socketTimeout:
description: "Time to wait between two packets before timeout."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.httpThreads:
description: "Amount of http threads used to fetch feeds."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.connectionTimeToLive:
description: "Time to live for a connection in the pool."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.cache:
description: "HTTP client cache configuration"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.websocket:
description: "Websocket settings"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.googleAnalyticsTrackingCode:
description: "Google Analytics tracking code."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Users.allowRegistrations:
description: "Whether to let users create accounts for themselves."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Websocket.treeReloadInterval:
description: "If the websocket connection is disabled or the connection is lost,\
\ the client will reload the feed tree at this interval."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.httpClient:
description: "HTTP client configuration"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.errors:
description: "Feed refresh engine error handling settings"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration:
description: "CommaFeed configuration"
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.blockLocalAddresses:
description: "Prevent access to local addresses to mitigate server-side request\
\ forgery (SSRF) attacks, which could potentially expose internal\nresources.\n\
\nYou may want to disable this if you subscribe to feeds that are only available\
\ on your local network and you trust all users of\nyour CommaFeed instance."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.announcement:
description: "Message displayed in a notification at the bottom of the page."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClientCache.expiration:
description: "Duration after which an entry is removed from the cache."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefreshErrorHandling.backoffInterval:
description: "Duration to wait before retrying after an error. Will be multiplied\
\ by the number of errors since the last successful fetch."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Websocket.pingInterval:
description: "Interval at which the client will send a ping message on the websocket\
\ to keep the connection alive."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.interval:
description: "Default amount of time CommaFeed will wait before refreshing a feed."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefreshErrorHandling.retriesBeforeBackoff:
description: "Number of retries before backoff is applied."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Database.Cleanup.entriesMaxAge:
description: "Maximum age of feed entries in the database. Older entries will\
\ be deleted.\n\n0 to disable."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClientCache.enabled:
description: "Whether to enable the cache. This cache is used to avoid spamming\
\ feeds in short bursts (e.g. when subscribing to a feed for the\nfirst time\
\ or when clicking \"fetch all my feeds now\")."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.idleConnectionsEvictionInterval:
description: "Time between eviction runs for idle connections."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.FeedRefresh.userInactivityPeriod:
description: "Duration after which a user is considered inactive. Feeds for inactive\
\ users are not refreshed until they log in again.\n\n0 to disable."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Users.createDemoAccount:
description: "Whether to create a demo account the first time the app starts."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.hideFromWebCrawlers:
description: "Whether to expose a robots.txt file that disallows web crawlers\
\ and search engine indexers."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.Websocket.enabled:
description: "Enable websocket connection so the server can notify web clients\
\ that there are new entries for feeds."
format: "JAVADOC"
com.commafeed.CommaFeedConfiguration.HttpClient.userAgent:
description: "User-Agent string that will be used by the http client, leave empty\
\ for the default one."
format: "JAVADOC"

View File

@@ -0,0 +1,538 @@
---
configRoots:
- extension:
groupId: "com.commafeed"
artifactId: "commafeed-server"
name: "CommaFeed Server"
nameSource: "POM_XML"
detected: true
prefix: "commafeed"
topLevelPrefix: "commafeed"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "hideFromWebCrawlers"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.hide-from-web-crawlers"
environmentVariable: "COMMAFEED_HIDE_FROM_WEB_CRAWLERS"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "true"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "imageProxyEnabled"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.image-proxy-enabled"
environmentVariable: "COMMAFEED_IMAGE_PROXY_ENABLED"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "false"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "passwordRecoveryEnabled"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.password-recovery-enabled"
environmentVariable: "COMMAFEED_PASSWORD_RECOVERY_ENABLED"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "false"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "announcement"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.announcement"
environmentVariable: "COMMAFEED_ANNOUNCEMENT"
type: "java.lang.String"
phase: "RUN_TIME"
typeDescription: "string"
optional: true
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "googleAnalyticsTrackingCode"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.google-analytics-tracking-code"
environmentVariable: "COMMAFEED_GOOGLE_ANALYTICS_TRACKING_CODE"
type: "java.lang.String"
phase: "RUN_TIME"
typeDescription: "string"
optional: true
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "googleAuthKey"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.google-auth-key"
environmentVariable: "COMMAFEED_GOOGLE_AUTH_KEY"
type: "java.lang.String"
phase: "RUN_TIME"
typeDescription: "string"
optional: true
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "httpClient"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.http-client"
type: "com.commafeed.CommaFeedConfiguration.HttpClient"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "userAgent"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.user-agent"
environmentVariable: "COMMAFEED_HTTP_CLIENT_USER_AGENT"
type: "java.lang.String"
phase: "RUN_TIME"
typeDescription: "string"
optional: true
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "connectTimeout"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.connect-timeout"
environmentVariable: "COMMAFEED_HTTP_CLIENT_CONNECT_TIMEOUT"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "5S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "sslHandshakeTimeout"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.ssl-handshake-timeout"
environmentVariable: "COMMAFEED_HTTP_CLIENT_SSL_HANDSHAKE_TIMEOUT"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "5S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "socketTimeout"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.socket-timeout"
environmentVariable: "COMMAFEED_HTTP_CLIENT_SOCKET_TIMEOUT"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "10S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "responseTimeout"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.response-timeout"
environmentVariable: "COMMAFEED_HTTP_CLIENT_RESPONSE_TIMEOUT"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "10S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "connectionTimeToLive"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.connection-time-to-live"
environmentVariable: "COMMAFEED_HTTP_CLIENT_CONNECTION_TIME_TO_LIVE"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "30S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "idleConnectionsEvictionInterval"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.idle-connections-eviction-interval"
environmentVariable: "COMMAFEED_HTTP_CLIENT_IDLE_CONNECTIONS_EVICTION_INTERVAL"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "1M"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "maxResponseSize"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.max-response-size"
environmentVariable: "COMMAFEED_HTTP_CLIENT_MAX_RESPONSE_SIZE"
type: "io.quarkus.runtime.configuration.MemorySize"
phase: "RUN_TIME"
typeDescription: "MemorySize"
defaultValue: "5M"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "blockLocalAddresses"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.block-local-addresses"
environmentVariable: "COMMAFEED_HTTP_CLIENT_BLOCK_LOCAL_ADDRESSES"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "true"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClient"
sourceElementName: "cache"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.http-client.cache"
type: "com.commafeed.CommaFeedConfiguration.HttpClientCache"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClientCache"
sourceElementName: "enabled"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.cache.enabled"
environmentVariable: "COMMAFEED_HTTP_CLIENT_CACHE_ENABLED"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "true"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClientCache"
sourceElementName: "maximumMemorySize"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.cache.maximum-memory-size"
environmentVariable: "COMMAFEED_HTTP_CLIENT_CACHE_MAXIMUM_MEMORY_SIZE"
type: "io.quarkus.runtime.configuration.MemorySize"
phase: "RUN_TIME"
typeDescription: "MemorySize"
defaultValue: "10M"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.HttpClientCache"
sourceElementName: "expiration"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.http-client.cache.expiration"
environmentVariable: "COMMAFEED_HTTP_CLIENT_CACHE_EXPIRATION"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "1M"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
level: 1
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "feedRefresh"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.feed-refresh"
type: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "interval"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.interval"
environmentVariable: "COMMAFEED_FEED_REFRESH_INTERVAL"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "5M"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "maxInterval"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.max-interval"
environmentVariable: "COMMAFEED_FEED_REFRESH_MAX_INTERVAL"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "4H"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "intervalEmpirical"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.interval-empirical"
environmentVariable: "COMMAFEED_FEED_REFRESH_INTERVAL_EMPIRICAL"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "true"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "errors"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.feed-refresh.errors"
type: "com.commafeed.CommaFeedConfiguration.FeedRefreshErrorHandling"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefreshErrorHandling"
sourceElementName: "retriesBeforeBackoff"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.errors.retries-before-backoff"
environmentVariable: "COMMAFEED_FEED_REFRESH_ERRORS_RETRIES_BEFORE_BACKOFF"
type: "int"
phase: "RUN_TIME"
typeDescription: "int"
defaultValue: "3"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefreshErrorHandling"
sourceElementName: "backoffInterval"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.errors.backoff-interval"
environmentVariable: "COMMAFEED_FEED_REFRESH_ERRORS_BACKOFF_INTERVAL"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "1H"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
level: 1
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "httpThreads"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.http-threads"
environmentVariable: "COMMAFEED_FEED_REFRESH_HTTP_THREADS"
type: "int"
phase: "RUN_TIME"
typeDescription: "int"
defaultValue: "3"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "databaseThreads"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.database-threads"
environmentVariable: "COMMAFEED_FEED_REFRESH_DATABASE_THREADS"
type: "int"
phase: "RUN_TIME"
typeDescription: "int"
defaultValue: "1"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "userInactivityPeriod"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.user-inactivity-period"
environmentVariable: "COMMAFEED_FEED_REFRESH_USER_INACTIVITY_PERIOD"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "0S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "filteringExpressionEvaluationTimeout"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.filtering-expression-evaluation-timeout"
environmentVariable: "COMMAFEED_FEED_REFRESH_FILTERING_EXPRESSION_EVALUATION_TIMEOUT"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "500MS"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.FeedRefresh"
sourceElementName: "forceRefreshCooldownDuration"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.feed-refresh.force-refresh-cooldown-duration"
environmentVariable: "COMMAFEED_FEED_REFRESH_FORCE_REFRESH_COOLDOWN_DURATION"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "0S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "database"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.database"
type: "com.commafeed.CommaFeedConfiguration.Database"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Database"
sourceElementName: "queryTimeout"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.database.query-timeout"
environmentVariable: "COMMAFEED_DATABASE_QUERY_TIMEOUT"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "0S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration.Database"
sourceElementName: "cleanup"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.database.cleanup"
type: "com.commafeed.CommaFeedConfiguration.Database.Cleanup"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Database.Cleanup"
sourceElementName: "entriesMaxAge"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.database.cleanup.entries-max-age"
environmentVariable: "COMMAFEED_DATABASE_CLEANUP_ENTRIES_MAX_AGE"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "365D"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Database.Cleanup"
sourceElementName: "statusesMaxAge"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.database.cleanup.statuses-max-age"
environmentVariable: "COMMAFEED_DATABASE_CLEANUP_STATUSES_MAX_AGE"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "0S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Database.Cleanup"
sourceElementName: "maxFeedCapacity"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.database.cleanup.max-feed-capacity"
environmentVariable: "COMMAFEED_DATABASE_CLEANUP_MAX_FEED_CAPACITY"
type: "int"
phase: "RUN_TIME"
typeDescription: "int"
defaultValue: "500"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Database.Cleanup"
sourceElementName: "maxFeedsPerUser"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.database.cleanup.max-feeds-per-user"
environmentVariable: "COMMAFEED_DATABASE_CLEANUP_MAX_FEEDS_PER_USER"
type: "int"
phase: "RUN_TIME"
typeDescription: "int"
defaultValue: "0"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Database.Cleanup"
sourceElementName: "batchSize"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.database.cleanup.batch-size"
environmentVariable: "COMMAFEED_DATABASE_CLEANUP_BATCH_SIZE"
type: "int"
phase: "RUN_TIME"
typeDescription: "int"
defaultValue: "100"
level: 1
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "users"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.users"
type: "com.commafeed.CommaFeedConfiguration.Users"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Users"
sourceElementName: "allowRegistrations"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.users.allow-registrations"
environmentVariable: "COMMAFEED_USERS_ALLOW_REGISTRATIONS"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "false"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Users"
sourceElementName: "strictPasswordPolicy"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.users.strict-password-policy"
environmentVariable: "COMMAFEED_USERS_STRICT_PASSWORD_POLICY"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "true"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Users"
sourceElementName: "createDemoAccount"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.users.create-demo-account"
environmentVariable: "COMMAFEED_USERS_CREATE_DEMO_ACCOUNT"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "false"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection>
sourceType: "com.commafeed.CommaFeedConfiguration"
sourceElementName: "websocket"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigSection$SectionPath>
property: "commafeed.websocket"
type: "com.commafeed.CommaFeedConfiguration.Websocket"
items:
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Websocket"
sourceElementName: "enabled"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.websocket.enabled"
environmentVariable: "COMMAFEED_WEBSOCKET_ENABLED"
type: "boolean"
phase: "RUN_TIME"
typeDescription: "boolean"
defaultValue: "true"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Websocket"
sourceElementName: "pingInterval"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.websocket.ping-interval"
environmentVariable: "COMMAFEED_WEBSOCKET_PING_INTERVAL"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "15M"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
- !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty>
sourceType: "com.commafeed.CommaFeedConfiguration.Websocket"
sourceElementName: "treeReloadInterval"
sourceElementType: "METHOD"
path: !<io.quarkus.annotation.processor.documentation.config.model.ConfigProperty$PropertyPath>
property: "commafeed.websocket.tree-reload-interval"
environmentVariable: "COMMAFEED_WEBSOCKET_TREE_RELOAD_INTERVAL"
type: "java.time.Duration"
phase: "RUN_TIME"
typeDescription: "Duration"
defaultValue: "30S"
javadocSiteLink: "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html"
qualifiedNames:
- "com.commafeed.CommaFeedConfiguration"