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