source: trunk/zoo-project/zoo-kernel/response_print.h @ 777

Last change on this file since 777 was 767, checked in by djay, 10 years ago

Fix issue with headers located in extern C. Define java.library.path at runtime to search for libZOO.so from the Java zoo-api.

  • Property svn:keywords set to Id
File size: 6.7 KB
Line 
1/*
2 * Author : Gérald FENOY
3 *
4 * Copyright (c) 2009-2013 GeoLabs SARL
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 */
24
25#ifndef ZOO_RESPONSE_PRINT_H
26#define ZOO_RESPONSE_PRINT_H 1
27
28#pragma once
29
30/**
31 * The default service url (overriden by serverAddress)
32 */
33#define DEFAULT_SERVICE_URL "http://www.zoo-project.org/"
34/**
35 * The time size
36 */
37#define TIME_SIZE 40
38
39#include <libintl.h>
40#include <locale.h>
41/**
42 * ZOO-Kernel internal messages translation function
43 */
44#define _(String) dgettext ("zoo-kernel",String)
45/**
46 * ZOO-Services messages translation function
47 */
48#define _ss(String) dgettext ("zoo-services",String)
49
50/**
51 * ZOO-Kernel was unable to create a lock
52 */
53#define ZOO_LOCK_CREATE_FAILED -4
54/**
55 * ZOO-Kernel was unable to acquire a lock
56 */
57#define ZOO_LOCK_ACQUIRE_FAILED -5
58/**
59 * ZOO-Kernel was unable to release a lock
60 */
61#define ZOO_LOCK_RELEASE_FAILED -6
62
63#include <sys/stat.h>
64#include <sys/types.h>
65#include "cgic.h"
66#ifndef WIN32
67#include <sys/ipc.h>
68#include <sys/shm.h>
69#include <sys/sem.h>
70#else
71#include <direct.h>
72#endif
73#include <stdio.h>
74#include <time.h>
75#include <ctype.h>
76#ifdef WIN32
77#ifndef USE_RUBY
78#include <unistd.h>
79#endif
80#endif
81#ifndef WIN32
82#include <xlocale.h>
83#endif
84#include "ulinet.h"
85
86#include "service.h"
87#include <openssl/sha.h>
88#include <openssl/md5.h>
89#include <openssl/hmac.h>
90#include <openssl/evp.h>
91#include <openssl/bio.h>
92#include <openssl/buffer.h>
93
94#include <libxml/parser.h>
95#include <libxml/xpath.h>
96
97#ifdef __cplusplus
98extern "C" {
99#endif
100  /**
101   * Maximum number of XML namespaces
102   */
103#define ZOO_NS_MAX 10
104  /**
105   * Maximum number of XML docs
106   */
107#define ZOO_DOC_MAX 20
108
109  /**
110   * Global char* to store the serverAddress value of the [main] section
111   */
112  static char* SERVICE_URL;
113
114  /**
115   * Array of xmlNsPtr storing all used XML namespace
116   */
117  static xmlNsPtr usedNs[ZOO_NS_MAX];
118  /**
119   * Array storing names of the used XML namespace
120   */
121  static char* nsName[ZOO_NS_MAX];
122  /**
123   * Number of XML namespaces
124   */
125  static int nbNs=0;
126  /**
127   * Array of xmlDocPtr storing XML docs
128   */
129  static xmlDocPtr iDocs[ZOO_DOC_MAX];
130  /**
131   * Number of XML docs
132   */
133  static int nbDocs=0;
134
135  /**
136   * Definitions of acceptable final status
137   */
138  static char wpsStatus[2][11]={
139    "Succeeded",
140    "Failed"
141  };
142  /**
143   * Definitions of schemas depending on the WPS version
144   */
145  static const char* schemas[2][8]={
146    {"1.0.0","http://www.opengis.net/ows/1.1","http://www.opengis.net/wps/1.0.0","http://schemas.opengis.net/wps/1.0.0","%s %s/wps%s_response.xsd","http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd","1.1.0"},
147    {"2.0.0","http://www.opengis.net/ows/2.0","http://www.opengis.net/wps/2.0","http://schemas.opengis.net/wps/2.0","http://www.opengis.net/wps/2.0 http://schemas.opengis.net/wps/2.0/wps.xsd","http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd","2.0.2","http://www.opengis.net/spec/wps/2.0/def/process-profile/"},
148  };
149  /**
150   * Definitions of support requests (depending on the WPS version)
151   */
152  static int nbSupportedRequests=7;
153  /**
154   * Definitions of requests depending on the WPS version
155   */
156  static const char* requests[2][7]={
157    {"GetCapabilities","DescribeProcess","Execute",NULL},
158    {"GetCapabilities","DescribeProcess","Execute","GetStatus","GetResult","Dismiss",NULL},
159  };
160  /**
161   * Definitions requests requiring identifier (depending on the WPS version)
162   */
163  static int nbReqIdentifier=2;
164  /**
165   * Definitions requests requiring jobid (only for WPS version 2.0.0)
166   */
167  static int nbReqJob=3;
168  /**
169   * Definitions of root node for response depending on the request and the WPS version
170   */
171  static const char root_nodes[2][4][20]={
172    {"ProcessOfferings","ProcessDescriptions","ExecuteResponse",NULL},
173    {"Contents","ProcessOfferings","Result",NULL}
174  };
175
176  /**
177   * Name and corresponding attributes depending on the WPS version
178   */
179  static const char* capabilities[2][7]={
180    {
181      "Process",
182      "processVersion","1",
183      "storeSupported","true",
184      "statusSupported","true"
185    },
186    {
187      "ProcessSummary",
188      "processVersion","1.0.0",
189      "jobControlOptions","sync-execute async-execute dismiss",
190      "outputTransmission","value reference"
191    }
192  };
193
194  void addLangAttr(xmlNodePtr,maps*);
195
196  void printHeaders(maps*);
197
198  int zooXmlSearchForNs(const char*);
199  int zooXmlAddNs(xmlNodePtr,const char*,const char*);
200  void zooXmlCleanupNs();
201
202  int zooXmlAddDoc(xmlNodePtr,const char*,const char*);
203  void zooXmlCleanupDocs();
204 
205  void printExceptionReportResponse(maps*,map*);
206  xmlNodePtr createExceptionReportNode(maps*,map*,int);
207  void printProcessResponse(maps*,map*,int,service*,const char*,int,maps*,maps*);
208  xmlNodePtr printWPSHeader(xmlDocPtr,maps*,const char*,const char*,const char*,int);
209  xmlNodePtr printGetCapabilitiesHeader(xmlDocPtr,maps*,const char*);
210  void printGetCapabilitiesForProcess(registry*,maps*,xmlNodePtr,service*);
211  void printDescribeProcessForProcess(registry*,maps*,xmlNodePtr,service*);
212  void printFullDescription(int,elements*,const char*,xmlNsPtr,xmlNsPtr,xmlNodePtr,int);
213  void printDocument(maps*,xmlDocPtr,int);
214  void printDescription(xmlNodePtr,xmlNsPtr,const char*,map*,int);
215  void printIOType(xmlDocPtr,xmlNodePtr,xmlNsPtr,xmlNsPtr,xmlNsPtr,elements*,maps*,const char*,int);
216  map* parseBoundingBox(const char*);
217  void printBoundingBox(xmlNsPtr,xmlNodePtr,map*);
218  void printBoundingBoxDocument(maps*,maps*,FILE*);
219  void printOutputDefinitions(xmlDocPtr,xmlNodePtr,xmlNsPtr,xmlNsPtr,elements*,maps*,const char*);
220  void printStatusInfo(maps*,map*,char*);
221
222  void outputResponse(service*,maps*,maps*,map*,int,maps*,int);
223
224  int errorException(maps *, const char *, const char *, const char*);
225
226  xmlNodePtr soapEnvelope(maps*,xmlNodePtr);
227  int checkForSoapEnvelope(xmlDocPtr);
228 
229#ifdef __cplusplus
230}
231#endif
232
233#endif
Note: See TracBrowser for help on using the repository browser.

Search

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png