/*
* 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