Giter Site home page Giter Site logo

couchbase-capi-server's Introduction

Couchbase CAPI Server

This project implements an HTTP server capable of responding to Couchbase and CAPI requests.

Couchbase Requests supported:

  • /pools (GET)
  • /pools/default (GET)
  • /pools/default/buckets (GET)
  • /pools/default/buckets/{bucket} (GET)

CAPI Requests supported:

  • /{database} (HEAD, GET)
  • /{database}/{docid} (GET)
  • /{database}/_ensure_full_commit (POST)
  • /{database}/_revs_diff (POST)
  • /{database}/_bulk_docs (POST)

This project does not come with an actual implementation of the behaviors behind these actions. Instead two interfaces are exposed:

  • CouchbaseBehavior
  • CAPIBehavior

Users of this library will provide their own implemenations of these interfaces to deliver the desired behavior.

Building

This project is built using Maven.

mvn install 

Using

  • Implement your own CouchbaseBehavior
    public class MyCustomCouchbaseBehavior implements CouchbaseBehavior { ... }
  • Implement your own CAPIBehavior
    public class MyCustomCAPIBehavior implements CAPIBehavior { ... }
  • Create instances of #1 and #2
    CouchbaseBehavior couchbaseBehavior = new MyCustomCouchbaseBehavior();
    CAPIBehavior capiBehavior = new MyCustomCAPIBehavior();
  • Start a CAPIServer
    CAPIServer capiServer = new CAPIServer(capiBehavior, couchbaseBehavior);
    capiServer.start();

By default this will start a server bound to 0.0.0.0 on an ephemeral port. If you'd like to bind to a different interface or a particular port, there are alternate constructors available.

couchbase-capi-server's People

Contributors

bignolip avatar branor avatar dnault avatar mschoch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

couchbase-capi-server's Issues

Version tags

I noticed there are some interface changes between version 1.2.0 and 1.3.0, and specific version of this project are required for compatibility with specific Elastic Search Couchbase Plugin versions (and specific Couchbase versions). It would be very helpful to have tags on each release. Currently, if someone wants to build, for example, version 1.2.0, they have to find the version-related comment and checkout based on commit b6d9c9e, then build.

mapping of parent/child relationship from couchbase to elasticsearch

if there is a parent/child mapping in Elasticsearch how should be the elasticsearch-transport-couchbase-1.3.0 configured so that parent information is collected from couchbase documents.
Example..
want to store paragraphs of a document in couchbase and index it in ElasticSearch and maintain document name in parent field.

one thing we tried is try to set parent manually
"builder.setParent("1");" in ElasticSearchCouchbaseBehavior.java file in storeUUID function
but it fails.

Please let us know if this is possible or some configuration needs to be done

Build fails

Checked out the latest code at that time.


[INFO] Building couchbase-capi-server 1.6.2
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ couchbase-capi-server ---
[WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /opt/couchbase-capi-server/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ couchbase-capi-server ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ couchbase-capi-server ---
[WARNING] Using platform encoding (ANSI_X3.4-1968 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /opt/couchbase-capi-server/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ couchbase-capi-server ---
[WARNING] File encoding has not been set, using platform encoding ANSI_X3.4-1968, i.e. build is platform dependent!
[INFO] Compiling 3 source files to /opt/couchbase-capi-server/target/test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /opt/couchbase-capi-server/src/test/java/com/couchbase/capi/CouchbaseBehaviorTestImpl.java:[21,7] error: CouchbaseBehaviorTestImpl is not abstract and does not override abstract method getNodesServingPool(String) in CouchbaseBehavior
[ERROR] /opt/couchbase-capi-server/src/test/java/com/couchbase/capi/CouchbaseBehaviorTestImpl.java:[57,24] error: getNodesServingPool(String) in CouchbaseBehaviorTestImpl cannot implement getNodesServingPool(String) in CouchbaseBehavior
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.043 s
[INFO] Finished at: 2017-04-12T05:30:42+00:00
[INFO] Final Memory: 15M/329M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile (default-testCompile) on project couchbase-capi-server: Compilation failure: Compilation failure:
[ERROR] /opt/couchbase-capi-server/src/test/java/com/couchbase/capi/CouchbaseBehaviorTestImpl.java:[21,7] error: CouchbaseBehaviorTestImpl is not abstract and does not override abstract method getNodesServingPool(String) in CouchbaseBehavior
[ERROR] /opt/couchbase-capi-server/src/test/java/com/couchbase/capi/CouchbaseBehaviorTestImpl.java:[57,24] error: getNodesServingPool(String) in CouchbaseBehaviorTestImpl cannot implement getNodesServingPool(String) in CouchbaseBehavior
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Antiquated Jetty Version

I was wondering if CAPI could be released with a newer version of Jetty. The version used in this repo is 8.1.0.v20120127, meaning it was released by the Jetty folks in 2012. I was getting buffer overflows from Jetty while using the CB-ElasticConnector.

I made a local build a few months ago with the then-newest release of Jetty. There were some minor code changes required in the project code.

I will fork and PR this repo with the necessary changes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.