org.wso2.carbon.humantask.core.integration.HumanTaskSchemaURIResolver.java Source code

Java tutorial

Introduction

Here is the source code for org.wso2.carbon.humantask.core.integration.HumanTaskSchemaURIResolver.java

Source

/*
 * Copyright (c) 2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.wso2.carbon.humantask.core.integration;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.xml.sax.InputSource;

import java.io.InputStream;
import java.net.URI;

/**
 * TODO move to a common bundle to share with bpel
 * URI resolver for the schemas in the human task deployment unit.
 */
public class HumanTaskSchemaURIResolver implements org.apache.ws.commons.schema.resolver.URIResolver {
    private static final Log log = LogFactory.getLog(HumanTaskSchemaURIResolver.class);

    //From the file system
    public InputSource resolveEntity(String targetNamespace, String schemaLocation, String baseUri) {
        if (log.isDebugEnabled()) {
            log.debug("resolveEntity: targetNamespace=" + targetNamespace + " schemaLocation=" + schemaLocation
                    + " baseUri=" + baseUri);
        }
        InputStream is;
        try {
            URI base = new URI("file:" + baseUri);
            URI uri = base.resolve(schemaLocation);
            is = uri.toURL().openStream();
            if (is == null) {
                log.error("Exception resolving entity: schemaLocation=" + schemaLocation + " baseUri=" + baseUri);
                return null;
            }
            InputSource source = new InputSource(is);
            source.setSystemId(uri.toString());
            source.setPublicId(schemaLocation);
            return new InputSource(is);
        } catch (Exception e) {
            log.error("Exception resolving entity: schemaLocation=" + schemaLocation + " baseUri=" + baseUri, e);
            return null;
        }
    }

    //With registry handler
    //    public InputSource resolveEntity(String targetNamespace, String schmLocation, String baseUri) {
    //        int begin = schmLocation.indexOf(HIConstants.HUMAN_INTERACTION_SCHEMA_LOCATION);
    //        String schemaLocaion = schmLocation;
    //
    //        if (begin < 0) {
    //            begin = schmLocation.indexOf(HIConstants.HUMAN_INTERACTION_WSDL_LOCATION);
    //        }
    //
    //        if (begin < 0) {
    //            String errMsg = "Invalid schema/wsdl location: " + schmLocation;
    //            log.error(errMsg);
    //            return null;
    //        }
    //
    //        if (begin > 0) {
    //            schmLocation = schmLocation.substring(begin);
    //        }
    //
    //        if (log.isDebugEnabled()) {
    //            log.debug("resolveEntity: targetNamespace=" + targetNamespace + " schmLocation=" + schmLocation
    //                      + " baseUri=" + baseUri);
    //        }
    //        InputStream is;
    //        try {
    //            Registry governanceRegistry = HumanTaskServiceComponent.getRegistryService().getGovernanceSystemRegistry();
    //            if (!governanceRegistry.resourceExists(schmLocation)) {
    //                String errMsg = "Schema does not exist in: " + schmLocation;
    //                log.error(errMsg);
    //                return null;
    //            }
    //            is = governanceRegistry.get(schmLocation).getContentStream();
    //            if (is == null) {
    //                log.error("Exception resolving entity: schmLocation=" + schmLocation + " baseUri=" + baseUri);
    //                return null;
    //            }
    //            InputSource source = new InputSource(is);
    //            source.setSystemId(schemaLocaion);
    //            source.setPublicId(schemaLocaion);
    //            return new InputSource(is);
    //        } catch (Exception e) {
    //            log.error("Exception resolving entity: schmLocation=" + schmLocation + " baseUri=" + baseUri, e);
    //            return null;
    //        }
    //    }

    //Without registry handler But from registry
    //    public InputSource resolveEntity(String targetNamespace, String schemaLocation, String baseUri) {
    //        if (log.isDebugEnabled()) {
    //            log.debug("resolveEntity: targetNamespace=" + targetNamespace +
    //                    " schemaLocation=" + schemaLocation + " baseUri=" + baseUri);
    //        }
    //        String location = baseUri.substring(0, baseUri.lastIndexOf("/") + 1) + schemaLocation;
    //        InputStream is;
    //        try {
    //            Registry configRegistry = HumanTaskServiceComponent.getRegistryService().
    //                    getConfigSystemRegistry();
    //            if (!configRegistry.resourceExists(location)) {
    //                String errMsg = "Schema does not exist in: " + location;
    //                log.error(errMsg);
    //                return null;
    //            }
    //            is = configRegistry.get(location).getContentStream();
    //            if (is == null) {
    //                log.error("Exception resolving entity: schemaLocation=" + location +
    //                        " baseUri=" + baseUri);
    //                return null;
    //            }
    //            InputSource source = new InputSource(is);
    //            source.setSystemId(location);
    //            source.setPublicId(location);
    //            return new InputSource(is);
    //        } catch (Exception e) {
    //            log.error("Exception resolving entity: schemaLocation=" + location +
    //                    " baseUri=" + baseUri, e);
    //            return null;
    //        }
    //    }
}