package org.apereo.cas.support.events.config;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.apereo.cas.support.events.AbstractCasEvent;
import java.io.File;
import java.nio.file.Path;
import java.util.regex.Pattern;
/**
* This is {@link CasConfigurationModifiedEvent}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public class CasConfigurationModifiedEvent extends AbstractCasEvent {
private static final long serialVersionUID = -5738763037210896455L;
private static final Pattern CONFIG_FILE_PATTERN = Pattern.compile("\\.(properties|yml)", Pattern.CASE_INSENSITIVE);
private final Path file;
private boolean override;
/**
* Instantiates a new Abstract cas sso event.
*
* @param source the source
* @param file the file
*/
public CasConfigurationModifiedEvent(final Object source, final Path file) {
this(source, file, false);
}
/**
* Instantiates a new Cas configuration modified event.
*
* @param source the source
* @param override the override
*/
public CasConfigurationModifiedEvent(final Object source, final boolean override) {
this(source, null, override);
}
/**
* Instantiates a new Cas configuration modified event.
*
* @param source the source
* @param file the file
* @param override the override
*/
public CasConfigurationModifiedEvent(final Object source, final Path file, final boolean override) {
super(source);
this.file = file;
this.override = override;
}
private Path getFile() {
return file;
}
public boolean isOverride() {
return override;
}
/**
* Is eligible for context refresh ?
*
* @return the boolean
*/
public boolean isEligibleForContextRefresh() {
if (this.override) {
return true;
}
if (getFile() != null) {
final File file = getFile().toFile();
return CONFIG_FILE_PATTERN.matcher(file.getName()).find();
}
return false;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SIMPLE_STYLE)
.appendSuper(super.toString())
.append("file", file)
.append("override", override)
.toString();
}
}