[jboss-user] [JBoss Seam] - Re: Seems some kind of config error with BEANs, please help
Alpha1251
do-not-reply at jboss.com
Mon Jul 9 07:10:35 EDT 2007
The exception
javax.el.PropertyNotFoundException: Property 'report' not found on type org.javassist.tmp.java.lang.Object_$$_javassist_0
| at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:199)
| at javax.el.BeanELResolver.property(BeanELResolver.java:273)
| at javax.el.BeanELResolver.getValue(BeanELResolver.java:66)
| at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
| at org.jboss.el.parser.AstPropertySuffix.getValue(AstPropertySuffix.java:53)
| at org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
| at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
| at org.jboss.seam.jsf.SeamApplication.evaluateExpressionGet(SeamApplication.java:324)
| at org.jboss.seam.mock.BaseSeamTest$Request.getValue(BaseSeamTest.java:412)
| at dk.company.product.test.DumperTest$1.renderResponse(DumperTest.java:77)
| at org.jboss.seam.mock.BaseSeamTest$Request.renderResponsePhase(BaseSeamTest.java:562)
| at org.jboss.seam.mock.BaseSeamTest$Request.emulateJsfLifecycle(BaseSeamTest.java:548)
| at org.jboss.seam.mock.BaseSeamTest$Request.run(BaseSeamTest.java:466)
| at dk.company.product.test.DumperTest.test(DumperTest.java:100)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
| at java.lang.reflect.Method.invoke(Unknown Source)
| at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:604)
| at org.testng.internal.Invoker.invokeMethod(Invoker.java:470)
| at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:564)
| at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:830)
| at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
| at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
| at org.testng.TestRunner.runWorkers(TestRunner.java:678)
| at org.testng.TestRunner.privateRun(TestRunner.java:624)
| at org.testng.TestRunner.run(TestRunner.java:495)
| at org.testng.SuiteRunner.runTest(SuiteRunner.java:300)
| at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:295)
| at org.testng.SuiteRunner.privateRun(SuiteRunner.java:275)
| at org.testng.SuiteRunner.run(SuiteRunner.java:190)
| at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:792)
| at org.testng.TestNG.runSuitesLocally(TestNG.java:765)
| at org.testng.TestNG.run(TestNG.java:699)
| at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
| at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:122)
the test class
package dk.company.product.test;
|
| import java.util.List;
|
| import javax.faces.application.FacesMessage;
| import javax.persistence.EntityManager;
| import javax.persistence.EntityManagerFactory;
| import javax.persistence.Persistence;
|
| import org.jboss.seam.core.FacesMessages;
| import org.jboss.seam.log.Logging;
| import org.jboss.seam.mock.SeamTest;
| import org.testng.annotations.Test;
|
| import dk.company.product.DumperBean;
|
| public class DumperTest extends SeamTest {
|
| @Test
| public void test_1_COMPONENT_Dumper () throws Exception {
|
| //Name got from persistence.xml, tag <persistence-unit
| EntityManagerFactory emf = Persistence.createEntityManagerFactory("truetrade");
| final EntityManager em = emf.createEntityManager();
|
| em.getTransaction().begin();
|
| DumperBean dumperBean = new DumperBean ();
| dumperBean.set4UnitTestEntityManager(em);
| dumperBean.set4UnitTestFacesMessages(new FacesMessages());
| dumperBean.set4UnitTestLog(Logging.getLog(DumperBean.class));
|
| dumperBean.dump();
|
| em.getTransaction().commit();
| em.close();
|
| FacesMessages facesMessages = dumperBean.get4UnitTestFacesMessages();
| List<FacesMessage> msgs = facesMessages.getCurrentMessages();
| boolean found = false;
| for (FacesMessage message: msgs) {
| String summary = message.getSummary();
| System.out.println ("Detail - "+summary);
| if (summary.indexOf("Finished in")>-1) {
| found = true;
| }
| }
| assert found;
|
| }
|
|
| @Test
| public void test() throws Exception {
| new FacesRequest() {
| @Override
| protected void invokeApplication() {
| invokeMethod("#{Dumper.dump}");
| }
|
| @Override
| protected void renderResponse() throws Exception {
| @SuppressWarnings("unused")
| Object facesMessages = getValue ("#{Dumper.report}");
|
| // FacesMessages facesMessages = (FacesMessages) getValue ("#{Dumper.facesMessages}");
| // List<FacesMessage> msgs = facesMessages.getCurrentGlobalMessages();
| // boolean found = false;
| // for (FacesMessage message: msgs) {
| // String detail = message.getSummary();
| // System.out.println ("Detail - "+detail);
| // if (detail.indexOf("Finished in")>-1) {
| // found = true;
| // }
| // }
| // assert found;
| }
|
|
| }.run();
| }
|
| }
and the tested bean
package dk.company.product;
|
| import java.util.ArrayList;
| import java.util.LinkedHashMap;
| import java.util.List;
| import java.util.Map;
|
| import javax.ejb.Stateless;
| import javax.persistence.EntityManager;
| import javax.persistence.Query;
|
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Logger;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.core.FacesMessages;
| import org.jboss.seam.log.Log;
|
| import dk.company.product.data.Address;
| import dk.company.product.data.Catalog;
| import dk.company.product.data.Category;
| import dk.company.product.data.Company;
| import dk.company.product.data.CompanyCatalogShop;
| import dk.company.product.data.CompanyCatalogShopId;
| import dk.company.product.data.FavoriteList;
| import dk.company.product.data.Item;
| import dk.company.product.data.ItemStorageDetail;
| import dk.company.product.data.Shop;
| import dk.company.product.data.Storage;
| import dk.company.product.data.User;
| import dk.company.product.dict.ItemUnitType;
| import dk.company.product.dict.UserStatus;
| import dk.company.product.util.TestUtil;
|
| @Stateless
| @Name("Dumper")
| public class DumperBean implements Dumper {
|
| private static final Class<?>[] TABLE = {
| ItemStorageDetail.class, Storage.class, Address.class, CompanyCatalogShop.class, Item.class, Category.class,
| Catalog.class, User.class, Company.class, FavoriteList.class, Shop.class
| };
|
| private static final String[] CATEGORY_LEVEL_1 = {
| "Træ","Byggematerialer","Isenkram","Have & fritid","Hjemmets udstyr","Øvrige varer"
| };
| private static final String[][] CATEGORY_LEVEL_2 = {
| {},
| {"Cement & kalk","Betonvarer","Teglvarer","Øvrige bygningsdele af sten","Keramiske produkter","Fibercementvarer (eternit)","Gipsvarer","Træelementer","Træbaserede pla-der","Finer","Døre & vinduer","Færdige bygningsdele","Skabselementer","Isoleringsmaterialer","Pap og flydende sorte produkter","Maling, lim, fuge og gulvbelæg-ning","Plastmaterialer","Glas","Metalprofiler & plader"}
| };
| private static final String[][][] CATEGORY_LEVEL_3 = {
| {{}},
| {{"Cement","Kalk","Facadepuds","Mørtel t/mur","Beton","Kridt & gips","Sten & grus"}}
| };
|
| private static final String[][] ITEM = {
| {"SÆK", "40", " 25.0", "GULLEX A MURCEMENT 25KG", "5146882", "3010-5146882", "80.00"},
| {"PS", "42", " 25.0", "AALBORG CEMENT BASIS 25KG", "8321663", "3010-8321663", "46.05"},
| {"SÆK", "42", " 25.0", "AALBORG CEMENT RAPID 25KG", "8321689", "3010-8321689", "49.00"},
| {"SÆK", "42", " 25.0", "AALBORG CEMENT MESTER LAVALKALI 25KG", "8321721", "3010-8321721", "50.00"},
| {"SÆK", "42", " 25.0", "AALBORG WHITE HVID 25KG", " 8919599", "3010-8919599", " 77.00"}
| };
|
| private static final String[][] ADDRESS_STORAGE = {
| {"Hedereslevej, 37", "Kolding", "6000"},
| {"Koldingvej, 232", "Årchus", "6200"},
| };
|
| @Logger
| private Log log;
|
| @In
| private EntityManager entityManager;
|
| @In
| private FacesMessages facesMessages;
|
| private Map<String, DataUpdateReport> report;
|
| public String dump() {
| report = new LinkedHashMap<String, DataUpdateReport>();
| long start = System.currentTimeMillis();
| log.info("Dumper.dump() action called");
|
| StringBuffer sb = new StringBuffer("Status: ");
|
| Query query;
|
| for (int i = 0; i < TABLE.length; i++) {
| query = entityManager.createQuery("delete from " + TABLE.getName());
| report(TABLE, query.executeUpdate());
| }
|
| for (int i = 0; i < 3; i++) {
| Company company = new Company("Company #" + i, "ID" + i);
| persist(company);
|
| List<FavoriteList> fl = new ArrayList<FavoriteList>();
| for (int j = 0; j < 2; j++) {
| FavoriteList favoriteList = new FavoriteList("FavoriteList #" + (i * 10 + j), company);
| persist(favoriteList);
| fl.add(favoriteList);
| }
|
| for (int j = 0; j < 3; j++) {
| User user = new User(UserStatus.Active, "ID" + (10 * i + j));
| user.setCompany(company);
| persist(user);
| }
| for (int j = 0; j < 3; j++) {
| Catalog catalog = new Catalog("Catalog #" + (i * 10 + j), "SyncID#" + (i * 10 + j));
| persist(catalog);
| Shop shop = new Shop("Shop #" + i * 10 + j);
| persist(shop);
|
| List<Storage> storageList = new ArrayList<Storage>();
|
| for (int aId = 0; aId < ADDRESS_STORAGE.length; aId++) {
| Address address = new Address();
| address.setStreet(ADDRESS_STORAGE[aId][0]);
| address.setCity(ADDRESS_STORAGE[aId][1]);
| address.setZip(ADDRESS_STORAGE[aId][2]);
| persist(address);
|
| Storage storage = new Storage(shop, address, "Storage of shop " + shop.getTitle() + " with #" + aId, "SyncID#" + Math.random());
| persist(storage);
|
| storageList.add(storage);
| }
|
| CompanyCatalogShopId ccsId = new CompanyCatalogShopId(company.getId(), catalog.getId(), shop.getId());
| CompanyCatalogShop ccs = new CompanyCatalogShop();
| ccs.setId(ccsId);
|
| persist(ccs);
|
| for (int k = 0; k < CATEGORY_LEVEL_1.length; k++) {
| Category category = new Category(CATEGORY_LEVEL_1[k], "SyncID#" + (i * 10 + j * 3 + k));
| category.getCatalogs().add(catalog);
| persist(category);
| for (int k2 = 0; CATEGORY_LEVEL_2.length > k && k2 < CATEGORY_LEVEL_2[k].length; k2++) {
| Category category2 = new Category(CATEGORY_LEVEL_2[k][k2], "SyncID#" + (i * 10 + j * 3 + k * 10 + k2));
| category2.getCategoriesForCategoryParentId().add(category);
| persist(category2);
|
| for (int k3 = 0; CATEGORY_LEVEL_3.length>k && CATEGORY_LEVEL_3[k].length > k2 && k3 < CATEGORY_LEVEL_3[k][k2].length; k3++) {
| Category category3 = new Category(CATEGORY_LEVEL_3[k][k2][k3], "SyncID#" + (i * 10 + j * 3 + k * 10 + k2 * 10 + k3));
| category3.getCategoriesForCategoryParentId().add(category2);
| persist(category3);
| if (k3 == 0) {
| for (int i1 = 0; i1 < ITEM.length; i1++) {
| Item item = new Item(ITEM[i1][3], ItemUnitType.TYPE1, "SyncID#" + (i * 10 + j * 5 + k * 20 + i1));
| item.setNumber1(ITEM[i1][4]);
| item.setNumber2(ITEM[i1][5]);
| item.getCategories().add(category2);
| item.setUnitSize(Integer.parseInt(ITEM[i1][1]));
| persist(item);
|
| for (int l = 0; l < storageList.size(); l++) {
| ItemStorageDetail itemStorageDetail = new ItemStorageDetail(item, storageList.get(l), l > 0, Doub-le.parseDouble(ITEM[i1][6]), "SyncID#" + String.valueOf(TestUtil.getRandomIndex(100000)));
| persist(itemStorageDetail);
| }
|
| if (Math.random() < 0.1) {
| FavoriteList favoriteList = TestUtil.getRandomElement(fl);
| favoriteList.getItems().add(item);
| persist(favoriteList);
| }
| }
| }
| }
| }
| }
| }
|
| }
|
| for (String table : report.keySet()) {
| DataUpdateReport updateReport = report.get(table);
| sb.append(updateReport);
| sb.append("\n");
| }
|
| long duration = (System.currentTimeMillis() - start);
| facesMessages.add(sb.toString());
| facesMessages.add("Finished in #0 ms", duration);
|
| return null;
| }
|
| private void persist(Object object) {
| reportCreateInc(object.getClass().getSimpleName());
| entityManager.persist(object);
| }
|
| private void reportCreateInc(String table) {
| DataUpdateReport updateReport = report.get(table);
| if (updateReport != null) {
| updateReport.setInsert(updateReport.getInsert() + 1);
| }
| }
|
| private void report(Class<?> clazz, int deleteCount) {
| DataUpdateReport updateReport = report.get(clazz.getSimpleName());
| if (updateReport == null) {
| updateReport = new DataUpdateReport();
| report.put(clazz.getSimpleName(), updateReport);
| }
| updateReport.setTable(clazz.getSimpleName());
| updateReport.setDelete(deleteCount);
| }
|
| private class DataUpdateReport {
| private String table;
| private int delete;
| private int insert;
|
| public int getDelete() {
| return delete;
| }
|
| public void setDelete(int delete) {
| this.delete = delete;
| }
|
| public int getInsert() {
| return insert;
| }
|
| public void setInsert(int insert) {
| this.insert = insert;
| }
|
| public String getTable() {
| return table;
| }
|
| public void setTable(String table) {
| this.table = table;
| }
|
| public String toString() {
| StringBuffer sb = new StringBuffer();
| sb.append("Table " + table + ", deleted " + delete + ", created " + insert);
| return sb.toString();
| }
| }
|
| public void set4UnitTestEntityManager(EntityManager entityManager) {
| this.entityManager = entityManager;
| }
|
| public FacesMessages get4UnitTestFacesMessages() {
| return facesMessages;
| }
|
| public void set4UnitTestFacesMessages(FacesMessages facesMessages) {
| this.facesMessages = facesMessages;
| }
|
| public Log get4UnitTestLog() {
| return log;
| }
|
| public void set4UnitTestLog(Log log) {
| this.log = log;
| }
|
| }
|
Also, I've tried to add @Out annotation or getters & setter. It didn't help.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4061912#4061912
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4061912
More information about the jboss-user
mailing list