package com.enonic.cms.core.content; import java.util.List; import org.apache.commons.lang.StringUtils; import com.enonic.cms.core.content.contentdata.ContentData; import com.enonic.cms.core.content.contentdata.custom.CustomContentData; import com.enonic.cms.core.content.contentdata.custom.DataEntry; import com.enonic.cms.core.content.contentdata.custom.GroupDataEntry; import com.enonic.cms.core.content.contentdata.custom.stringbased.TextDataEntry; import com.enonic.cms.core.content.contenttype.ContentTypeConfig; import com.enonic.cms.core.content.contenttype.dataentryconfig.DataEntryConfig; import com.enonic.cms.core.content.contenttype.dataentryconfig.TextDataEntryConfig; public class ContentRegExpValidator { public static void validate( ContentData contentData ) { if ( contentData instanceof CustomContentData ) { CustomContentData ccData = (CustomContentData) contentData; final List<DataEntry> dataEntries = ccData.getEntries(); validateDataEntries( ccData.getContentTypeConfig(), dataEntries ); } } private static void validateDataEntries( final ContentTypeConfig contentTypeConfig, final List<DataEntry> dataEntries ) { for ( DataEntry dataEntry : dataEntries ) { if ( dataEntry instanceof TextDataEntry ) { final TextDataEntry textDataEntry = (TextDataEntry) dataEntry; String textDataEntryName = textDataEntry.getName(); DataEntryConfig inputConfig = contentTypeConfig.getInputConfig( textDataEntryName ); if ( inputConfig instanceof TextDataEntryConfig ) { String regExp = ( (TextDataEntryConfig) inputConfig ).getRegExp(); if ( StringUtils.isNotEmpty( regExp ) ) { String value = textDataEntry.getValue(); Boolean isRequired = inputConfig.isRequired(); if ( ( isRequired || StringUtils.isNotEmpty( value ) ) && !value.matches( regExp ) ) { throw new IllegalArgumentException( "The value: " + textDataEntry.getValue() + ", does not match the validation reg exp: " + regExp ); } } } } if ( dataEntry instanceof GroupDataEntry ) { final GroupDataEntry groupDataEntry = (GroupDataEntry) dataEntry; validateDataEntries( contentTypeConfig, groupDataEntry.getEntries() ); } } } }