/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.testing.logger;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import org.jboss.logging.Logger.Level;
final class TriggerOnPrefixLogListener implements LogListener, Triggerable {
private Set<String> expectedPrefixes = new HashSet<>();
private final AtomicBoolean triggered = new AtomicBoolean( false );
private final AtomicReference<String> triggerMessage = new AtomicReference<String>( null );
public TriggerOnPrefixLogListener(String expectedPrefix) {
expectedPrefixes.add( expectedPrefix );
}
public TriggerOnPrefixLogListener(Set<String> expectedPrefixes) {
this.expectedPrefixes = expectedPrefixes;
}
@Override
public void loggedEvent(Level level, String renderedMessage, Throwable thrown) {
if ( renderedMessage != null ) {
for ( String expectedPrefix : expectedPrefixes ) {
if ( renderedMessage.startsWith( expectedPrefix ) ) {
triggered.set( true );
triggerMessage.set( renderedMessage );
}
}
}
}
@Override
public String triggerMessage() {
return triggerMessage.get();
}
@Override
public boolean wasTriggered() {
return triggered.get();
}
@Override
public void reset() {
triggered.set( false );
triggerMessage.set( null );
}
}