alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

ActiveMQ example source code file (ReflectionUtilTest.java)

This example ActiveMQ source code file (ReflectionUtilTest.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - ActiveMQ tags/keywords

file, g, io, properties, string, string, testclass1, testclass2, testclass3, testclass3, testclass4, testclass5, testclass5, testclass6, testclass6, util

The ActiveMQ ReflectionUtilTest.java source code

/**
 * 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.tool;

import java.io.File;
import java.util.Properties;

import junit.framework.TestCase;
import org.apache.activemq.tool.properties.ReflectionConfigurable;
import org.apache.activemq.tool.properties.ReflectionUtil;

public class ReflectionUtilTest extends TestCase {
    public void testConfigurableOption() {
        TestClass5 data = new TestClass5();

        data.willIntercept = true;
        ReflectionUtil.configureClass(data, "this-should-not-matter", "this-should-not-matter");
        assertTrue(data.intercepted);

        data.willIntercept = false;
        data.nest = new TestClass5();
        data.nest.willIntercept = true;
        ReflectionUtil.configureClass(data, "nest.this-should-not-matter", "this-should-not-matter");
        assertTrue(data.intercepted);
        assertTrue(data.nest.intercepted);

        data.willIntercept = false;
        data.nest = new TestClass5();
        data.nest.willIntercept = false;
        data.nest.nest = new TestClass5();
        data.nest.nest.willIntercept = true;
        ReflectionUtil.configureClass(data, "nest.nest.this-should-not-matter", "this-should-not-matter");
        assertTrue(data.intercepted);
        assertTrue(data.nest.intercepted);
        assertTrue(data.nest.nest.intercepted);

        TestClass6 data2 = new TestClass6();
        data2.nestConfig = new TestClass5();
        data2.nestConfig.willIntercept = true;
        ReflectionUtil.configureClass(data2, "nestConfig.this-should-not-matter", "this-should-not-matter");
        assertTrue(data2.nestConfig.intercepted);

        data2.nestNotConfig = new TestClass6();
        data2.nestNotConfig.nestConfig = new TestClass5();
        data2.nestNotConfig.nestConfig.willIntercept = true;
        ReflectionUtil.configureClass(data2, "nestNotConfig.nestConfig.this-should-not-matter", "this-should-not-matter");
        assertTrue(data2.nestNotConfig.nestConfig.intercepted);
    }

    public void testDataTypeConfig() {
        TestClass3 targetObj = new TestClass3();

        // Initialize variables;
        targetObj.setBooleanData(false);
        targetObj.setIntData(0);
        targetObj.setLongData(0);
        targetObj.setShortData((short)0);
        targetObj.setDoubleData(0.0);
        targetObj.setFloatData(0.0F);
        targetObj.setByteData((byte)0);
        targetObj.setCharData('0');
        targetObj.setStringData("false");

        // Set properties
        Properties props = new Properties();
        props.setProperty("booleanData", "true");
        props.setProperty("intData", "1000");
        props.setProperty("longData", "2000");
        props.setProperty("shortData", "3000");
        props.setProperty("doubleData", "1234.567");
        props.setProperty("floatData", "9876.543");
        props.setProperty("byteData", "127");
        props.setProperty("charData", "A");
        props.setProperty("stringData", "true");

        ReflectionUtil.configureClass(targetObj, props);

        // Check config
        assertEquals(true, targetObj.isBooleanData());
        assertEquals(1000, targetObj.getIntData());
        assertEquals(2000, targetObj.getLongData());
        assertEquals(3000, targetObj.getShortData());
        assertEquals(1234.567, targetObj.getDoubleData(), 0.0001);
        assertEquals(9876.543, targetObj.getFloatData(), 0.0001);
        assertEquals(127, targetObj.getByteData());
        assertEquals('A', targetObj.getCharData());
        assertEquals("true", targetObj.getStringData());
    }

    public void testValueOfMethod() {
        TestClass4 targetObj = new TestClass4();

        ReflectionUtil.configureClass(targetObj, "testFile", "TEST.FOO.BAR");

        assertEquals("TEST.FOO.BAR", targetObj.testFile.toString());
    }

    public void testGetProperties() {

        TestClass3 testData = new TestClass3();
        testData.setBooleanData(false);
        testData.setByteData((byte)15);
        testData.setCharData('G');
        testData.setDoubleData(765.43);
        testData.setFloatData(543.21F);
        testData.setIntData(654321);
        testData.setLongData(987654321);
        testData.setShortData((short)4321);
        testData.setStringData("BAR.TEST.FOO");

        TestClass3 targetObj = new TestClass3();
        targetObj.setBooleanData(true);
        targetObj.setByteData((byte)10);
        targetObj.setCharData('D');
        targetObj.setDoubleData(1234.567);
        targetObj.setFloatData(4567.89F);
        targetObj.setIntData(123456);
        targetObj.setLongData(1234567890);
        targetObj.setShortData((short)1234);
        targetObj.setStringData("Test.FOO.BAR");
        targetObj.setTestData(testData);

        Properties p = ReflectionUtil.retrieveObjectProperties(targetObj);
        assertEquals("true", p.getProperty("booleanData"));
        assertEquals("10", p.getProperty("byteData"));
        assertEquals("D", p.getProperty("charData"));
        assertEquals("1234.567", p.getProperty("doubleData"));
        assertEquals("4567.89", p.getProperty("floatData"));
        assertEquals("123456", p.getProperty("intData"));
        assertEquals("1234567890", p.getProperty("longData"));
        assertEquals("1234", p.getProperty("shortData"));
        assertEquals("Test.FOO.BAR", p.getProperty("stringData"));
        assertEquals("false", p.getProperty("testData.booleanData"));
        assertEquals("15", p.getProperty("testData.byteData"));
        assertEquals("G", p.getProperty("testData.charData"));
        assertEquals("765.43", p.getProperty("testData.doubleData"));
        assertEquals("543.21", p.getProperty("testData.floatData"));
        assertEquals("654321", p.getProperty("testData.intData"));
        assertEquals("987654321", p.getProperty("testData.longData"));
        assertEquals("4321", p.getProperty("testData.shortData"));
        assertEquals("BAR.TEST.FOO", p.getProperty("testData.stringData"));

    }

    public void testNestedConfig() {
        TestClass3 t1 = new TestClass3();
        TestClass3 t2 = new TestClass3();
        TestClass3 t3 = new TestClass3();
        TestClass3 t4 = new TestClass3();
        TestClass3 t5 = new TestClass3();

        ReflectionUtil.configureClass(t1, "stringData", "t1");
        assertEquals("t1", t1.getStringData());

        t1.setTestData(t2);
        ReflectionUtil.configureClass(t1, "testData.stringData", "t2");
        assertEquals("t2", t2.getStringData());

        t2.setTestData(t3);
        ReflectionUtil.configureClass(t1, "testData.testData.stringData", "t3");
        assertEquals("t3", t3.getStringData());

        t3.setTestData(t4);
        ReflectionUtil.configureClass(t1, "testData.testData.testData.stringData", "t4");
        assertEquals("t4", t4.getStringData());

        t4.setTestData(t5);
        ReflectionUtil.configureClass(t1, "testData.testData.testData.testData.stringData", "t5");
        assertEquals("t5", t5.getStringData());
    }

    public class TestClass1 {
        private boolean booleanData;
        private int intData;
        private long longData;

        public boolean isBooleanData() {
            return booleanData;
        }

        public void setBooleanData(boolean booleanData) {
            this.booleanData = booleanData;
        }

        public int getIntData() {
            return intData;
        }

        public void setIntData(int intData) {
            this.intData = intData;
        }

        public long getLongData() {
            return longData;
        }

        public void setLongData(long longData) {
            this.longData = longData;
        }
    }

    public class TestClass2 extends TestClass1 {
        private float floatData;
        private byte byteData;
        private char charData;

        public float getFloatData() {
            return floatData;
        }

        public void setFloatData(float floatData) {
            this.floatData = floatData;
        }

        public byte getByteData() {
            return byteData;
        }

        public void setByteData(byte byteData) {
            this.byteData = byteData;
        }

        public char getCharData() {
            return charData;
        }

        public void setCharData(char charData) {
            this.charData = charData;
        }
    }

    public class TestClass3 extends TestClass2 {
        private short shortData;
        private double doubleData;
        private String stringData;
        private TestClass3 testData;

        public short getShortData() {
            return shortData;
        }

        public void setShortData(short shortData) {
            this.shortData = shortData;
        }

        public double getDoubleData() {
            return doubleData;
        }

        public void setDoubleData(double doubleData) {
            this.doubleData = doubleData;
        }

        public String getStringData() {
            return stringData;
        }

        public void setStringData(String stringData) {
            this.stringData = stringData;
        }

        public TestClass3 getTestData() {
            return testData;
        }

        public void setTestData(TestClass3 testData) {
            this.testData = testData;
        }
    }

    public class TestClass4 {
        private File testFile;

        public String getTestFile() {
            return testFile.toString();
        }

        public void setTestFile(String testFile) {
            this.testFile = new File(testFile);
        }
    }

    public class TestClass5 implements ReflectionConfigurable {
        public boolean intercepted;
        public boolean willIntercept = true;
        public TestClass5 nest;

        public void configureProperties(Properties props) {
            // Do nothing
        }

        public Properties retrieveProperties(Properties props) {
            return null;
        }

        public boolean acceptConfig(String key, String val) {
            intercepted = true;

            return !willIntercept;
        }

        public TestClass5 getNest() {
            return nest;
        }

        public void setNest(TestClass5 nest) {
            this.nest = nest;
        }
    }

    public class TestClass6 {
        public TestClass6 nestNotConfig;
        public TestClass5 nestConfig;

        public TestClass6 getNestNotConfig() {
            return nestNotConfig;
        }

        public void setNestNotConfig(TestClass6 nestNotConfig) {
            this.nestNotConfig = nestNotConfig;
        }

        public TestClass5 getNestConfig() {
            return nestConfig;
        }

        public void setNestConfig(TestClass5 nestConfig) {
            this.nestConfig = nestConfig;
        }
    }
}

Other ActiveMQ examples (source code examples)

Here is a short list of links related to this ActiveMQ ReflectionUtilTest.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.