/**
* Start time:17:07:31 2009-01-31<br>
* Project: mobicents-jainslee-server-core<br>
*
* @author <a href="mailto:baranowb@gmail.com">baranowb - Bartosz Baranowski
* </a>
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
*/
package org.mobicents.slee.container.component.validator;
import java.util.List;
import javax.slee.Sbb;
import org.mobicents.slee.container.component.SbbComponent;
import org.mobicents.slee.container.component.deployment.jaxb.descriptors.SbbDescriptorFactory;
import org.mobicents.slee.container.component.deployment.jaxb.descriptors.SbbDescriptorImpl;
import org.mobicents.slee.container.component.deployment.jaxb.descriptors.TCUtilityClass;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageInterfaceToFewMethods;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageInterfaceToManyMethods;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageThrowsOnGetterInterface;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageThrowsOnSetterInterface;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageWrongAccesorLevelInterface;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageWrongSampleReturnTypeInterface;
import org.mobicents.slee.container.component.validator.sbb.abstracts.usage.UsageWrongSetterPrameterInterface;
/**
* Start time:17:07:31 2009-01-31<br>
* Project: mobicents-jainslee-server-core<br>
*
* @author <a href="mailto:baranowb@gmail.com">baranowb - Bartosz Baranowski
* </a>
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
*/
public class SbbComponentValidatorSbbUsageConstraintsTest extends TCUtilityClass {
public static final String _SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK = "xml/validator/sbb/usage/sbb-jar-one-SbbConstraintsUsageOk_1_1.xml";
public void testSbbOne11UsageConstraintsOk() throws Exception {
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass(
descriptor.getSbbAbstractClass().getSbbAbstractClassName()));
component.setUsageParametersInterface(Thread.currentThread().getContextClassLoader().loadClass(
descriptor.getSbbClasses().getSbbUsageParametersInterface().getUsageParametersInterfaceName()));
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertTrue("Sbb class has not been validated", b);
}
public void testSbbOne11ToManyUsageMethodDefined() throws Exception {
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageInterfaceToManyMethods.class);
component.setUsageParametersInterface(UsageInterfaceToManyMethods.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
public void testSbbOne11WrongSetterPrameter() throws Exception {
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageWrongSetterPrameterInterface.class);
component.setUsageParametersInterface(UsageWrongSetterPrameterInterface.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
public void testSbbOne11ToFewUsageMethodDefined() throws Exception {
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageInterfaceToFewMethods.class);
component.setUsageParametersInterface(UsageInterfaceToFewMethods.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
public void testSbbOne11ThrowsOnGetter() throws Exception {
// setter is increment or sample method
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageThrowsOnGetterInterface.class);
component.setUsageParametersInterface(UsageThrowsOnGetterInterface.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
public void testSbbOne11ThrowsOnSetter() throws Exception {
// setter is increment or sample method
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageThrowsOnSetterInterface.class);
component.setUsageParametersInterface(UsageThrowsOnSetterInterface.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
public void testSbbOne11WrongSampleReturnType() throws Exception {
// setter is increment or sample method
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageWrongSampleReturnTypeInterface.class);
component.setUsageParametersInterface(UsageWrongSampleReturnTypeInterface.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
public void testSbbOne11UsageSetterWrongLevelInterface() throws Exception {
// setter is increment or sample method
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageSetterWrongLevelInterface.class);
component.setUsageParametersInterface(UsageSetterWrongLevelInterface.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
// methods from interfaces are always public?
public void _testSbbOne11UsageWrongAccesorLevelInterface() throws Exception {
// setter is increment or sample method
List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_USAGE_CONSTRAINTS_OK));
final SbbDescriptorImpl descriptor = specs.get(0);
SbbComponent component = new SbbComponent(descriptor);
component.setAbstractSbbClass(SbbUsageWrongAccesorLevelInterface.class);
component.setUsageParametersInterface(UsageWrongAccesorLevelInterface.class);
SbbComponentValidator validator = new SbbComponentValidator();
validator.setComponent(component);
boolean b = validator.validateSbbUsageParameterInterface(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils
.getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass()));
assertFalse("Sbb class has been validated", b);
}
}
abstract class SbbUsageInterfaceToManyMethods implements Sbb {
public abstract UsageInterfaceToManyMethods getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageWrongSetterPrameterInterface implements Sbb {
public abstract UsageWrongSetterPrameterInterface getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageThrowsOnGetterInterface implements Sbb {
public abstract UsageThrowsOnGetterInterface getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageThrowsOnSetterInterface implements Sbb {
public abstract UsageThrowsOnSetterInterface getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageInterfaceToFewMethods implements Sbb {
public abstract UsageInterfaceToFewMethods getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageWrongSampleReturnTypeInterface implements Sbb {
public abstract UsageWrongSampleReturnTypeInterface getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageSetterWrongLevelInterface implements Sbb {
public abstract UsageSetterWrongLevelInterface getDefaultSbbUsageParameterSet();
}
abstract class SbbUsageWrongAccesorLevelInterface implements Sbb {
public abstract UsageWrongAccesorLevelInterface getDefaultSbbUsageParameterSet();
}