/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jbpm.configuration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jbpm.AbstractJbpmTestCase;
public class ObjectFactoryTest extends AbstractJbpmTestCase {
protected ObjectFactoryImpl objectFactory = null;
protected void parse(String xml) {
objectFactory = ObjectFactoryParser.parseXmlString(xml);
}
public void testNamedBean() {
parse(
"<beans>" +
" <bean name='mybean' class='java.util.HashMap' />" +
"</beans>"
);
HashMap m = (HashMap) objectFactory.createObject("mybean");
assertNotNull(m);
}
public void testNonSingletonBean() {
parse(
"<beans>" +
" <bean name='mybean' class='java.util.HashMap' />" +
"</beans>"
);
HashMap m1 = (HashMap) objectFactory.getObject("mybean");
HashMap m2 = (HashMap) objectFactory.getObject("mybean");
assertSame(m1, m2);
}
public void testNonSingletonNewBean() {
parse(
"<beans>" +
" <bean name='mybean' class='java.util.HashMap' />" +
"</beans>"
);
HashMap m1 = (HashMap) objectFactory.createObject("mybean");
HashMap m2 = (HashMap) objectFactory.createObject("mybean");
assertNotSame(m1, m2);
}
public void testSingletonBean() {
parse(
"<beans>" +
" <bean singleton='true' name='mybean' class='java.util.HashMap' />" +
"</beans>"
);
HashMap m1 = (HashMap) objectFactory.createObject("mybean");
HashMap m2 = (HashMap) objectFactory.createObject("mybean");
assertSame(m1, m2);
}
public void testNamedMap() {
parse(
"<beans>" +
" <map name='mymap' />" +
"</beans>"
);
Map m = (Map) objectFactory.createObject("mymap");
assertNotNull(m);
}
public void testNonSingletonMap() {
parse(
"<beans>" +
" <map name='mymap' />" +
"</beans>"
);
Map m1 = (Map) objectFactory.getObject("mymap");
Map m2 = (Map) objectFactory.getObject("mymap");
assertSame(m1, m2);
}
public void testNonSingletonNewMap() {
parse(
"<beans>" +
" <map name='mymap' />" +
"</beans>"
);
Map m1 = (Map) objectFactory.createObject("mymap");
Map m2 = (Map) objectFactory.createObject("mymap");
assertNotSame(m1, m2);
}
public void testSingletonMap() {
parse(
"<beans>" +
" <map singleton='true' name='mymap' />" +
"</beans>"
);
Map m1 = (Map) objectFactory.createObject("mymap");
Map m2 = (Map) objectFactory.createObject("mymap");
assertSame(m1, m2);
}
public void testNamedList() {
parse(
"<beans>" +
" <list name='mymap' />" +
"</beans>"
);
List l = (List) objectFactory.createObject("mymap");
assertNotNull(l);
}
public void testNonSingletonList() {
parse(
"<beans>" +
" <list name='mylist' />" +
"</beans>"
);
List l1 = (List) objectFactory.getObject("mylist");
List l2 = (List) objectFactory.getObject("mylist");
assertSame(l1, l2);
}
public void testNonSingletonNewList() {
parse(
"<beans>" +
" <list name='mylist' />" +
"</beans>"
);
List l1 = (List) objectFactory.createObject("mylist");
List l2 = (List) objectFactory.createObject("mylist");
assertNotSame(l1, l2);
}
public void testSingletonList() {
parse(
"<beans>" +
" <list singleton='true' name='mylist' />" +
"</beans>"
);
List l1 = (List) objectFactory.createObject("mylist");
List l2 = (List) objectFactory.createObject("mylist");
assertSame(l1, l2);
}
public void testNamedNull() {
parse(
"<beans>" +
" <null name='mynull'/>" +
"</beans>"
);
assertNull(objectFactory.createObject("mynull"));
}
public void testNamedString() {
parse(
"<beans>" +
" <string name='level'>four</string>" +
"</beans>"
);
assertEquals("four", objectFactory.createObject("level"));
}
public void testNamedInt() {
parse(
"<beans>" +
" <int name='level'>5</int>" +
"</beans>"
);
assertEquals(new Integer(5), objectFactory.createObject("level"));
}
public void testNamedInteger() {
parse(
"<beans>" +
" <integer name='level'>6</integer>" +
"</beans>"
);
assertEquals(new Integer(6), objectFactory.createObject("level"));
}
public void testNamedLong() {
parse(
"<beans>" +
" <long name='level'>7</long>" +
"</beans>"
);
assertEquals(new Long(7), objectFactory.createObject("level"));
}
public void testNamedFloat() {
parse(
"<beans>" +
" <float name='level'>7.7</float>" +
"</beans>"
);
assertEquals(new Float(7.7), objectFactory.createObject("level"));
}
public void testNamedDouble() {
parse(
"<beans>" +
" <double name='level'>8.8</double>" +
"</beans>"
);
assertEquals(new Double(8.8), objectFactory.createObject("level"));
}
public void testNamedChar() {
parse(
"<beans>" +
" <char name='level'>a</char>" +
"</beans>"
);
assertEquals(new Character('a'), objectFactory.createObject("level"));
}
public void testNamedBoolean() {
parse(
"<beans>" +
" <boolean name='affirmative'>true</boolean>" +
" <boolean name='negative'>false</boolean>" +
"</beans>"
);
assertEquals(Boolean.TRUE, objectFactory.createObject("affirmative"));
assertEquals(Boolean.FALSE, objectFactory.createObject("negative"));
}
public void testUndefinedName() {
parse(
"<beans>" +
" <string name='first'>1</string>" +
" <string name='second'>2</string>" +
"</beans>"
);
try {
objectFactory.createObject("unexisting-object-name");
fail("expected exception");
} catch (ConfigurationException e) {
// OK
}
}
}