package org.mobicents.javax.media.mscontrol;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Set;
import javax.media.mscontrol.MsControlFactory;
import javax.media.mscontrol.Parameter;
import javax.media.mscontrol.SupportedFeatures;
import javax.media.mscontrol.mediagroup.MediaGroup;
import javax.media.mscontrol.mixer.MediaMixer;
import javax.xml.parsers.ParserConfigurationException;
import junit.framework.TestCase;
import org.mobicents.javax.media.mscontrol.resource.ExtendedParameter;
import org.xml.sax.SAXException;
public class XMLParserTest extends TestCase {
XMLParser parser = null;
private MsControlFactory msControlFactory = null;
private javax.media.mscontrol.spi.Driver driver = null;
public XMLParserTest() {
super();
}
public XMLParserTest(String name) {
super(name);
}
public void setUp() throws Exception {
parser = new XMLParser();
driver = new org.mobicents.javax.media.mscontrol.spi.DriverImpl();
msControlFactory = driver.getFactory(null);
}
public void tearDown() throws Exception {
}
public void testParsing() throws ParserConfigurationException, SAXException, IOException {
// String xml = "<?xml version=\"1.0\"
// encoding=\"UTF-8\"?><resource-container><parameter><key>ENDPOINT_LOCAL_NAME</key><value>/lla/laa/laa</value></parameter><parameter><key>ON_ENDPOINT</key><value>false</value></parameter></resource-container>";
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><resource-container><parameter><key>ENDPOINT_LOCAL_NAME</key><value>/lla/laa/laa</value></parameter><player><signal><mgcp-event>ann</mgcp-event><mgcp-package>A</mgcp-package><on-endpoint>true</on-endpoint></signal><event><mgcp-event>oc</mgcp-event><mgcp-package>A</mgcp-package><on-endpoint>true</on-endpoint><media-event>PLAY_COMPLETED</media-event></event><event><mgcp-event>of</mgcp-event><mgcp-package>A</mgcp-package><on-endpoint>true</on-endpoint><media-event>PLAY_COMPLETED</media-event></event></player><signal-detector><signal><mgcp-event>dtmf0</mgcp-event><mgcp-package>D</mgcp-package><on-endpoint>false</on-endpoint></signal><event><mgcp-event>dtmf0</mgcp-event><mgcp-package>D</mgcp-package><on-endpoint>true</on-endpoint><media-event>SIGNAL_DETECTED</media-event></event></signal-detector></resource-container>";
InputStream stream = new ByteArrayInputStream(xml.getBytes());
MediaConfigImpl config = parser.parse(null, stream);
assertNotNull(config);
SupportedFeatures features = config.getSupportedFeatures();
assertNotNull(features);
Set<Parameter> params = features.getSupportedParameters();
assertEquals(1, params.size());
assertEquals(ExtendedParameter.ENDPOINT_LOCAL_NAME, params.iterator().next());
assertEquals("/lla/laa/laa", (String) config.getParameters().get(ExtendedParameter.ENDPOINT_LOCAL_NAME));
// test player
assertTrue(config.isPlayer());
assertEquals(1, config.getPlayerGeneFactList().size());
assertEquals(2, config.getPlayerDetFactList().size());
// test signal detector
assertTrue(config.isSignaldetector());
assertEquals(1, config.getSigDeteEveGeneFactList().size());
assertEquals(1, config.getSigDeteEveDetFactList().size());
assertFalse(config.isSignalgenerator());
assertFalse(config.isRecorder());
}
public void testMarshall() {
MediaConfigImpl mediaConfig = MsControlFactoryImpl.configVsMediaConfigMap
.get(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR);
String serializedXml = parser.serialize(mediaConfig);
System.out.println("\n"+ "The xml for MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR \n"+ serializedXml);
assertNotNull(serializedXml);
mediaConfig = MsControlFactoryImpl.configVsMediaConfigMap.get(MediaMixer.AUDIO);
serializedXml = parser.serialize(mediaConfig);
System.out.println("\n"+ "The xml for MediaMixer.AUDIO \n"+serializedXml);
assertNotNull(serializedXml);
}
}