| /* |
| * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation from Oracle TopLink |
| package org.eclipse.persistence.internal.eis.adapters.xmlfile; |
| |
| import jakarta.resource.cci.InteractionSpec; |
| |
| import org.eclipse.persistence.oxm.NamespaceResolver; |
| import org.w3c.dom.Element; |
| |
| /** |
| * Interaction spec for XML file JCA adapter. |
| * Supports CRUD access to an XML file based on XPath and XQuery. |
| * Also supports in-memory DOM access. |
| * |
| * @author James |
| * @since OracleAS TopLink 10<i>g</i> (10.0.3) |
| */ |
| public class XMLFileInteractionSpec implements InteractionSpec { |
| protected transient NamespaceResolver namespaceResolver; |
| protected String xPath; |
| protected String xQuery; |
| protected int interactionType; |
| protected String fileName; |
| protected transient Element dom; |
| |
| /** Type constants for defining interaction type. */ |
| public static final int INSERT = 0; |
| public static final int READ = 1; |
| public static final int UPDATE = 2; |
| public static final int DELETE = 3; |
| |
| /** |
| * Default constructor. |
| */ |
| public XMLFileInteractionSpec() { |
| this.interactionType = READ; |
| } |
| |
| public XMLFileInteractionSpec(NamespaceResolver namespaceResolver) { |
| this.interactionType = READ; |
| this.namespaceResolver = namespaceResolver; |
| } |
| |
| /** |
| * Return the path to the element within the document to be accessed. |
| */ |
| public String getXPath() { |
| return xPath; |
| } |
| |
| /** |
| * Return the namespaceResolver to be used to resolve any namespace prefixes in the XPath. |
| */ |
| public NamespaceResolver getNamespaceResolver() { |
| return namespaceResolver; |
| } |
| |
| /** |
| * Return the namespaceResolver to be used to resolve any namespace prefixes in the XPath. |
| */ |
| public void setNamespaceResolver(NamespaceResolver namespaceResolver) { |
| this.namespaceResolver = namespaceResolver; |
| } |
| |
| /** |
| * Set the path to the element within the document to be accessed. |
| */ |
| public void setXPath(String xPath) { |
| this.xPath = xPath; |
| } |
| |
| /** |
| * Return the query to the element within the document to be accessed. |
| */ |
| public String getXQuery() { |
| return xQuery; |
| } |
| |
| /** |
| * Set the query to the element within the document to be accessed. |
| */ |
| public void setXQuery(String xQuery) { |
| this.xQuery = xQuery; |
| } |
| |
| /** |
| * Return the CRUD interaction type of the interaction. |
| */ |
| public int getInteractionType() { |
| return interactionType; |
| } |
| |
| /** |
| * Set the CRUD interaction type of the interaction. |
| */ |
| public void setInteractionType(int interactionType) { |
| this.interactionType = interactionType; |
| } |
| |
| /** |
| * Return the name of file to be accessed. |
| */ |
| public String getFileName() { |
| return fileName; |
| } |
| |
| /** |
| * Set the name of file to be accessed. |
| */ |
| public void setFileName(String fileName) { |
| this.fileName = fileName; |
| } |
| |
| /** |
| * Return the XML DOM element to be accessed directly. |
| * This can be used for in-memory DOM access. |
| */ |
| public Element getDOM() { |
| return dom; |
| } |
| |
| /** |
| * Set the XML DOM element to be accessed directly. |
| * This can be used for in-memory DOM access. |
| */ |
| public void setDOM(Element dom) { |
| this.dom = dom; |
| } |
| |
| @Override |
| public String toString() { |
| return "XMLFileInteractionSpec(" + getFileName() + ":" + getXQuery() + ")"; |
| } |
| } |