/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.routing.filters; import static org.mule.runtime.core.util.ClassUtils.equal; import static org.mule.runtime.core.util.ClassUtils.hash; import org.mule.runtime.api.message.Message; import org.mule.runtime.core.api.Event; import org.mule.runtime.core.api.routing.filter.Filter; import org.mule.runtime.core.util.ClassUtils; /** * <code>PayloadTypeFilter</code> filters based on the type of the object received. */ public class PayloadTypeFilter implements Filter { private Class expectedType; public PayloadTypeFilter() { super(); } public PayloadTypeFilter(String expectedType) throws ClassNotFoundException { this(ClassUtils.loadClass(expectedType, PayloadTypeFilter.class)); } public PayloadTypeFilter(Class expectedType) { this.expectedType = expectedType; } @Override public boolean accept(Message message, Event.Builder builder) { return (expectedType != null ? expectedType.isAssignableFrom(message.getPayload().getDataType().getType()) : false); } public Class getExpectedType() { return expectedType; } public void setExpectedType(Class expectedType) { this.expectedType = expectedType; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; final PayloadTypeFilter other = (PayloadTypeFilter) obj; return equal(expectedType, other.expectedType); } @Override public int hashCode() { return hash(new Object[] {this.getClass(), expectedType}); } }