diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java index 8707e4cf7f7..a11400f50d7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerWrapper.java @@ -20,7 +20,9 @@ import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.prism.schema.PrismSchema; import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.ConnectorTypeUtil; import com.evolveum.midpoint.schema.util.ResourceTypeUtil; import com.evolveum.midpoint.util.DOMUtil; import com.evolveum.midpoint.util.exception.SchemaException; @@ -187,6 +189,12 @@ private List createProperties(PageBase pageBase) { } else { definition = containerDefinition; } + } else if (ResourceType.class.isAssignableFrom(clazz)) { + if (containerDefinition != null){ + definition = containerDefinition; + } else{ + definition = container.getDefinition(); + } } else { definition = containerDefinition; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java index d5134eb348a..1eaa11667bf 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java @@ -357,11 +357,8 @@ private List createReportContainers(PageBase pageBase) throws private List createResourceContainers(PageBase pageBase) throws SchemaException { List containers = new ArrayList(); PrismObject connector = loadConnector(); - - containers.add(createResourceContainerWrapper(SchemaConstants.ICF_CONFIGURATION_PROPERTIES, connector, pageBase)); - containers.add(createResourceContainerWrapper(SchemaConstants.ICF_CONNECTOR_POOL_CONFIGURATION, connector, pageBase)); - containers.add(createResourceContainerWrapper(SchemaConstants.ICF_TIMEOUTS, connector, pageBase)); - + + containers.addAll(createResourceContainerWrapper(connector, pageBase)); return containers; } @@ -371,30 +368,22 @@ private PrismObject loadConnector() { //todo reimplement } - private ContainerWrapper createResourceContainerWrapper(QName name, PrismObject connector, PageBase pageBase) + private List createResourceContainerWrapper(PrismObject connector, PageBase pageBase) throws SchemaException { PrismContainer container = object.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); - if (container != null && container.size() == 1 && container.getValue() != null) { - PrismContainerValue value = container.getValue(); - container = value.findContainer(name); - } + ConnectorType connectorType = connector.asObjectable(); + PrismSchema schema = ConnectorTypeUtil.parseConnectorSchema(connectorType, connector.getPrismContext()); + PrismContainerDefinition definition = ConnectorTypeUtil.findConfigurationContainerDefintion(connectorType, schema); + ContainerStatus status = container != null ? ContainerStatus.MODIFYING : ContainerStatus.ADDING; if (container == null) { - ConnectorType connectorType = connector.asObjectable(); - PrismSchema schema = ConnectorTypeUtil.parseConnectorSchema(connectorType, connector.getPrismContext()); - PrismContainerDefinition definition = ConnectorTypeUtil.findConfigurationContainerDefintion(connectorType, schema); - - definition = definition.findContainerDefinition(new ItemPath(name)); container = definition.instantiate(); } - - ContainerWrapper wrapper = new ContainerWrapper(this, container, status, - new ItemPath(ResourceType.F_CONNECTOR_CONFIGURATION, name), pageBase); - addSubresult(wrapper.getResult()); - - return wrapper; + + return createContainerWrapper(container, new ItemPath(ResourceType.F_CONNECTOR_CONFIGURATION), pageBase); + } private List createContainerWrapper(PrismContainer parent, ItemPath path, PageBase pageBase) { @@ -432,7 +421,7 @@ private List createContainerWrapper(PrismContainer parent, Ite } ItemPath newPath = createPropertyPath(parentPath, containerDef.getName()); - PrismContainer prismContainer = object.findContainer(def.getName()); + PrismContainer prismContainer = parent.findContainer(def.getName()); ContainerWrapper container; if (prismContainer != null) { container = new ContainerWrapper(this, prismContainer, ContainerStatus.MODIFYING, newPath, pageBase); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PropertyWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PropertyWrapper.java index be2508bb2a8..c102b3c833a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PropertyWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PropertyWrapper.java @@ -78,7 +78,10 @@ public void revive(PrismContext prismContext) throws SchemaException { } protected PrismPropertyDefinition getItemDefinition() { - PrismPropertyDefinition propDef = container.getContainerDefinition().findPropertyDefinition(property.getDefinition().getName()); + PrismPropertyDefinition propDef = null; + if (container.getContainerDefinition() != null){ + propDef = container.getContainerDefinition().findPropertyDefinition(property.getDefinition().getName()); + } if (propDef == null) { propDef = property.getDefinition(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.html index 2d479bd4690..36eb2f985a4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.html @@ -20,11 +20,13 @@
+
- + +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java index 9ebfb23add4..346459b6418 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/ConfigurationStep.java @@ -88,8 +88,12 @@ protected ObjectWrapper load() { } private void initLayout() { + com.evolveum.midpoint.web.component.form.Form form = new com.evolveum.midpoint.web.component.form.Form<>("main", true); + form.setOutputMarkupId(true); + add(form); + final PrismObjectPanel configuration = new PrismObjectPanel(ID_CONFIGURATION, configurationProperties, null, null); - add(configuration); + form.add(configuration); AjaxSubmitButton testConnection = new AjaxSubmitButton(ID_TEST_CONNECTION, createStringResource("ConfigurationStep.button.testConnection")) { diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/DomToSchemaProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/DomToSchemaProcessor.java index d81f53266d9..d4b72b25f8c 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/DomToSchemaProcessor.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/DomToSchemaProcessor.java @@ -204,6 +204,13 @@ private XSSchemaSet parseSchema(Element schema) throws SchemaException { } catch (TransformerException e) { throw new SchemaException("XML transformer error during XSD schema parsing: " + e.getMessage() + "(locator: "+e.getLocator()+", embedded exception:"+ e.getException()+") in "+shortDescription, e); + } catch (RuntimeException e) { + // This sometimes happens, e.g. NPEs in Saxon + if (LOGGER.isErrorEnabled()) { + LOGGER.error("Unexpected error {} during parsing of schema:\n{}",e.getMessage(),DOMUtil.serializeDOMToString(schema)); + } + throw new SchemaException("XML error during XSD schema parsing: " + + e.getMessage() + " in "+shortDescription, e); } return xss; diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java index 9f2677f1f23..00982aa9367 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java @@ -131,115 +131,6 @@ public void initSystem(Task initTask, OperationResult initResult) InternalMonitor.setTraceShadowFetchOperation(true); InternalMonitor.setTraceResourceSchemaOperations(true); } - - @Test - public void test040GetResource() throws Exception { - TestUtil.displayTestTile(this, "test040GetResource"); - - // GIVEN - Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + ".test040GetResource"); - OperationResult result = task.getResult(); - preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); - - // WHEN - PrismObject resource = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null , task, result); - - // THEN - assertResource(resource); - - result.computeStatus(); - TestUtil.assertSuccess("getObject result", result); - - assertSteadyResources(); - } - - @Test - public void test041SearchResources() throws Exception { - final String TEST_NAME = "test041SearchResources"; - TestUtil.displayTestTile(this, TEST_NAME); - - // GIVEN - Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + "." + TEST_NAME); - OperationResult result = task.getResult(); - preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); - - // WHEN - List> resources = modelService.searchObjects(ResourceType.class, null, null, task, result); - - // THEN - assertNotNull("null search return", resources); - assertFalse("Empty search return", resources.isEmpty()); - assertEquals("Unexpected number of resources found", 8, resources.size()); - - result.computeStatus(); - TestUtil.assertSuccess("searchObjects result", result); - - for (PrismObject resource: resources) { - assertResource(resource); - } - - assertSteadyResources(); - } - - @Test - public void test042SearchResourcesIterative() throws Exception { - final String TEST_NAME = "test042SearchResourcesIterative"; - TestUtil.displayTestTile(this, TEST_NAME); - - // GIVEN - Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + "." + TEST_NAME); - OperationResult result = task.getResult(); - preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); - - final List> resources = new ArrayList>(); - - ResultHandler handler = new ResultHandler() { - @Override - public boolean handle(PrismObject resource, OperationResult parentResult) { - try { - assertResource(resource); - } catch (JAXBException e) { - throw new RuntimeException(e.getMessage(),e); - } - resources.add(resource); - return true; - } - }; - - // WHEN - modelService.searchObjectsIterative(ResourceType.class, null, handler, null, task, result); - - // THEN - result.computeStatus(); - TestUtil.assertSuccess("searchObjects result", result); - - assertFalse("Empty search return", resources.isEmpty()); - assertEquals("Unexpected number of resources found", 8, resources.size()); - - assertSteadyResources(); - } - - private void assertResource(PrismObject resource) throws JAXBException { - display("Resource", resource); - display("Resource def", resource.getDefinition()); - PrismContainer configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); - assertNotNull("No Resource connector configuration def", configurationContainer); - PrismContainerDefinition configurationContainerDefinition = configurationContainer.getDefinition(); - display("Resource connector configuration def", configurationContainerDefinition); - display("Resource connector configuration def complex type def", configurationContainerDefinition.getComplexTypeDefinition()); - assertNotNull("Empty Resource connector configuration def", configurationContainer.isEmpty()); - assertEquals("Wrong compile-time class in Resource connector configuration in "+resource, ConnectorConfigurationType.class, - configurationContainer.getCompileTimeClass()); - assertEquals("configurationContainer maxOccurs", 1, configurationContainerDefinition.getMaxOccurs()); - - resource.checkConsistence(true, true); - - // Try to marshal using pure JAXB as a rough test that it is OK JAXB-wise - // skipped because of parsing changes [pm] -// Element resourceDomElement = prismContext.getPrismJaxbProcessor().marshalJaxbObjectToDom(resource.asObjectable(), new QName(SchemaConstants.NS_C, "resource"), -// DOMUtil.getDocument()); -// display("Resouce DOM element after JAXB marshall", resourceDomElement); - } @Test public void test050GetUserJack() throws Exception { diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResourceModifications.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResources.java similarity index 54% rename from model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResourceModifications.java rename to model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResources.java index 73a9d2ae15b..93b17156ddb 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResourceModifications.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestResources.java @@ -16,6 +16,9 @@ package com.evolveum.midpoint.model.intest; import static com.evolveum.midpoint.test.IntegrationTestTools.display; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertNotNull; import java.io.File; import java.util.ArrayList; @@ -31,8 +34,11 @@ import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.Test; +import com.evolveum.midpoint.common.monitor.InternalMonitor; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.PolicyViolationException; +import com.evolveum.midpoint.prism.PrismContainer; +import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismObjectDefinition; import com.evolveum.midpoint.prism.PrismProperty; @@ -46,6 +52,7 @@ import com.evolveum.midpoint.repo.sql.testing.ResourceCarefulAntUtil; import com.evolveum.midpoint.repo.sql.testing.SqlRepoTestUtil; import com.evolveum.midpoint.schema.GetOperationOptions; +import com.evolveum.midpoint.schema.ResultHandler; import com.evolveum.midpoint.schema.SelectorOptions; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.MiscSchemaUtil; @@ -61,6 +68,7 @@ import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.exception.SecurityViolationException; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentPolicyEnforcementType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorConfigurationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; @@ -70,7 +78,7 @@ */ @ContextConfiguration(locations = {"classpath:ctx-model-intest-test-main.xml"}) @DirtiesContext(classMode = ClassMode.AFTER_CLASS) -public class TestResourceModifications extends AbstractInitializedModelIntegrationTest { +public class TestResources extends AbstractInitializedModelIntegrationTest { public static final File TEST_DIR = new File("src/test/resources/contract"); @@ -80,11 +88,7 @@ public class TestResourceModifications extends AbstractInitializedModelIntegrati private static CarefulAnt descriptionAnt; private static String lastVersion; private static Random rnd = new Random(); - - public TestResourceModifications() throws JAXBException { - super(); - } - + @Override public void initSystem(Task initTask, OperationResult initResult) throws Exception { super.initSystem(initTask, initResult); @@ -92,15 +96,135 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti descriptionAnt = ants.get(0); // get resource to make sure it has generated schema modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null, initTask, initResult); + InternalMonitor.reset(); + InternalMonitor.setTraceShadowFetchOperation(true); + InternalMonitor.setTraceResourceSchemaOperations(true); } + + @Test + public void test100GetResource() throws Exception { + final String TEST_NAME = "test100GetResource"; + TestUtil.displayTestTile(this, TEST_NAME); + // GIVEN + Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); + + // WHEN + PrismObject resource = modelService.getObject(ResourceType.class, RESOURCE_DUMMY_OID, null , task, result); + + // THEN + assertResourceDummy(resource); + + result.computeStatus(); + TestUtil.assertSuccess("getObject result", result); + + assertSteadyResources(); + } + @Test - public void test010GetResourceRaw() throws Exception { - final String TEST_NAME = "test040GetResourceRaw"; + public void test110SearchResources() throws Exception { + final String TEST_NAME = "test110SearchResources"; TestUtil.displayTestTile(this, TEST_NAME); // GIVEN - Task task = taskManager.createTaskInstance(TestResourceModifications.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); + + // WHEN + List> resources = modelService.searchObjects(ResourceType.class, null, null, task, result); + + // THEN + assertNotNull("null search return", resources); + assertFalse("Empty search return", resources.isEmpty()); + assertEquals("Unexpected number of resources found", 8, resources.size()); + + result.computeStatus(); + TestUtil.assertSuccess("searchObjects result", result); + + for (PrismObject resource: resources) { + assertResource(resource); + } + + assertSteadyResources(); + } + + @Test + public void test120SearchResourcesIterative() throws Exception { + final String TEST_NAME = "test120SearchResourcesIterative"; + TestUtil.displayTestTile(this, TEST_NAME); + + // GIVEN + Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); + + final List> resources = new ArrayList>(); + + ResultHandler handler = new ResultHandler() { + @Override + public boolean handle(PrismObject resource, OperationResult parentResult) { + try { + assertResource(resource); + } catch (JAXBException e) { + throw new RuntimeException(e.getMessage(),e); + } + resources.add(resource); + return true; + } + }; + + // WHEN + modelService.searchObjectsIterative(ResourceType.class, null, handler, null, task, result); + + // THEN + result.computeStatus(); + TestUtil.assertSuccess("searchObjects result", result); + + assertFalse("Empty search return", resources.isEmpty()); + assertEquals("Unexpected number of resources found", 8, resources.size()); + + assertSteadyResources(); + } + + private void assertResourceDummy(PrismObject resource) throws JAXBException { + assertResource(resource); + PrismContainer configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); + PrismContainerDefinition configurationContainerDefinition = configurationContainer.getDefinition(); + + } + + private void assertResource(PrismObject resource) throws JAXBException { + display("Resource", resource); + display("Resource def", resource.getDefinition()); + PrismContainer configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); + assertNotNull("No Resource connector configuration def", configurationContainer); + PrismContainerDefinition configurationContainerDefinition = configurationContainer.getDefinition(); + display("Resource connector configuration def", configurationContainerDefinition); + display("Resource connector configuration def complex type def", configurationContainerDefinition.getComplexTypeDefinition()); + assertNotNull("Empty Resource connector configuration def", configurationContainer.isEmpty()); + assertEquals("Wrong compile-time class in Resource connector configuration in "+resource, ConnectorConfigurationType.class, + configurationContainer.getCompileTimeClass()); + assertEquals("configurationContainer maxOccurs", 1, configurationContainerDefinition.getMaxOccurs()); + + resource.checkConsistence(true, true); + + // Try to marshal using pure JAXB as a rough test that it is OK JAXB-wise + // skipped because of parsing changes [pm] +// Element resourceDomElement = prismContext.getPrismJaxbProcessor().marshalJaxbObjectToDom(resource.asObjectable(), new QName(SchemaConstants.NS_C, "resource"), +// DOMUtil.getDocument()); +// display("Resouce DOM element after JAXB marshall", resourceDomElement); + } + + @Test + public void test200GetResourceRaw() throws Exception { + final String TEST_NAME = "test200GetResourceRaw"; + TestUtil.displayTestTile(this, TEST_NAME); + + // GIVEN + Task task = taskManager.createTaskInstance(TestResources.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); assumeAssignmentPolicy(AssignmentPolicyEnforcementType.POSITIVE); @@ -122,22 +246,22 @@ public void test010GetResourceRaw() throws Exception { @Test - public void test020SingleDescriptionModify() throws Exception { - final String TEST_NAME = "test020SingleDescriptionModify"; + public void test820SingleDescriptionModify() throws Exception { + final String TEST_NAME = "test820SingleDescriptionModify"; TestUtil.displayTestTile(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestResourceModifications.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestResources.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); singleModify(descriptionAnt, -1, task, result); } @Test - public void test040RadomModifySequence() throws Exception { - final String TEST_NAME = "test040RadomModifySequence"; + public void test840RadomModifySequence() throws Exception { + final String TEST_NAME = "test840RadomModifySequence"; TestUtil.displayTestTile(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestResourceModifications.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestResources.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); for(int i=0; i <= MAX_RANDOM_SEQUENCE_ITERATIONS; i++) { @@ -178,11 +302,11 @@ private void singleModify(CarefulAnt ant, int iteration, Task task } @Test - public void test100ModifyConfiguration() throws Exception { - final String TEST_NAME = "test020SingleDescriptionModify"; + public void test850ModifyConfiguration() throws Exception { + final String TEST_NAME = "test850ModifyConfiguration"; TestUtil.displayTestTile(this, TEST_NAME); - Task task = taskManager.createTaskInstance(TestResourceModifications.class.getName() + "." + TEST_NAME); + Task task = taskManager.createTaskInstance(TestResources.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); ItemPath propPath = new ItemPath(ResourceType.F_CONNECTOR_CONFIGURATION, @@ -205,4 +329,10 @@ public void test100ModifyConfiguration() throws Exception { } + private void preTestCleanup(AssignmentPolicyEnforcementType enforcementPolicy) throws ObjectNotFoundException, SchemaException, ObjectAlreadyExistsException { + assumeAssignmentPolicy(enforcementPolicy); + dummyAuditService.clear(); + prepareNotifications(); + rememberShadowFetchOperationCount(); + } } diff --git a/model/model-intest/testng.xml b/model/model-intest/testng.xml index 7c873713366..68b87400408 100644 --- a/model/model-intest/testng.xml +++ b/model/model-intest/testng.xml @@ -35,7 +35,7 @@ - +