private String getTypeBaseName(Definition def) { return def.getTypeName().getLocalPart(); }
private File prepareDefinitionOutputFile(PrismSchema schema, Definition definition, String subDirName) { File schemaOutputDir = getSchemaDir(schema); File subDir = new File(schemaOutputDir, subDirName); if (!subDir.exists()) { subDir.mkdirs(); } return new File(subDir, definition.getTypeName().getLocalPart() + ".html"); }
@NotNull @Override @SuppressWarnings("unchecked") public <TD extends TypeDefinition> Collection<TD> findTypeDefinitionsByType(@NotNull QName typeName, @NotNull Class<TD> definitionClass) { return (List) definitions.stream() .filter(def -> definitionClass.isAssignableFrom(def.getClass()) && QNameUtil.match(typeName, def.getTypeName())) .collect(Collectors.toList()); }
@NotNull public <ID extends ItemDefinition> List<ID> findItemDefinitionsByCompileTimeClass( @NotNull Class<?> compileTimeClass, @NotNull Class<ID> definitionClass) { List<ID> found = new ArrayList<>(); for (Definition def: definitions) { if (definitionClass.isAssignableFrom(def.getClass())) { if (def instanceof PrismContainerDefinition) { @SuppressWarnings("unchecked") ID contDef = (ID) def; if (compileTimeClass.equals(((PrismContainerDefinition) contDef).getCompileTimeClass())) { found.add(contDef); } } else if (def instanceof PrismPropertyDefinition) { if (compileTimeClass.equals(prismContext.getSchemaRegistry().determineClassForType(def.getTypeName()))) { @SuppressWarnings("unchecked") ID itemDef = (ID) def; found.add(itemDef); } } else { // skipping the definition (PRD is not supported yet) } } } return found; }
@Test public void test031ResourceSchemaAccountObjectClass() throws Exception { final String TEST_NAME = "test031ResourceSchemaAccountObjectClass"; TestUtil.displayTestTitle(TEST_NAME); OperationResult result = new OperationResult(TestUcfDummy.class + "." + TEST_NAME); cc = connectorFactory.createConnectorInstance(connectorType, ResourceTypeUtil.getResourceNamespace(resourceType), "dummy", "description of dummy test connector instance"); assertNotNull("Failed to instantiate connector", cc); PrismContainerValue<ConnectorConfigurationType> configContainer = resourceType.getConnectorConfiguration().asPrismContainerValue(); display("Configuration container", configContainer); cc.configure(configContainer, result); List<QName> objectClassesToGenerate = new ArrayList<>(); QName accountObjectClass = new QName(resource.asObjectable().getNamespace(), "AccountObjectClass"); objectClassesToGenerate.add(accountObjectClass); // WHEN resourceSchema = cc.fetchResourceSchema(objectClassesToGenerate, result); // THEN display("Generated resource schema", resourceSchema); assertEquals("Unexpected number of definitions", 1, resourceSchema.getDefinitions().size()); assertEquals("Unexpected number of object class definitions", 1, resourceSchema.getObjectClassDefinitions().size()); display("RESOURCE SCHEMA DEFINITION" + resourceSchema.getDefinitions().iterator().next().getTypeName()); }