/*
 * Copyright 2011-2018 B2i Healthcare Pte Ltd, http://b2i.sg
 * 
 * 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 com.b2international.snowowl.fhir.core.model.dt;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import com.b2international.commons.StringUtils;

/**
 * Div validator for the {@link ValidDiv} annotation
 * 
 * @since 6.4
 */
public class DivValidator implements ConstraintValidator<ValidDiv, String> {

	@Override
	public void initialize(ValidDiv constraintAnnotation) {
	}

	@Override
	public boolean isValid(String divString, ConstraintValidatorContext constraintContext) {

		//use @NotNull for null validation
		if (StringUtils.isEmpty(divString)) {
			return false;
		}
		
		//empty tag is OK
		if (divString.equalsIgnoreCase("</div>")) {
			return true;
		}
		
		if (!divString.toLowerCase().startsWith("<div>")) {
			return false;
		}

		if (!divString.toLowerCase().endsWith("</div>")) {
			return false;
		}
		return true;
	}
}
@@ -20,10 +20,10 @@
 1-20
-18
+22
  B2i
@@ -1160,16 +1160,17 @@
  %7B%0A%0A%09%09//
+ 
 use @Not
@@ -1266,13 +1266,29 @@
 %09%09//
+ 
 empty
+ (self-closing)
  tag
@@ -1329,20 +1329,20 @@
 eCase(%22%3C
-/
 div
+/
 %3E%22)) %7B%0A%09
@@ -1363,16 +1363,48 @@
 %0A%09%09%7D%0A%09%09%0A
+%09%09// allow attributes eg. xmlns%0A
 %09%09if (!d
@@ -1442,17 +1442,17 @@
 th(%22%3Cdiv
-%3E
+ 
 %22)) %7B%0A%09%09
@@ -1545,16 +1545,19 @@
 se;%0A%09%09%7D%0A
+%09%09%0A
 %09%09return
@@ -1567,8 +1567,9 @@
 ue;%0A%09%7D%0A%7D
+%0A

Make DivValidator more lenient; fix self-closing tag