[ https://issues.apache.org/jira/browse/TOMEE-2039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15989293#comment-15989293
]
Romain Manni-Bucau commented on TOMEE-2039:
-------------------------------------------
This is not a precondition of decrypt but the expect3d output value - decryption or not- is
expected to not have placeholders markers.
> Closing Curly Brace Removed from Custom Resource Properties
> -----------------------------------------------------------
>
> Key: TOMEE-2039
> URL: https://issues.apache.org/jira/browse/TOMEE-2039
> Project: TomEE
> Issue Type: Bug
> Affects Versions: 7.0.3
> Reporter: Steve Beatty
>
> In migrating a project from OpenEJB 4.7 to 7, I started getting errors in a custom resource
due the '}' character being removed from a property value. Looking in the source it appears
that issue is in org/apache/openejb/util/PropertyPlaceHolderHelper.java which is trying to
do variable substitution but is very aggressive about it - all $\{ and } Strings are being
removed in the process. I believe the issue is the simpleValueAsStringOrCharArray method
and the snippet below should fix it.
> {code}
> public static Object simpleValueAsStringOrCharArray(final String raw) {
> if (raw == null) {
> return null;
> }
>
> // This will replace ${ or } if either is encountered instead of matching pair
> // I don't know why this is useful
> //
> //if (!raw.contains(PREFIX) || !raw.contains(SUFFIX)) {
> // return decryptIfNeeded(raw.replace(PREFIX, "").replace(SUFFIX, ""), true);
> //}
>
> if (!raw.contains(PREFIX) && !raw.contains(SUFFIX)) {
> return decryptIfNeeded(raw, true);
> }
> String value = SUBSTITUTOR.replace(raw);
> if (!value.equals(raw) && value.startsWith("java:")) {
> value = value.substring(5);
> }
>
> // not sure the replaces here are useful either
> // if there are still markup characters now then the substitution didn't work
> // and it's probably more useful for debugging purposes to see those characters
> //
> // return decryptIfNeeded(value.replace(PREFIX, "").replace(SUFFIX, ""), true);
> return decryptIfNeeded(value, true);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
|