JUDDI-987 no commit message
Project: http://git-wip-us.apache.org/repos/asf/juddi/repo Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/248b39c7 Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/248b39c7 Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/248b39c7 Branch: refs/heads/master Commit: 248b39c73e0c7809c42a9accd35f354869f11666 Parents: 4541dee Author: Alex O'Ree <[email protected]> Authored: Sat Nov 11 12:29:48 2017 -0500 Committer: Alex O'Ree <[email protected]> Committed: Sat Nov 11 12:29:48 2017 -0500 ---------------------------------------------------------------------- .../v3/client/cli/UddiDigitalSignatureFile.java | 3 +- .../juddi/v3/client/cryptor/XmlUtils.java | 139 ++++ .../juddi/v3/client/mapping/wadl/WADL2UDDI.java | 9 +- .../transport/wrapper/RequestHandler.java | 4 + .../transport/wrapper/UDDIInquiryService.java | 8 +- .../java/org/apache/juddi/config/Install.java | 30 +- .../apache/juddi/mapping/MappingModelToApi.java | 11 +- .../org/apache/juddi/config/InstallTest.java | 3 +- .../juddi/samples/UddiDigitalSignatureFile.java | 3 +- .../apache/juddi/gui/dsig/XmlSigApplet2.java | 9 +- .../juddi/gui/dsig/XmlSignatureApplet.java | 10 +- .../juddi/webconsole/hub/UDDIRequestsAsXML.java | 88 ++- .../apache/juddi/webconsole/hub/UddiHub.java | 25 +- .../src/main/webapp/ajax/abortTransferToken.jsp | 20 +- juddi-gui/src/main/webapp/ajax/advanced.jsp | 13 +- juddi-gui/src/main/webapp/ajax/getCert.jsp | 8 +- juddi-gui/src/main/webapp/ajax/saveFromXML.jsp | 11 +- juddi-gui/src/main/webapp/ajax/search.jsp | 4 +- .../adminconsole/hub/JUDDIRequestsAsXML.java | 15 +- .../juddi/adminconsole/hub/UddiAdminHub.java | 15 +- .../adminconsole/hub/JUDDIRequestsAsXML.java | 19 +- .../juddi/adminconsole/hub/UddiAdminHub.java | 12 +- .../apache/juddi/v3/migration/tool/Import.java | 7 +- .../org/apache/juddi/v3/tck/TckSigningUtil.java | 8 +- .../v3/tck/UDDI_160_RESTIntergrationTest.java | 9 +- .../uddi/repl_v3/ReplicationConfiguration.java | 726 +++++++++---------- 26 files changed, 721 insertions(+), 488 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureFile.java ---------------------------------------------------------------------- diff --git a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureFile.java b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureFile.java index 3803a46..90ab911 100644 --- a/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureFile.java +++ b/juddi-client-cli/src/main/java/org/apache/juddi/v3/client/cli/UddiDigitalSignatureFile.java @@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicReference; import javax.xml.bind.JAXB; import org.apache.juddi.v3.client.cryptor.DigSigUtil; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.*; /** @@ -97,7 +98,7 @@ public class UddiDigitalSignatureFile { expectedType = TModel.class; break; } - Object be = JAXB.unmarshal(fis, expectedType); + Object be = XmlUtils.unmarshal(fis, expectedType); fis.close(); fis = null; http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/XmlUtils.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/XmlUtils.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/XmlUtils.java new file mode 100644 index 0000000..38cd501 --- /dev/null +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/cryptor/XmlUtils.java @@ -0,0 +1,139 @@ +/* + * Copyright 2017 The Apache Software Foundation. + * + * 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.apache.juddi.v3.client.cryptor; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.net.URL; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Unmarshaller; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.transform.Source; +import javax.xml.transform.sax.SAXSource; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.xml.sax.InputSource; + +/** + * + * @since 3.3.5 + * @author Alex O'Ree + */ +public class XmlUtils { + + private static final Log log = LogFactory.getLog(XmlUtils.class); + + public static Object unmarshal(Reader reader, Class...clazz) { + + try { + SAXParserFactory spf = SAXParserFactory.newInstance(); + spf.setFeature("http://xml.org/sax/features/external-general-entities", false); + spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + spf.setNamespaceAware(true); + + Source xmlSource = new SAXSource(spf.newSAXParser().getXMLReader(), new InputSource(reader)); + JAXBContext jc = JAXBContext.newInstance(clazz); + Unmarshaller um = jc.createUnmarshaller(); + return um.unmarshal(xmlSource); + } catch (Exception ex) { + log.warn("Failed to unmarshall object. Increase logging to debug for additional information. 1" + ex.getMessage()); + log.debug(ex.getMessage(), ex); + } + return null; + + } + + public static Object unmarshal(InputStream reader, Class clazz) { + try { + SAXParserFactory spf = SAXParserFactory.newInstance(); + spf.setFeature("http://xml.org/sax/features/external-general-entities", false); + spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + spf.setNamespaceAware(true); + Source xmlSource = new SAXSource(spf.newSAXParser().getXMLReader(), new InputSource(reader)); + JAXBContext jc = JAXBContext.newInstance(clazz); + Unmarshaller um = jc.createUnmarshaller(); + return um.unmarshal(xmlSource); + } catch (Exception ex) { + log.warn("Failed to unmarshall object. Increase logging to debug for additional information. 2" + ex.getMessage()); + log.debug(ex.getMessage(), ex); + } + return null; + + } + + public static Object unmarshal(Reader reader, String packageName) { + try { + SAXParserFactory spf = SAXParserFactory.newInstance(); + spf.setFeature("http://xml.org/sax/features/external-general-entities", false); + spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + spf.setNamespaceAware(true); + Source xmlSource = new SAXSource(spf.newSAXParser().getXMLReader(), new InputSource(reader)); + JAXBContext jc = JAXBContext.newInstance(packageName); + + Unmarshaller um = jc.createUnmarshaller(); + return ((javax.xml.bind.JAXBElement)um.unmarshal(xmlSource)).getValue(); + } catch (Exception ex) { + log.warn("Failed to unmarshall object. Increase logging to debug for additional information. 3" + ex.getMessage()); + log.debug(ex.getMessage(), ex); + } + return null; + + } + + public static Object unmarshal(URL url, Class clazz) { + InputStream openStream = null; + Object obj = null; + try { + SAXParserFactory spf = SAXParserFactory.newInstance(); + spf.setFeature("http://xml.org/sax/features/external-general-entities", false); + spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); + spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); + spf.setNamespaceAware(true); + openStream = url.openStream(); + Source xmlSource = new SAXSource(spf.newSAXParser().getXMLReader(), new InputSource(openStream)); + JAXBContext jc = JAXBContext.newInstance(clazz); + Unmarshaller um = jc.createUnmarshaller(); + obj = um.unmarshal(xmlSource); + } catch (Exception ex) { + log.warn("Failed to unmarshall object. Increase logging to debug for additional information. 4" + ex.getMessage()); + log.debug(ex.getMessage(), ex); + } finally { + if (openStream != null) { + try { + openStream.close(); + } catch (IOException ex) { + log.debug(ex.getMessage(), ex); + } + } + } + return obj; + } + + public static Object unmarshal(File file, Class clazz) { + try { + return unmarshal(file.toURI().toURL(), clazz); + } catch (Exception ex) { + log.warn("Failed to unmarshall object. Increase logging to debug for additional information. 5" + ex.getMessage()); + log.debug(ex.getMessage(), ex); + } + return null; + } +} http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/wadl/WADL2UDDI.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/wadl/WADL2UDDI.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/wadl/WADL2UDDI.java index d0c37b6..58d6da3 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/wadl/WADL2UDDI.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/wadl/WADL2UDDI.java @@ -50,6 +50,7 @@ import org.apache.juddi.v3.client.UDDIConstants; import org.apache.juddi.v3.client.config.Property; import org.apache.juddi.v3.client.config.UDDIClerk; import org.apache.juddi.v3.client.config.UDDIKeyConvention; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.apache.juddi.v3.client.mapping.Common2UDDI; import org.apache.juddi.v3.client.mapping.MockSSLSocketFactory; import org.apache.juddi.v3.client.mapping.URLLocalizer; @@ -408,7 +409,7 @@ public class WADL2UDDI { * @return Application instance (WADL FILE) */ public static Application parseWadl(InputStream stream) { - Application unmarshal = JAXB.unmarshal(stream, Application.class); + Application unmarshal = (Application) XmlUtils.unmarshal(stream, Application.class); return unmarshal; } public static final String PACKAGE = "org.apache.juddi.v3.client.mapping.wadl"; @@ -484,8 +485,8 @@ public class WADL2UDDI { ResponseHandler<String> responseHandler = new BasicResponseHandler(); String handleResponse = responseHandler.handleResponse(response1); StringReader sr = new StringReader(handleResponse); - unmarshal = JAXB.unmarshal(sr, Application.class); - + unmarshal = (Application) XmlUtils.unmarshal(sr, Application.class); + sr.close(); } finally { httpGet.releaseConnection(); @@ -503,7 +504,7 @@ public class WADL2UDDI { } public static Application parseWadl(File file) throws FileNotFoundException, IOException { - Application unmarshal = JAXB.unmarshal(file, Application.class); + Application unmarshal = (Application) XmlUtils.unmarshal(file, Application.class); return unmarshal; } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java index fb6384e..5173112 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/RequestHandler.java @@ -19,6 +19,7 @@ import java.io.StringWriter; import java.lang.reflect.Method; import java.rmi.Remote; import java.util.List; +import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -115,6 +116,8 @@ public class RequestHandler { public static synchronized String getText(Element element) throws TransformerException { if (transFactory == null) { transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); } Transformer trans = transFactory.newTransformer(); StringWriter sw = new StringWriter(); @@ -225,6 +228,7 @@ public class RequestHandler { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); factory.setNamespaceAware(true); //factory.setValidating(true); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/UDDIInquiryService.java ---------------------------------------------------------------------- diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/UDDIInquiryService.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/UDDIInquiryService.java index f0cf125..673c849 100644 --- a/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/UDDIInquiryService.java +++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/transport/wrapper/UDDIInquiryService.java @@ -19,6 +19,7 @@ package org.apache.juddi.v3.client.transport.wrapper; import java.io.ByteArrayInputStream; import java.io.StringWriter; import java.util.HashMap; +import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.transform.Transformer; @@ -117,6 +118,7 @@ public class UDDIInquiryService { public String inquire(UDDIInquiryPortType inquiry, String request) throws Exception { java.io.InputStream sbis = new ByteArrayInputStream(request.getBytes()); javax.xml.parsers.DocumentBuilderFactory dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance(); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); dbf.setNamespaceAware(true); dbf.setValidating(false); DocumentBuilder db = dbf.newDocumentBuilder(); @@ -138,7 +140,11 @@ public class UDDIInquiryService { Node n = requestHandler.invoke(reqElem); StringWriter sw = new StringWriter(); - Transformer t = TransformerFactory.newInstance().newTransformer(); + TransformerFactory factory = TransformerFactory.newInstance(); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer t = factory.newTransformer(); + t.transform(new DOMSource(n), new StreamResult(sw)); return sw.toString(); } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-core/src/main/java/org/apache/juddi/config/Install.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/config/Install.java b/juddi-core/src/main/java/org/apache/juddi/config/Install.java index f8cfef0..363f26b 100644 --- a/juddi-core/src/main/java/org/apache/juddi/config/Install.java +++ b/juddi-core/src/main/java/org/apache/juddi/config/Install.java @@ -32,6 +32,8 @@ import java.util.StringTokenizer; import java.util.UUID; import java.util.jar.JarEntry; import java.util.jar.JarFile; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; @@ -40,6 +42,9 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; import javax.xml.transform.stream.StreamSource; import org.apache.commons.configuration.Configuration; @@ -56,6 +61,7 @@ import org.apache.juddi.mapping.MappingModelToApi; import org.apache.juddi.model.ReplicationConfiguration; import org.apache.juddi.model.UddiEntityPublisher; import org.apache.juddi.replication.ReplicationNotifier; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.apache.juddi.v3.error.ErrorMessage; import org.apache.juddi.v3.error.FatalErrorException; import org.apache.juddi.v3.error.InvalidKeyPassedException; @@ -90,7 +96,7 @@ public class Install { public static final String FILE_REPLICATION_CONFIG = "_replicationConfiguration.xml"; public static final Log log = LogFactory.getLog(Install.class); - protected static void install(Configuration config) throws JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException { + protected static void install(Configuration config) throws JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException, XMLStreamException { EntityManager em = PersistenceManager.getEntityManager(); EntityTransaction tx = em.getTransaction(); @@ -166,7 +172,11 @@ public class Install { log.error(ie.getMessage(), ie); tx.rollback(); throw ie; - } finally { + } catch (XMLStreamException ex) { + log.error(ex.getMessage(), ex); + tx.rollback(); + throw ex; + } finally { if (tx.isActive()) { tx.rollback(); } @@ -650,10 +660,13 @@ public class Install { } log.debug("inserting: " + xml.toString()); StringReader reader = new StringReader(xml.toString()); - return JAXB.unmarshal(reader, outputtype); + + Object obj= XmlUtils.unmarshal(reader, outputtype); + reader.close(); + return obj; } - private static Object buildInstallEntity(final String fileName, String packageName, Configuration config) throws JAXBException, IOException, ConfigurationException { + private static Object buildInstallEntity(final String fileName, String packageName, Configuration config) throws JAXBException, IOException, ConfigurationException, XMLStreamException { InputStream resourceStream = null; // First try the custom install directory @@ -687,9 +700,8 @@ public class Install { log.debug("inserting: " + xml.toString()); StringReader reader = new StringReader(xml.toString()); - JAXBContext jc = JAXBContext.newInstance(packageName); - Unmarshaller unmarshaller = jc.createUnmarshaller(); - Object obj = ((JAXBElement<?>) unmarshaller.unmarshal(new StreamSource(reader))).getValue(); + Object obj= XmlUtils.unmarshal(reader, packageName); + reader.close(); return obj; } @@ -733,7 +745,7 @@ public class Install { * @throws ConfigurationException */ public static void installSaveTModel(EntityManager em, String fileName, UddiEntityPublisher publisher, String nodeId, Configuration config) - throws JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException { + throws JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException, XMLStreamException { SaveTModel apiSaveTModel = (SaveTModel) buildInstallEntity(fileName, "org.uddi.api_v3", config); if (apiSaveTModel != null) { @@ -754,7 +766,7 @@ public class Install { * @throws ConfigurationException */ public static UddiEntityPublisher installPublisher(EntityManager em, String fileName, Configuration config) - throws JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException { + throws JAXBException, DispositionReportFaultMessage, IOException, ConfigurationException, XMLStreamException { org.apache.juddi.api_v3.Publisher apiPub = (org.apache.juddi.api_v3.Publisher) buildInstallEntity(fileName, "org.apache.juddi.api_v3", config); if (apiPub == null) { http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java index ef5e3b5..24bb674 100644 --- a/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java +++ b/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java @@ -63,6 +63,7 @@ import org.apache.juddi.model.ReplicationConfigurationNode; import org.apache.juddi.model.Signature; import org.apache.juddi.model.SignatureTransformDataValue; import org.apache.juddi.subscription.TypeConvertor; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.apache.juddi.v3.error.ErrorMessage; import org.apache.juddi.v3.error.FatalErrorException; import org.uddi.api_v3.BusinessEntity; @@ -1205,9 +1206,11 @@ public class MappingModelToApi { transformObject = xformBytes; } else if (type.equals(Element.class.getCanonicalName())) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setNamespaceAware(true); - dbf.setXIncludeAware(true); - try { + try { + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + dbf.setNamespaceAware(true); + dbf.setXIncludeAware(true); + DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new ByteArrayInputStream(xformBytes)); transformObject = doc.getDocumentElement(); @@ -1348,7 +1351,7 @@ public class MappingModelToApi { } catch (UnsupportedEncodingException ex) { Logger.getLogger(MappingModelToApi.class.getName()).log(Level.SEVERE, null, ex); } - ret = JAXB.unmarshal(sr, ChangeRecord.class); + ret = (ChangeRecord) XmlUtils.unmarshal(sr, ChangeRecord.class); //secret sauce here, if this is -1, that means that the record originated at this node and needs to be populated with the databases record id if (cr.getOriginatingUSN() == null || cr.getOriginatingUSN() == -1L) { ret.setChangeID(new ChangeRecordIDType(cr.getNodeID(), cr.getId())); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-core/src/test/java/org/apache/juddi/config/InstallTest.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/test/java/org/apache/juddi/config/InstallTest.java b/juddi-core/src/test/java/org/apache/juddi/config/InstallTest.java index 02aa340..33ac1e9 100644 --- a/juddi-core/src/test/java/org/apache/juddi/config/InstallTest.java +++ b/juddi-core/src/test/java/org/apache/juddi/config/InstallTest.java @@ -24,6 +24,7 @@ import javax.xml.bind.JAXB; import java.io.InputStream; import java.io.StringWriter; import java.util.Properties; +import org.apache.juddi.v3.client.cryptor.XmlUtils; /** * @@ -58,7 +59,7 @@ public class InstallTest { System.out.println("applyReplicationTokenChanges"); InputStream fis = getClass().getClassLoader().getResourceAsStream("juddi_install_data/root_replicationConfiguration.xml"); - ReplicationConfiguration replicationCfg = JAXB.unmarshal(fis, ReplicationConfiguration.class); + ReplicationConfiguration replicationCfg = (ReplicationConfiguration) XmlUtils.unmarshal(fis, ReplicationConfiguration.class); Properties props = new Properties(); props.put(Property.JUDDI_NODE_ID, "uddi:a_custom_node"); props.put(Property.JUDDI_BASE_URL, "http://juddi.apache.org"); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureFile.java ---------------------------------------------------------------------- diff --git a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureFile.java b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureFile.java index 265ab1c..1908a21 100644 --- a/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureFile.java +++ b/juddi-examples/more-uddi-samples/src/main/java/org/apache/juddi/samples/UddiDigitalSignatureFile.java @@ -23,6 +23,7 @@ import javax.xml.bind.JAXB; import org.apache.juddi.v3.client.config.UDDIClient; import org.apache.juddi.v3.client.cryptor.DigSigUtil; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.*; /** @@ -96,7 +97,7 @@ public class UddiDigitalSignatureFile { expectedType = TModel.class; break; } - Object be = JAXB.unmarshal(fis, expectedType); + Object be = XmlUtils.unmarshal(fis, expectedType); fis.close(); fis = null; http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSigApplet2.java ---------------------------------------------------------------------- diff --git a/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSigApplet2.java b/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSigApplet2.java index cab4817..be6980d 100644 --- a/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSigApplet2.java +++ b/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSigApplet2.java @@ -32,6 +32,7 @@ import javax.swing.JOptionPane; import javax.xml.bind.JAXB; import netscape.javascript.JSObject; import org.apache.juddi.v3.client.cryptor.DigSigUtil; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.BindingTemplate; import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.BusinessService; @@ -490,28 +491,28 @@ public class XmlSigApplet2 extends java.applet.Applet { if (objecttype.equalsIgnoreCase("business")) { try { StringReader sr = new StringReader(xml.trim()); - j = (BusinessEntity) JAXB.unmarshal(sr, BusinessEntity.class); + j = (BusinessEntity) XmlUtils.unmarshal(sr, BusinessEntity.class); } catch (Exception ex) { } } if (objecttype.equalsIgnoreCase("service")) { try { StringReader sr = new StringReader(xml.trim()); - j = (BusinessService) JAXB.unmarshal(sr, BusinessService.class); + j = (BusinessService) XmlUtils.unmarshal(sr, BusinessService.class); } catch (Exception ex) { } } if (objecttype.equalsIgnoreCase("bindingTemplate")) { try { StringReader sr = new StringReader(xml.trim()); - j = (BindingTemplate) JAXB.unmarshal(sr, BindingTemplate.class); + j = (BindingTemplate) XmlUtils.unmarshal(sr, BindingTemplate.class); } catch (Exception ex) { } } if (objecttype.equalsIgnoreCase("tmodel")) { try { StringReader sr = new StringReader(xml.trim()); - j = (TModel) JAXB.unmarshal(sr, TModel.class); + j = (TModel) XmlUtils.unmarshal(sr, TModel.class); } catch (Exception ex) { } } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSignatureApplet.java ---------------------------------------------------------------------- diff --git a/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSignatureApplet.java b/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSignatureApplet.java index f374e6f..a0fd99e 100644 --- a/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSignatureApplet.java +++ b/juddi-gui-dsig/src/main/java/org/apache/juddi/gui/dsig/XmlSignatureApplet.java @@ -58,6 +58,7 @@ import netscape.javascript.JSObject; //import netscape.javascript.JSObject; import org.apache.juddi.v3.client.cryptor.DigSigUtil; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.BindingTemplate; import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.BusinessService; @@ -127,6 +128,7 @@ public class XmlSignatureApplet extends java.applet.Applet { private static Document stringToDom(String xmlSource) throws SAXException, ParserConfigurationException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); DocumentBuilder builder = factory.newDocumentBuilder(); return builder.parse(new InputSource(new StringReader(xmlSource))); } @@ -341,25 +343,25 @@ public class XmlSignatureApplet extends java.applet.Applet { StringReader sr = new StringReader(xml); if (objecttype.equalsIgnoreCase("business")) { try { - j = (BusinessEntity) JAXB.unmarshal(sr, BusinessEntity.class); + j = (BusinessEntity) XmlUtils.unmarshal(sr, BusinessEntity.class); } catch (Exception ex) { } } if (objecttype.equalsIgnoreCase("service")) { try { - j = (BusinessService) JAXB.unmarshal(sr, BusinessService.class); + j = (BusinessService) XmlUtils.unmarshal(sr, BusinessService.class); } catch (Exception ex) { } } if (objecttype.equalsIgnoreCase("binding")) { try { - j = (BindingTemplate) JAXB.unmarshal(sr, BindingTemplate.class); + j = (BindingTemplate) XmlUtils.unmarshal(sr, BindingTemplate.class); } catch (Exception ex) { } } if (objecttype.equalsIgnoreCase("tmodel")) { try { - j = (TModel) JAXB.unmarshal(sr, TModel.class); + j = (TModel) XmlUtils.unmarshal(sr, TModel.class); } catch (Exception ex) { } } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UDDIRequestsAsXML.java ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UDDIRequestsAsXML.java b/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UDDIRequestsAsXML.java index 5e46cc6..5301d29 100644 --- a/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UDDIRequestsAsXML.java +++ b/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UDDIRequestsAsXML.java @@ -17,12 +17,16 @@ package org.apache.juddi.webconsole.hub; import java.io.StringReader; import java.io.StringWriter; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.xml.XMLConstants; import javax.xml.bind.JAXB; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.AddPublisherAssertions; import org.uddi.api_v3.DeleteBinding; import org.uddi.api_v3.DeleteBusiness; @@ -63,21 +67,25 @@ import org.uddi.sub_v3.SaveSubscription; */ public class UDDIRequestsAsXML { - private static String PrettyPrintXML(String input) { + private static String prettyPrintXML(String input) { if (input == null || input.length() == 0) { return ""; } try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - //initialize StreamResult with File object to save to file StreamResult result = new StreamResult(new StringWriter()); StreamSource source = new StreamSource(new StringReader(input.trim())); transformer.transform(source, result); String xmlString = result.getWriter().toString(); return (xmlString); } catch (Exception ex) { + Logger.getLogger(UDDIRequestsAsXML.class.getName()).log(Level.WARNING, null, ex); } return null; } @@ -114,7 +122,7 @@ public class UDDIRequestsAsXML { if (method.equalsIgnoreCase("getTModelDetail")) { JAXB.marshal(new GetTModelDetail(), sw); } - return PrettyPrintXML(sw.toString()); + return prettyPrintXML(sw.toString()); } public static String getPublish(String method) { @@ -161,7 +169,7 @@ public class UDDIRequestsAsXML { if (method.equalsIgnoreCase("setPublisherAssertions")) { JAXB.marshal(new SetPublisherAssertions(), sw); } - return PrettyPrintXML(sw.toString()); + return prettyPrintXML(sw.toString()); } public static String getCustody(String method) { @@ -175,7 +183,7 @@ public class UDDIRequestsAsXML { if (method.equalsIgnoreCase("transferEntities")) { JAXB.marshal(new TransferEntities(), sw); } - return PrettyPrintXML(sw.toString()); + return prettyPrintXML(sw.toString()); } public static String getSubscription(String method) { @@ -192,7 +200,7 @@ public class UDDIRequestsAsXML { if (method.equalsIgnoreCase("saveSubscription")) { JAXB.marshal(new SaveSubscription(), sw); } - return PrettyPrintXML(sw.toString()); + return prettyPrintXML(sw.toString()); } public static final String custody = "custody"; public static final String inquiry = "inquiry"; @@ -219,34 +227,34 @@ public class UDDIRequestsAsXML { private static Object getObjectInquiry(String method, String content) { StringReader sr = new StringReader(content); if (method.equalsIgnoreCase("findBinding")) { - return JAXB.unmarshal(sr, FindBinding.class); + return JAXBunmarshal(sr, FindBinding.class); } if (method.equalsIgnoreCase("findBusiness")) { - return JAXB.unmarshal(sr, FindBusiness.class); + return JAXBunmarshal(sr, FindBusiness.class); } if (method.equalsIgnoreCase("findService")) { - return JAXB.unmarshal(sr, FindService.class); + return JAXBunmarshal(sr, FindService.class); } if (method.equalsIgnoreCase("findRelatedBusines")) { - return JAXB.unmarshal(sr, FindRelatedBusinesses.class); + return JAXBunmarshal(sr, FindRelatedBusinesses.class); } if (method.equalsIgnoreCase("findTModel")) { - return JAXB.unmarshal(sr, FindTModel.class); + return JAXBunmarshal(sr, FindTModel.class); } if (method.equalsIgnoreCase("getBindingDetail")) { - return JAXB.unmarshal(sr, GetBindingDetail.class); + return JAXBunmarshal(sr, GetBindingDetail.class); } if (method.equalsIgnoreCase("getBusinessDetail")) { - return JAXB.unmarshal(sr, GetBusinessDetail.class); + return JAXBunmarshal(sr, GetBusinessDetail.class); } if (method.equalsIgnoreCase("getServiceDetail")) { - return JAXB.unmarshal(sr, GetServiceDetail.class); + return JAXBunmarshal(sr, GetServiceDetail.class); } if (method.equalsIgnoreCase("getOperationalInfo")) { - return JAXB.unmarshal(sr, GetOperationalInfo.class); + return JAXBunmarshal(sr, GetOperationalInfo.class); } if (method.equalsIgnoreCase("getTModelDetail")) { - return JAXB.unmarshal(sr, GetTModelDetail.class); + return JAXBunmarshal(sr, GetTModelDetail.class); } return null; } @@ -254,60 +262,64 @@ public class UDDIRequestsAsXML { private static Object getObjectPublish(String method, String content) { StringReader sr = new StringReader(content); if (method.equalsIgnoreCase("addPublisherAssertions")) { - return JAXB.unmarshal(sr, AddPublisherAssertions.class); + return JAXBunmarshal(sr, AddPublisherAssertions.class); } if (method.equalsIgnoreCase("deleteBinding")) { - return JAXB.unmarshal(sr, DeleteBinding.class); + return JAXBunmarshal(sr, DeleteBinding.class); } if (method.equalsIgnoreCase("deleteBusiness")) { - return JAXB.unmarshal(sr, DeleteBusiness.class); + return JAXBunmarshal(sr, DeleteBusiness.class); } if (method.equalsIgnoreCase("deletePublisherAssertions")) { - return JAXB.unmarshal(sr, DeletePublisherAssertions.class); + return JAXBunmarshal(sr, DeletePublisherAssertions.class); } if (method.equalsIgnoreCase("deleteService")) { - return JAXB.unmarshal(sr, DeleteService.class); + return JAXBunmarshal(sr, DeleteService.class); } if (method.equalsIgnoreCase("deleteTModel")) { - return JAXB.unmarshal(sr, DeleteTModel.class); + return JAXBunmarshal(sr, DeleteTModel.class); } if (method.equalsIgnoreCase("getAssertionStatusReport")) { - return JAXB.unmarshal(sr, GetAssertionStatusReport.class); + return JAXBunmarshal(sr, GetAssertionStatusReport.class); } if (method.equalsIgnoreCase("getPublisherAssertions")) { - return JAXB.unmarshal(sr, GetPublisherAssertions.class); + return JAXBunmarshal(sr, GetPublisherAssertions.class); } if (method.equalsIgnoreCase("getRegisteredInfo")) { - return JAXB.unmarshal(sr, GetRegisteredInfo.class); + return JAXBunmarshal(sr, GetRegisteredInfo.class); } if (method.equalsIgnoreCase("saveBinding")) { - return JAXB.unmarshal(sr, SaveBinding.class); + return JAXBunmarshal(sr, SaveBinding.class); } if (method.equalsIgnoreCase("saveBusiness")) { - return JAXB.unmarshal(sr, SaveBusiness.class); + return JAXBunmarshal(sr, SaveBusiness.class); } if (method.equalsIgnoreCase("saveTModel")) { - return JAXB.unmarshal(sr, SaveTModel.class); + return JAXBunmarshal(sr, SaveTModel.class); } if (method.equalsIgnoreCase("saveService")) { - return JAXB.unmarshal(sr, SaveService.class); + return JAXBunmarshal(sr, SaveService.class); } if (method.equalsIgnoreCase("setPublisherAssertions")) { - return JAXB.unmarshal(sr, SetPublisherAssertions.class); + return JAXBunmarshal(sr, SetPublisherAssertions.class); } return null; } + + private static Object JAXBunmarshal(StringReader content, Class clazz) { + return XmlUtils.unmarshal(content, clazz); + } private static Object getObjectCustody(String method, String content) { StringReader sr = new StringReader(content); if (method.equalsIgnoreCase("discardTransferToken")) { - return JAXB.unmarshal(sr, SetPublisherAssertions.class); + return JAXBunmarshal(sr, SetPublisherAssertions.class); } if (method.equalsIgnoreCase("getTransferToken")) { - return JAXB.unmarshal(sr, SetPublisherAssertions.class); + return JAXBunmarshal(sr, SetPublisherAssertions.class); } if (method.equalsIgnoreCase("transferEntities")) { - return JAXB.unmarshal(sr, SetPublisherAssertions.class); + return JAXBunmarshal(sr, SetPublisherAssertions.class); } return null; } @@ -315,16 +327,16 @@ public class UDDIRequestsAsXML { private static Object getObjectSubscription(String method, String content) { StringReader sr = new StringReader(content); if (method.equalsIgnoreCase("deleteSubscription")) { - return JAXB.unmarshal(sr, DeleteSubscription.class); + return JAXBunmarshal(sr, DeleteSubscription.class); } if (method.equalsIgnoreCase("getSubscriptionResults")) { - return JAXB.unmarshal(sr, GetSubscriptionResults.class); + return JAXBunmarshal(sr, GetSubscriptionResults.class); } if (method.equalsIgnoreCase("getSubscriptions")) { - return JAXB.unmarshal(sr, GetSubscriptions.class); + return JAXBunmarshal(sr, GetSubscriptions.class); } if (method.equalsIgnoreCase("saveSubscription")) { - return JAXB.unmarshal(sr, SaveSubscription.class); + return JAXBunmarshal(sr, SaveSubscription.class); } return null; } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UddiHub.java ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UddiHub.java b/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UddiHub.java index c76a7d1..3c62af5 100644 --- a/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UddiHub.java +++ b/juddi-gui/src/main/java/org/apache/juddi/webconsole/hub/UddiHub.java @@ -56,6 +56,7 @@ import org.apache.juddi.v3.client.UDDIConstants; import org.apache.juddi.v3.client.config.ClientConfig; import org.apache.juddi.v3.client.config.UDDIClient; import org.apache.juddi.v3.client.config.UDDINode; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.apache.juddi.v3.client.transport.Transport; import org.apache.juddi.webconsole.AES; import org.apache.juddi.webconsole.PostBackConstants; @@ -3186,7 +3187,7 @@ public class UddiHub implements Serializable { public String DiscardToken(String tokenxml) { DiscardTransferToken r = new DiscardTransferToken(); r.setAuthInfo(GetToken()); - r.setTransferToken(JAXB.unmarshal(new StringReader(tokenxml), TransferToken.class)); + r.setTransferToken((TransferToken) XmlUtils.unmarshal(new StringReader(tokenxml), TransferToken.class)); try { try { @@ -3220,9 +3221,9 @@ public class UddiHub implements Serializable { TransferEntities te = new TransferEntities(); te.setAuthInfo(GetToken()); StringReader sr = new StringReader(tokenXML.trim()); - te.setTransferToken(JAXB.unmarshal(sr, TransferToken.class)); + te.setTransferToken((TransferToken) XmlUtils.unmarshal(sr, TransferToken.class)); sr = new StringReader(keyBagXML.trim()); - te.setKeyBag(JAXB.unmarshal(sr, org.uddi.custody_v3.KeyBag.class)); + te.setKeyBag((org.uddi.custody_v3.KeyBag) XmlUtils.unmarshal(sr, org.uddi.custody_v3.KeyBag.class)); try { custody.transferEntities(te); @@ -3869,13 +3870,14 @@ public class UddiHub implements Serializable { * @return duration */ public long GetAutoLogoutDuration() { - String val = clientConfig.getConfiguration().getString(PROP_AUTO_LOGOUT_TIMER); - if (val == null) { - return 15 * 60 * 1000; - } + try { - return Long.parseLong(val); - } catch (Exception ex) { + String val = clientConfig.getConfiguration().getString(PROP_AUTO_LOGOUT_TIMER); + if (val == null) { + return 15 * 60 * 1000; + } + return Long.parseLong(val); + } catch (Throwable ex) { log.warn("unable to parse the value for " + PROP_AUTO_LOGOUT_TIMER + " in uddi.xml, defaulting to 15 minutes", ex); } return 15 * 60 * 1000; @@ -3889,7 +3891,12 @@ public class UddiHub implements Serializable { * @return true/false */ public boolean isAdminLocalhostOnly() { + try{ return clientConfig.getConfiguration().getBoolean(PROP_ADMIN_LOCALHOST_ONLY, true); + }catch (Throwable ex) { + log.warn("unable to parse the value for " + PROP_ADMIN_LOCALHOST_ONLY + " in uddi.xml, defaulting to 15 minutes", ex); + } + return true; } public String SaveBindingTemplate(HttpServletRequest request) { http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/webapp/ajax/abortTransferToken.jsp ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/webapp/ajax/abortTransferToken.jsp b/juddi-gui/src/main/webapp/ajax/abortTransferToken.jsp index b29f145..2c03c30 100644 --- a/juddi-gui/src/main/webapp/ajax/abortTransferToken.jsp +++ b/juddi-gui/src/main/webapp/ajax/abortTransferToken.jsp @@ -38,15 +38,19 @@ UddiHub x = UddiHub.getInstance(application, session); + try{ + String msg = x.DiscardToken(tokenxml); + if (msg != null) { + if (msg.contains(ResourceLoader.GetResource(session, "errors.generic"))) + response.setStatus(406); + out.write(msg); + } else { + out.write(ResourceLoader.GetResource(session, "actions.canceled")); - String msg = x.DiscardToken(tokenxml); - if (msg != null) { - if (msg.contains(ResourceLoader.GetResource(session, "errors.generic"))) - response.setStatus(406); - out.write(msg); - } else { - out.write(ResourceLoader.GetResource(session, "actions.canceled")); - + } + } catch (Exception ex) { + response.sendError(400); + return; } } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/webapp/ajax/advanced.jsp ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/webapp/ajax/advanced.jsp b/juddi-gui/src/main/webapp/ajax/advanced.jsp index d870c55..ffd6e9d 100644 --- a/juddi-gui/src/main/webapp/ajax/advanced.jsp +++ b/juddi-gui/src/main/webapp/ajax/advanced.jsp @@ -49,10 +49,15 @@ } } else if (action.equalsIgnoreCase("senddata")) { Object j=UDDIRequestsAsXML.getObject(service, method, request.getParameter("content")); - String msg=(x.SendAdvancedQuery(j, service, method)); - if (msg.contains(ResourceLoader.GetResource(session, "errors.generic"))) - response.setStatus(406); - out.write(msg); + if (j!=null){ + String msg=(x.SendAdvancedQuery(j, service, method)); + if (msg.contains(ResourceLoader.GetResource(session, "errors.generic"))) + response.setStatus(406); + out.write(msg); + } else { + out.write("Unrecognized xml"); + response.setStatus(406); + } } } http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/webapp/ajax/getCert.jsp ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/webapp/ajax/getCert.jsp b/juddi-gui/src/main/webapp/ajax/getCert.jsp index 75f1665..1fc8daf 100644 --- a/juddi-gui/src/main/webapp/ajax/getCert.jsp +++ b/juddi-gui/src/main/webapp/ajax/getCert.jsp @@ -29,13 +29,13 @@ UddiHub x = UddiHub.getInstance(application, session); String data = null; - if (type.equalsIgnoreCase("business")) { + if ("business".equalsIgnoreCase(type)) { data = (x.GetCertificate(UddiHub.FindType.Business, id, index)); - } else if (type.equalsIgnoreCase("service")) { + } else if ("service".equalsIgnoreCase(type)) { data = (x.GetCertificate(UddiHub.FindType.Service, id, index)); - } else if (type.equalsIgnoreCase("bindingTemplate")) { + } else if ("bindingTemplate".equalsIgnoreCase(type)) { data = (x.GetCertificate(UddiHub.FindType.BindingTemplate, id, index)); - } else if (type.equalsIgnoreCase("tModel")) { + } else if ("tModel".equalsIgnoreCase(type)) { data = (x.GetCertificate(UddiHub.FindType.tModel, id, index)); } if (data != null && !data.startsWith("Error")) { http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/webapp/ajax/saveFromXML.jsp ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/webapp/ajax/saveFromXML.jsp b/juddi-gui/src/main/webapp/ajax/saveFromXML.jsp index 9a05eb9..15de229 100644 --- a/juddi-gui/src/main/webapp/ajax/saveFromXML.jsp +++ b/juddi-gui/src/main/webapp/ajax/saveFromXML.jsp @@ -17,7 +17,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ ---%><%@page import="java.util.concurrent.atomic.AtomicReference"%> +--%><%@page import="org.apache.juddi.v3.client.cryptor.XmlUtils"%> +<%@page import="java.util.concurrent.atomic.AtomicReference"%> <%@page import="java.util.Iterator"%> <%@page import="java.util.Set"%> <%@page import="java.util.Set"%> @@ -59,16 +60,16 @@ StringReader sr = new StringReader(signedxml); String msg = null; if (type.equalsIgnoreCase("business")) { - BusinessEntity be = (BusinessEntity) JAXB.unmarshal(sr, BusinessEntity.class); + BusinessEntity be = (BusinessEntity) XmlUtils.unmarshal(sr, BusinessEntity.class); msg = (x.SaveBusinessDetails(be)); } else if (type.equalsIgnoreCase("service")) { - BusinessService be = (BusinessService) JAXB.unmarshal(sr, BusinessService.class); + BusinessService be = (BusinessService) XmlUtils.unmarshal(sr, BusinessService.class); msg = (x.SaveServiceDetails(be)); } else if (type.equalsIgnoreCase("bindingTemplate")) { - BindingTemplate be = (BindingTemplate) JAXB.unmarshal(sr, BindingTemplate.class); + BindingTemplate be = (BindingTemplate) XmlUtils.unmarshal(sr, BindingTemplate.class); msg = (x.SaveBindingTemplate(be)); } else if (type.equalsIgnoreCase("tModel")) { - TModel be = (TModel) JAXB.unmarshal(sr, TModel.class); + TModel be = (TModel) XmlUtils.unmarshal(sr, TModel.class); msg = (x.SaveTModel(be)); } else { msg = (ResourceLoader.GetResource(session, "errors.unknownentity")); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddi-gui/src/main/webapp/ajax/search.jsp ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/webapp/ajax/search.jsp b/juddi-gui/src/main/webapp/ajax/search.jsp index eed035d..790837a 100644 --- a/juddi-gui/src/main/webapp/ajax/search.jsp +++ b/juddi-gui/src/main/webapp/ajax/search.jsp @@ -85,7 +85,7 @@ ok = false; } if (!ok) { - response.sendRedirect("../index.jsp"); + response.sendError(400); } UddiHub x = UddiHub.getInstance(application, session); @@ -94,7 +94,7 @@ response.setStatus(406); out.write(msg); } else { - response.sendRedirect("../index.jsp"); + response.sendError(400); } %> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java ---------------------------------------------------------------------- diff --git a/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java b/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java index acfa03c..3b4083b 100644 --- a/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java +++ b/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java @@ -20,6 +20,7 @@ import java.io.StringWriter; import java.util.GregorianCalendar; import java.util.logging.Level; import java.util.logging.Logger; +import javax.xml.XMLConstants; import javax.xml.bind.JAXB; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; @@ -41,6 +42,7 @@ import org.apache.juddi.api_v3.SyncSubscription; import org.apache.juddi.config.AppConfig; import org.apache.juddi.config.Property; import org.apache.juddi.v3.client.UDDIConstants; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.Contact; import org.uddi.api_v3.FindBusiness; @@ -70,7 +72,10 @@ public class JUDDIRequestsAsXML { return ""; } try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); //initialize StreamResult with File object to save to file @@ -182,17 +187,17 @@ public class JUDDIRequestsAsXML { StringReader sr = new StringReader(content); if (method.equalsIgnoreCase("save_ClientSubscriptionInfo")) { - return JAXB.unmarshal(sr, SaveClientSubscriptionInfo.class); + return XmlUtils.unmarshal(sr, SaveClientSubscriptionInfo.class); } if (method.equalsIgnoreCase("invoke_SyncSubscription")) { - return JAXB.unmarshal(sr, SyncSubscription.class); + return XmlUtils.unmarshal(sr, SyncSubscription.class); } if (method.equalsIgnoreCase("admin_SaveBusiness")) { - return JAXB.unmarshal(sr, AdminSaveBusiness.class); + return XmlUtils.unmarshal(sr, AdminSaveBusiness.class); } if (method.equalsIgnoreCase("admin_SaveTModel")) { //System.out.println(content); - return JAXB.unmarshal(sr, AdminSaveTModel.class); + return XmlUtils.unmarshal(sr, AdminSaveTModel.class); } if (method.equalsIgnoreCase("admin_SaveSubscription")) { http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java ---------------------------------------------------------------------- diff --git a/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java b/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java index 7edd3a6..0b4180b 100644 --- a/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java +++ b/juddiv3-war-repl/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java @@ -34,6 +34,7 @@ import javax.persistence.Query; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import javax.xml.XMLConstants; import javax.xml.bind.JAXB; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.parsers.DocumentBuilder; @@ -97,6 +98,7 @@ import org.apache.juddi.config.PersistenceManager; import org.apache.juddi.config.Property; import org.apache.juddi.model.BindingTemplate; import org.apache.juddi.subscription.notify.SMTPNotifier; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.AuthToken; import org.uddi.api_v3.BusinessDetail; import org.uddi.api_v3.BusinessEntity; @@ -973,12 +975,16 @@ public class UddiAdminHub { */ private String PrettyPrintJaxbObject(Object jaxb) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); DocumentBuilder db = dbf.newDocumentBuilder(); StringWriter sw = new StringWriter(); JAXB.marshal(jaxb, sw); InputSource is = new InputSource(new StringReader(sw.toString())); - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //initialize StreamResult with File object to save to file StreamResult result = new StreamResult(new StringWriter()); @@ -1200,7 +1206,7 @@ public class UddiAdminHub { SyncSubscriptionDetail d = null; try { StringReader sr = new StringReader(parameters.getParameter("invoke_SyncSubscriptionXML").trim()); - sb = (JAXB.unmarshal(sr, SyncSubscription.class)); + sb = (SyncSubscription) (XmlUtils.unmarshal(sr, SyncSubscription.class)); sb.setAuthInfo(GetToken()); d = juddi.invokeSyncSubscription(sb); } catch (Exception ex) { @@ -1232,7 +1238,10 @@ public class UddiAdminHub { private static String PrettyPrintXML(String input) { try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //initialize StreamResult with File object to save to file StreamResult result = new StreamResult(new StringWriter()); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java ---------------------------------------------------------------------- diff --git a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java index d05565b..e1eeb3e 100644 --- a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java +++ b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/JUDDIRequestsAsXML.java @@ -20,6 +20,7 @@ import java.io.StringWriter; import java.util.GregorianCalendar; import java.util.logging.Level; import java.util.logging.Logger; +import javax.xml.XMLConstants; import javax.xml.bind.JAXB; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; @@ -41,6 +42,7 @@ import org.apache.juddi.api_v3.SyncSubscription; import org.apache.juddi.config.AppConfig; import org.apache.juddi.config.Property; import org.apache.juddi.v3.client.UDDIConstants; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.uddi.api_v3.BusinessEntity; import org.uddi.api_v3.Contact; import org.uddi.api_v3.FindBusiness; @@ -70,7 +72,10 @@ public class JUDDIRequestsAsXML { return ""; } try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); //initialize StreamResult with File object to save to file @@ -182,25 +187,25 @@ public class JUDDIRequestsAsXML { StringReader sr = new StringReader(content); if (method.equalsIgnoreCase("save_ClientSubscriptionInfo")) { - return JAXB.unmarshal(sr, SaveClientSubscriptionInfo.class); + return XmlUtils.unmarshal(sr, SaveClientSubscriptionInfo.class); } if (method.equalsIgnoreCase("invoke_SyncSubscription")) { - return JAXB.unmarshal(sr, SyncSubscription.class); + return XmlUtils.unmarshal(sr, SyncSubscription.class); } if (method.equalsIgnoreCase("admin_SaveBusiness")) { - return JAXB.unmarshal(sr, AdminSaveBusiness.class); + return XmlUtils.unmarshal(sr, AdminSaveBusiness.class); } if (method.equalsIgnoreCase("admin_SaveTModel")) { //System.out.println(content); - return JAXB.unmarshal(sr, AdminSaveTModel.class); + return XmlUtils.unmarshal(sr, AdminSaveTModel.class); } if (method.equalsIgnoreCase("admin_SaveSubscription")) { - return JAXB.unmarshal(sr, AdminSaveSubscriptionRequest.class); + return XmlUtils.unmarshal(sr, AdminSaveSubscriptionRequest.class); } if (method.equalsIgnoreCase("set_ReplicationNodes")) { - return JAXB.unmarshal(sr, ReplicationConfiguration.class); + return XmlUtils.unmarshal(sr, ReplicationConfiguration.class); } return null; http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java ---------------------------------------------------------------------- diff --git a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java index 9a578e4..aea74a5 100644 --- a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java +++ b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java @@ -32,6 +32,7 @@ import javax.persistence.Query; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import javax.xml.XMLConstants; import javax.xml.bind.JAXB; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.parsers.DocumentBuilder; @@ -971,12 +972,16 @@ public class UddiAdminHub { */ private String PrettyPrintJaxbObject(Object jaxb) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); DocumentBuilder db = dbf.newDocumentBuilder(); StringWriter sw = new StringWriter(); JAXB.marshal(jaxb, sw); InputSource is = new InputSource(new StringReader(sw.toString())); - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //initialize StreamResult with File object to save to file StreamResult result = new StreamResult(new StringWriter()); @@ -1230,7 +1235,10 @@ public class UddiAdminHub { private static String PrettyPrintXML(String input) { try { - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //initialize StreamResult with File object to save to file StreamResult result = new StreamResult(new StringWriter()); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/uddi-migration-tool/src/main/java/org/apache/juddi/v3/migration/tool/Import.java ---------------------------------------------------------------------- diff --git a/uddi-migration-tool/src/main/java/org/apache/juddi/v3/migration/tool/Import.java b/uddi-migration-tool/src/main/java/org/apache/juddi/v3/migration/tool/Import.java index 718576f..f78a1ac 100644 --- a/uddi-migration-tool/src/main/java/org/apache/juddi/v3/migration/tool/Import.java +++ b/uddi-migration-tool/src/main/java/org/apache/juddi/v3/migration/tool/Import.java @@ -28,6 +28,7 @@ import org.apache.juddi.api_v3.SavePublisher; import org.apache.juddi.v3.client.config.UDDIClerk; import org.apache.juddi.v3.client.config.UDDIClient; import org.apache.juddi.v3.client.config.UDDIClientContainer; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.apache.juddi.v3.client.transport.Transport; import org.apache.juddi.v3_service.JUDDIApiPortType; import org.uddi.api_v3.BusinessDetail; @@ -149,7 +150,7 @@ public class Import { private void ImportTmodels() throws Exception { - SaveTModel stm = JAXB.unmarshal(new File(tmodelfile), SaveTModel.class); + SaveTModel stm = (SaveTModel) XmlUtils.unmarshal(new File(tmodelfile), SaveTModel.class); System.out.println(); System.out.println("Attempting to save " + stm.getTModel().size() + " tModels"); if (stripSig) { @@ -193,7 +194,7 @@ public class Import { } private void ImportBusiness() throws Exception { - SaveBusiness stm = JAXB.unmarshal(new File(businessfile), SaveBusiness.class); + SaveBusiness stm = (SaveBusiness) XmlUtils.unmarshal(new File(businessfile), SaveBusiness.class); if (stripSig) { int x=0; for (int i = 0; i < stm.getBusinessEntity().size(); i++) { @@ -272,7 +273,7 @@ public class Import { private void ImportPublishers() throws Exception { - SavePublisher stm = JAXB.unmarshal(new File(publishersfile), SavePublisher.class); + SavePublisher stm = (SavePublisher) XmlUtils.unmarshal(new File(publishersfile), SavePublisher.class); if (safemode) { for (int i = 0; i < stm.getPublisher().size(); i++) { if (!PublisherExists(stm.getPublisher().get(i).getAuthorizedName(), token)) { http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java ---------------------------------------------------------------------- diff --git a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java index e4a8804..a70d520 100644 --- a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java +++ b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java @@ -30,6 +30,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import javax.xml.XMLConstants; import javax.xml.crypto.dsig.CanonicalizationMethod; import javax.xml.crypto.dsig.DigestMethod; @@ -168,11 +169,14 @@ public class TckSigningUtil { public static void serializeNode(Node node, String filename) { try { - Transformer xform = TransformerFactory.newInstance().newTransformer(); + TransformerFactory transFactory = TransformerFactory.newInstance(); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); + transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, ""); + Transformer transformer = transFactory.newTransformer(); DOMSource domSrc = new DOMSource(node); FileOutputStream fos = new FileOutputStream(filename); StreamResult streamResult = new StreamResult(fos); - xform.transform(domSrc, streamResult); + transformer.transform(domSrc, streamResult); fos.close(); } catch (Exception e) { throw new RuntimeException(e); http://git-wip-us.apache.org/repos/asf/juddi/blob/248b39c7/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_160_RESTIntergrationTest.java ---------------------------------------------------------------------- diff --git a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_160_RESTIntergrationTest.java b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_160_RESTIntergrationTest.java index 2c01601..7c15263 100644 --- a/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_160_RESTIntergrationTest.java +++ b/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_160_RESTIntergrationTest.java @@ -28,6 +28,7 @@ import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.juddi.v3.client.UDDIConstants; import org.apache.juddi.v3.client.config.UDDIClient; +import org.apache.juddi.v3.client.cryptor.XmlUtils; import org.apache.juddi.v3.client.transport.Transport; import org.junit.AfterClass; import org.junit.Assert; @@ -126,7 +127,7 @@ public class UDDI_160_RESTIntergrationTest { Assert.assertTrue(response.getStatusLine().getStatusCode() == 200); logger.info("Response content: " + response.getEntity().getContent()); - BusinessEntity unmarshal = JAXB.unmarshal(response.getEntity().getContent(), BusinessEntity.class); + BusinessEntity unmarshal = (BusinessEntity) XmlUtils.unmarshal(response.getEntity().getContent(), BusinessEntity.class); client.getConnectionManager().shutdown(); Assert.assertNotNull(unmarshal); Assert.assertEquals(unmarshal.getBusinessKey(), findBusiness.getBusinessInfos().getBusinessInfo().get(0).getBusinessKey()); @@ -159,7 +160,7 @@ public class UDDI_160_RESTIntergrationTest { Assert.assertTrue(response.getStatusLine().getStatusCode() == 200); logger.info("Response content: " + response.getEntity().getContent()); - TModel unmarshal = JAXB.unmarshal(response.getEntity().getContent(), TModel.class); + TModel unmarshal = (TModel) XmlUtils.unmarshal(response.getEntity().getContent(), TModel.class); client.getConnectionManager().shutdown(); Assert.assertNotNull(unmarshal); Assert.assertEquals(unmarshal.getTModelKey(), findTModel.getTModelInfos().getTModelInfo().get(0).getTModelKey()); @@ -193,7 +194,7 @@ public class UDDI_160_RESTIntergrationTest { Assert.assertTrue(response.getStatusLine().getStatusCode() == 200); logger.info("Response content: " + response.getEntity().getContent()); - BusinessService unmarshal = JAXB.unmarshal(response.getEntity().getContent(), BusinessService.class); + BusinessService unmarshal = (BusinessService) XmlUtils.unmarshal(response.getEntity().getContent(), BusinessService.class); client.getConnectionManager().shutdown(); Assert.assertNotNull(unmarshal); Assert.assertEquals(unmarshal.getServiceKey(), findService.getServiceInfos().getServiceInfo().get(0).getServiceKey()); @@ -261,7 +262,7 @@ public class UDDI_160_RESTIntergrationTest { Assert.assertTrue(response.getStatusLine().getStatusCode() == 200); logger.info("Response content: " + response.getEntity().getContent()); - BindingTemplate unmarshal = JAXB.unmarshal(response.getEntity().getContent(), BindingTemplate.class); + BindingTemplate unmarshal = (BindingTemplate) XmlUtils.unmarshal(response.getEntity().getContent(), BindingTemplate.class); client.getConnectionManager().shutdown(); Assert.assertNotNull(unmarshal); Assert.assertEquals(unmarshal.getServiceKey(), bt.getServiceKey()); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
