Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
katkav committed Aug 19, 2015
2 parents 7ed3bac + 067d442 commit e029c9d
Show file tree
Hide file tree
Showing 20 changed files with 855 additions and 47 deletions.
Expand Up @@ -41,6 +41,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.XmlSchemaType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.ActivationCapabilityType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.ActivationLockoutStatusCapabilityType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.ActivationStatusCapabilityType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CapabilityType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CreateCapabilityType;
import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CredentialsCapabilityType;
Expand Down Expand Up @@ -341,6 +342,24 @@ public static boolean hasResourceNativeActivationCapability(ResourceType resourc
return true;
}

public static boolean hasResourceNativeActivationStatusCapability(ResourceType resource) {
ActivationCapabilityType activationCapability = null;
if (resource.getCapabilities() != null && resource.getCapabilities().getNative() != null) {
activationCapability = CapabilityUtil.getCapability(resource.getCapabilities().getNative().getAny(),
ActivationCapabilityType.class);
}
if (activationCapability == null) {
return false;
}

ActivationStatusCapabilityType status = activationCapability.getStatus();
if (status == null) {
return false;
}

return true;
}

public static boolean hasResourceNativeActivationLockoutCapability(ResourceType resource) {
ActivationCapabilityType activationCapability = null;
// check resource native capabilities. if resource cannot do
Expand Down
Expand Up @@ -243,6 +243,21 @@
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

<xsd:element name="legacySchema" type="xsd:boolean">
<xsd:annotation>
<xsd:documentation>
Forces schema processing in "legacy" mode.
Legacy mode means that __ACCOUNT__ is translated as AccountObjectClass,
__GROUP__ as GroupObjectClass and any other as CustomXXXXXObjectClass.
Non-legacy mode does not translates object class names. They are used
in the same form as provided by the connector.
</xsd:documentation>
<xsd:appinfo>
<a:maxOccurs>1</a:maxOccurs>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>

</xsd:schema>

Expand Up @@ -143,6 +143,11 @@ public class ConnectorFactoryIcfImpl implements ConnectorFactory {
public static final QName CONNECTOR_SCHEMA_PRODUCER_BUFFER_SIZE_ELEMENT = new QName(NS_ICF_CONFIGURATION,
CONNECTOR_SCHEMA_PRODUCER_BUFFER_SIZE_XML_ELEMENT_NAME);
public static final QName CONNECTOR_SCHEMA_PRODUCER_BUFFER_SIZE_TYPE = DOMUtil.XSD_INT;

public static final String CONNECTOR_SCHEMA_LEGACY_SCHEMA_XML_ELEMENT_NAME = "legacySchema";
public static final QName CONNECTOR_SCHEMA_LEGACY_SCHEMA_ELEMENT = new QName(NS_ICF_CONFIGURATION,
CONNECTOR_SCHEMA_LEGACY_SCHEMA_XML_ELEMENT_NAME);
public static final QName CONNECTOR_SCHEMA_LEGACY_SCHEMA_TYPE = DOMUtil.XSD_BOOLEAN;

public static final String CONNECTOR_SCHEMA_TIMEOUTS_XML_ELEMENT_NAME = "timeouts";
public static final QName CONNECTOR_SCHEMA_TIMEOUTS_ELEMENT = new QName(NS_ICF_CONFIGURATION,
Expand Down
Expand Up @@ -217,7 +217,7 @@ public class ConnectorInstanceIcfImpl implements ConnectorInstance {
private PrismSchema connectorSchema;
private String description;
private boolean caseIgnoreAttributeNames = false;
private boolean legacySchema = false;
private Boolean legacySchema = null;
private boolean supportsReturnDefaultAttributes = false;

public ConnectorInstanceIcfImpl(ConnectorInfo connectorInfo, ConnectorType connectorType,
Expand Down Expand Up @@ -322,7 +322,13 @@ public void configure(PrismContainerValue<?> configuration, OperationResult pare
} else {
throw new SystemException("Got unexpected exception: " + ex.getClass().getName(), ex);
}

}

PrismProperty<Boolean> legacySchemaConfigProperty = configuration.findProperty(new QName(
ConnectorFactoryIcfImpl.NS_ICF_CONFIGURATION,
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_LEGACY_SCHEMA_XML_ELEMENT_NAME));
if (legacySchemaConfigProperty != null) {
legacySchema = legacySchemaConfigProperty.getRealValue();
}

}
Expand Down Expand Up @@ -355,17 +361,17 @@ public PrismSchema generateConnectorSchema() {
return null;
}

PrismSchema mpSchema = new PrismSchema(connectorType.getNamespace(), prismContext);
connectorSchema = new PrismSchema(connectorType.getNamespace(), prismContext);

// Create configuration type - the type used by the "configuration"
// element
PrismContainerDefinition<?> configurationContainerDef = mpSchema.createPropertyContainerDefinition(
PrismContainerDefinition<?> configurationContainerDef = connectorSchema.createPropertyContainerDefinition(
ResourceType.F_CONNECTOR_CONFIGURATION.getLocalPart(),
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_CONFIGURATION_TYPE_LOCAL_NAME);

// element with "ConfigurationPropertiesType" - the dynamic part of
// configuration schema
ComplexTypeDefinition configPropertiesTypeDef = mpSchema.createComplexTypeDefinition(new QName(
ComplexTypeDefinition configPropertiesTypeDef = connectorSchema.createComplexTypeDefinition(new QName(
connectorType.getNamespace(),
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_CONFIGURATION_PROPERTIES_TYPE_LOCAL_NAME));

Expand Down Expand Up @@ -411,6 +417,9 @@ public PrismSchema generateConnectorSchema() {
configurationContainerDef.createContainerDefinition(
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_RESULTS_HANDLER_CONFIGURATION_ELEMENT,
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_RESULTS_HANDLER_CONFIGURATION_TYPE, 0, 1);
configurationContainerDef.createPropertyDefinition(
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_LEGACY_SCHEMA_ELEMENT,
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_LEGACY_SCHEMA_TYPE, 0, 1);

// No need to create definition of "configuration" element.
// midPoint will look for this element, but it will be generated as part
Expand All @@ -420,10 +429,9 @@ public PrismSchema generateConnectorSchema() {
ConnectorFactoryIcfImpl.CONNECTOR_SCHEMA_CONFIGURATION_PROPERTIES_ELEMENT_QNAME,
configPropertiesTypeDef, 1, 1);

LOGGER.debug("Generated configuration schema for {}: {} definitions", this, mpSchema.getDefinitions()
LOGGER.debug("Generated configuration schema for {}: {} definitions", this, connectorSchema.getDefinitions()
.size());
connectorSchema = mpSchema;
return mpSchema;
return connectorSchema;
}

private QName icfTypeToXsdType(Class<?> type, boolean isConfidential) {
Expand Down Expand Up @@ -482,7 +490,7 @@ public void initialize(ResourceSchema resourceSchema, Collection<Object> capabil
this.capabilities = capabilities;
this.caseIgnoreAttributeNames = caseIgnoreAttributeNames;

if (resourceSchema != null) {
if (resourceSchema != null && legacySchema == null) {
legacySchema = isLegacySchema(resourceSchema);
}

Expand Down
Expand Up @@ -46,6 +46,8 @@
<icfc:enableFilteredResultsHandler>false</icfc:enableFilteredResultsHandler>
<icfc:enableAttributesToGetSearchResultsHandler>false</icfc:enableAttributesToGetSearchResultsHandler>
</icfc:resultsHandlerConfiguration>

<icfc:legacySchema>true</icfc:legacySchema>

</connectorConfiguration>
<namespace>http://midpoint.evolveum.com/xml/ns/public/resource/instance/ef2bc95b-76e0-59e2-86d6-9999dddddddd</namespace>
Expand Down

0 comments on commit e029c9d

Please sign in to comment.