Search in sources :

Example 16 with XPathExpressionException

use of javax.xml.xpath.XPathExpressionException in project OpenAM by OpenRock.

the class SmsJsonConverter method getHiddenAttributeNames.

protected List<String> getHiddenAttributeNames() {
    ArrayList<String> hiddenAttributeNames = null;
    try {
        InputStream resource = getClass().getClassLoader().getResourceAsStream("amConsoleConfig.xml");
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(resource);
        NodeList nodes = (NodeList) XPathFactory.newInstance().newXPath().evaluate("//consoleconfig/servicesconfig/consoleservice/@realmEnableHideAttrName", doc, XPathConstants.NODESET);
        String rawList = nodes.item(0).getNodeValue();
        hiddenAttributeNames = new ArrayList<String>(Arrays.asList(rawList.split(" ")));
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (XPathExpressionException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return hiddenAttributeNames;
}
Also used : InputStream(java.io.InputStream) XPathExpressionException(javax.xml.xpath.XPathExpressionException) NodeList(org.w3c.dom.NodeList) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) IOException(java.io.IOException) Document(org.w3c.dom.Document) SAXException(org.xml.sax.SAXException)

Example 17 with XPathExpressionException

use of javax.xml.xpath.XPathExpressionException in project OpenAM by OpenRock.

the class SmsServerPropertiesResource method getSchema.

private JsonValue getSchema(Properties syntaxProperties, Properties titleProperties, boolean isDefault) {
    JsonValue template = json(object());
    for (String tabName : getTabNames()) {
        try {
            Document propertySheet = getPropertySheet(tabName);
            Map<String, Set<String>> options = getOptions(propertySheet, tabName);
            List<String> sectionNames = getSectionNames(propertySheet);
            Set<String> optionalAttributes = getOptionalAttributes(propertySheet, tabName);
            int sectionOrder = 0;
            for (String sectionName : sectionNames) {
                final String sectionPath = "/properties/" + tabName + "/" + sectionName;
                template.putPermissive(new JsonPointer(sectionPath + "/title"), titleProperties.getProperty(sectionName));
                template.putPermissive(new JsonPointer(sectionPath + "/propertyOrder"), sectionOrder++);
                int attributeOrder = 0;
                for (String attributeName : getAttributeNamesForSection(sectionName, propertySheet)) {
                    final String title = titleProperties.getProperty(attributeName);
                    String property = syntaxProperties.getProperty(attributeName);
                    if (property == null) {
                        property = "";
                    }
                    final String type = syntaxRawToReal.get(property);
                    final Set<String> attributeOptions = getAttributeOptions(options, attributeName, type);
                    final boolean isOptional;
                    if (isDefault) {
                        isOptional = optionalAttributes.contains(attributeName);
                    } else {
                        isOptional = true;
                    }
                    final String path = sectionPath + "/" + attributeName;
                    if (attributeOptions != null && !attributeOptions.isEmpty()) {
                        template.putPermissive(new JsonPointer(path + "/type/enum"), attributeOptions);
                    } else {
                        template.putPermissive(new JsonPointer(path + "/type"), type);
                    }
                    template.putPermissive(new JsonPointer(path + "/title"), title);
                    template.putPermissive(new JsonPointer(path + "/propertyOrder"), attributeOrder++);
                    template.putPermissive(new JsonPointer(path + "/required"), !isOptional);
                    template.putPermissive(new JsonPointer(path + "/pattern"), ".+");
                    allAttributeNamesInNamedTabs.add(attributeName);
                }
            }
        } catch (ParserConfigurationException | IOException | XPathExpressionException | SAXException e) {
            logger.error("Error reading property sheet for tab " + tabName, e);
        }
    }
    return template;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) XPathExpressionException(javax.xml.xpath.XPathExpressionException) JsonValue(org.forgerock.json.JsonValue) JsonPointer(org.forgerock.json.JsonPointer) IOException(java.io.IOException) Document(org.w3c.dom.Document) SAXException(org.xml.sax.SAXException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException)

Example 18 with XPathExpressionException

use of javax.xml.xpath.XPathExpressionException in project OpenAM by OpenRock.

the class SmsServerPropertiesResource method getDirectorySchema.

private JsonValue getDirectorySchema(Properties titleProperties, Debug logger) {
    try {
        JsonValue directoryConfigSchema = json(object());
        dbFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
        dbFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        dBuilder = dbFactory.newDocumentBuilder();
        Document document = dBuilder.parse(getClass().getResourceAsStream(DIRECTORY_CONFIG_XML));
        XPath xPath = XPathFactory.newInstance().newXPath();
        final String sectionExpression = "//propertysheet/section/@defaultValue";
        String sectionRawValue = (String) xPath.compile(sectionExpression).evaluate(document, XPathConstants.STRING);
        String sectionTitle = titleProperties.getProperty(sectionRawValue);
        final String baseExpression = "//propertysheet/section/property/label/@defaultValue";
        NodeList attributes = (NodeList) xPath.compile(baseExpression).evaluate(document, XPathConstants.NODESET);
        final String path = "/_schema/properties/directoryConfiguration/" + sectionRawValue;
        directoryConfigSchema.putPermissive(new JsonPointer(path + "/title"), sectionTitle);
        for (int i = 0; i < attributes.getLength(); i++) {
            String attributeRawName = attributes.item(i).getNodeValue();
            String attributePath = path + "/" + attributeRawName;
            directoryConfigSchema.putPermissive(new JsonPointer(attributePath + "/title"), titleProperties.getProperty(attributeRawName));
            directoryConfigSchema.putPermissive(new JsonPointer(attributePath + "/propertyOrder"), i);
            directoryConfigSchema.putPermissive(new JsonPointer(attributePath + "/type"), "string");
        }
        final String serverPath = path + "/servers";
        directoryConfigSchema.putPermissive(new JsonPointer(serverPath + "/title"), titleProperties.get("amconfig.serverconfig.xml.server.table.header"));
        directoryConfigSchema.putPermissive(new JsonPointer(serverPath + "/type"), "array");
        directoryConfigSchema.putPermissive(new JsonPointer(serverPath + "/items/type"), "object");
        List<String> columnNames = new ArrayList<>();
        columnNames.add("name");
        columnNames.add("host");
        columnNames.add("port");
        columnNames.add("type");
        for (String columnName : columnNames) {
            final String attributePath = serverPath + "/items/properties/" + SERVER_TABLE_PROPERTY_PREFIX + columnName;
            directoryConfigSchema.putPermissive(new JsonPointer(attributePath + "/title"), titleProperties.getProperty(SERVER_TABLE_PROPERTY_PREFIX + columnName));
            directoryConfigSchema.putPermissive(new JsonPointer(attributePath + "/type"), "string");
            directoryConfigSchema.putPermissive(new JsonPointer(attributePath + "/propertyOrder"), columnNames.indexOf(columnName));
        }
        return directoryConfigSchema;
    } catch (ParserConfigurationException | SAXException | IOException | XPathExpressionException e) {
        logger.error("Error creating document builder", e);
    }
    return null;
}
Also used : XPath(javax.xml.xpath.XPath) XPathExpressionException(javax.xml.xpath.XPathExpressionException) NodeList(org.w3c.dom.NodeList) JsonValue(org.forgerock.json.JsonValue) ArrayList(java.util.ArrayList) JsonPointer(org.forgerock.json.JsonPointer) IOException(java.io.IOException) Document(org.w3c.dom.Document) SAXException(org.xml.sax.SAXException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException)

Example 19 with XPathExpressionException

use of javax.xml.xpath.XPathExpressionException in project OpenAM by OpenRock.

the class SmsServerPropertiesResource method getOptions.

private Map<String, Set<String>> getOptions(Document propertySheet, String tabName) {
    Map<String, Set<String>> radioOptions = new HashMap<>();
    try {
        XPath xPath = XPathFactory.newInstance().newXPath();
        List<String> attributeNamesForTab = getDefaultValueNames(tabName);
        for (String defaultValueName : attributeNamesForTab) {
            String convertedName = getConvertedName(defaultValueName);
            String expression = "//propertysheet/section/property/cc[@name='" + convertedName + "']/option/@value";
            NodeList optionsList = (NodeList) xPath.compile(expression).evaluate(propertySheet, XPathConstants.NODESET);
            Set<String> options = new HashSet<>();
            for (int i = 0; i < optionsList.getLength(); i++) {
                options.add(optionsList.item(i).getNodeValue());
            }
            if (!options.isEmpty()) {
                radioOptions.put(defaultValueName, options);
            }
        }
    } catch (ParserConfigurationException | SAXException | IOException | XPathExpressionException e) {
        logger.error("Error reading property sheet", e);
    }
    return radioOptions;
}
Also used : XPath(javax.xml.xpath.XPath) Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) XPathExpressionException(javax.xml.xpath.XPathExpressionException) NodeList(org.w3c.dom.NodeList) IOException(java.io.IOException) SAXException(org.xml.sax.SAXException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) HashSet(java.util.HashSet)

