~zorba-coders/zorba/bug_897616

« back to all changes in this revision

Viewing changes to test/unit/thesaurus.cpp

Support for user-provided Thesauri using standard Zorba URI Resolver mechanism. Approved: Paul J. Lucas, Matthias Brantner

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
 
101
101
///////////////////////////////////////////////////////////////////////////////
102
102
 
103
 
class TestThesaurusProvider : public ThesaurusProvider {
 
103
class TestThesaurusResolver : public URLResolver {
104
104
public:
105
 
  TestThesaurusProvider( String const &uri ) : uri_( uri ) { }
 
105
  TestThesaurusResolver( String const &uri ) : uri_( uri ) { }
106
106
 
107
107
  // inherited
108
 
  Thesaurus::ptr getThesaurus( String const &uri, iso639_1::type lang ) const;
 
108
  Resource* resolveURL( String const &uri, EntityData const* );
109
109
private:
110
110
  String const uri_;
111
111
};
112
112
 
113
 
Thesaurus::ptr
114
 
TestThesaurusProvider::getThesaurus( String const &uri,
115
 
                                     iso639_1::type lang ) const {
 
113
Resource*
 
114
TestThesaurusResolver::resolveURL( String const &uri, EntityData const *ed ) {
116
115
  static TestThesaurus thesaurus;
117
 
  Thesaurus::ptr result;
118
 
  if ( uri == uri_ )
119
 
    result.reset( &thesaurus );
120
 
  return std::move( result );
 
116
  return uri == uri_ ? &thesaurus : 0;
121
117
}
122
118
 
123
119
///////////////////////////////////////////////////////////////////////////////
137
133
      "  using thesaurus at \"http://test\" \n";
138
134
 
139
135
    StaticContext_t sctx = zorba->createStaticContext();
140
 
    TestThesaurusProvider provider( "http://test" );
141
 
    sctx->addThesaurusProvider( &provider );
 
136
    TestThesaurusResolver resolver( "http://test" );
 
137
    sctx->registerURLResolver( &resolver );
142
138
    XQuery_t xquery = zorba->compileQuery( query_src, sctx );
143
139
 
144
140
    Zorba_SerializerOptions ser_options;
154
150
  }
155
151
  catch ( ZorbaException const &e ) {
156
152
    cerr << e << endl;
157
 
    result = 2;
 
153
    result = 3;
158
154
  }
159
155
 
160
156
  zorba->shutdown();