package org.mobicents.slee.services.sip.registrar.mbean;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanRegistrationException;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import org.mobicents.slee.container.SleeContainer;
public class RegistrarConfigurator implements RegistrarConfiguratorMBean {
private String name="v1RegistrarConf";
private long minExpires=120;
private long maxExpires=3600;
public long getSipRegistrationMaxExpires() {
return maxExpires;
}
public long getSipRegistrationMinExpires() {
return minExpires;
}
public void setSipRegistrationMaxExpires(long maxExpires) {
if(maxExpires<=0)
{
this.maxExpires=3600;
//throw new IllegalArgumentException("maxExpires time cant be equal or less than zero!!!");
}
else
{
this.maxExpires=maxExpires;
}
if(this.maxExpires<=minExpires)
this.minExpires=this.maxExpires-10;
}
public void setSipRegistrationMinExpires(long minExpires) {
if(minExpires<=0)
{
this.minExpires=60;
//throw new IllegalArgumentException("minExpires time cant be equal or less than zero!!!");
}else
{
this.minExpires=minExpires;
}
if(this.maxExpires<=this.minExpires)
this.maxExpires=this.minExpires+10;
return;
}
public Object clone()
{
return new RegistrarConfigurator(this.minExpires,this.maxExpires);
}
public RegistrarConfigurator(long minExpires, long maxExpires) {
super();
this.minExpires = minExpires;
this.maxExpires = maxExpires;
}
public RegistrarConfigurator() {
super();
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name=name;
}
public boolean startService()
{
MBeanServer mbs=SleeContainer.lookupFromJndi().getMBeanServer();
ObjectName on=null;
try {
on=new ObjectName(MBEAN_NAME_PREFIX+name);
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (mbs.getObjectInstance(on) != null) {
mbs.unregisterMBean(on);
}
} catch (InstanceNotFoundException e) {
// ignore
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mbs.registerMBean(this, on);
} catch (InstanceAlreadyExistsException e) {
e.printStackTrace();
return false;
} catch (MBeanRegistrationException e) {
e.printStackTrace();
return false;
} catch (NotCompliantMBeanException e) {
e.printStackTrace();
return false;
}
return true;
}
public void stopService() {
try {
SleeContainer.lookupFromJndi().getMBeanServer().unregisterMBean(new ObjectName(MBEAN_NAME_PREFIX+name));
} catch (InstanceNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanRegistrationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}