/** * 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.HashMap; import java.util.List; import java.util.Map; import javax.slee.ComponentID; import javax.slee.EventTypeID; import javax.slee.SbbID; import javax.slee.ServiceID; import javax.slee.management.DeploymentException; 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; import org.mobicents.slee.container.component.validator.ClassUtils; import org.mobicents.slee.container.component.validator.SbbComponentValidator; import org.mobicents.slee.container.component.validator.sbb.abstracts.profilecmp.ProfileCmpInterface; import org.mobicents.slee.container.component.validator.sbb.abstracts.profilecmp.SbbConstraintsProfileCMPWrongParameterSbb; import org.mobicents.slee.container.component.validator.sbb.abstracts.profilecmp.SbbConstraintsProfileCMPWrongPrefixSbb; import org.mobicents.slee.container.component.validator.sbb.abstracts.profilecmp.SbbConstraintsProfileCMPWrongThrowsSbb; import org.mobicents.slee.container.component.validator.sbb.abstracts.profilecmp.SbbConstraintsProfileCMPWrongVisibilitySbb; /** * 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 SbbComponentValidatorProfileCMPTest extends TCUtilityClass { public static final String _SBB_JAR_ONE_11_PROFILE_CMP_OK = "xml/validator/sbb/profilecmp/sbb-jar-one-SbbProfileCmpOk_1_1.xml"; public static final String _SBB_JAR_ONE_11_PROFILE_CMP_WRONG_PREFIX = "xml/validator/sbb/profilecmp/sbb-jar-one-SbbProfileCmpWrongPrefix_1_1.xml"; public void testSbbOne11ConstraintsOk() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_PROFILE_CMP_OK)); final SbbDescriptorImpl descriptor = specs.get(0); SbbComponent component = new FakeComponent(descriptor); component.setAbstractSbbClass(Thread.currentThread() .getContextClassLoader().loadClass( descriptor.getSbbAbstractClass() .getSbbAbstractClassName())); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new FakeRepository()); boolean b = validator.validateGetProfileCmpInterfaceMethods(ClassUtils .getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils.getAbstractMethodsFromSuperClasses(component .getAbstractSbbClass())); assertTrue("Sbb class has not been validated", b); } public void testSbbOne11ConstraintsWrongThrows() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_PROFILE_CMP_OK)); final SbbDescriptorImpl descriptor = specs.get(0); SbbComponent component = new FakeComponent(descriptor); component.setAbstractSbbClass(SbbConstraintsProfileCMPWrongThrowsSbb.class); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new FakeRepository()); boolean b = validator.validateGetProfileCmpInterfaceMethods(ClassUtils .getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils.getAbstractMethodsFromSuperClasses(component .getAbstractSbbClass())); assertFalse("Sbb class has been validated", b); } public void testSbbOne11ConstraintsWrongParameter() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_PROFILE_CMP_OK)); final SbbDescriptorImpl descriptor = specs.get(0); SbbComponent component = new FakeComponent(descriptor); component.setAbstractSbbClass(SbbConstraintsProfileCMPWrongParameterSbb.class); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new FakeRepository()); boolean b = validator.validateGetProfileCmpInterfaceMethods(ClassUtils .getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils.getAbstractMethodsFromSuperClasses(component .getAbstractSbbClass())); assertFalse("Sbb class has been validated", b); } public void testSbbOne11ConstraintsWrongVisibility() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_PROFILE_CMP_OK)); final SbbDescriptorImpl descriptor = specs.get(0); SbbComponent component = new FakeComponent(descriptor); component.setAbstractSbbClass(SbbConstraintsProfileCMPWrongVisibilitySbb.class); SbbComponentValidator validator = new SbbComponentValidator(); validator.setComponent(component); validator.setComponentRepository(new FakeRepository()); boolean b = validator.validateGetProfileCmpInterfaceMethods(ClassUtils .getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils.getAbstractMethodsFromSuperClasses(component .getAbstractSbbClass())); assertFalse("Sbb class has been validated", b); } public void testSbbOne11ConstraintsWrongPrefix() throws Exception { List<SbbDescriptorImpl> specs = new SbbDescriptorFactory().parse(super.getFileStream(_SBB_JAR_ONE_11_PROFILE_CMP_WRONG_PREFIX)); final SbbDescriptorImpl descriptor = specs.get(0); SbbComponent component = new FakeComponent(descriptor); SbbComponentValidator validator = new SbbComponentValidator(); component.setAbstractSbbClass(Thread.currentThread() .getContextClassLoader().loadClass( descriptor.getSbbAbstractClass() .getSbbAbstractClassName())); validator.setComponent(component); validator.setComponentRepository(new FakeRepository()); boolean b = validator.validateGetProfileCmpInterfaceMethods(ClassUtils .getAbstractMethodsFromClass(component.getAbstractSbbClass()), ClassUtils.getAbstractMethodsFromSuperClasses(component .getAbstractSbbClass())); assertFalse("Sbb class has been validated", b); } } class FakeRepository implements ComponentRepository { public SbbComponent getComponentByID(SbbID id) { // TODO Auto-generated method stub return null; } public EventTypeComponent getComponentByID(EventTypeID id) { // TODO Auto-generated method stub return null; } public ProfileSpecificationComponent getComponentByID( ProfileSpecificationID id) { ProfileSpecificationComponent cmp = new ProfileSpecificationComponent(null); try { cmp.setProfileCmpInterfaceClass(ProfileCmpInterface.class); } catch (DeploymentException e) { // TODO Auto-generated catch block e.printStackTrace(); } return cmp; } 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; } } class FakeComponent extends SbbComponent { public FakeComponent(SbbDescriptorImpl descriptor) { super(descriptor); } /** * FIXME emmartins: is this needed? it is not used, I removed it from component class so I had to remove the override annot here too */ public Map<String, ProfileSpecificationID> getProfileReferences() { HashMap<String, ProfileSpecificationID> tmps=new HashMap<String, ProfileSpecificationID>(); tmps.put("xxx",new ProfileSpecificationID("x","y","z")); return tmps; } }