blob: 715e8452c4f37cba453e81fc1b263794c2959779 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.tuscany.sca.itest.servicereference;
import org.apache.tuscany.sca.itest.servicereference.utils.ServiceReferenceUtils;
import org.junit.Assert;
import org.osoa.sca.ServiceReference;
import org.osoa.sca.annotations.Reference;
import org.osoa.sca.annotations.Service;
/**
* This is a test client that is used to test Serializing and Deserializing
* ServiceReferences within a SCA Application
*
* @version $Date$ $Revision$
*/
@Service(SCAManagedClient.class)
public class SCAManagedClientImpl implements SCAManagedClient, StatelessServiceCallback {
/**
* Injected reference to the StatelessService
*/
@Reference(name = "statelessService")
protected ServiceReference<StatelessService> statelessServiceRef;
/**
* Injected reference to the Nested StatelessService.
*/
@Reference(name = "nestedStatelessService")
protected ServiceReference<StatelessService> nestedStatelessServiceRef;
/**
* Tests Serializing a Stateless ServiceReference
*
* @throws Exception Test failed
*/
public void testSerializeStatelessServiceReference() throws Exception {
doTestSerializeStatelessServiceReference(statelessServiceRef);
}
/**
* Tests Serializing a Stateless ServiceReference to XML
*
* @throws Exception Test failed
*/
public void testSerializeStatelessServiceReferenceXML() throws Exception {
doTestSerializeStatelessServiceReferenceXML(statelessServiceRef);
}
/**
* Tests Serializing a Nested Stateless ServiceReference.
*
* @throws Exception Test failed
*/
public void testSerializeNestedStatelessServiceReference() throws Exception {
doTestSerializeStatelessServiceReference(nestedStatelessServiceRef);
}
/**
* Tests Serializing a Stateless ServiceReference.
*
* @throws Exception Test failed
*/
private void doTestSerializeStatelessServiceReference(
ServiceReference<StatelessService> aServiceRef) throws Exception {
Assert.assertNotNull(aServiceRef);
StatelessService service = aServiceRef.getService();
service.getCurrentTime();
// Serialize the ServiceReference
byte[] serializedSR = ServiceReferenceUtils.serialize(aServiceRef);
Assert.assertNotNull(serializedSR);
// Deserialize the ServiceReference
ServiceReference<?> deserializedSR = ServiceReferenceUtils.deserializeServiceReference(serializedSR);
Assert.assertNotNull(deserializedSR);
ServiceReference<StatelessService> regotServiceRef = (ServiceReference<StatelessService>) deserializedSR;
Assert.assertNotNull(regotServiceRef);
// Use the ServiceReference to access the Service.
StatelessService regotService = regotServiceRef.getService();
Assert.assertNotNull(regotService);
}
/**
* Tests Serializing a Stateless ServiceReference to XML.
*
* @throws Exception Test failed
*/
private void doTestSerializeStatelessServiceReferenceXML(
ServiceReference<StatelessService> aServiceRef) throws Exception {
Assert.assertNotNull(aServiceRef);
StatelessService service = aServiceRef.getService();
service.getCurrentTime();
// Serialize the ServiceReference
String serializedSR = ServiceReferenceUtils.serializeServiceReferenceXML(aServiceRef);
Assert.assertNotNull(serializedSR);
// Deserialize the ServiceReference
ServiceReference<?> deserializedSR = ServiceReferenceUtils.deserializeServiceReferenceXML(serializedSR);
Assert.assertNotNull(deserializedSR);
ServiceReference<StatelessService> regotServiceRef = (ServiceReference<StatelessService>) deserializedSR;
Assert.assertNotNull(regotServiceRef);
// Use the ServiceReference to access the Service.
StatelessService regotService = regotServiceRef.getService();
Assert.assertNotNull(regotService);
}
/**
* Simple callback method
*
* @param msg The call back message
*/
public void callback(String msg) {
System.out.println("Stateless Callback with message " + msg);
}
/**
* Tests Serializing a Callback to a Stateless Service as managed
* SCA code
*
* @throws Exception Test failed
*/
public void testSerializeCallbackToStatelessServiceInsideSCA() throws Exception {
Assert.assertNotNull(statelessServiceRef);
StatelessService service = statelessServiceRef.getService();
String msg = "A message for the callback " + System.currentTimeMillis();
service.triggerCallback(msg);
}
}