summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib')
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/api/AbstractFactory.java52
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/AbstractFactoryBase.java38
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/FactoryManager.java33
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/AbstractContextFactory.java8
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java48
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoryConfig.java20
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/AbstractComponentFactory.java6
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/FactoriesConfiguration.java8
8 files changed, 91 insertions, 122 deletions
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/api/AbstractFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/api/AbstractFactory.java
index 12956417dd..87da8fc6e4 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/api/AbstractFactory.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/api/AbstractFactory.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,20 +17,15 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.core.factory.api;
import org.openecomp.core.factory.impl.AbstractFactoryBase;
/**
- * This class provides generic implementation of an abstract factory. Components exposed as Java
- * interfaces should have their own concrete factories derived from the given class. This assures
- * code alignment and consistency across all Service Management components.
- * The class actually
- * uses singleton pattern to instantiate and reuse just one instance of a factory. Therefore, each
- * factory implementation has to be <i>thread-safe</i>.
- * In a general case, the hierarchy of
- * factory objects for an Java interface <tt>IUknown</tt> may look as follows:
+ * This class provides generic implementation of an abstract factory. Components exposed as Java interfaces should have their own concrete factories
+ * derived from the given class. This assures code alignment and consistency across all Service Management components. The class actually uses
+ * singleton pattern to instantiate and reuse just one instance of a factory. Therefore, each factory implementation has to be <i>thread-safe</i>. In
+ * a general case, the hierarchy of factory objects for an Java interface <tt>IUknown</tt> may look as follows:
* <pre>
* AbstractFactory&lt;IUnknown&gt;
* ^
@@ -42,12 +37,10 @@ import org.openecomp.core.factory.impl.AbstractFactoryBase;
* | |
* BaselineFactoryImpl CustomFactoryImpl
* </pre>
- * Where the classes responsibility is: <ul> <li>Abstract factory - common logic to retrieve the
- * implementation class name from a central repository.</li> <li>Concrete factory - abstract class
- * that only exposes to application layer the type specific API such as: <ul> <li><tt>public static
- * ConcreteFactory getInstance()</tt></li> </ul> <li>Baseline factory - out of the box
- * implementation of concrete factory (that can be replaced by a custom one depending on customer
- * needs) which actually implements method: <ul> <li><tt>public IUnknown createInterface()</tt></li>
+ * Where the classes responsibility is: <ul> <li>Abstract factory - common logic to retrieve the implementation class name from a central
+ * repository.</li> <li>Concrete factory - abstract class that only exposes to application layer the type specific API such as: <ul> <li><tt>public
+ * static ConcreteFactory getInstance()</tt></li> </ul> <li>Baseline factory - out of the box implementation of concrete factory (that can be replaced
+ * by a custom one depending on customer needs) which actually implements method: <ul> <li><tt>public IUnknown createInterface()</tt></li>
* </ul> </ul> The normal concrete factory class may look like:
* <pre>
* public abstract class ConcreteFactory extends AbstractFactory&lt;IUnknown&gt; {
@@ -64,18 +57,15 @@ import org.openecomp.core.factory.impl.AbstractFactoryBase;
*/
public abstract class AbstractFactory<I> extends AbstractFactoryBase {
-
- /**
- * Returns the interface implementor instance.
- * <b>Note</b>: It's up to the concrete factory to decide on the actual
- * implementation of the returned interface. Therefore, the call can get the
- * same instance per each call in case of singleton implementation or new
- * instance otherwise. However, the API consumer may not assume anything
- * regarding the underlying logic and has always go through the factory to
- * obtain the reference.
- *
- * @return Implementor of the exposed Java interface.
- */
- public abstract I createInterface();
-
+ /**
+ * Returns the interface implementor instance.
+ * <b>Note</b>: It's up to the concrete factory to decide on the actual
+ * implementation of the returned interface. Therefore, the call can get the same instance per each call in case of singleton implementation or
+ * new instance otherwise. However, the API consumer may not assume anything regarding the underlying logic and has always go through the factory
+ * to obtain the reference.
+ *
+ * @return Implementor of the exposed Java interface.
+ */
+ public abstract I createInterface();
} // End of class
+
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/AbstractFactoryBase.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/AbstractFactoryBase.java
index 3a117ef063..41bfeab826 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/AbstractFactoryBase.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/AbstractFactoryBase.java
@@ -13,30 +13,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.core.factory.impl;
public abstract class AbstractFactoryBase {
- /**
- * Instantiates the configured implementation of an abstract factory.
- *
- * @param <F> Type specific abstract factory for concrete Java interface
- * @param factoryType Java class of type specific abstract factory
- * @return Instance of implementation class
- */
- public static <F extends AbstractFactoryBase> F getInstance(Class<F> factoryType) {
- return FactoryManager.getInstance().getFactoryInstance(factoryType);
- }
+ /**
+ * Instantiates the configured implementation of an abstract factory.
+ *
+ * @param <F> Type specific abstract factory for concrete Java interface
+ * @param factoryType Java class of type specific abstract factory
+ * @return Instance of implementation class
+ */
+ public static <F extends AbstractFactoryBase> F getInstance(Class<F> factoryType) {
+ return FactoryManager.getInstance().getFactoryInstance(factoryType);
+ }
+
+ protected void init() {
+ // allows custom initialization
- protected void init() {
- // allows custom initialization
- // noop by default
- }
+ // noop by default
+ }
- protected void stop() {
- // allows custom shutdown
- // noop by default
- }
+ protected void stop() {
+ // allows custom shutdown
+ // noop by default
+ }
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/FactoryManager.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/FactoryManager.java
index ec2d93f35b..26816aaafe 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/FactoryManager.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-api/src/main/java/org/openecomp/core/factory/impl/FactoryManager.java
@@ -16,7 +16,6 @@
* SPDX-License-Identifier: Apache-2.0
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.core.factory.impl;
import com.amdocs.zusammen.utils.facade.impl.FactoryConfig;
@@ -33,9 +32,8 @@ public class FactoryManager {
private static final FactoryManager instance = new FactoryManager();
private static final String ERROR_CODE_E0001 = "E0001";
/**
- * Temporary registry of default implementations. The map keeps class names rather then class
- * types to allow unloading of those classes from memory by garbage collector if factory is not
- * actually used.
+ * Temporary registry of default implementations. The map keeps class names rather then class types to allow unloading of those classes from
+ * memory by garbage collector if factory is not actually used.
*/
private final Map<String, String> factoryRegistry = new ConcurrentHashMap<>();
/**
@@ -43,7 +41,6 @@ public class FactoryManager {
*/
private final Map<String, AbstractFactoryBase> factoryInstanceMap = new ConcurrentHashMap<>();
-
private FactoryManager() {
initializeFactoryRegistry();
}
@@ -54,17 +51,13 @@ public class FactoryManager {
private void initializeFactoryRegistry() {
final Map<String, String> factoryMap = FactoryConfig.getFactoriesMap();
-
for (final Map.Entry<String, String> entry : factoryMap.entrySet()) {
final String abstractClassName = entry.getKey();
final String concreteTypeName = entry.getValue();
-
if (StringUtils.isEmpty(concreteTypeName)) {
throw new CoreException(
- new ErrorCode.ErrorCodeBuilder().withId("E0003")
- .withMessage("Missing configuration value:" + concreteTypeName + ".")
+ new ErrorCode.ErrorCodeBuilder().withId("E0003").withMessage("Missing configuration value:" + concreteTypeName + ".")
.withCategory(ErrorCategory.SYSTEM).build());
-
}
registerFactory(abstractClassName, concreteTypeName);
}
@@ -80,32 +73,26 @@ public class FactoryManager {
@SuppressWarnings("unchecked")
public <F extends AbstractFactoryBase> F getFactoryInstance(Class<F> factoryType) {
if (factoryType == null) {
- throw new CoreException(
- new ErrorCode.ErrorCodeBuilder().withId(ERROR_CODE_E0001)
- .withMessage("Mandatory input factory type.").withCategory(ErrorCategory.SYSTEM)
- .build());
-
+ throw new CoreException(new ErrorCode.ErrorCodeBuilder().withId(ERROR_CODE_E0001).withMessage("Mandatory input factory type.")
+ .withCategory(ErrorCategory.SYSTEM).build());
}
final String factoryTypeName = factoryType.getName();
// Check if the factory is already cached
if (factoryInstanceMap.get(factoryTypeName) == null) {
//if not, create a new one and cache it
+
// Get the implementation class name
final String implName = factoryRegistry.get(factoryTypeName);
-
if (StringUtils.isEmpty(implName)) {
throw new CoreException(
- new ErrorCode.ErrorCodeBuilder().withId(ERROR_CODE_E0001)
- .withMessage("Mandatory input factory implementation.")
+ new ErrorCode.ErrorCodeBuilder().withId(ERROR_CODE_E0001).withMessage("Mandatory input factory implementation.")
.withCategory(ErrorCategory.SYSTEM).build());
}
-
F factory = CommonMethods.newInstance(implName, factoryType);
factory.init();
// Cache the instantiated singleton
factoryInstanceMap.putIfAbsent(factoryTypeName, factory);
}
-
return (F) factoryInstanceMap.get(factoryTypeName);
}
@@ -115,6 +102,7 @@ public class FactoryManager {
/**
* Unregister factory and removes the cached instance if any.
+ *
* @param factoryName the factory name to unregister
*/
public void unregisterFactory(final String factoryName) {
@@ -134,10 +122,9 @@ public class FactoryManager {
public <F extends AbstractFactoryBase> void removeFactoryInstance(Class<F> factory) {
if (factory == null) {
throw new CoreException(
- new ErrorCode.ErrorCodeBuilder().withId(ERROR_CODE_E0001).withMessage("Mandatory input factory.")
- .withCategory(ErrorCategory.SYSTEM).build());
+ new ErrorCode.ErrorCodeBuilder().withId(ERROR_CODE_E0001).withMessage("Mandatory input factory.").withCategory(ErrorCategory.SYSTEM)
+ .build());
}
-
factoryInstanceMap.remove(factory.getName());
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/AbstractContextFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/AbstractContextFactory.java
index f4e1a85fee..a98ba44cf9 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/AbstractContextFactory.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/AbstractContextFactory.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,11 +17,11 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.core.factory;
import org.openecomp.core.factory.impl.AbstractFactoryBase;
public abstract class AbstractContextFactory<I, C> extends AbstractFactoryBase {
- public abstract I createInterface(C contextType);
+
+ public abstract I createInterface(C contextType);
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java
index 31df923bdd..cfe50f1619 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoriesConfigImpl.java
@@ -13,45 +13,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.core.factory;
-
-import org.openecomp.core.factory.api.FactoriesConfiguration;
-import org.openecomp.core.utilities.file.FileUtils;
-import org.openecomp.core.utilities.json.JsonUtil;
-import org.openecomp.sdc.common.errors.SdcConfigurationException;
-
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.openecomp.core.factory.api.FactoriesConfiguration;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.common.errors.SdcConfigurationException;
public final class FactoriesConfigImpl implements FactoriesConfiguration {
- private final Map factoryConfigurationMap = new HashMap();
+ private final Map factoryConfigurationMap = new HashMap();
- public FactoriesConfigImpl() {
- init();
- }
+ public FactoriesConfigImpl() {
+ init();
+ }
- @SuppressWarnings("unchecked")
- @Override
- public Map<String, String> getFactoriesMap() {
- return factoryConfigurationMap;
- }
+ @SuppressWarnings("unchecked")
+ @Override
+ public Map<String, String> getFactoriesMap() {
+ return factoryConfigurationMap;
+ }
- private void init() {
- final List<URL> factoryConfigUrlList = FileUtils.getAllLocations("factoryConfiguration.json");
- for (final URL factoryConfigUrl : factoryConfigUrlList) {
- try (InputStream stream = factoryConfigUrl.openStream()) {
- factoryConfigurationMap.putAll(JsonUtil.json2Object(stream, Map.class));
- } catch (final IOException e) {
- throw new SdcConfigurationException("Failed to initialize Factory from '" + factoryConfigUrl.getPath() +"'", e);
- }
+ private void init() {
+ final List<URL> factoryConfigUrlList = FileUtils.getAllLocations("factoryConfiguration.json");
+ for (final URL factoryConfigUrl : factoryConfigUrlList) {
+ try (InputStream stream = factoryConfigUrl.openStream()) {
+ factoryConfigurationMap.putAll(JsonUtil.json2Object(stream, Map.class));
+ } catch (final IOException e) {
+ throw new SdcConfigurationException("Failed to initialize Factory from '" + factoryConfigUrl.getPath() + "'", e);
+ }
+ }
}
- }
}
-
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoryConfig.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoryConfig.java
index 7dbf921ebf..0c118fc2c9 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoryConfig.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/FactoryConfig.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,7 +17,6 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.core.factory;
import java.util.Map;
@@ -26,14 +25,13 @@ import org.openecomp.core.utilities.CommonMethods;
public final class FactoryConfig {
- private static final FactoriesConfiguration INSTANCE = CommonMethods.newInstance(
- "org.openecomp.core.factory.FactoriesConfigImpl", FactoriesConfiguration.class);
-
- private FactoryConfig() {
+ private static final FactoriesConfiguration INSTANCE = CommonMethods
+ .newInstance("org.openecomp.core.factory.FactoriesConfigImpl", FactoriesConfiguration.class);
- }
+ private FactoryConfig() {
+ }
- public static Map<String, String> getFactoriesMap() {
- return INSTANCE.getFactoriesMap();
- }
+ public static Map<String, String> getFactoriesMap() {
+ return INSTANCE.getFactoriesMap();
+ }
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/AbstractComponentFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/AbstractComponentFactory.java
index 3de0d88f43..0a091c1864 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/AbstractComponentFactory.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/AbstractComponentFactory.java
@@ -4,17 +4,17 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.core.factory.api;
public abstract class AbstractComponentFactory<I> extends AbstractFactory<I> {
+
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/FactoriesConfiguration.java b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/FactoriesConfiguration.java
index 8086181204..b1da7950ce 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/FactoriesConfiguration.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-facade-lib/openecomp-facade-core/src/main/java/org/openecomp/core/factory/api/FactoriesConfiguration.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,13 +17,11 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.core.factory.api;
import java.util.Map;
-
public interface FactoriesConfiguration {
- Map<String, String> getFactoriesMap();
+ Map<String, String> getFactoriesMap();
}