public static Element getResourceXsdSchema(ResourceType resource) { XmlSchemaType xmlSchemaType = resource.getSchema(); if (xmlSchemaType == null) { return null; } return ObjectTypeUtil.findXsdElement(xmlSchemaType); }
/** * Checks if the resource is internally consistent, if it has everything it should have. * * @throws SchemaException */ private void checkOpenDjResource(ResourceType resource, String source) throws SchemaException { assertNotNull("Resource from " + source + " is null", resource); ObjectReferenceType connectorRefType = resource.getConnectorRef(); assertNotNull("Resource from " + source + " has null connectorRef", connectorRefType); assertFalse("Resource from " + source + " has no OID in connectorRef", StringUtils.isBlank(connectorRefType.getOid())); assertNotNull("Resource from " + source + " has null description in connectorRef", connectorRefType.getDescription()); assertNotNull("Resource from " + source + " has null filter in connectorRef", connectorRefType.getFilter()); assertNotNull("Resource from " + source + " has null filter element in connectorRef", connectorRefType.getFilter().getFilterClauseXNode()); assertNotNull("Resource from " + source + " has null configuration", resource.getConnectorConfiguration()); assertNotNull("Resource from " + source + " has null schema", resource.getSchema()); checkOpenDjSchema(resource, source); assertNotNull("Resource from " + source + " has null schemahandling", resource.getSchemaHandling()); checkOpenDjSchemaHandling(resource, source); if (!source.equals("repository")) { // This is generated on the fly in provisioning assertNotNull("Resource from " + source + " has null nativeCapabilities", resource.getCapabilities().getNative()); assertFalse("Resource from " + source + " has empty nativeCapabilities", resource.getCapabilities().getNative().getAny().isEmpty()); } assertNotNull("Resource from " + source + " has null configured capabilities", resource.getCapabilities().getConfigured()); assertFalse("Resource from " + source + " has empty capabilities", resource.getCapabilities().getConfigured().getAny().isEmpty()); assertNotNull("Resource from " + source + " has null synchronization", resource.getSynchronization()); checkOpenDjConfiguration(resource.asPrismObject(), source); }
public static boolean hasSchemaGenerationConstraints(ResourceType resource){ if (resource == null){ return false; } if (resource.getSchema() == null){ return false; } if (resource.getSchema().getGenerationConstraints() == null){ return false; } List<QName> constainst = resource.getSchema().getGenerationConstraints().getGenerateObjectClass(); if (constainst == null){ return false; } return !constainst.isEmpty(); }
public static List<QName> getSchemaGenerationConstraints(ResourceType resource){ if (hasSchemaGenerationConstraints(resource)){ return resource.getSchema().getGenerationConstraints().getGenerateObjectClass(); } return null; }
@Override public void assertModification(PrismObject<ResourceType> resource, int iteration) { List<Element> orgigElements = xmlSchemaDef.getAny(); List<Element> newElements = resource.asObjectable().getSchema().getDefinition().getAny(); assertEquals("Wrong number of elements in schema definition in iteration "+iteration, orgigElements.size(), newElements.size()); // TODO look inside elements } });
private static SchemaDefinitionType createNewXmlSchemaDef(File resourceFile, int iteration, PrismContext prismContext) throws SchemaException { PrismObject<ResourceType> resource = parseResource(resourceFile, prismContext); XmlSchemaType schema = resource.asObjectable().getSchema(); SchemaDefinitionType def; if (schema == null) { def = new SchemaDefinitionType(); def.getAny().add(DOMUtil.createElement(DOMUtil.XSD_SCHEMA_ELEMENT)); } else { def = schema.getDefinition(); // TODO: modify it somehow } return def; }
@Test public void testUnmarshallAndEqualsResourceSchema() throws JAXBException, SchemaException, FileNotFoundException { System.out.println("\n\n ===[testUnmarshallAndEqualsResourceSchema]===\n"); // GIVEN ResourceType resource1Type = JaxbTestUtil.getInstance().unmarshalObject(new File(RESOURCE_OPENDJ_FILENAME), ResourceType.class); assertNotNull(resource1Type); SchemaDefinitionType schemaDefinition1 = resource1Type.getSchema().getDefinition(); ResourceType resource2Type = JaxbTestUtil.getInstance().unmarshalObject(new File(RESOURCE_OPENDJ_FILENAME), ResourceType.class); assertNotNull(resource2Type); SchemaDefinitionType schemaDefinition2 = resource2Type.getSchema().getDefinition(); // WHEN boolean equals = schemaDefinition1.equals(schemaDefinition2); // THEN assertTrue("Schema definition not equal", equals); assertEquals("Hashcode does not match", schemaDefinition1.hashCode(), schemaDefinition2.hashCode()); }
@Test public void testResourceSchemaSerializationInResource() throws SchemaException, JAXBException { System.out.println("\n===[ testResourceSchemaSerializationInResource ]====="); // GIVEN ResourceSchema schema = createResourceSchema(); // WHEN Document xsdDocument = schema.serializeToXsd(); Element xsdElement = DOMUtil.getFirstChildElement(xsdDocument); PrismObject<ResourceType> resource = wrapInResource(xsdElement); String resourceXmlString = PrismTestUtil.getPrismContext().serializeObjectToString(resource, PrismContext.LANG_XML); System.out.println("Serialized resource"); System.out.println(resourceXmlString); PrismObject<ResourceType> reparsedResource = PrismTestUtil.getPrismContext().parseObject(resourceXmlString); System.out.println("Re-parsed resource"); System.out.println(reparsedResource.debugDump()); XmlSchemaType reparsedSchemaType = reparsedResource.asObjectable().getSchema(); Element reparsedXsdElement = ObjectTypeUtil.findXsdElement(reparsedSchemaType); System.out.println("Reparsed XSD schema"); System.out.println(DOMUtil.serializeDOMToString(reparsedXsdElement)); assertDomSchema(reparsedXsdElement); }
protected CachingMetadataType getSchemaCachingMetadata(PrismObject<ResourceType> resource) { ResourceType resourceType = resource.asObjectable(); XmlSchemaType xmlSchemaType = resourceType.getSchema(); assertNotNull("No schema", xmlSchemaType); Element resourceXsdSchemaElementAfter = ResourceTypeUtil.getResourceXsdSchema(resourceType); assertNotNull("No schema XSD element", resourceXsdSchemaElementAfter); return xmlSchemaType.getCachingMetadata(); }
XmlSchemaType unXmlSchemaType = unmarshalledResource.getSchema(); Element unXsd = unXmlSchemaType.getDefinition().getAny().get(0); ResourceSchema unSchema = ResourceSchemaImpl.parse(unXsd, "unmarshalled resource", PrismTestUtil.getPrismContext());
@Test public void test010Sanity() throws Exception { final String TEST_NAME = "test010Sanity"; TestUtil.displayTestTitle(TEST_NAME); final OperationResult result = new OperationResult(TestSynchronization.class.getName() + "." + TEST_NAME); // WHEN PrismObject<ResourceType> resource = provisioningService.getObject(ResourceType.class, resourceType.getOid(), null, taskManager.createTaskInstance(), result); // THEN assertNotNull("Resource is null", resource); display("getObject(resource)", resource); result.computeStatus(); display("getObject(resource) result", result); TestUtil.assertSuccess(result); // Make sure these were generated assertNotNull("No resource schema", resource.asObjectable().getSchema()); assertNotNull("No native capabilities", resource.asObjectable().getCapabilities().getNative()); Task syncTask = taskManager.getTask(SYNC_TASK_OID, result); AssertJUnit.assertNotNull(syncTask); assertSyncToken(syncTask, 0, result); }
assertEquals(RESOURCE_DERBY_OID, resourceDerby.getOid()); display("Initialized Derby resource (respository)", resourceDerby); assertNotNull("Resource schema was not generated", resourceDerby.getSchema()); Element resourceDerbyXsdSchemaElement = ResourceTypeUtil.getResourceXsdSchema(resourceDerby); assertNotNull("Resource schema was not generated", resourceDerbyXsdSchemaElement);
XmlSchemaType xmlSchemaType = resourceType.getSchema(); if (xmlSchemaType != null) { Element xsdSchemaElement = ResourceTypeUtil.getResourceXsdSchema(resourceType);
@Test public void test003Connection() throws Exception { final String TEST_NAME = "test003Connection"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); ResourceType resourceTypeBefore = repositoryService.getObject(ResourceType.class, RESOURCE_OPENDJ_OID, null, result).asObjectable(); display("Resource before testResource (repository)", resourceTypeBefore); assertNotNull("No connector ref",resourceTypeBefore.getConnectorRef()); assertNotNull("No connector ref OID",resourceTypeBefore.getConnectorRef().getOid()); connector = repositoryService.getObject(ConnectorType.class, resourceTypeBefore.getConnectorRef().getOid(), null, result); ConnectorType connectorType = connector.asObjectable(); assertNotNull(connectorType); XmlSchemaType xmlSchemaTypeBefore = resourceTypeBefore.getSchema(); AssertJUnit.assertNull("Found schema before test connection. Bad test setup?", xmlSchemaTypeBefore); Element resourceXsdSchemaElementBefore = ResourceTypeUtil.getResourceXsdSchema(resourceTypeBefore); AssertJUnit.assertNull("Found schema element before test connection. Bad test setup?", resourceXsdSchemaElementBefore); // WHEN OperationResult operationResult = provisioningService.testResource(RESOURCE_OPENDJ_OID, task); display("Test connection result (expected failure)",operationResult); TestUtil.assertFailure(operationResult); PrismObject<ResourceType> resourceRepoAfter = repositoryService.getObject(ResourceType.class,RESOURCE_OPENDJ_OID, null, result); display("Resource after testResource (repository)", resourceRepoAfter); ResourceType resourceTypeRepoAfter = resourceRepoAfter.asObjectable(); display("Resource after testResource (repository, XML)", PrismTestUtil.serializeObjectToString(resourceTypeRepoAfter.asPrismObject(), PrismContext.LANG_XML)); XmlSchemaType xmlSchemaTypeAfter = resourceTypeRepoAfter.getSchema(); assertNull("The schema was generated after test connection but it should not be",xmlSchemaTypeAfter); Element resourceXsdSchemaElementAfter = ResourceTypeUtil.getResourceXsdSchema(resourceTypeRepoAfter); assertNull("Schema after test connection (and should not be)", resourceXsdSchemaElementAfter); }
protected void assertHasSchema(PrismObject<ResourceType> resource, String desc) throws SchemaException { ResourceType resourceType = resource.asObjectable(); display("Resource "+desc, resourceType); XmlSchemaType xmlSchemaTypeAfter = resourceType.getSchema(); assertNotNull("No schema in "+desc, xmlSchemaTypeAfter); Element resourceXsdSchemaElementAfter = ResourceTypeUtil.getResourceXsdSchema(resourceType); assertNotNull("No schema XSD element in "+desc, resourceXsdSchemaElementAfter); String resourceXml = prismContext.serializeObjectToString(resource, PrismContext.LANG_XML); // display("Resource XML", resourceXml); CachingMetadataType cachingMetadata = xmlSchemaTypeAfter.getCachingMetadata(); assertNotNull("No caching metadata in "+desc, cachingMetadata); assertNotNull("No retrievalTimestamp in "+desc, cachingMetadata.getRetrievalTimestamp()); assertNotNull("No serialNumber in "+desc, cachingMetadata.getSerialNumber()); Element xsdElement = ObjectTypeUtil.findXsdElement(xmlSchemaTypeAfter); ResourceSchema parsedSchema = ResourceSchemaImpl.parse(xsdElement, resource.toString(), prismContext); assertNotNull("No schema after parsing in "+desc, parsedSchema); }
assertNotNull("no schema", resourceAfterAdd.asObjectable().getSchema()); assertNotNull("no capabilities", resourceAfterAdd.asObjectable().getCapabilities()); MidPointAsserts.assertVersion(resourceAfterOverwrite, 1); assertNull("schema not gone", resourceAfterOverwrite.asObjectable().getSchema()); assertNull("capabilities not gone", resourceAfterOverwrite.asObjectable().getCapabilities());
resourceBefore.getConnectorRef().getOid(), null, result).asObjectable(); assertNotNull(connector); XmlSchemaType xmlSchemaTypeBefore = resourceBefore.getSchema(); Element resourceXsdSchemaElementBefore = ResourceTypeUtil.getResourceXsdSchema(resourceBefore); AssertJUnit.assertNull("Found schema before test connection. Bad test setup?", resourceXsdSchemaElementBefore);
resourceBefore.getConnectorRef().getOid(), null, result).asObjectable(); assertNotNull(connector); XmlSchemaType xmlSchemaTypeBefore = resourceBefore.getSchema(); Element resourceXsdSchemaElementBefore = ResourceTypeUtil.getResourceXsdSchema(resourceBefore); AssertJUnit.assertNull("Found schema before test connection. Bad test setup?", resourceXsdSchemaElementBefore);
display("Resource after test", resourceTypeRepoAfter); XmlSchemaType xmlSchemaTypeAfter = resourceTypeRepoAfter.getSchema(); assertNotNull("No schema after test connection", xmlSchemaTypeAfter); Element resourceXsdSchemaElementAfter = ResourceTypeUtil.getResourceXsdSchema(resourceTypeRepoAfter);