ServiceReference.getConversationID always returns null
------------------------------------------------------

                 Key: TUSCANY-1670
                 URL: https://issues.apache.org/jira/browse/TUSCANY-1670
             Project: Tuscany
          Issue Type: Bug
          Components: Java SCA Java Implementation Extension
    Affects Versions: Java-SCA-0.99
         Environment: WINXP IBMJDK5
            Reporter: Jun JIe Nan
            Priority: Minor
             Fix For: Java-SCA-0.99


Seemly ServiceReference.getConversationID() works incorrect. It always return 
null. see below code(I tried it on release 0.99):

   1.     @Test
   2.     public void testServiceRef(){
   3.         ServiceReference<CartService> cartRef = 
hex.getServiceReference(CartService.class,
   4.             "CartComponent/CartService");       
   5.         assertNull(cartRef.getConversation().getConversationID());
   6.         assertNull(cartRef.getConversationID());
   7.         CartService cart = cartRef.getService();
   8.         assertNull(cartRef.getConversation().getConversationID());
   9.         assertNull(cartRef.getConversationID());
  10.         cart.updateItem("Avis", 1);
  11.         assertNotNull(cartRef.getConversation());
  12.         assertNotNull(cartRef.getConversationID()); // conversationID 
should not be null.
  13.     }

>From Line 1 - 11, all things work correctly. But LI 12 fails. 
>cartRef.getConversationID() should return a non-null value since the 
>conversation has been started.

The component:
    <component name="CartComponent">
        <implementation.java class="samples.hex.cart.impl.CartImpl"/>
    </component>
The Interface:
package samples.hex.cart.services;

import java.util.Map;

import org.osoa.sca.annotations.Conversational;
import org.osoa.sca.annotations.EndsConversation;

@Conversational
public interface CartService{
    public void updateItem(String itemID, int quantity);
    @EndsConversation
    public void empty();
    public Map<String, Integer> getItems();
}

The Implementation:
package samples.hex.cart.impl;

import java.util.HashMap;
import java.util.Map;

import org.osoa.sca.annotations.ConversationAttributes;
import org.osoa.sca.annotations.ConversationID;
import org.osoa.sca.annotations.Destroy;
import org.osoa.sca.annotations.Init;
import org.osoa.sca.annotations.Scope;
import org.osoa.sca.annotations.Service;

import samples.hex.cart.services.CartService;

@Scope("CONVERSATION")
@Service(CartService.class)
@ConversationAttributes(maxIdleTime="1 seconds",
        maxAge="2 seconds",
        singlePrincipal=false)
public class CartImpl implements CartService {
   
    @ConversationID
    protected String conversationID;

    private Map<String, Integer> cart;
    @Init
    protected void init(){
        if(cart==null)
            cart = new HashMap<String, Integer>();
    }
   
    public void empty() {
        System.out.println("[empty] "+conversationID + ":" + this);
    }

    public Map<String, Integer> getItems() {
        return cart;
    }

    public void updateItem(String itemID, int quantity) {
        if(quantity<=0)
            cart.remove(itemID);
        cart.put(itemID, quantity);
        System.out.println(conversationID + ":" + this);
    }

    @Destroy
    protected void destroy(){
        empty();
    }
}

-- 
Cheers
Jun Jie Nan
  ∧ ∧︵
ミ^ō^ミ灬)~ 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to