/* * The Apache Software License, Version 1.1 * * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xindice" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation and was * originally based on software copyright (c) 1999-2001, The dbXML * Group, L.L.C., http://www.dbxmlgroup.com. For more * information on the Apache Software Foundation, please see * . * * $Id$ */ #ifndef XINDICE_IDL #define XINDICE_IDL module org { module apache { module xindice { module client { module corba { module db { // Content Encoding Timestamping ********************************* typedef long long Timestamp; const Timestamp STAMP_TEXT = -1; // Non-Compressed // Global Type Definitions *************************************** typedef string Name; typedef sequence Names; typedef string Value; typedef sequence Buffer; struct NamedVal { Name nam; Value val; }; typedef sequence NamedVals; struct EncodedBuffer { Timestamp stamp; // Last modified for Symbol Table Buffer sym; // Compressed Symbol Table (if any) Buffer buf; // Text or Compressed Buffer (if stamp != -1) }; typedef Buffer Key; typedef Buffer Data; exception APIException { long faultCode; string faultMessage; string exceptionMessage; }; interface FaultCodes { // Categories const long GEN = 0; // General const long OBJ = 100; // XMLObjects const long COL = 200; // Collections const long IDX = 300; // Indexes const long TRX = 400; // Transactions const long DBE = 500; // Database Engine const long QRY = 600; // Queries const long SEC = 700; // Security const long URI = 800; // URI const long JAVA = 2000; // Java // General errors 0 series const long GEN_UNKNOWN = 0; const long GEN_GENERAL_ERROR = 40; const long GEN_CRITICAL_ERROR = 70; const long GEN_FATAL_ERROR = 90; // XMLObject invocation errors 100 series const long OBJ_OBJECT_NOT_FOUND = 100; const long OBJ_METHOD_NOT_FOUND = 101; const long OBJ_NULL_RESULT = 140; const long OBJ_INVALID_RESULT = 141; const long OBJ_DUPLICATE_OBJECT = 142; const long OBJ_RUNTIME_EXCEPTION = 170; const long OBJ_CLASS_FORMAT_ERROR = 171; const long OBJ_INVALID_CONTEXT = 172; const long OBJ_CANNOT_CREATE = 173; // Collection-related errors 200 series const long COL_COLLECTION_NOT_FOUND = 200; const long COL_DOCUMENT_NOT_FOUND = 201; const long COL_DUPLICATE_COLLECTION = 240; const long COL_NULL_RESULT = 241; const long COL_NO_FILER = 242; const long COL_NO_INDEXMANAGER = 242; const long COL_DOCUMENT_MALFORMED = 243; const long COL_CANNOT_STORE = 244; const long COL_CANNOT_RETRIEVE = 245; const long COL_COLLECTION_READ_ONLY = 246; const long COL_COLLECTION_CLOSED = 247; const long COL_CANNOT_CREATE = 270; const long COL_CANNOT_DROP = 271; // Index-related errors 300 series const long IDX_VALUE_NOT_FOUND = 300; const long IDX_INDEX_NOT_FOUND = 301; const long IDX_MATCHES_NOT_FOUND = 340; const long IDX_DUPLICATE_INDEX = 341; const long IDX_NOT_SUPPORTED = 370; const long IDX_STYLE_NOT_FOUND = 371; const long IDX_CORRUPTED = 372; const long IDX_CANNOT_CREATE = 373; // Transaction-related errors 400 series const long TRX_DOC_LOCKED = 400; const long TRX_NO_CONTEXT = 440; const long TRX_NOT_ACTIVE = 441; const long TRX_NOT_SUPPORTED = 470; // Database-related errors 500 series const long DBE_NO_PARENT = 500; const long DBE_CANNOT_DROP = 570; const long DBE_CANNOT_CREATE = 571; // Query-related errors 600 series const long QRY_NULL_RESULT = 600; const long QRY_COMPILATION_ERROR = 640; const long QRY_PROCESSING_ERROR = 641; const long QRY_NOT_SUPPORTED = 670; const long QRY_STYLE_NOT_FOUND = 671; // Security-related errors 700 series const long SEC_INVALID_USER = 770; const long SEC_INVALID_GROUP = 771; const long SEC_INVALID_ACCESS = 772; const long SEC_INVALID_CREDENTIALS = 773; // URI Mapper errors 800 series const long URI_EMPTY = 800; const long URI_NULL = 801; const long URI_PARSE_ERROR = 820; // Java errors 2000 series const long JAVA_RUNTIME_ERROR = 2070; }; interface ServantManagement { void remove(); }; interface DocumentSet : ServantManagement { boolean hasMoreDocuments() raises (APIException); EncodedBuffer getNextDocument(in Timestamp stamp) raises (APIException); }; interface CollectionManager; interface DatabaseManager; interface Collection : ServantManagement { string getName() raises (APIException); string getCanonicalName() raises (APIException); CollectionManager getCollectionManager() raises (APIException); Collection getParentCollection() raises (APIException); Names listCollections() raises (APIException); Collection getCollection(in Name path) raises (APIException); string insertDocument(in Name nam, in EncodedBuffer doc) raises (APIException); void removeDocument(in string id) raises (APIException); EncodedBuffer getDocument(in string id, in Timestamp stamp) raises (APIException); void setDocument(in string id, in EncodedBuffer doc) raises (APIException); DocumentSet getDocuments() raises (APIException); Names listDocuments() raises (APIException); long getDocumentCount() raises (APIException); string createNewOID() raises (APIException); EncodedBuffer queryCollection(in string style, in Value query, in NamedVals namespaces, in Timestamp stamp) raises (APIException); EncodedBuffer queryDocument(in string style, in Value query, in NamedVals namespaces, in string id, in Timestamp stamp) raises (APIException); EncodedBuffer invokeXMLObject(in string uri) raises (APIException); }; interface CollectionManager : ServantManagement { string getName() raises (APIException); string getCanonicalName() raises (APIException); Collection createCollection(in Name path, in EncodedBuffer config) raises (APIException); void dropCollection(in Name path) raises (APIException); Names listIndexers() raises (APIException); void createIndexer(in EncodedBuffer config) raises (APIException); void dropIndexer(in Name nam) raises (APIException); Names listXMLObjects() raises (APIException); void createXMLObject(in EncodedBuffer config) raises (APIException); void dropXMLObject(in Name nam) raises (APIException); }; interface Database : ServantManagement { string getName() raises (APIException); DatabaseManager getDatabaseManager() raises (APIException); Names listCollections() raises (APIException); Collection getCollection(in Name path) raises (APIException); }; interface DatabaseManager : ServantManagement { string getName() raises (APIException); oneway void shutdown(); }; }; // db }; // corba }; // client }; // xindice }; // apache }; // org #endif // XINDICE_IDL