/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.test.mappingsmodel.descriptor;
import java.util.Iterator;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.persistence.tools.workbench.mappingsmodel.ProblemConstants;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.InterfaceDescriptorCreationException;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWClassIndicatorFieldPolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWClassIndicatorValue;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWDescriptor;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWDescriptorAfterLoadingPolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWDescriptorCopyPolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWDescriptorEventsPolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWDescriptorInstantiationPolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWInheritancePolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.MWMappingDescriptor;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.relational.MWAggregateDescriptor;
import org.eclipse.persistence.tools.workbench.mappingsmodel.descriptor.relational.MWTableDescriptor;
import org.eclipse.persistence.tools.workbench.mappingsmodel.mapping.MWMapping;
import org.eclipse.persistence.tools.workbench.mappingsmodel.mapping.MWReferenceObjectMapping;
import org.eclipse.persistence.tools.workbench.mappingsmodel.mapping.relational.MWAbstractTableReferenceMapping;
import org.eclipse.persistence.tools.workbench.mappingsmodel.meta.MWClass;
import org.eclipse.persistence.tools.workbench.mappingsmodel.meta.MWMethod;
import org.eclipse.persistence.tools.workbench.mappingsmodel.project.MWProject;
import org.eclipse.persistence.tools.workbench.mappingsmodel.project.MWTransactionalProjectDefaultsPolicy;
import org.eclipse.persistence.tools.workbench.mappingsmodel.project.relational.MWRelationalProjectDefaultsPolicy;
import org.eclipse.persistence.tools.workbench.test.mappingsmodel.ModelProblemsTestCase;
import org.eclipse.persistence.tools.workbench.test.models.projects.ComplexInheritanceProject;
import org.eclipse.persistence.tools.workbench.test.models.projects.CrimeSceneProject;
public class MWMappingDescriptorTests extends ModelProblemsTestCase {
public static Test suite() {
return new TestSuite(MWMappingDescriptorTests.class);
}
public MWMappingDescriptorTests(String name) {
super(name);
}
public void testAggregateDescriptorAsClassDescriptor() {
MWProject project = new CrimeSceneProject().getProject();
MWClass addressClass = project.typeFor(org.eclipse.persistence.tools.workbench.test.models.crimescene.Address.class);
MWAggregateDescriptor addressDescriptor = (MWAggregateDescriptor) project.descriptorForType(addressClass);
if (!addressDescriptor.getAfterLoadingPolicy().isActive())
addressDescriptor.addAfterLoadingPolicy();
MWDescriptorAfterLoadingPolicy afterLoadingPolicy = (MWDescriptorAfterLoadingPolicy) addressDescriptor.getAfterLoadingPolicy();
if (!addressDescriptor.getCopyPolicy().isActive())
addressDescriptor.addCopyPolicy();
MWDescriptorCopyPolicy copyPolicy = (MWDescriptorCopyPolicy) addressDescriptor.getCopyPolicy();
if (!addressDescriptor.getEventsPolicy().isActive())
addressDescriptor.addEventsPolicy();
MWDescriptorEventsPolicy eventsPolicy = (MWDescriptorEventsPolicy) addressDescriptor.getEventsPolicy();
if (!addressDescriptor.getInheritancePolicy().isActive())
addressDescriptor.addInheritancePolicy();
MWInheritancePolicy inheritancePolicy = addressDescriptor.getInheritancePolicy();
if (!addressDescriptor.getInstantiationPolicy().isActive())
addressDescriptor.addInstantiationPolicy();
MWDescriptorInstantiationPolicy instantiationPolicy = (MWDescriptorInstantiationPolicy) addressDescriptor.getInstantiationPolicy();
project.getDefaultsPolicy().addAdvancedPolicyDefault(MWRelationalProjectDefaultsPolicy.MULTI_TABLE_INFO_POLICY);
MWTableDescriptor addressClassDescriptor;
try {
addressClassDescriptor = addressDescriptor.asMWTableDescriptor();
} catch (InterfaceDescriptorCreationException e) {
throw new RuntimeException(e);
}
assertTrue("The type of the descriptor was not changed to MWRelationalDescriptor.", addressClassDescriptor instanceof MWTableDescriptor);
MWDescriptor addressClassDescriptorInProject = project.descriptorForType(addressClass);
assertTrue("The descriptor was not moved to the project.", addressClassDescriptor == addressClassDescriptorInProject);
boolean identityPreservedInPolicies = afterLoadingPolicy.getParent() == addressClassDescriptor;
identityPreservedInPolicies &= copyPolicy.getParent() == addressClassDescriptor;
identityPreservedInPolicies &= eventsPolicy.getParent() == addressClassDescriptor;
identityPreservedInPolicies &= inheritancePolicy.getParent() == addressClassDescriptor;
identityPreservedInPolicies &= instantiationPolicy.getParent() == addressClassDescriptor;
assertTrue("The identity of the descriptor was not carried over to its owned policies.", identityPreservedInPolicies);
// make sure the defaults were instantiated in the morph...
boolean defaultPoliciesCreated = addressClassDescriptor.getMultiTableInfoPolicy().isActive();
assertTrue("The converted class descriptor did not have instantiated default policies for the project.",
defaultPoliciesCreated);
MWClass personClass = project.typeFor(org.eclipse.persistence.tools.workbench.test.models.crimescene.Person.class);
MWDescriptor personDescriptor = project.descriptorForType(personClass);
MWReferenceObjectMapping addressMapping = (MWReferenceObjectMapping) personDescriptor.mappingNamed("address");
assertTrue("The aggregate mapping previously referencing this descriptor should still reference this descriptor",
addressMapping.getReferenceDescriptor() != null);
}
public void testClassDescriptorAsAggregateDescriptor()
{
MWProject project = new CrimeSceneProject().getProject();
MWClass crimeSceneClass = project.typeFor(org.eclipse.persistence.tools.workbench.test.models.crimescene.CrimeScene.class);
MWTableDescriptor crimeSceneDescriptor = (MWTableDescriptor) project.descriptorForType(crimeSceneClass);
if (!crimeSceneDescriptor.getAfterLoadingPolicy().isActive())
crimeSceneDescriptor.addAfterLoadingPolicy();
MWDescriptorAfterLoadingPolicy afterLoadingPolicy = (MWDescriptorAfterLoadingPolicy) crimeSceneDescriptor.getAfterLoadingPolicy();
if (!crimeSceneDescriptor.getCopyPolicy().isActive())
crimeSceneDescriptor.addCopyPolicy();
MWDescriptorCopyPolicy copyPolicy = (MWDescriptorCopyPolicy) crimeSceneDescriptor.getCopyPolicy();
if (!crimeSceneDescriptor.getEventsPolicy().isActive())
crimeSceneDescriptor.addEventsPolicy();
MWDescriptorEventsPolicy eventsPolicy = (MWDescriptorEventsPolicy) crimeSceneDescriptor.getEventsPolicy();
if (!crimeSceneDescriptor.getInheritancePolicy().isActive())
crimeSceneDescriptor.addInheritancePolicy();
MWInheritancePolicy inheritancePolicy = crimeSceneDescriptor.getInheritancePolicy();
//crimeSceneDescriptor.removeInstantiationPolicy();
project.getDefaultsPolicy().addAdvancedPolicyDefault(MWTransactionalProjectDefaultsPolicy.INSTANTIATION_POLICY);
MWDescriptor aggCrimeSceneDescriptor = crimeSceneDescriptor.asMWAggregateDescriptor();
assertTrue("The type of the descriptor was not changed to MWAggregateDescriptor.", aggCrimeSceneDescriptor instanceof MWAggregateDescriptor);
assertTrue("The bldrClass was not carried over to the converted MWAggregateDescriptor.", aggCrimeSceneDescriptor.getMWClass() == project.typeFor(org.eclipse.persistence.tools.workbench.test.models.crimescene.CrimeScene.class));
boolean identityPreservedInPolicies = afterLoadingPolicy.getParent() == aggCrimeSceneDescriptor;
identityPreservedInPolicies &= copyPolicy.getParent() == aggCrimeSceneDescriptor;
identityPreservedInPolicies &= eventsPolicy.getParent() == aggCrimeSceneDescriptor;
identityPreservedInPolicies &= inheritancePolicy.getParent() == aggCrimeSceneDescriptor;
assertTrue("The identity of the descriptor was not carried over to its owned policies.", identityPreservedInPolicies);
MWClass pieceOfEvidenceClass = project.typeFor(org.eclipse.persistence.tools.workbench.test.models.crimescene.PieceOfEvidence.class);
MWMappingDescriptor pieceOfEvidenceDescriptor = (MWMappingDescriptor) project.descriptorForType(pieceOfEvidenceClass);
MWAbstractTableReferenceMapping crimeSceneMapping = (MWAbstractTableReferenceMapping) pieceOfEvidenceDescriptor.mappingNamed("crimeScene");
assertTrue("The one-to-one mapping previously referencing this descriptor should not reference 'null'.",
crimeSceneMapping.getReferenceDescriptor() != null);
}
public void testMappingNamed() {
CrimeSceneProject csp = new CrimeSceneProject();
MWTableDescriptor personDescriptor = csp.getPersonDescriptor();
assertTrue("Did not find mapping", personDescriptor.mappingNamed("firstName") != null);
assertTrue("Found mapping", personDescriptor.mappingNamed("foo") == null);
boolean exceptionThrown = false;
try {
personDescriptor.mappingNamed(null);
}
catch (NullPointerException iae) {
exceptionThrown = true;
}
assertTrue("Exception not thrown when asking for a mapping named null", exceptionThrown);
}
public void testRemoveMappingAndAttribute() throws ClassNotFoundException {
MWProject project = new CrimeSceneProject().getProject();
MWClass addressClass = project.typeFor(org.eclipse.persistence.tools.workbench.test.models.crimescene.Address.class);
MWAggregateDescriptor descriptor = (MWAggregateDescriptor) project.descriptorForType(addressClass);
int oldMappingCount = descriptor.mappingsSize();
int oldAttributeCount = descriptor.getMWClass().attributesSize();
MWMapping mapping = descriptor.mappingNamed("street");
descriptor.removeMapping(mapping);
assertTrue("The mappings were never added.", oldMappingCount != 0);
assertTrue("The mapping was not removed.", oldMappingCount - descriptor.mappingsSize() == 1);
assertTrue("The attributes were never added.", oldAttributeCount != 0);
assertTrue("The attribute should not have been removed.", oldAttributeCount == descriptor.getMWClass().attributesSize());
}
public void testUnmap() {
CrimeSceneProject csp = new CrimeSceneProject();
MWMappingDescriptor personDescriptor = csp.getPersonDescriptor();
assertTrue(personDescriptor.mappings().hasNext());
personDescriptor.unmap();
assertFalse(personDescriptor.mappings().hasNext());
}
public void testAbstractClassesHaveNoIndicatorValuesProblem() {
String problem = "0013";
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
desc.getMWClass().getModifier().setAbstract(true);
Iterator civIter = ((MWClassIndicatorFieldPolicy) desc.getInheritancePolicy().getClassIndicatorPolicy()).classIndicatorValues();
while(civIter.hasNext()) {
MWClassIndicatorValue civ = (MWClassIndicatorValue)civIter.next();
if(civ.getDescriptorValue() == desc){
civ.setInclude(true);
civ.setIndicatorValue("8");
break;
}
}
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testCopyPolicyHasLegitimateMethodSpecifiedProblem() {
String problem = ProblemConstants.DESCRIPTOR_COPYING_METHOD_NOT_VISIBLE;
CrimeSceneProject project = new CrimeSceneProject();
MWMappingDescriptor desc = project.getPersonDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getCopyPolicy().isActive())
desc.addCopyPolicy();
((MWDescriptorCopyPolicy) desc.getCopyPolicy()).setPolicyType(MWDescriptorCopyPolicy.CLONE);
((MWDescriptorCopyPolicy) desc.getCopyPolicy()).setMethod((MWMethod)project.getCrimeSceneDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
MWMethod method = desc.getMWClass().addMethod("foo", desc.getMWClass());
((MWDescriptorCopyPolicy) desc.getCopyPolicy()).setMethod(method);
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(ProblemConstants.DESCRIPTOR_COPYING_METHOD_NOT_VALID, desc));
method.getModifier().setStatic(true);
assertTrue("The descriptor should have the problem: " + problem, hasProblem(ProblemConstants.DESCRIPTOR_COPYING_METHOD_NOT_VALID, desc));
method.getModifier().setStatic(false);
method.addMethodParameter(method.typeFor(Object.class));
assertTrue("The descriptor should have the problem: " + problem, hasProblem(ProblemConstants.DESCRIPTOR_COPYING_METHOD_NOT_VALID, desc));
}
public void testCopyPolicyIfExistsHasMethodSpecifiedProblem() {
String problem = ProblemConstants.DESCRIPTOR_COPYING_NO_METHOD_SPECIFIED;
CrimeSceneProject project = new CrimeSceneProject();
MWMappingDescriptor desc = project.getPersonDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getCopyPolicy().isActive())
desc.addCopyPolicy();
((MWDescriptorCopyPolicy) desc.getCopyPolicy()).setPolicyType(MWDescriptorCopyPolicy.CLONE);
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testDescriptorTypeInheritanceMismatchProblem() {
String problem = ProblemConstants.DESCRIPTOR_TABLE_INHERITANCE_DESCRIPTOR_TYPES_DONT_MATCH;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
project.getBicycleDescriptor().asMWAggregateDescriptor();
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostBuildMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_BUILD;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostBuildMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostCloneMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_CLONE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostCloneMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostMergeMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_MERGE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostMergeMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostRefreshMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_REFRESH;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostRefreshMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPreUpdateMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_PRE_UPDATE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPreUpdateMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyAboutToUpdateMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_ABOUT_TO_UPDATE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setAboutToUpdateMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostUpdateMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_UPDATE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostUpdateMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPreInsertMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_PRE_INSERT;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPreInsertMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyAboutToInsertMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_ABOUT_TO_INSERT;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setAboutToInsertMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostInsertMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_INSERT;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostInsertMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPreWritingMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_PRE_WRITING;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPreWritingMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostWritingMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_WRITING;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostWritingMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPreDeletingMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_PRE_DELETING;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPreDeletingMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testEventsPolicyPostDeletingMethodLegitimateProblem() {
String problem = ProblemConstants.DESCRIPTOR_EVENTS_POST_DELETING;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getEventsPolicy().isActive())
desc.addEventsPolicy();
((MWDescriptorEventsPolicy) desc.getEventsPolicy()).setPostDeletingMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testInstantiationMethodNotNullProblem() {
String problem = ProblemConstants.DESCRIPTOR_INSTANTIATION_USE_METHOD;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getInstantiationPolicy().isActive())
desc.addInstantiationPolicy();
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setPolicyType(MWDescriptorInstantiationPolicy.METHOD);
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setInstantiationMethod(null);
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testInstantiationFactoryMethodLegitimacyProblem() {
String problem = ProblemConstants.DESCRIPTOR_INSTANTIATION_FACTORY_METHOD_NOT_VISIBLE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getInstantiationPolicy().isActive())
desc.addInstantiationPolicy();
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setPolicyType(MWDescriptorInstantiationPolicy.FACTORY);
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setFactoryType(project.getPCDescriptor().getMWClass());
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setFactoryMethod((MWMethod)project.getPersonDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setFactoryType(project.getPCDescriptor().getMWClass());
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setFactoryMethod((MWMethod)project.getPCDescriptor().getMWClass().methods().next());
assertTrue("The descriptor should have the problem: " + problem, hasProblem(ProblemConstants.DESCRIPTOR_INSTANTIATION_FACTORY_METHOD_NOT_VALID, desc));
}
public void testInstantiationFactoryInfoSpecifiedProblem() {
String problem = ProblemConstants.DESCRIPTOR_INSTANTIATION_USE_FACTORY;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
if (!desc.getInstantiationPolicy().isActive())
desc.addInstantiationPolicy();
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setPolicyType(MWDescriptorInstantiationPolicy.FACTORY);
((MWDescriptorInstantiationPolicy) desc.getInstantiationPolicy()).setInstantiationMethod(null);
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
public void testInstantiationZeroArgumentConstructorProblem() {
String problem = ProblemConstants.DESCRIPTOR_INSTANTIATION_NO_ZERO_ARG_CONSTRUCTOR;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
}
public void testVerifyMethodsUniqueProblem() {
String problem = ProblemConstants.DESCRIPTOR_CLASS_MULTIPLE_METHODS_WITH_SAME_SIGNATURE;
ComplexInheritanceProject project = new ComplexInheritanceProject();
MWMappingDescriptor desc = project.getVehicleDescriptor();
assertTrue("The descriptor should not have the problem: " + problem, !hasProblem(problem, desc));
desc.getMWClass().addMethod("getOwner");
assertTrue("The descriptor should have the problem: " + problem, hasProblem(problem, desc));
}
}