/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.activemq.artemis.core.config.impl; import java.util.EnumSet; import org.apache.activemq.artemis.core.server.ActiveMQMessageBundle; import org.apache.activemq.artemis.core.server.DivertConfigurationRoutingType; import org.apache.activemq.artemis.core.server.JournalType; import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType; import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy; import org.apache.activemq.artemis.core.settings.impl.SlowConsumerPolicy; /** * A Validators. */ public final class Validators { public interface Validator { void validate(String name, Object value); } public static final Validator NO_CHECK = new Validator() { @Override public void validate(final String name, final Object value) { return; } }; public static final Validator NOT_NULL_OR_EMPTY = new Validator() { @Override public void validate(final String name, final Object value) { String str = (String) value; if (str == null || str.length() == 0) { throw ActiveMQMessageBundle.BUNDLE.emptyOrNull(name); } } }; public static final Validator GT_ZERO = new Validator() { @Override public void validate(final String name, final Object value) { Number val = (Number) value; if (val.doubleValue() > 0) { // OK } else { throw ActiveMQMessageBundle.BUNDLE.greaterThanZero(name, val); } } }; public static final Validator PERCENTAGE = new Validator() { @Override public void validate(final String name, final Object value) { Number val = (Number) value; if (val == null || (val.intValue() < 0 || val.intValue() > 100)) { throw ActiveMQMessageBundle.BUNDLE.notPercent(name, val); } } }; public static final Validator GE_ZERO = new Validator() { @Override public void validate(final String name, final Object value) { Number val = (Number) value; if (val.doubleValue() >= 0) { // OK } else { throw ActiveMQMessageBundle.BUNDLE.greaterThanZero(name, val); } } }; public static final Validator MINUS_ONE_OR_GT_ZERO = new Validator() { @Override public void validate(final String name, final Object value) { Number val = (Number) value; if (val.doubleValue() == -1 || val.doubleValue() > 0) { // OK } else { throw ActiveMQMessageBundle.BUNDLE.greaterThanMinusOne(name, val); } } }; public static final Validator MINUS_ONE_OR_GE_ZERO = new Validator() { @Override public void validate(final String name, final Object value) { Number val = (Number) value; if (val.doubleValue() == -1 || val.doubleValue() >= 0) { // OK } else { throw ActiveMQMessageBundle.BUNDLE.greaterThanZeroOrMinusOne(name, val); } } }; public static final Validator THREAD_PRIORITY_RANGE = new Validator() { @Override public void validate(final String name, final Object value) { Number val = (Number) value; if (val.intValue() >= Thread.MIN_PRIORITY && val.intValue() <= Thread.MAX_PRIORITY) { // OK } else { throw ActiveMQMessageBundle.BUNDLE.mustbeBetween(name, Thread.MIN_PRIORITY, Thread.MAX_PRIORITY, value); } } }; public static final Validator JOURNAL_TYPE = new Validator() { @Override public void validate(final String name, final Object value) { String val = (String) value; if (val == null || !EnumSet.allOf(JournalType.class).contains(JournalType.valueOf(val))) { throw ActiveMQMessageBundle.BUNDLE.invalidJournalType(val); } } }; public static final Validator ADDRESS_FULL_MESSAGE_POLICY_TYPE = new Validator() { @Override public void validate(final String name, final Object value) { String val = (String) value; if (val == null || !val.equals(AddressFullMessagePolicy.PAGE.toString()) && !val.equals(AddressFullMessagePolicy.DROP.toString()) && !val.equals(AddressFullMessagePolicy.BLOCK.toString()) && !val.equals(AddressFullMessagePolicy.FAIL.toString())) { throw ActiveMQMessageBundle.BUNDLE.invalidAddressFullPolicyType(val); } } }; public static final Validator SLOW_CONSUMER_POLICY_TYPE = new Validator() { @Override public void validate(final String name, final Object value) { String val = (String) value; if (val == null || !val.equals(SlowConsumerPolicy.KILL.toString()) && !val.equals(SlowConsumerPolicy.NOTIFY.toString())) { throw ActiveMQMessageBundle.BUNDLE.invalidSlowConsumerPolicyType(val); } } }; public static final Validator MESSAGE_LOAD_BALANCING_TYPE = new Validator() { @Override public void validate(final String name, final Object value) { String val = (String) value; if (val == null || !val.equals(MessageLoadBalancingType.OFF.toString()) && !val.equals(MessageLoadBalancingType.STRICT.toString()) && !val.equals(MessageLoadBalancingType.ON_DEMAND.toString())) { throw ActiveMQMessageBundle.BUNDLE.invalidMessageLoadBalancingType(val); } } }; public static final Validator ROUTING_TYPE = new Validator() { @Override public void validate(final String name, final Object value) { String val = (String) value; if (val == null || !val.equals(RoutingType.ANYCAST.toString()) && !val.equals(RoutingType.MULTICAST.toString())) { throw ActiveMQMessageBundle.BUNDLE.invalidRoutingType(val); } } }; public static final Validator DIVERT_ROUTING_TYPE = new Validator() { @Override public void validate(final String name, final Object value) { String val = (String) value; if (val == null || !val.equals(DivertConfigurationRoutingType.ANYCAST.toString()) && !val.equals(DivertConfigurationRoutingType.MULTICAST.toString()) && !val.equals(DivertConfigurationRoutingType.PASS.toString()) && !val.equals(DivertConfigurationRoutingType.STRIP.toString())) { throw ActiveMQMessageBundle.BUNDLE.invalidRoutingType(val); } } }; public static final Validator MAX_QUEUE_CONSUMERS = new Validator() { @Override public void validate(String name, Object value) { int val = (Integer) value; if (val < -1) { throw ActiveMQMessageBundle.BUNDLE.invalidMaxConsumers(name, val); } } }; }