[
https://issues.apache.org/jira/browse/OFBIZ-5458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13870674#comment-13870674
]
Adrian Crum commented on OFBIZ-5458:
------------------------------------
I can provide some direction on how to implement it, but I don't have time
right now to write the code.
The first thing to do is find an insertion point - some place in the code path
where we can insert the new behavior. Starting with UtilProperties.java, follow
the code path to where the requested properties file is located
(resolvePropertiesUrl method, line 883). That method calls the
FlexibleLocation.resolveLocation method. The class uses a resolver class called
ClasspathLocationResolver. That class calls the UtilURL.fromResource method.
That method uses the current class loader to locate the properties file. So,
that method is the insertion point - either we provide a means to locate a
resource via the entity engine in that method, or we provide a class loader
that uses the entity engine to locate resources.
The next thing to do is inject the new behavior in the insertion point. We
can't reference the entity component from the base component due to build
dependencies. So, we need to use something like SPI (java.util.ServiceLoader)
to load a class from the entity component. There are many examples of this in
the project (because the build dependency issue has always been a problem),
like in the Converter framework and in UtilObject.java. The class being
retrieved will have a method that returns a URL instance that can be used to
read the resource from the entity engine.
Finally, we need a way to store the resource in the entity engine. I recommend
following the existing Java resource pattern:
{code}
<entity entity-name="JavaResource" package-name="org.ofbiz.entity.resource"
title="Java Resource Entity">
<field name="resourceName" type="id-vlong-ne"></field>
<field name="resourceValue" type="object"></field>
<field name="charSet" type="short-varchar"></field>
<prim-key field="resourceName"/>
</entity>
{code}
The charSet field is used when the resourceValue field contains a text file.
> getSystemPropertyValue is never called/used
> -------------------------------------------
>
> Key: OFBIZ-5458
> URL: https://issues.apache.org/jira/browse/OFBIZ-5458
> Project: OFBiz
> Issue Type: Bug
> Components: ALL APPLICATIONS, ALL COMPONENTS, framework
> Environment: multi-tenant multi-server
> Reporter: Pierre Smits
> Priority: Critical
>
> getSystemPropertyValue which accesses and retrieves tenant specific
> properties is never called/used regarding default settings for a tenant.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)