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

Config reading arrays confused by comments #24619

Closed
colinduplantis opened this issue Dec 29, 2020 · 1 comment
Closed

Config reading arrays confused by comments #24619

colinduplantis opened this issue Dec 29, 2020 · 1 comment
Labels
status: duplicate A duplicate of another issue

Comments

@colinduplantis
Copy link

Spring Boot Version 2.4.0

We have the following snippet in one of our application.properties files:

#
# User Provisioning
#
admin.users[0].name=admin
admin.users[0].password=admin
admin.users[0].description=Admin user
#
admin.users[1].name=trader
admin.users[1].password=trader
admin.users[1].description=trader user
#
admin.users[2].name=traderAdmin
admin.users[2].password=traderAdmin
admin.users[2].description=trader admin user
#
admin.users[3].name=test
admin.users[3].password=test
admin.users[3].description=test user
#
# Permission Provisioning
#
admin.permissions[0].name=AddSessionAction
admin.permissions[0].description=Access to Add Session action
#
admin.permissions[1].name=DeleteSessionAction
admin.permissions[1].description=Access to Delete Session action
#
admin.permissions[2].name=DisableSessionAction
admin.permissions[2].description=Access to disable session action
#
admin.permissions[3].name=EditSessionAction
admin.permissions[3].description=Access to edit session action
#
admin.permissions[4].name=EnableSessionAction
admin.permissions[4].description=Access to enable session action
#
admin.permissions[5].name=UpdateSequenceAction
admin.permissions[5].description=Access to update sequence numbers action
#
admin.permissions[6].name=StartSessionAction
admin.permissions[6].description=Access to start session action
#
admin.permissions[7].name=StopSessionAction
admin.permissions[7].description=Access to stop session action
#
admin.permissions[8].name=ViewSessionAction
admin.permissions[8].description=Access to view session action
#
admin.permissions[9].name=ReadInstanceDataAction
admin.permissions[9].description=Access to read instance data action
#
admin.permissions[10].name=ReadFixSessionAttributeDescriptorsAction
admin.permissions[10].description=Access to read FIX session attribute descriptors action
#
admin.permissions[11].name=CreateUserAction
admin.permissions[11].description=Access to create user action
#
admin.permissions[12].name=ReadUserAction
admin.permissions[12].description=Access to read user action
#
admin.permissions[13].name=UpdateUserAction
admin.permissions[13].description=Access to update user action
#
admin.permissions[14].name=DeleteUserAction
admin.permissions[14].description=Access to delete user action
#
admin.permissions[15].name=ChangeUserPasswordAction
admin.permissions[15].description=Access to change user password action
#
admin.permissions[16].name=ReadUserPermisionsAction
admin.permissions[16].description=Access to read user permissions action
#
admin.permissions[17].name=CreatePermissionAction
admin.permissions[17].description=Access to create permission action
#
admin.permissions[18].name=ReadPermissionAction
admin.permissions[18].description=Access to read permission action
#
admin.permissions[19].name=UpdatePermissionAction
admin.permissions[19].description=Access to update permission action
#
admin.permissions[20].name=DeletePermissionAction
admin.permissions[20].description=Access to delete permission action
#
admin.permissions[21].name=CreateRoleAction
admin.permissions[21].description=Access to create role action
#
admin.permissions[22].name=ReadRoleAction
admin.permissions[22].description=Access to read role action
#
admin.permissions[23].name=UpdateRoleAction
admin.permissions[23].description=Access to update role action
#
admin.permissions[24].name=DeleteRoleAction
admin.permissions[24].description=Access to delete role action
#
admin.permissions[25].name=ViewBrokerStatusAction
admin.permissions[25].description=Access to view broker status action
#
admin.permissions[26].name=ViewOpenOrdersAction
admin.permissions[26].description=Access to view open orders action
#
admin.permissions[27].name=ViewReportAction
admin.permissions[27].description=Access to view reports action
#
admin.permissions[28].name=ViewPositionAction
admin.permissions[28].description=Access to view positions action
#
admin.permissions[29].name=SendOrderAction
admin.permissions[29].description=Access to send new orders action
#
admin.permissions[30].name=ViewUserDataAction
admin.permissions[30].description=Access to view user data action
#
admin.permissions[31].name=WriteUserDataAction
admin.permissions[31].description=Access to write user data action
#
admin.permissions[32].name=AddReportAction
admin.permissions[32].description=Access to manually add new reports action
#
admin.permissions[33].name=DeleteReportAction
admin.permissions[33].description=Access to manually delete reports action
#
admin.permissions[34].name=ReadUserAttributeAction
admin.permissions[34].description=Access to read a user attribute action
#
admin.permissions[35].name=WriteUserAttributeAction
admin.permissions[35].description=Access to write a user attribute action
#
admin.permissions[36].name=RequestMarketDataAction
admin.permissions[36].description=Authority to request market data
#
admin.permissions[36].name=RequestMarketDataAction
admin.permissions[36].description=Access to request market data with updates
#
admin.permissions[37].name=RequestMarketDataSnapshotAction
admin.permissions[37].description=Access to request market data snapshot
#
# Role Provisioning
#
admin.roles[0].name=adminRole
admin.roles[0].description=Admin Role
admin.roles[0].users=admin,test
admin.roles[0].permissions=AddSessionAction,DeleteSessionAction,DisableSessionAction,EditSessionAction,EnableSessionAction,UpdateSequenceAction,StartSessionAction,StopSessionAction,ViewSessionAction,ReadInstanceDataAction,CreateUserAction,ReadUserAction,UpdateUserAction,DeleteUserAction,ChangeUserPasswordAction,ReadUserPermisionsAction,CreatePermissionAction,ReadPermissionAction,UpdatePermissionAction,DeletePermissionAction,CreateRoleAction,ReadRoleAction,UpdateRoleAction,DeleteRoleAction,ViewBrokerStatusAction,ViewUserDataAction,WriteUserDataAction,ReadFixSessionAttributeDescriptorsAction,ReadUserAttributeAction,WriteUserAttributeAction
#
admin.roles[1].name=traderRole
admin.roles[1].description=Trader Role
admin.roles[1].users=trader,test
admin.roles[1].permissions=AddReportAction,ViewBrokerStatusAction,ViewOpenOrdersAction,ViewReportAction,ViewPositionAction,SendOrderAction,ViewUserDataAction,WriteUserDataAction,ReadUserAttributeAction,WriteUserAttributeAction,RequestMarketDataAction,RequestMarketDataAction,RequestMarketDataSnapshotAction,ReadPermissionAction
#
admin.roles[2].name=traderAdminRole
admin.roles[2].description=Trader Admin Role
admin.roles[2].users=traderAdmin,test
admin.roles[2].permissions=ViewBrokerStatusAction,ViewOpenOrdersAction,ViewReportAction,ViewPositionAction,SendOrderAction,ViewUserDataAction,WriteUserDataAction,AddReportAction,DeleteReportAction,ReadUserAttributeAction,WriteUserAttributeAction,RequestMarketDataAction,RequestMarketDataAction,RequestMarketDataSnapshotAction,ReadPermissionAction
#
# Supervisor Permissions
#
admin.supervisor-permissions[0].name=TraderSupervisor
admin.supervisor-permissions[0].description=Trader supervisor role
admin.supervisor-permissions[0].supervisor-name=traderAdmin
admin.supervisor-permissions[0].permissions=ViewBrokerStatusAction,ViewOpenOrdersAction,ViewReportAction,ViewPositionAction,ViewUserDataAction
admin.supervisor-permissions[0].subject-names=trader