Example 20 with XPathExpressionException

use of javax.xml.xpath.XPathExpressionException in project OpenAM by OpenRock.

the class SmsServerPropertiesResource method readInstance.

@Override
public Promise<ResourceResponse, ResourceException> readInstance(Context serverContext, ReadRequest readRequest) {
    Map<String, String> uriVariables = getUriTemplateVariables(serverContext);
    final String tabName = getTabName(uriVariables);
    if (tabName == null) {
        return new BadRequestException("Tab name not specified.").asPromise();
    }
    final String serverName = getServerName(uriVariables);
    if (serverName == null) {
        return new BadRequestException("Server name not specified.").asPromise();
    }
    try {
        ServiceConfigManager scm = getServiceConfigManager(serverContext);
        ServiceConfig serverConfigs = getServerConfigs(scm);
        Properties defaultAttributes = getAttributes(serverConfigs.getSubConfig(SERVER_DEFAULT_NAME));
        final ServiceConfig serverConfig = serverConfigs.getSubConfig(serverName);
        if (serverConfig == null) {
            return new BadRequestException("Unknown Server " + serverName).asPromise();
        }
        Properties serverSpecificAttributes = getAttributes(serverConfig);
        Map<String, String> defaultSection = new HashMap<>();
        JsonValue result = json(object(field("default", defaultSection)));
        List<String> attributeNamesForTab;
        if (tabName.equalsIgnoreCase(DIRECTORY_CONFIGURATION_TAB_NAME)) {
            InputStream resourceStream = new StringInputStream(getServerConfigXml(serverConfig));
            Document serverXml = dBuilder.parse(resourceStream);
            XPath xPath = XPathFactory.newInstance().newXPath();
            final String baseExpression = "//iPlanetDataAccessLayer/ServerGroup[@name='sms']/";
            String minConnections = (String) xPath.compile(baseExpression + "@" + DSConfigMgr.MIN_CONN_POOL).evaluate(serverXml, XPathConstants.STRING);
            String maxConnections = (String) xPath.compile(baseExpression + "@" + DSConfigMgr.MAX_CONN_POOL).evaluate(serverXml, XPathConstants.STRING);
            String dirDN = (String) xPath.compile(baseExpression + "User/DirDN").evaluate(serverXml, XPathConstants.STRING);
            String directoryPassword = (String) xPath.compile(baseExpression + "User/DirPassword").evaluate(serverXml, XPathConstants.STRING);
            result.put("minConnections", minConnections);
            result.put("maxConnections", maxConnections);
            result.put("dirDN", dirDN);
            result.put("directoryPassword", directoryPassword);
            NodeList serverNames = (NodeList) xPath.compile(baseExpression + "Server/@name").evaluate(serverXml, XPathConstants.NODESET);
            for (int i = 0; i < serverNames.getLength(); i++) {
                final String directoryServerName = serverNames.item(i).getNodeValue();
                final String serverExpression = baseExpression + "Server[@name='" + directoryServerName + "']";
                String hostExpression = serverExpression + "/@host";
                String portExpression = serverExpression + "/@port";
                String typeExpression = serverExpression + "/@type";
                NodeList serverAttributes = (NodeList) xPath.compile(hostExpression + "|" + portExpression + "|" + typeExpression).evaluate(serverXml, XPathConstants.NODESET);
                for (int a = 0; a < serverAttributes.getLength(); a++) {
                    final Node serverAttribute = serverAttributes.item(a);
                    result.addPermissive(new JsonPointer("servers/" + directoryServerName + "/" + serverAttribute.getNodeName()), serverAttribute.getNodeValue());
                }
            }
        } else {
            if (tabName.equalsIgnoreCase(ADVANCED_TAB_NAME)) {
                attributeNamesForTab = getAdvancedTabAttributeNames(serverConfig);
            } else {
                attributeNamesForTab = getDefaultValueNames(tabName);
            }
            for (String attributeName : attributeNamesForTab) {
                final String defaultAttribute = (String) defaultAttributes.get(attributeName);
                if (defaultAttribute != null) {
                    defaultSection.put(attributeName, (String) defaultAttributes.get(attributeName));
                }
                final String serverSpecificAttribute = (String) serverSpecificAttributes.get(attributeName);
                if (serverSpecificAttribute != null) {
                    result.add(attributeName, serverSpecificAttribute);
                }
            }
        }
        return newResultPromise(newResourceResponse(serverName + "/properties/" + tabName, String.valueOf(result.hashCode()), result));
    } catch (SMSException | SSOException | ParserConfigurationException | SAXException | IOException | XPathExpressionException e) {
        logger.error("Error reading property sheet for tab " + tabName, e);
    }
    return new BadRequestException("Error reading properties file for " + tabName).asPromise();
}
Also used : XPath(javax.xml.xpath.XPath) HashMap(java.util.HashMap) SMSException(com.sun.identity.sm.SMSException) StringInputStream(com.sun.xml.bind.StringInputStream) InputStream(java.io.InputStream) XPathExpressionException(javax.xml.xpath.XPathExpressionException) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) JsonValue(org.forgerock.json.JsonValue) SSOException(com.iplanet.sso.SSOException) JsonPointer(org.forgerock.json.JsonPointer) IOException(java.io.IOException) Properties(java.util.Properties) Document(org.w3c.dom.Document) SAXException(org.xml.sax.SAXException) StringInputStream(com.sun.xml.bind.StringInputStream) ServiceConfig(com.sun.identity.sm.ServiceConfig) BadRequestException(org.forgerock.json.resource.BadRequestException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) ServiceConfigManager(com.sun.identity.sm.ServiceConfigManager)

Aggregations

XPathExpressionException (javax.xml.xpath.XPathExpressionException)157 XPath (javax.xml.xpath.XPath)79 NodeList (org.w3c.dom.NodeList)74 Document (org.w3c.dom.Document)51 Node (org.w3c.dom.Node)50 IOException (java.io.IOException)47 XPathExpression (javax.xml.xpath.XPathExpression)42 SAXException (org.xml.sax.SAXException)32 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)29 XPathFactory (javax.xml.xpath.XPathFactory)29 ArrayList (java.util.ArrayList)23 Element (org.w3c.dom.Element)22 InputSource (org.xml.sax.InputSource)20 HashMap (java.util.HashMap)19 Test (org.junit.Test)17 DocumentBuilder (javax.xml.parsers.DocumentBuilder)14 Response (com.jayway.restassured.response.Response)12 ValidatableResponse (com.jayway.restassured.response.ValidatableResponse)12 DocumentBuilderFactory (javax.xml.parsers.DocumentBuilderFactory)12 AbstractIntegrationTest (org.codice.ddf.itests.common.AbstractIntegrationTest)12