/** * 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.ComponentID; import javax.slee.EventTypeID; import javax.slee.SbbID; import javax.slee.ServiceID; import javax.slee.management.LibraryID; import javax.slee.profile.ProfileSpecificationID; import javax.slee.resource.ResourceAdaptorID; import javax.slee.resource.ResourceAdaptorTypeID; import org.mobicents.slee.container.component.ComponentRepository; import org.mobicents.slee.container.component.EventTypeComponent; import org.mobicents.slee.container.component.LibraryComponent; import org.mobicents.slee.container.component.ProfileSpecificationComponent; import org.mobicents.slee.container.component.ResourceAdaptorComponent; import org.mobicents.slee.container.component.ResourceAdaptorTypeComponent; import org.mobicents.slee.container.component.SbbComponent; import org.mobicents.slee.container.component.ServiceComponent; 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; /** * 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 SbbComponentValidatorSbbConstraintsCMPsTest extends TCUtilityClass { public static final String _SBB_JAR_ONE_11_OK_CMPS = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsOk_1_1.xml"; public static final String _SBB_JAR_ONE_11_CMPS_NO_REF_ON_CUSTOM_SBBLO = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsNoRefOnCustomSbbLO_1_1.xml"; public static final String _SBB_JAR_ONE_11_CMPS_REF_ON_NOT_SBBLO = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsRefOnNotSbbLO_1_1.xml"; public static final String _SBB_JAR_ONE_11_CMPS_DIFFERENT_TYPES = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsDifferentTypes_1_1.xml"; public static final String _SBB_JAR_ONE_11_CMPS_THROWS = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsThrows_1_1.xml"; public static final String _SBB_JAR_ONE_11_CMPS_CONCRETE = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsConcrete_1_1.xml"; public static final String _SBB_JAR_ONE_11_CMPS_SCOPE = "xml/validator/sbb/cmp/sbb-jar-one-SbbConstraintsSbbCMPsScope_1_1.xml"; public void testSbbOne11ConstraintsCMPsOk() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_OK_CMPS)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertTrue("Sbb class has not been validated", b); } public void testSbbOne11ConstraintsCMPsRefNotSbbLO() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_CMPS_REF_ON_NOT_SBBLO)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertFalse("Sbb class has been validated", b); } public void testSbbOne11ConstraintsCMPsDifferentTypes() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_CMPS_DIFFERENT_TYPES)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertFalse("Sbb class has been validated - it should not - accessors ahve different type", b); } public void testSbbOne11ConstraintsCMPsThrows() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_CMPS_THROWS)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertFalse("Sbb class has been validated - it should not - accessor has throws", b); } public void testSbbOne11ConstraintsCMPsConcrete() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_CMPS_CONCRETE)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertFalse("Sbb class has been validated", b); } public void testSbbOne11ConstraintsCMPsScope() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_CMPS_SCOPE)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertFalse("Sbb class has been validated it shouyld not - it declares not public cmp acccessor", b); } public void testSbbOne11ConstraintsCMPsNoRefCustomSbbLO() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_CMPS_NO_REF_ON_CUSTOM_SBBLO)); final SbbDescriptorImpl descriptor = specs.get(0); final SbbComponent component = new SbbComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbAbstractClass().getSbbAbstractClassName())); component.setSbbLocalInterfaceClass(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbLocalInterface().getSbbLocalInterfaceName())); component.setActivityContextInterface(Thread.currentThread().getContextClassLoader().loadClass( descriptor.getSbbActivityContextInterface().getInterfaceName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new ComponentRepository() { public SbbComponent getComponentByID(SbbID id) { // trick, we return ourselves :) return component; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID(ProfileSpecificationID id) { // TODO Auto-generated method stub return null; } public LibraryComponent getComponentByID(LibraryID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorComponent getComponentByID(ResourceAdaptorID id) { // TODO Auto-generated method stub return null; } public ResourceAdaptorTypeComponent getComponentByID(ResourceAdaptorTypeID id) { // TODO Auto-generated method stub return null; } public ServiceComponent getComponentByID(ServiceID id) { // TODO Auto-generated method stub return null; } public boolean isInstalled(ComponentID componentID) { // TODO Auto-generated method stub return false; } }); boolean b = validator.validateCmpFileds(ClassUtils.getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils .getAbstractMethodsFromSuperClasses(component.getAbstractSbbClass())); assertFalse("Sbb class has been validated it should not - since cmp field has no sbb reference - it must store generic SBB LO", b); } }