package com.feisystems.polrep.util; import java.io.ByteArrayInputStream; import org.herasaf.xacml.core.policy.Evaluatable; import org.herasaf.xacml.core.policy.PolicyMarshaller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.Assert; import org.w3c.dom.Document; import com.feisystems.polrep.service.dto.PolicyDto; public class PolicyValidationUtils { private static final Logger LOGGER = LoggerFactory .getLogger(PolicyValidationUtils.class); public static boolean validate(final byte[] policy) { boolean isValid = false; try { final String policyString = new String(policy, DOMUtils.DEFAULT_ENCODING); final Document policyDoc = DOMUtils.bytesToDocument(policy); final Evaluatable policyObj = PolicyMarshaller .unmarshal(new ByteArrayInputStream(policy)); Assert.notNull(policyString); Assert.notNull(policyObj); Assert.notNull(policyDoc); isValid = true; } catch (final Exception e) { LOGGER.debug(e.getMessage(), e); } return isValid; } public static PolicyDto validateAndReturn(PolicyDto policyDto) { policyDto.setValid(validate(policyDto.getPolicy())); return policyDto; } }