Help

Controls

PermLinkWikiLink

Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

Forum: Seam Users Forum ListTopic List
26. Jul 2010, 18:01 America/New_York | Link

Hi everybody

This may look very straightforward, but i don't know the correct way to do it.

Consider two classes TestAHome and TestBHome, in the next scenario:

//All the imports well declared

@name("testAHome")
public class TestAHome extends EntityHome<TestA> {

    @In IdentityManager identityManager;

    public void setTestAId(Long id) {
        setId(id);
    }

    public Long getTestAId() {
        return (Long) getId();
    }
    
    public boolean deleteTestA(String TestAName) {

        if(identityManager.deleteUser(TestAName)) {

            new TestBHome().deleteATestA(TestAName);  //Here is the problem, in new TestBHome()
            return true;
        }
        else {return true};
    }

}

And

//All the imports well declared

@name("testBHome")
public class TestBHome extends EntityHome<TestB> {

    @In EntityManager entityManager;
    
    public void setTestBId(Long id) {
        setId(id);
    }

    public Long getTestBId() {
        return (Long) getId();
    }
    
    public void deleteATestA(String Aname) {
      
        List<TestA> testAlist = entityManager.createNamedQuery("findTestAs")
                                             .setParameter("name",Aname)
                                             .getResultList();
  
        for(TestA i : testAlist) {
            setTestBId(i.getId());
            remove();
            clearInstance();
        }

    }

}

The entity beans TestA and TestB don't have any relationship in the database, but TestB has information related with TestA(TestAName); so if i wanna delete a TestA, i have to delete all the information that TestB has in relation to TestA.

When i execute this code i get:

Caused by javax.el.ELException with message: "java.lang.NullPointerException" 
...
Caused by java.lang.NullPointerException with message: "" 

So the fact is that i don't know how to call a method located in a class(That inherits from EntityHome) to TestAHome(That inherits from EntityHome too).

If i try this:

@name("testAHome")
public class TestAHome extends EntityHome<TestA> {

    ... ...
    @In TestBHome testBHome;    
    ... ...

    public boolean deleteTestA(String TestAName) {

        if(identityManager.deleteUser(TestAName)) {

            testBHome.deleteATestA(TestAName);  //Here the problem continues, in testBHome
            return true;
        }
        else {return true};
    }    

}

I get:

org.jboss.seam.InstantiationException with message: "Could not instantiate Seam component: TestAHome" 
...
Caused by org.jboss.seam.RequiredException with message: "@In attribute requires non-null value: testAHome.testBHome" 

So i'm confused, i want to execute deleteATestA from deleteATestA to perform a improved delete function, but i don't know the correct way to do this

!!!Thanks in advance!!!