我们想从Java类(OrderBO扩展)中的Order获取付款配置。到目前为止,我们已经设法像这样获取服务:
final OrderBOPaymentExtension<OrderBO> paymentExtension = getExtendedObject().getExtension(OrderBOPaymentExtension.EXTENSION_ID);
final PaymentBO paymentBO = paymentExtension.getPaymentBOs().stream().findFirst().orElse(null);
PaymentServiceBO paymentServiceBO = paymentBO.getPaymentServiceBO();
现在我们需要获取配置,因此我们可以从付款方式中读取某些配置参数。最好的方法是什么?
我们知道可以通过PO Factory来获取付款配置,如下所示:
PaymentConfigurationPOFactory f = (PaymentConfigurationPOFactory)NamingMgr.getInstance().lookupFactory(PaymentConfigurationPO.class);
PaymentConfigurationPO r = f.getConfigForIDAndDomain(iD, domain);
但是我们要避免使用不推荐使用的代码。
更新: 我们试图实现的是在Java代码中访问以下BO参数:
答案 0 :(得分:2)
我建议您编写一个PaymentServiceBO
扩展名。在该扩展中,您可以编写getter方法来查询某些配置值。用于访问服务配置对象的Java代码为:
PaymentConfiguration paymentConfig = paymentServiceBO.getExtension(PersistentObjectBOExtension.class).getPersistentObject();
ServiceConfigurationBO serviceConfigurationBO = repository.getServiceConfigurationBOByID(paymentConfig.getManagedServiceConfiguration().getUUID());
ConfigurationProvider configProviderExtension = serviceConfigurationBO.getExtension(ConfigurationProvider.class);
Configuration configuration = configProviderExtension.getConfiguration();
Logger.debug(this, "payment service config keys = {}", configuration.getKeys());
答案 1 :(得分:1)
我认为不建议使用PaymentConfiguration。参见PaymentConfigurationBO javadoc:
Deprecated since 7.6. Payment configurations are now represented via PaymentServiceBOs.
因此,您需要使用PaymentServiceBO方法或编写可满足您需求的业务对象扩展。