/* * Copyright (c) 2005-2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you 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.registry.extensions.handlers.utils; import com.ibm.wsdl.Constants; import com.ibm.wsdl.util.xml.DOMUtils; import com.ibm.wsdl.xml.WSDLReaderImpl; import org.w3c.dom.Element; import org.wso2.carbon.registry.extensions.utils.CommonUtil; import javax.wsdl.Definition; import javax.wsdl.Import; import javax.wsdl.WSDLException; import javax.wsdl.extensions.ExtensibilityElement; import javax.xml.namespace.QName; import java.io.File; import java.util.*; public class ExWSDLReaderImpl extends WSDLReaderImpl { WSDLReaderImpl reader = null; public ExWSDLReaderImpl(WSDLReaderImpl reader) { this.reader = reader; } protected Definition parseDefinitions(String documentBaseURI, Element defEl, Map importedDefs) throws WSDLException { Definition def = super.parseDefinitions(documentBaseURI, defEl, importedDefs); List<Import> toRemove = new LinkedList<Import>(); Map imports = def.getImports(); if (imports.size() > 0) { Iterator iterator = imports.values().iterator(); for (; iterator.hasNext();) { Vector values = (Vector) iterator.next(); for (Object value : values) { Import wsdlImport = (Import) value; if (wsdlImport.getDefinition() == null) { toRemove.add(wsdlImport); } } } } for (Import wsdlImport : toRemove) { def.removeImport(wsdlImport); } return def; } protected Import parseImport(Element importEl, Definition def, Map importedDefs) throws WSDLException { if (/*CommonUtil.isPathMapExisting()*/true) { String location = new File(def.getDocumentBaseURI(), DOMUtils.getAttribute(importEl, Constants.ATTR_LOCATION)).toString(); if (CommonUtil.isImportedArtifactExisting(location)) { return new Import() { public void setNamespaceURI(String s) { } public String getNamespaceURI() { return null; } public void setLocationURI(String s) { } public String getLocationURI() { return null; } public void setDefinition(Definition definition) { } public Definition getDefinition() { return null; } public void setDocumentationElement(Element element) { } public Element getDocumentationElement() { return null; } public void setExtensionAttribute(QName qName, Object o) { } public Object getExtensionAttribute(QName qName) { return null; } public Map getExtensionAttributes() { return null; } public List getNativeAttributeNames() { return null; } public void addExtensibilityElement(ExtensibilityElement extensibilityElement) { } public ExtensibilityElement removeExtensibilityElement( ExtensibilityElement extensibilityElement) { return null; } public List getExtensibilityElements() { return null; } }; } Import anImport = super.parseImport(importEl, def, importedDefs); CommonUtil.addImportedArtifact(location); return anImport; } return super.parseImport(importEl, def, importedDefs); } public int hashCode() { return reader.hashCode(); } public boolean equals(Object obj) { return obj instanceof ExWSDLReaderImpl && reader.equals(obj); } public String toString() { return reader.toString(); } }