From f9c6a77528410390e1ede22912510538dc573024 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 18 Jun 2018 14:02:15 +0200 Subject: [PATCH] Enforce patterns in supertype constructors We have failed to enforce patterns when being constructed from a supertype, which would allow creating invalid instances. Fix that by enforcing patterns consistently. JIRA: MDSAL-351 Change-Id: I16f4485ec8b6535c7094e3aac018cb6fbb0e5570 Signed-off-by: Robert Varga --- .../java/api/generator/ClassTemplate.xtend | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend index 90b2ac3701..c9a20bfe65 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend @@ -223,11 +223,7 @@ class ClassTemplate extends BaseTemplate { */ IF genTO.typedef && !allProperties.empty && allProperties.size == 1 && allProperties.get(0).name.equals("value")» «Objects.importedName».requireNonNull(_value, "Supplied value may not be null"); - «FOR c : consts» - «IF c.name == TypeConstants.PATTERN_CONSTANT_NAME» - «CodeHelpers.importedName».checkPattern(_value, «Constants.MEMBER_PATTERN_LIST», «Constants.MEMBER_REGEX_LIST»); - «ENDIF» - «ENDFOR» + «genPatternEnforcer("_value")» «ENDIF» «FOR p : properties» @@ -271,6 +267,14 @@ class ClassTemplate extends BaseTemplate { } ''' + def private genPatternEnforcer(String ref) ''' + «FOR c : consts» + «IF c.name == TypeConstants.PATTERN_CONSTANT_NAME» + «CodeHelpers.importedName».checkPattern(«ref», «Constants.MEMBER_PATTERN_LIST», «Constants.MEMBER_REGEX_LIST»); + «ENDIF» + «ENDFOR» + ''' + def private static paramValue(Type returnType, String paramName) { if (returnType instanceof ConcreteType) { return paramName @@ -318,7 +322,8 @@ class ClassTemplate extends BaseTemplate { * @param source Source object */ public «type.name»(«genTO.superType.importedName» source) { - super(source); + super(source); + «genPatternEnforcer("getValue()")» } ''' -- 2.36.6