X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ONAP-PDP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Fcustom%2FOnapFunctionDefinitionFactory.java;h=b69141f485819f830f0d582e91f835956bec6c39;hb=1ecf9de8c889adb2dbc9ddd9a79d28e1da89d87b;hp=ea4e90eda1a96f898c0bbd0537fb1c02d82ef9e6;hpb=0c8425b25c093f638351a14f84a7b1df731cd0de;p=policy%2Fengine.git diff --git a/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java b/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java index ea4e90eda..b69141f48 100644 --- a/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java +++ b/ONAP-PDP/src/main/java/org/onap/policy/xacml/custom/OnapFunctionDefinitionFactory.java @@ -2,14 +2,15 @@ * ============LICENSE_START======================================================= * ONAP-PDP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Modified Copyright (C) 2018 Samsung Electronics Co., Ltd. * ================================================================================ * 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,8 +18,16 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.xacml.custom; +import com.att.research.xacml.api.Identifier; +import com.att.research.xacml.std.IdentifierImpl; +import com.att.research.xacml.std.datatypes.DataTypes; +import com.att.research.xacmlatt.pdp.policy.FunctionDefinition; +import com.att.research.xacmlatt.pdp.policy.FunctionDefinitionFactory; +import com.att.research.xacmlatt.pdp.std.StdFunctions; + import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.HashMap; @@ -28,60 +37,53 @@ import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.xacml.pdp.std.functions.FunctionDefinitionCustomRegexpMatch; -import com.att.research.xacml.api.Identifier; -import com.att.research.xacml.std.IdentifierImpl; -import com.att.research.xacml.std.datatypes.DataTypes; -import com.att.research.xacmlatt.pdp.policy.FunctionDefinition; -import com.att.research.xacmlatt.pdp.policy.FunctionDefinitionFactory; -import com.att.research.xacmlatt.pdp.std.StdFunctions; - public class OnapFunctionDefinitionFactory extends FunctionDefinitionFactory { - private static Logger logger = FlexLogger.getLogger(OnapFunctionDefinitionFactory.class); - private static Map mapFunctionDefinitions = new HashMap<>(); - private static boolean needMapInit = true; + private static Logger logger = FlexLogger.getLogger(OnapFunctionDefinitionFactory.class); + private static Map mapFunctionDefinitions = new HashMap<>(); + private static boolean needMapInit = true; + + public static final Identifier ID_FUNCTION_CUSTOM_REGEXP_MATCH = + new IdentifierImpl("org.onap.function.regex-match"); + + private static final FunctionDefinition FD_CUSTOM_REGEXP_MATCH = + new FunctionDefinitionCustomRegexpMatch<>(ID_FUNCTION_CUSTOM_REGEXP_MATCH, DataTypes.DT_STRING); + + private static void register(final FunctionDefinition functionDefinition) { + mapFunctionDefinitions.put(functionDefinition.getId(), functionDefinition); + } + + private static void initMap() { - public static final Identifier ID_FUNCTION_CUSTOM_REGEXP_MATCH = new IdentifierImpl("org.onap.function.regex-match"); - - private static final FunctionDefinition FD_CUSTOM_REGEXP_MATCH = new FunctionDefinitionCustomRegexpMatch<>(ID_FUNCTION_CUSTOM_REGEXP_MATCH, DataTypes.DT_STRING); + synchronized (mapFunctionDefinitions) { + if (needMapInit) { + needMapInit = false; + final Field[] declaredFields = StdFunctions.class.getDeclaredFields(); + for (final Field field : declaredFields) { + registerFunctionDefinition(field); + } + register(FD_CUSTOM_REGEXP_MATCH); + } + } + } - private static void register(FunctionDefinition functionDefinition) { - mapFunctionDefinitions.put(functionDefinition.getId(), functionDefinition); - } - - private static void initMap() { + private static void registerFunctionDefinition(Field field) { + if (Modifier.isStatic(field.getModifiers()) && field.getName().startsWith(StdFunctions.FD_PREFIX) + && FunctionDefinition.class.isAssignableFrom(field.getType()) + && Modifier.isPublic(field.getModifiers())) { + try { + register((FunctionDefinition) (field.get(null))); + } catch (final IllegalAccessException ex) { + logger.error(ex.getMessage() + ex); + } + } + } - synchronized(mapFunctionDefinitions) { - if (needMapInit) { - needMapInit = false; - Field[] declaredFields = StdFunctions.class.getDeclaredFields(); - for (Field field : declaredFields) { - if (Modifier.isStatic(field.getModifiers()) && - field.getName().startsWith(StdFunctions.FD_PREFIX) && - FunctionDefinition.class.isAssignableFrom(field.getType()) && - Modifier.isPublic(field.getModifiers()) - ) { - try { - register((FunctionDefinition)(field.get(null))); - } catch (IllegalAccessException ex) { - logger.error(ex.getMessage() +ex); - } - } - } - // - // Our custom function - // - //register(FunctionDefinitionCustomRegexpMatch); - register(FD_CUSTOM_REGEXP_MATCH); - } - } - } - - public OnapFunctionDefinitionFactory() { - initMap(); - } + public OnapFunctionDefinitionFactory() { + initMap(); + } - @Override - public FunctionDefinition getFunctionDefinition(Identifier functionId) { - return mapFunctionDefinitions.get(functionId); - } + @Override + public FunctionDefinition getFunctionDefinition(final Identifier functionId) { + return mapFunctionDefinitions.get(functionId); + } }