[Contents] [Prev]

11 - Code Examples

11.1 Java Source File Example

The following example shows how to format a Java source file containing a single public class. Interfaces are formatted similarly. For more information, see "Class and Interface Declarations" on page 4 and "Documentation Comments" on page 9

/*
* Created on Nov 8, 2004
*
*/
package com.quikj.jiplet;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.sip.ListeningPoint;
import javax.sip.SipFactory;
import javax.sip.SipProvider;
import javax.sip.SipStack;
import javax.xml.bind.JAXBContext;
import com.quikj.jiplet.config.server.JipConnector;
import com.quikj.jiplet.config.server.JipContext;
import com.quikj.jiplet.config.server.JipPort;
import com.quikj.jiplet.config.server.JipProperty;
import com.quikj.jiplet.config.server.JipServer;

/**
* @author amit
*
*/
public class JipletContainer
{
public static JipletContainer instance = null;

private static File home;

private JipServer config;

private HashMap connectors = new HashMap();

private String defaultConnectorName;

private HashMap contexts = new HashMap();

private static final String DEFAULT_SIP_IMPL = "gov.nist";

/**
*
*/
private JipletContainer() throws Exception
{
super();
init();

instance = this;
}

private void init() throws Exception
{
if (JipletLogger.isInit() == false)
{
File log_file = new File(home, "deploy/conf/log4j.xml");
if (log_file.exists() == true)
{
JipletLogger.configLogger(log_file.getAbsolutePath());
}
}

JipletLogger.info("Jiplet container started");

// read the server.xml
File serverxml = new File(home, "deploy/conf/server.xml");
config = (JipServer) JAXBContext.newInstance(
"com.quikj.jiplet.config.server").createUnmarshaller()
.unmarshal(serverxml);

// initialize the SIP Connectors
List list = config.getConnectors().getConnector();
Iterator iter = list.iterator();
while (iter.hasNext() == true)
{
JipConnector c = (JipConnector) iter.next();

initSipConnector(c);
}

// next initialize the contexts
list = config.getContexts().getContext();
iter = list.iterator();
while (iter.hasNext() == true)
{
JipContext c = (JipContext) iter.next();

try
{
initJipContext(c);
}
catch (Exception ex)
{
JipletLogger.fatal("Error starting context "
+ c.getName() + "\n"
+ "Exception: " + ex.getClass().getName()
+ ": " + ex.getMessage() + "\n"
+ JipletLogger.getStackTrace(ex));
}
}
}

private void initJipContext(JipContext c) throws Exception
{
JipletLogger.info("Initializing context " + c.getName());
JipletContext context = new JipletContext(c.getName(),
new File(c.getPath()));
}

private void initSipConnector(JipConnector c) throws Exception
{
JipletLogger.info("Initializing connector " + c.getName());
Properties properties = new Properties();
List props = c.getJipProperties().getJipProperty();
Iterator iter = props.iterator();
while (iter.hasNext() == true)
{
JipProperty property = (JipProperty) iter.next();
properties.setProperty(property.getKey(), property.getValue());
if (JipletLogger.isDebugEnabled() == true)
{
JipletLogger.debug("Connector: " + c.getName() + " Property: "
+ property.getKey() + "=" + property.getValue()
+ " being added");
}
}

SipFactory factory = SipFactory.getInstance();

String stack_impl = c.getJipStack();
if (stack_impl == null) // not specified
{
stack_impl = DEFAULT_SIP_IMPL;
}

if (JipletLogger.isDebugEnabled() == true)
{
JipletLogger.debug("Connector " + c.getName()
+ " SIP implementation vendor "
+ stack_impl);
}
factory.setPathName(stack_impl);

SipStack sipStack = factory.createSipStack(properties);

List ports = c.getJipPorts().getJipPort();
iter = ports.iterator();
SipConnector sc = new SipConnector();
sc.setName(c.getName());

sc.setHeaderFactory(factory.createHeaderFactory());
sc.setAddressFactory(factory.createAddressFactory());
sc.setMessageFactory(factory.createMessageFactory());
while (iter.hasNext() == true)
{
JipPort port = (JipPort) iter.next();
ListeningPoint lp = sipStack.createListeningPoint(port.getPort(),
port.getType());

SipProvider provider = sipStack.createSipProvider(lp);
sc.addSipProvider(provider);

if (JipletLogger.isDebugEnabled() == true)
{
JipletLogger.debug("Connector " + c.getName()
+ "port (" + port.getType()
+ "," + port.getPort()
+ " being added");
}
}

connectors.put(c.getName(), sc);
if (c.isDefault() == true)
{
if (JipletLogger.isDebugEnabled() == true)
{
JipletLogger.debug("Connector " + c.getName()
+ " being set to default");
}

defaultConnectorName = c.getName();
}
else if (defaultConnectorName == null)
{
if (JipletLogger.isDebugEnabled() == true)
{
JipletLogger.debug("Connector " + c.getName()
+ " being set to default");
}
defaultConnectorName = c.getName();
}
}

/**
* @return Returns the instance.
*/
public static JipletContainer getInstance() throws Exception
{
if (instance == null)
{
new JipletContainer();
}
return instance;
}

public static void setContainerHome(File dir)
{
home = dir;
}

/**
* @return Returns the connectors.
*/
public HashMap getConnectors()
{
return connectors;
}

/**
* @param connectors
* The connectors to set.
*/
public void setConnectors(HashMap connectors)
{
this.connectors = connectors;
}

/**
* @return Returns the defaultConnectorName.
*/
public String getDefaultConnectorName()
{
return defaultConnectorName;
}

/**
* @param defaultConnectorName
* The defaultConnectorName to set.
*/
public void setDefaultConnectorName(String defaultConnectorName)
{
this.defaultConnectorName = defaultConnectorName;
}

public SipConnector getConnector(String name)
{
return (SipConnector) connectors.get(name);
}

}


[Contents] [Prev]

Copyright © 1995-1999, Sun Microsystems, Inc. All rights reserved.