/** * 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.camel.util.component; import java.util.HashMap; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.impl.DefaultExchange; import org.junit.Test; import static org.junit.Assert.assertEquals; public class ApiMethodPropertiesHelperTest { private static final String TEST_PREFIX = "CamelTest."; private static final String PROPERTY_1 = TEST_PREFIX + "property1"; private static final String PROPERTY_2 = TEST_PREFIX + "property2"; private static final String PROPERTY_3 = TEST_PREFIX + "property3"; private static final String PROPERTY_4 = TEST_PREFIX + "property4"; // test camel case property names private static final String PROPERTY_5 = TEST_PREFIX.substring(0, TEST_PREFIX.length() - 1) + "Property5"; private static final String VALUE_1 = "value1"; private static final long VALUE_2 = 2; private static final String VALUE_3 = "value3"; private static final String VALUE_4 = "true"; private static final String VALUE_5 = "CamelCaseValue"; private static ApiMethodPropertiesHelper<TestComponentConfiguration> propertiesHelper = new ApiMethodPropertiesHelper<TestComponentConfiguration>(TestComponentConfiguration.class, TEST_PREFIX) { }; @Test public void testGetExchangeProperties() throws Exception { final HashMap<String, Object> properties = new HashMap<String, Object>(); final DefaultExchange exchange = new DefaultExchange(new MockEndpoint()); exchange.getIn().setHeader(PROPERTY_1, VALUE_1); exchange.getIn().setHeader(PROPERTY_2, VALUE_2); exchange.getIn().setHeader(PROPERTY_3, VALUE_3); exchange.getIn().setHeader(PROPERTY_4, VALUE_4); exchange.getIn().setHeader(PROPERTY_5, VALUE_5); propertiesHelper.getExchangeProperties(exchange, properties); assertEquals(5, properties.size()); } @Test public void testGetEndpointProperties() throws Exception { final HashMap<String, Object> properties = new HashMap<String, Object>(); final TestEndpointConfiguration endpointConfiguration = new TestEndpointConfiguration(); endpointConfiguration.setProperty1(VALUE_1); endpointConfiguration.setProperty2(VALUE_2); endpointConfiguration.setProperty3(VALUE_3); endpointConfiguration.setProperty4(Boolean.valueOf(VALUE_4)); propertiesHelper.getEndpointProperties(endpointConfiguration, properties); assertEquals(2, properties.size()); } @Test public void testGetEndpointPropertyNames() throws Exception { final TestEndpointConfiguration endpointConfiguration = new TestEndpointConfiguration(); endpointConfiguration.setProperty1(VALUE_1); endpointConfiguration.setProperty4(Boolean.valueOf(VALUE_4)); assertEquals(1, propertiesHelper.getEndpointPropertyNames(endpointConfiguration).size()); } @Test public void testGetValidEndpointProperties() throws Exception { assertEquals(2, propertiesHelper.getValidEndpointProperties(new TestEndpointConfiguration()).size()); } @SuppressWarnings("unused") private static class TestComponentConfiguration { private String property1; private Long property2; public String getProperty1() { return property1; } public void setProperty1(String property1) { this.property1 = property1; } public long getProperty2() { return property2; } public void setProperty2(Long property2) { this.property2 = property2; } } @SuppressWarnings("unused") private static class TestEndpointConfiguration extends TestComponentConfiguration { private String property3; private Boolean property4; public String getProperty3() { return property3; } public void setProperty3(String property3) { this.property3 = property3; } public Boolean getProperty4() { return property4; } public void setProperty4(Boolean property4) { this.property4 = property4; } } }