-
1. Re: Please can this extension be added to Arquillian
tony.herstell1 Jun 28, 2012 10:44 PM (in response to tony.herstell1)Code that uses conversation....
// Leverage EJB to get Transactional Support
@Stateful
// Lets be long running (multiple client-server round trips) - Needs Extended on
// PersistanceContext too to hold onto my objects and not get LIEs.
@ConversationScoped
// EL Can can find me...
@Named
public class UserManagementController extends BaseController {
private Logger logger = Logger.getLogger(UserManagementController.class.getName());
@SuppressWarnings("unused")
@URLQueryParameter("cid")
private String cid;
// DON'T let any Entities be Proxied by WELD so just use class local.
// According to this definition, JPA entities are technically managed beans.
// However, entities have
// their own special lifecycle, state and identity model and are usually
// instantiated by JPA or using
// new. Therefore we don't recommend directly injecting an entity class. We
// especially recommend
// against assigning a scope other than @Dependent to an entity class, since
// JPA is not able to
// persist injected CDI proxies.
private List<User> users;
private CRUDMode cRUDMode;
private CreateMode createMode;
// Access to the persistence store so we can read from the DB with Long
// Running extension to go with Conversation Scope above.
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager em;
// Inject this to make conversation magic happen
@Inject
private Conversation conversation;
...
/*
* Hack to pass cid to prettyfaces so it can add it to URL - DONT remove.
*/
public String getCid() {
return this.conversation.getId();
}
public void setCid(String cid) {
this.cid = cid;
}
...
// A good place to START a conversation from. ** land here off a menu
// click...
public String init() {
this.logger.info(">>>init");
if (!this.conversation.isTransient()) {
this.logger.info("Existing conversation found:" + this.conversation.getId() + " Ending it...");
this.conversation.end();
}
this.logger.info("+++CONVERSATION START");
this.conversation.begin(); // START THE LONG RUNNING CONVERSATION
this.logger.info("conversation:" + this.conversation.getId());
this.logger.info("<<<init");
return "pretty:manageUsers";
}
etc.
-
2. Re: Please can this extension be added to Arquillian
tony.herstell1 Jun 28, 2012 10:46 PM (in response to tony.herstell1)Test Code that doesnt work.... (See pl.com.it_crowd.arquillian.mock_contexts.ConversationScopeRequired;)
@ConversationScopeRequired
@Test
public void conversationScopedBeanTest() {
// Assert.assertEquals(0, userManagementController.getCid());
// userManagementController.setCid("1");
// Assert.assertEquals(1, userManagementController.getCid());
Assert.assertTrue(true);
}
-
3. Re: Please can this extension be added to Arquillian
blabno Jun 29, 2012 5:12 AM (in response to tony.herstell1)1 of 1 people found this helpfulIf you want to use Conversation object you need to mock it, cause it's tightly coupled with Weld impl.
Read this: http://blog.it-crowd.com.pl/2012/06/mock-conversation.html
-
4. Re: Please can this extension be added to Arquillian
tony.herstell1 Jul 2, 2012 3:05 AM (in response to blabno)Humm..
As it's a test do I add to beans.xml in the normal project or create a beans.xml in the test area?
This:
BeansDescriptor.class
From:
final String beansDescriptor = Descriptors.create(BeansDescriptor.class)
.createAlternatives()
.clazz(MockConversation.class.getCanonicalName())
.up()
.exportAsString();
is not found; where did this come from (import?)?
http://artifactory.it-crowd.com.pl/repo is giving unobtainable at the moment
The Joys....
found more info here:
http://blog.it-crowd.com.pl/2012/04/mock-contexts-for-arquillian.html
-
5. Re: Please can this extension be added to Arquillian
blabno Jul 2, 2012 3:27 AM (in response to tony.herstell1)Artifactory is back again, thank you for reporting that. BeansDescriptor comes from shrinkwrap-descriptors-impl-javaee.
-
6. Re: Please can this extension be added to Arquillian
tony.herstell1 Jul 2, 2012 3:46 AM (in response to blabno)>> Now you need to register it as alternative in beans.xml you ship with deployment:
Do you have an example?
I assume:
<alternatives> <class>com.apiarymanager.controller.users.userManagement.MockConversation</class> </alternatives> >> As it's a test do I add to beans.xml in the normal project or create a beans.xml in the test area?
-
7. Re: Please can this extension be added to Arquillian
tony.herstell1 Jul 2, 2012 3:52 AM (in response to blabno)Please can you see where you are getting shrinkwrap-descriptors-impl-javaee from in your pom.
I dont have it available.
-
8. Re: Please can this extension be added to Arquillian
tony.herstell1 Jul 2, 2012 4:01 AM (in response to tony.herstell1)I THINK this line means you dont have to include the override in beans.xml at all.....
final String beansDescriptor = Descriptors.create(BeansDescriptor.class)
.createAlternatives()
.clazz(MockConversation.class.getCanonicalName())
.up()
.exportAsString();
I have foce added this to pom:
<!-- And this for Conversation scope --> <dependency> <groupId>org.jboss.shrinkwrap.descriptors</groupId> <artifactId>shrinkwrap-descriptors-api-javaee</artifactId> <version>2.0.0-alpha-3</version> </dependency> but alas now this is not known:
.addAsWebInfResource
What version of arquillian are you using?
-
10. Re: Please can this extension be added to Arquillian
tony.herstell1 Jul 2, 2012 9:16 PM (in response to blabno)Gets me to...
>>
No resource META-INF/services/org.jboss.shrinkwrap.descriptor.api.beans10.BeansDescriptor was found configured for user view class org.jboss.shrinkwrap.descriptor.api.beans10.BeansDescriptor
<<
@Deployment
public static WebArchive createDeployment() {
final String beansDescriptor = Descriptors.create(BeansDescriptor.class)
.createAlternatives()
.clazz(MockConversation.class.getCanonicalName())
.up()
.exportAsString();
WebArchive war = ShrinkWrap.create(WebArchive.class)
.addClass(UserManagementController.class)
.addClass(Identity.class)
.addAsWebInfResource(new StringAsset(beansDescriptor), "beans.xml")
.addAsManifestResource("META-INF/persistence.xml", "persistence.xml")
.addAsManifestResource("arquillian.xml", "arquillian.xml")
.addAsManifestResource(new StringAsset(beansDescriptor),"beans.xml");
System.out.println(war.toString(true));
return war;
}
Thx for the support Bernard
-
11. Re: Please can this extension be added to Arquillian
blabno Jul 3, 2012 12:17 AM (in response to tony.herstell1)You're missing somethin in pom.xml. Compare all dependnecies versions with the sample i've povided. Try comparing "mvn dependency:tree" on both my sample and your project.
-
12. Re: Please can this extension be added to Arquillian
tony.herstell1 Jul 17, 2012 6:46 PM (in response to blabno)Is there an update to getting conversationm scope formally added?
-
13. Re: Please can this extension be added to Arquillian
blabno Jul 18, 2012 6:07 AM (in response to tony.herstell1)Tony what do you mean by this:
Tony Herstell wrote:
Is there an update to getting conversationm scope formally added?
-
14. Re: Please can this extension be added to Arquillian
tony.herstell1 Aug 9, 2012 1:07 AM (in response to blabno)Bernard Labno wrote:
Tony what do you mean by this:
Tony Herstell wrote:
Is there an update to getting conversationm scope formally added?
Is this getting adopted?
http://blog.it-crowd.com.pl/2012/04/mock-contexts-for-arquillian.html