00001 #ifndef _IT_BUS_REFERENCE_H_ 00002 #define _IT_BUS_REFERENCE_H_ 00003 00004 #include <it_bus/sequence_complex_type.h> 00005 #include <it_bus/any.h> 00006 #include <it_bus/array_t.h> 00007 #include <it_bus/complex_type_reader.h> 00008 #include <it_bus/complex_type_writer.h> 00009 #include <it_bus/wsaddressing_xsdTypes.h> 00010 #include <it_cal/auto_ptr.h> 00011 00012 #include <it_bus/reflect/element_list_impl_t.h> 00013 #include <it_bus/reflect/model_group_impl.h> 00014 #include <it_bus/reflect/complex_type_impl.h> 00015 #include <it_bus/reflect/reflected_nillable_value.h> 00016 #include <it_bus/reflect/reflected_nillable_ptr.h> 00017 00018 namespace WSDL_Schema 00019 { 00020 class tService; 00021 } 00022 00023 namespace WS_Addressing 00024 { 00025 class EndpointReferenceUtil; 00026 } 00027 00028 namespace IT_Bus 00029 { 00030 class ReferencePort; 00031 class IT_ReferencePortReflection; 00032 typedef IT_Reflect::ReflectedNillableValue<ReferencePort> ReferencePortNillable; 00033 typedef IT_Reflect::ReflectedNillablePtr<ReferencePort> ReferencePortNillablePtr; 00034 class Reference; 00035 class IT_ReferenceReflection; 00036 typedef IT_Reflect::ReflectedNillableValue<Reference> ReferenceNillable; 00037 typedef IT_Reflect::ReflectedNillablePtr<Reference> ReferenceNillablePtr; 00038 00056 class IT_AFC_API ReferencePort : public IT_Bus::SequenceComplexType 00057 { 00058 00059 public: 00060 00061 static const IT_Bus::QName& 00062 get_static_type(); 00063 00064 typedef IT_ReferencePortReflection IT_ReflectionType; 00065 friend class IT_ReferencePortReflection; 00066 00070 ReferencePort(); 00071 00075 ReferencePort(const ReferencePort & copy); 00076 00080 virtual ~ReferencePort(); 00081 00082 IT_Bus::AnyType & 00083 copy(const IT_Bus::AnyType & rhs); 00084 00085 ReferencePort & 00086 operator=(const ReferencePort & rhs); 00087 00088 virtual const IT_Bus::QName & 00089 get_type() const; 00090 00091 virtual void 00092 write_attributes( 00093 IT_Bus::ComplexTypeWriter & writer 00094 ) const throw((IT_Bus::SerializationException)); 00095 00096 virtual void 00097 read_attributes( 00098 IT_Bus::ComplexTypeReader & reader 00099 ) throw((IT_Bus::DeserializationException)); 00100 00101 00102 virtual void 00103 write_contents( 00104 IT_Bus::ComplexTypeWriter & writer 00105 ) const throw((IT_Bus::SerializationException)); 00106 00107 virtual void 00108 read_contents( 00109 IT_Bus::ComplexTypeReader & reader 00110 ) throw((IT_Bus::DeserializationException)); 00111 00119 IT_Bus::AnyList & 00120 get_any(); 00121 00129 const IT_Bus::AnyList & 00130 get_any() const; 00131 00140 void 00141 set_any(const IT_Vector<IT_Bus::Any> & val); 00142 00149 IT_Bus::NCName & 00150 get_name(); 00151 00158 const IT_Bus::NCName & 00159 get_name() const; 00160 00168 void 00169 set_name(const IT_Bus::NCName & val); 00170 00177 IT_Bus::QName & 00178 get_binding(); 00179 00186 const IT_Bus::QName & 00187 get_binding() const; 00188 00196 void 00197 set_binding(const IT_Bus::QName & val); 00198 00199 virtual IT_Reflect::Reflection* 00200 get_reflection() throw((IT_Reflect::ReflectException)); 00201 00202 virtual const IT_Reflect::Reflection* 00203 get_reflection() const throw((IT_Reflect::ReflectException)); 00204 00205 00206 private: 00207 00208 IT_Bus::AnyList *m_any; 00209 IT_Bus::NCName m_name; 00210 IT_Bus::QName m_binding; 00211 }; 00212 00213 typedef IT_AutoPtr<ReferencePort> ReferencePortPtr; 00214 00215 class IT_AFC_API IT_ReferencePortReflection : 00216 public IT_Reflect::ReflectionImplT<IT_Bus::ReferencePort>, 00217 public IT_Reflect::ComplexTypeImpl, 00218 public IT_Reflect::ModelGroupImpl 00219 { 00220 public: 00221 00222 IT_ReferencePortReflection( 00223 const IT_Bus::ReferencePort* value 00224 ); 00225 00226 ~IT_ReferencePortReflection() throw(()); 00227 00228 const IT_Reflect::Reflection* 00229 get_element( 00230 size_t i 00231 ) const throw((IT_Reflect::ReflectException)); 00232 00233 const IT_Reflect::Reflection* 00234 get_element( 00235 const IT_Bus::QName& name 00236 ) const throw((IT_Reflect::ReflectException)); 00237 00238 const IT_Reflect::Reflection* 00239 get_attribute_value( 00240 const IT_Bus::QName& name 00241 ) const throw((IT_Reflect::ReflectException)); 00242 00243 IT_Reflect::Reflection* 00244 use_attribute_value( 00245 const IT_Bus::QName& name 00246 ) throw((IT_Reflect::ReflectException)); 00247 00248 void 00249 remove_attribute( 00250 const IT_Bus::QName& name 00251 ) throw((IT_Reflect::ReflectException)); 00252 00253 private: 00254 00255 IT_Reflect::Traits<IT_Bus::NCName >::ReflectionType m_name; 00256 IT_Reflect::Traits<IT_Bus::QName >::ReflectionType m_binding; 00257 class IT_ElementNames : 00258 public IT_Vector<IT_Bus::QName> 00259 { 00260 public: 00261 00262 IT_ElementNames(); 00263 00264 }; 00265 00266 static IT_ElementNames _it_sm_element_names; 00267 class IT_AttributeNames : 00268 public IT_Vector<IT_Bus::QName> 00269 { 00270 public: 00271 00272 IT_AttributeNames(); 00273 00274 }; 00275 00276 static IT_AttributeNames _it_sm_attribute_names; 00277 }; 00278 00291 class IT_AFC_API Reference : public IT_Bus::SequenceComplexType 00292 { 00293 00294 public: 00295 00296 static const IT_Bus::QName& 00297 get_static_type(); 00298 00299 typedef IT_ReferenceReflection IT_ReflectionType; 00300 friend class IT_ReferenceReflection; 00301 00305 Reference(); 00306 00307 Reference( 00308 const WS_Addressing::EndpointReferenceType& epr 00309 ); 00310 00311 00315 Reference( 00316 const Reference & copy 00317 ); 00318 00319 00323 virtual ~Reference(); 00324 00325 IT_Bus::AnyType & 00326 copy(const IT_Bus::AnyType & rhs); 00327 00328 Reference & 00329 operator=(const Reference & rhs); 00330 00331 Reference & 00332 operator=( 00333 const WS_Addressing::EndpointReferenceType & rhs 00334 ); 00335 00336 virtual const IT_Bus::QName & 00337 get_type() const; 00338 00339 virtual void 00340 write_attributes( 00341 IT_Bus::ComplexTypeWriter & writer 00342 ) const throw((IT_Bus::SerializationException)); 00343 00344 virtual void 00345 read_attributes( 00346 IT_Bus::ComplexTypeReader & reader 00347 ) throw((IT_Bus::DeserializationException)); 00348 00349 00350 virtual void 00351 write_contents( 00352 IT_Bus::ComplexTypeWriter & writer 00353 ) const throw((IT_Bus::SerializationException)); 00354 00355 virtual void 00356 read_contents( 00357 IT_Bus::ComplexTypeReader & reader 00358 ) throw((IT_Bus::DeserializationException)); 00359 00366 IT_Bus::ElementListT<IT_Bus::ReferencePort> & 00367 get_port(); 00368 00375 const IT_Bus::ElementListT<IT_Bus::ReferencePort> & 00376 get_port() const; 00377 00385 void 00386 set_port(const IT_Vector<IT_Bus::ReferencePort> & val); 00387 00395 IT_Bus::QName & 00396 get_service(); 00397 00405 const IT_Bus::QName & 00406 get_service() const; 00407 00415 void 00416 set_service(const IT_Bus::QName & val); 00417 00425 IT_Bus::String & 00426 get_wsdl_location(); 00427 00435 const IT_Bus::String & 00436 get_wsdl_location() const; 00437 00445 void 00446 set_wsdl_location(const IT_Bus::String & val); 00447 00448 virtual IT_Reflect::Reflection* 00449 get_reflection() throw((IT_Reflect::ReflectException)); 00450 00451 virtual const IT_Reflect::Reflection* 00452 get_reflection() const throw((IT_Reflect::ReflectException)); 00453 00454 private: 00455 00456 const WS_Addressing::EndpointReferenceType& 00457 get_endpoint_reference() const; 00458 00459 WS_Addressing::EndpointReferenceType& 00460 get_endpoint_reference(); 00461 00462 void 00463 get_service_from_epr(); 00464 00465 IT_Bus::ElementListT<IT_Bus::ReferencePort> & 00466 get_port_from_epr(); 00467 00468 void 00469 populate_epr_metadata_from_reference( 00470 WS_Addressing::EndpointReferenceType& epr 00471 ); 00472 00473 IT_Bus::ElementListT<IT_Bus::ReferencePort> m_port; 00474 IT_Bus::QName m_service_name; 00475 IT_Bus::String m_wsdl_location; 00476 WSDL_Schema::tService* m_service; 00477 WS_Addressing::EndpointReferenceType m_endpoint_reference; 00478 bool m_populate_epr_from_reference; 00479 00480 friend class WS_Addressing::EndpointReferenceUtil; 00481 }; 00482 00483 typedef IT_AutoPtr<Reference> ReferencePtr; 00484 00485 class IT_AFC_API IT_ReferenceReflection : 00486 public IT_Reflect::ReflectionImplT<IT_Bus::Reference>, 00487 public IT_Reflect::ComplexTypeImpl, 00488 public IT_Reflect::ModelGroupImpl 00489 { 00490 public: 00491 00492 IT_ReferenceReflection( 00493 const IT_Bus::Reference* value 00494 ); 00495 00496 ~IT_ReferenceReflection() throw(()); 00497 00498 const IT_Reflect::Reflection* 00499 get_element( 00500 size_t i 00501 ) const throw((IT_Reflect::ReflectException)); 00502 00503 const IT_Reflect::Reflection* 00504 get_element( 00505 const IT_Bus::QName& name 00506 ) const throw((IT_Reflect::ReflectException)); 00507 00508 const IT_Reflect::Reflection* 00509 get_attribute_value( 00510 const IT_Bus::QName& name 00511 ) const throw((IT_Reflect::ReflectException)); 00512 00513 IT_Reflect::Reflection* 00514 use_attribute_value( 00515 const IT_Bus::QName& name 00516 ) throw((IT_Reflect::ReflectException)); 00517 00518 void 00519 remove_attribute( 00520 const IT_Bus::QName& name 00521 ) throw((IT_Reflect::ReflectException)); 00522 00523 private: 00524 00525 IT_Reflect::Traits<IT_Bus::ElementListT<IT_Bus::ReferencePort> >::ReflectionType m_port; 00526 IT_Reflect::Traits<IT_Bus::QName >::ReflectionType m_service_name; 00527 IT_Reflect::Traits<IT_Bus::String >::ReflectionType m_wsdl_location; 00528 class IT_ElementNames : 00529 public IT_Vector<IT_Bus::QName> 00530 { 00531 public: 00532 00533 IT_ElementNames(); 00534 00535 }; 00536 00537 static IT_ElementNames _it_sm_element_names; 00538 class IT_AttributeNames : 00539 public IT_Vector<IT_Bus::QName> 00540 { 00541 public: 00542 00543 IT_AttributeNames(); 00544 00545 }; 00546 00547 static IT_AttributeNames _it_sm_attribute_names; 00548 }; 00549 00550 bool 00551 IT_AFC_API operator==( 00552 const IT_Bus::ReferencePort & lhs, 00553 const IT_Bus::ReferencePort & rhs 00554 ); 00555 00556 bool 00557 IT_AFC_API operator!=( 00558 const IT_Bus::ReferencePort & lhs, 00559 const IT_Bus::ReferencePort & rhs 00560 ); 00561 00562 bool 00563 IT_AFC_API operator==( 00564 const IT_Bus::Reference & lhs, 00565 const IT_Bus::Reference & rhs 00566 ); 00567 00568 bool 00569 IT_AFC_API operator!=( 00570 const IT_Bus::Reference & lhs, 00571 const IT_Bus::Reference & rhs 00572 ); 00573 00574 bool 00575 IT_AFC_API operator==( 00576 const WS_Addressing::EndpointReferenceType & lhs, 00577 const WS_Addressing::EndpointReferenceType & rhs 00578 ); 00579 } 00580 #endif 00581