ServletContext.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #ifndef SERVLET_CONTEXT_H
00054 #define SERVLET_CONTEXT_H
00055
00056 #include <memory>
00057 #include <set>
00058 #include <string>
00059 #include <iostream>
00060 #include <exception>
00061 #include <servlet/RequestDispatcher.h>
00062 #include <vector>
00063 #include <boost/shared_ptr.hpp>
00064
00065 namespace servlet {
00096 class ServletContext {
00097 public:
00098 virtual ~ServletContext(){}
00099
00124 virtual ServletContext* getContext(const std::string& uripath)=0;
00125
00126
00127
00137 virtual int getMajorVersion()=0;
00138
00139
00140
00150 virtual int getMinorVersion()=0;
00151
00152
00153
00168 virtual std::string getMimeType(const std::string& file)=0;
00169
00197 virtual std::auto_ptr< std::set<std::string> > getResourcePaths(const std::string& path)=0;
00198
00199
00200
00242 virtual std::string getResource(const std::string& path)=0;
00243
00244
00245
00280 virtual std::istream& getResourceAsStream(const std::string& path)=0;
00281
00282
00283
00284
00312 virtual RequestDispatcher* getRequestDispatcher(const std::string& path)=0;
00313
00314
00315
00342 virtual RequestDispatcher* getNamedDispatcher(const std::string& name)=0;
00343
00344
00356 virtual void log(const std::string& msg) const =0;
00357
00372 virtual void log(const std::string& message, const std::exception& e) const =0;
00373
00398 virtual std::string getRealPath(const std::string& path)=0;
00399
00400
00401
00402
00421 virtual std::string getServerInfo()=0;
00422
00423
00442 virtual std::string getInitParameter(const std::string& name)=0;
00443
00444
00445
00446
00459 virtual std::auto_ptr< std::vector<std::string> > getInitParameterNames()=0;
00460
00461
00462
00492 virtual boost::shared_ptr<void> getAttribute(const std::string& name)=0;
00493 template <typename T>
00494 T getAttribute(const std::string& name);
00495
00496
00510 virtual std::auto_ptr< std::vector<std::string> > getAttributeNames()=0;
00511
00512
00513
00514
00541 virtual void setAttribute(const std::string& name, boost::shared_ptr<void> object)=0;
00542 template <typename T>
00543 void setAttribute(const std::string& name, boost::shared_ptr<T> object)
00544 {
00545 setAttribute(name, static_cast<boost::shared_ptr<void> >(object));
00546 }
00547 template <typename T>
00548 void setAttribute(const std::string& name, const T& object);
00549
00550
00566 virtual void removeAttribute(const std::string& name)=0;
00567
00579 virtual bool hasAttribute(const std::string& name) const = 0;
00580
00581
00582
00591 virtual std::string getServletContextName() const=0;
00592
00593 };
00594 template<typename T>
00595 T ServletContext::getAttribute(const std::string& name) {
00596 const boost::shared_ptr<void> value = getAttribute(name);
00597 if(!value)
00598 return T();
00599 return *boost::static_pointer_cast<T>(value);
00600 }
00601 template<typename T>
00602 void ServletContext::setAttribute(const std::string& name, const T& object) {
00603 setAttribute(name,boost::shared_ptr<void>(new T(object)));
00604 }
00605
00606 }
00607 #endif