The intent here is to read this info into some classes for some start-up provisioning.

We have the attached class called AdminConfiguration that picks up these values.

Starting when we upgraded to 2.4.0, reading in these values from application.properties no longer functioned correctly.

What happens is that any line following a blank '#' line is skipped. For example, with the user config:

User Provisioning

admin.users[0].name=admin
admin.users[0].password=admin
admin.users[0].description=Admin user

admin.users[1].name=trader
admin.users[1].password=trader
admin.users[1].description=trader user

gets us:

[0] = admin - admin - Admin user
[1] = null - trader - trader user

The admin.users[1].name line is skipped.

If we change the '#' blank lines to just empty:

User Provisioning

admin.users[0].name=admin
admin.users[0].password=admin
admin.users[0].description=Admin user

admin.users[1].name=trader
admin.users[1].password=trader
admin.users[1].description=trader user

it works fine. We're checking now to see if the problem remains in 2.4.1.

More than happy to work on a pull request if you give us a hint on where to start. I haven't contributed to Spring Boot before but would be happy to begin.
AdminConfiguration.java.txt

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Dec 29, 2020
@bclozel
Copy link
Member

bclozel commented Dec 29, 2020

This is a duplicate of #24158, which is already fixed in 2.4.1.
Thanks for the report!

@bclozel bclozel added status: duplicate A duplicate of another issue and removed status: waiting-for-triage An issue we've not yet triaged labels Dec 29, 2020
@bclozel bclozel closed this as completed Dec 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: duplicate A duplicate of another issue
Projects
None yet
Development

No branches or pull requests

3 participants