X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fclients%2FA1ClientFactory.java;h=d9069303992f5895360a48e0c2b080efecae3940;hb=refs%2Fchanges%2F65%2F2665%2F3;hp=cb8f9dd4d67080f8082e9c06de16e0acc5d105c0;hpb=e8c7fa0b02b0918b3b56a1fc162968a3eef282dc;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java index cb8f9dd4..d9069303 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientFactory.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * O-RAN-SC * %% - * Copyright (C) 2019 Nordix Foundation + * Copyright (C) 2020 Nordix Foundation * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,16 +21,42 @@ package org.oransc.policyagent.clients; import org.oransc.policyagent.clients.A1Client.A1ProtocolType; -import org.oransc.policyagent.exceptions.ServiceException; +import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.repository.Ric; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import reactor.core.publisher.Mono; +/** + * Factory for A1 clients that supports four different protocol versions of the A1 api. + */ public class A1ClientFactory { private static final Logger logger = LoggerFactory.getLogger(A1ClientFactory.class); + private final ApplicationConfig appConfig; + + @Autowired + public A1ClientFactory(ApplicationConfig appConfig) { + this.appConfig = appConfig; + } + + /** + * Creates an A1 client with the correct A1 protocol for the provided Ric. + * + *
+ * It detects the protocol version by trial and error, since there is no getVersion method specified in the A1 + * api yet. + * + *
+ * As a side effect it also sets the protocol version in the provided Ric. This means that after the first
+ * successful creation it won't have to try which protocol to use, but can create the client directly.
+ *
+ * @param ric The Ric to get a client for.
+ * @return a client with the correct protocol, or a ServiceException if none of the protocols are supported by the
+ * Ric.
+ */
public Mono