Hey guys, seeing the following exception

org.apache.tapestry5.ioc.internal.util.TapestryException
Failure reading parameter 'model' of component Tree:tree:
org.apache.tapestry5.ioc.internal.util.TapestryException

location
    classpath:com/youtag/tag/pages/Tree.tml, line 2

java.lang.NullPointerException

Filter stack frames Stack trace

        com.youtag.tag.pages.Tree.getTreeModel(Tree.java:54)
       
org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:59)
       
org.apache.tapestry5.internal.transform.ParameterWorker$3$1.readFromBinding(ParameterWorker.java:254)
       
org.apache.tapestry5.internal.transform.ParameterWorker$3$1.get(ParameterWorker.java:372)
       
org.apache.tapestry5.corelib.components.Tree.getfieldvalue_model(Tree.java)
       
org.apache.tapestry5.corelib.components.Tree.onExpandChildren(Tree.java:268)
       
org.apache.tapestry5.corelib.components.Tree.dispatchComponentEvent(Tree.java)
       
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:923)
       
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1106)
       
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3200(ComponentPageElementImpl.java:61)
       
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1051)
       
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1048)
       
org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
       
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1047)
       
org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
       
org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56)
       
org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
       
org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75)
       
org.apache.tapestry5.services.TapestryModule$40.handle(TapestryModule.java:2454)
       
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
       
org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
       
org.tynamo.security.SecurityComponentRequestFilter.handleComponentEvent(SecurityComponentRequestFilter.java:42)
       
org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.j



Here's the TreeModel which is being called by model

    public TreeModel<CategoryNode> getTreeModel() {
        if (treeModel == null) {
            ValueEncoder<CategoryNode> encoder = new
ValueEncoder<CategoryNode>() {

                @Override
                public String toClient(CategoryNode node) {
                    return node.getCategory().getId().toString();
                }

                @Override
                public CategoryNode toValue(String node) {
                    return hibernateCategoryDao.findById(new Integer(node));
                }
            };

            treeModel = new DefaultTreeModel<CategoryNode>(encoder, new
CategoryTreeModelAdapter(hibernateCategoryDao),
hibernateCategoryDao.findRoots());
        }
        return treeModel;
    }

Lance, I started setting up things as a Service

   @Inject
    private HibernateCategoryDao hibernateCategoryDao;

AppModule
binder.bind(CategoryDao.class, HibernateCategoryDao.class)

but get the following exception
Error obtaining injected value for field
com.youtag.tag.pages.Tree.hibernateCategoryDao: No service implements the
interface com.youtag.tag.services.impl.HibernateCategoryDao.

Once we get that working, how do you inject hibernateCategoryDao into
categoryTreeModelAdapter?

BTW, I still don't understand the concrete / vs referencing interface. I'm
sure I will after this task though. Could you provide an example?

Thiago,

I added the query.setParemeters, please let me know if I implemented it
correctly. 

        List<Category> cats =
session.createCriteria(Category.class).add(criterion).list();
        Map<Integer, CategoryNode> childNodes = new LinkedHashMap<Integer,
CategoryNode>();
        for (Category cat : cats) {
            CategoryNode childNode = new CategoryNode();
            childNode.setCategory(cat);
            childNodes.put(cat.getId(), childNode);
        }

        Query query = session.createSQLQuery(
                "select c1.id, count(c2.id) "
                + "from CATEGORY c1 "
                + "left join CATEGORY c2 on c2.parent_id = c1.id "
                + "where c1.id in (:catIds) "
                + "group by c1.id");

        int i = 0;

        List<Integer> catIds = new ArrayList<Integer>();

        for (Iterator<CategoryNode> it = childNodes.values().iterator(); i <
childNodes.size(); i++) {
            catIds.add(i, it.next().getCategory().getId());
        }

        query.setParameterList("catIds", catIds);

        List queryResult = query.list();


Thanks Geoff, I think it will come in very useful to others not as skilled
in backend development like myself. I will email you with the code once I
have it fully working.  

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-TreeGrid-tp5462126p5494596.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to