first commit
This commit is contained in:
commit
ba95a18a33
25
.gitignore
vendored
Normal file
25
.gitignore
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
*target*
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# eclipse specific git ignore
|
||||||
|
*.pydevproject
|
||||||
|
.project
|
||||||
|
.metadata
|
||||||
|
bin/**
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*~.nib
|
||||||
|
*~
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
.idea/**
|
||||||
|
.idea
|
||||||
|
|
||||||
|
local.properties
|
||||||
|
.classpath
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
201
LICENSE
Normal file
201
LICENSE
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright {yyyy} {name of copyright owner}
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
37
README.md
Normal file
37
README.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Java ONVIF (Open Network Video Interface Forum)
|
||||||
|
|
||||||
|
ONVIF is a community to standardize communication between IP-based security products (like cameras).
|
||||||
|
|
||||||
|
This project aims to improve https://github.com/milg0/onvif-java-lib.<br>
|
||||||
|
I've tried to convice its author to use to my code but it seems we have different objectives: my goal is to create a project that focus on the funny part of the development of an ONVIF application, **keeping the interaction with the WS as simple as possible** and delege that annoying part to Apache CXF in order to not waste the developer time in writing (and MAINTAINING) code that interacts with ONVIF web services.<br>
|
||||||
|
My wish is to help other developers willing to contribute to an enterprise-level Java library for ONVIF devices.
|
||||||
|
|
||||||
|
Apported improvements
|
||||||
|
=============
|
||||||
|
* Project **mavenization** and **modularization** (separation between Java stubs and application) and
|
||||||
|
* WS client generation using Apache CXF maven plugin (declaring the specific Onvif specification of each wsdl)
|
||||||
|
* maintainability and extendability of the overall code
|
||||||
|
* Separation of Test/examples from other code
|
||||||
|
|
||||||
|
Rebuilding WS stubs
|
||||||
|
=============
|
||||||
|
|
||||||
|
If you need to change the list of managed WSDLs (in onvif/onvif-ws-client/src/main/resources/wsdl) and thus you need to regenerate the WS Java stubs using the [Apache CXF codegen maven plugin](http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html), you need to go through the following steps:
|
||||||
|
1. **Download Onvif WSDLs** to onvif/onvif-ws-client/src/main/resources/wsdl appending the version before the .wsdl suffix.
|
||||||
|
For example, from main dir (onvif) use you can run the following shell commmand:<br>
|
||||||
|
```wget http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl onvif-ws-client/src/main/resources/wsdl/devicemgmt_2.5.wsdl ```
|
||||||
|
1. **Update WSDLLocations constants (if needed)** within class *de.onvif.utils.WSDLLocations* (module onvif-java)
|
||||||
|
1. **Add required url-rewriting rules (if needed)** to onvif/onvif-ws-client/src/main/resources/wsdl/jax-ws-catalog.xml
|
||||||
|
1. Delete old Java classes in onvif/onvif-ws-client/src/main/java
|
||||||
|
1. **Run the class generation command**: decomment goal and phase of cxf-codegen-plugin in onvif-ws-client pom.xml and run ```mvn clean install```
|
||||||
|
1. To see how to properly add a new ONVIF service to OnvifDevice look into OnvifDevice.init()
|
||||||
|
|
||||||
|
TODOS
|
||||||
|
=============
|
||||||
|
My next goals are:
|
||||||
|
1. Create an active community of enthusiastic developers (the crazier you are, the better)
|
||||||
|
1. Write a more comprehensive examples (e.g. subscribe to an event notification, use I/O ports, etc...)
|
||||||
|
1. Create consistent Onvif specifications tags (at least for onvif-ws-client). For example: 2.4, 2.5, etc...
|
||||||
|
1. Fix WS-Discovery example (with my camera it doesn't work at all)
|
||||||
|
1. Write a simple UI to test the device functionalities
|
||||||
|
1. Fix offline mode (xml files in *local* folder)
|
||||||
598
intellij-style.xml
Normal file
598
intellij-style.xml
Normal file
@ -0,0 +1,598 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<code_scheme name="GoogleStyle">
|
||||||
|
<option name="OTHER_INDENT_OPTIONS">
|
||||||
|
<value>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
<option name="USE_TAB_CHARACTER" value="false"/>
|
||||||
|
<option name="SMART_TABS" value="false"/>
|
||||||
|
<option name="LABEL_INDENT_SIZE" value="0"/>
|
||||||
|
<option name="LABEL_INDENT_ABSOLUTE" value="false"/>
|
||||||
|
<option name="USE_RELATIVE_INDENTS" value="false"/>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="INSERT_INNER_CLASS_IMPORTS" value="true"/>
|
||||||
|
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
|
||||||
|
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
|
||||||
|
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
|
||||||
|
<value/>
|
||||||
|
</option>
|
||||||
|
<option name="IMPORT_LAYOUT_TABLE">
|
||||||
|
<value>
|
||||||
|
<package name="" withSubpackages="true" static="true"/>
|
||||||
|
<emptyLine/>
|
||||||
|
<package name="" withSubpackages="true" static="false"/>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="RIGHT_MARGIN" value="100"/>
|
||||||
|
<option name="JD_ALIGN_PARAM_COMMENTS" value="false"/>
|
||||||
|
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false"/>
|
||||||
|
<option name="JD_P_AT_EMPTY_LINES" value="false"/>
|
||||||
|
<option name="JD_KEEP_EMPTY_PARAMETER" value="false"/>
|
||||||
|
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false"/>
|
||||||
|
<option name="JD_KEEP_EMPTY_RETURN" value="false"/>
|
||||||
|
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false"/>
|
||||||
|
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0"/>
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
|
||||||
|
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="0"/>
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false"/>
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1"/>
|
||||||
|
<option name="THROWS_KEYWORD_WRAP" value="1"/>
|
||||||
|
<option name="METHOD_CALL_CHAIN_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1"/>
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1"/>
|
||||||
|
<option name="WRAP_COMMENTS" value="true"/>
|
||||||
|
<option name="IF_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true"/>
|
||||||
|
<AndroidXmlCodeStyleSettings>
|
||||||
|
<option name="USE_CUSTOM_SETTINGS" value="true"/>
|
||||||
|
<option name="LAYOUT_SETTINGS">
|
||||||
|
<value>
|
||||||
|
<option name="INSERT_BLANK_LINE_BEFORE_TAG" value="false"/>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
</AndroidXmlCodeStyleSettings>
|
||||||
|
<JSCodeStyleSettings>
|
||||||
|
<option name="INDENT_CHAINED_CALLS" value="false"/>
|
||||||
|
</JSCodeStyleSettings>
|
||||||
|
<Python>
|
||||||
|
<option name="USE_CONTINUATION_INDENT_FOR_ARGUMENTS" value="true"/>
|
||||||
|
</Python>
|
||||||
|
<TypeScriptCodeStyleSettings>
|
||||||
|
<option name="INDENT_CHAINED_CALLS" value="false"/>
|
||||||
|
</TypeScriptCodeStyleSettings>
|
||||||
|
<XML>
|
||||||
|
<option name="XML_ALIGN_ATTRIBUTES" value="false"/>
|
||||||
|
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true"/>
|
||||||
|
</XML>
|
||||||
|
<codeStyleSettings language="CSS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="ECMA Script Level 4">
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false"/>
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1"/>
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1"/>
|
||||||
|
<option name="IF_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="PARENT_SETTINGS_INSTALLED" value="true"/>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="HTML">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JAVA">
|
||||||
|
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false"/>
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
|
||||||
|
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1"/>
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
|
||||||
|
<option name="ALIGN_MULTILINE_RESOURCES" value="false"/>
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false"/>
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="EXTENDS_LIST_WRAP" value="1"/>
|
||||||
|
<option name="THROWS_KEYWORD_WRAP" value="1"/>
|
||||||
|
<option name="METHOD_CALL_CHAIN_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1"/>
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1"/>
|
||||||
|
<option name="WRAP_COMMENTS" value="true"/>
|
||||||
|
<option name="IF_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="PARENT_SETTINGS_INSTALLED" value="true"/>
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JSON">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JavaScript">
|
||||||
|
<option name="RIGHT_MARGIN" value="80"/>
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
|
||||||
|
<option name="ALIGN_MULTILINE_FOR" value="false"/>
|
||||||
|
<option name="CALL_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="METHOD_PARAMETERS_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="TERNARY_OPERATION_WRAP" value="1"/>
|
||||||
|
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1"/>
|
||||||
|
<option name="ARRAY_INITIALIZER_WRAP" value="1"/>
|
||||||
|
<option name="IF_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="DOWHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="WHILE_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="FOR_BRACE_FORCE" value="3"/>
|
||||||
|
<option name="PARENT_SETTINGS_INSTALLED" value="true"/>
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="PROTO">
|
||||||
|
<option name="RIGHT_MARGIN" value="80"/>
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="protobuf">
|
||||||
|
<option name="RIGHT_MARGIN" value="80"/>
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Python">
|
||||||
|
<option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
|
||||||
|
<option name="RIGHT_MARGIN" value="80"/>
|
||||||
|
<option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
|
||||||
|
<option name="PARENT_SETTINGS_INSTALLED" value="true"/>
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="SASS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="SCSS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="TypeScript">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="XML">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2"/>
|
||||||
|
<option name="TAB_SIZE" value="2"/>
|
||||||
|
</indentOptions>
|
||||||
|
<arrangement>
|
||||||
|
<rules>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:android</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>xmlns:.*</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:id</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>style</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:.*Style</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_width</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_height</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_weight</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_margin</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginTop</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginBottom</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginStart</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginEnd</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginLeft</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_marginRight</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:layout_.*</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:padding</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingTop</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingBottom</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingStart</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingEnd</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingLeft</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*:paddingRight</NAME>
|
||||||
|
<XML_ATTRIBUTE/>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/apk/res-auto</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>http://schemas.android.com/tools</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<rule>
|
||||||
|
<match>
|
||||||
|
<AND>
|
||||||
|
<NAME>.*</NAME>
|
||||||
|
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||||
|
</AND>
|
||||||
|
</match>
|
||||||
|
<order>BY_NAME</order>
|
||||||
|
</rule>
|
||||||
|
</section>
|
||||||
|
</rules>
|
||||||
|
</arrangement>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<Objective-C>
|
||||||
|
<option name="INDENT_NAMESPACE_MEMBERS" value="0"/>
|
||||||
|
<option name="INDENT_C_STRUCT_MEMBERS" value="2"/>
|
||||||
|
<option name="INDENT_CLASS_MEMBERS" value="2"/>
|
||||||
|
<option name="INDENT_VISIBILITY_KEYWORDS" value="1"/>
|
||||||
|
<option name="INDENT_INSIDE_CODE_BLOCK" value="2"/>
|
||||||
|
<option name="KEEP_STRUCTURES_IN_ONE_LINE" value="true"/>
|
||||||
|
<option name="FUNCTION_PARAMETERS_WRAP" value="5"/>
|
||||||
|
<option name="FUNCTION_CALL_ARGUMENTS_WRAP" value="5"/>
|
||||||
|
<option name="TEMPLATE_CALL_ARGUMENTS_WRAP" value="5"/>
|
||||||
|
<option name="TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE" value="true"/>
|
||||||
|
<option name="ALIGN_INIT_LIST_IN_COLUMNS" value="false"/>
|
||||||
|
<option name="SPACE_BEFORE_SUPERCLASS_COLON" value="false"/>
|
||||||
|
</Objective-C>
|
||||||
|
<Objective-C-extensions>
|
||||||
|
<option name="GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES" value="ASK"/>
|
||||||
|
<option name="RELEASE_STYLE" value="IVAR"/>
|
||||||
|
<option name="TYPE_QUALIFIERS_PLACEMENT" value="BEFORE"/>
|
||||||
|
<file>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function"/>
|
||||||
|
</file>
|
||||||
|
<class>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod"/>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod"/>
|
||||||
|
</class>
|
||||||
|
<extensions>
|
||||||
|
<pair source="cc" header="h"/>
|
||||||
|
<pair source="c" header="h"/>
|
||||||
|
</extensions>
|
||||||
|
</Objective-C-extensions>
|
||||||
|
<codeStyleSettings language="ObjectiveC">
|
||||||
|
<option name="RIGHT_MARGIN" value="80"/>
|
||||||
|
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1"/>
|
||||||
|
<option name="BLANK_LINES_BEFORE_IMPORTS" value="0"/>
|
||||||
|
<option name="BLANK_LINES_AFTER_IMPORTS" value="0"/>
|
||||||
|
<option name="BLANK_LINES_AROUND_CLASS" value="0"/>
|
||||||
|
<option name="BLANK_LINES_AROUND_METHOD" value="0"/>
|
||||||
|
<option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="0"/>
|
||||||
|
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="false"/>
|
||||||
|
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
|
||||||
|
<option name="FOR_STATEMENT_WRAP" value="1"/>
|
||||||
|
<option name="ASSIGNMENT_WRAP" value="1"/>
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2"/>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4"/>
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
133
onvif-java/pom.xml
Normal file
133
onvif-java/pom.xml
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.onvif</groupId>
|
||||||
|
<artifactId>onvif</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>onvif-java</artifactId>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-ws-security</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-transports-http</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>org.apache.cxf.services.ws-discovery</groupId> -->
|
||||||
|
<!-- <artifactId>cxf-services-ws-discovery-api</artifactId> -->
|
||||||
|
<!-- <version>${cxf.version}</version> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>org.apache.cxf.services.ws-discovery</groupId> -->
|
||||||
|
<!-- <artifactId>cxf-services-ws-discovery-service</artifactId> -->
|
||||||
|
<!-- <version>${cxf.version}</version> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.onvif</groupId>
|
||||||
|
<artifactId>onvif-ws-client</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-codec</groupId>
|
||||||
|
<artifactId>commons-codec</artifactId>
|
||||||
|
<version>1.10</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.4</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.sun.xml.messaging.saaj/saaj-impl -->
|
||||||
|
<!-- For Discovery -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.messaging.saaj</groupId>
|
||||||
|
<artifactId>saaj-impl</artifactId>
|
||||||
|
<version>1.5.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- For discovery using cxf -->
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.apache.cxf.services.ws-discovery/cxf-services-ws-discovery-api -->
|
||||||
|
<!--
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf.services.ws-discovery</groupId>
|
||||||
|
<artifactId>cxf-services-ws-discovery-api</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Java 9+ javax dependencies start -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.activation</groupId>
|
||||||
|
<artifactId>javax.activation</artifactId>
|
||||||
|
<version>${javax.activation.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<version>${jaxb.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-core</artifactId>
|
||||||
|
<version>2.3.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-impl</artifactId>
|
||||||
|
<version>${jaxb.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Java 9+ javax dependencies end -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- LOGGINBG... for testing -->
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-simple</artifactId>
|
||||||
|
<version>1.7.26</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.soap</groupId>
|
||||||
|
<artifactId>javax.xml.soap-api</artifactId>
|
||||||
|
<version>1.4.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven-compiler-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<release>${java.release}</release>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
-->
|
||||||
|
</project>
|
||||||
79
onvif-java/src/main/java/de/onvif/beans/DeviceInfo.java
Normal file
79
onvif-java/src/main/java/de/onvif/beans/DeviceInfo.java
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package de.onvif.beans;
|
||||||
|
|
||||||
|
public class DeviceInfo {
|
||||||
|
|
||||||
|
private String manufacturer;
|
||||||
|
private String model;
|
||||||
|
private String firmwareVersion;
|
||||||
|
private String serialNumber;
|
||||||
|
private String hardwareId;
|
||||||
|
|
||||||
|
public DeviceInfo(
|
||||||
|
String manufacturer,
|
||||||
|
String model,
|
||||||
|
String firmwareVersion,
|
||||||
|
String serialNumber,
|
||||||
|
String hardwareId) {
|
||||||
|
super();
|
||||||
|
this.manufacturer = manufacturer;
|
||||||
|
this.model = model;
|
||||||
|
this.firmwareVersion = firmwareVersion;
|
||||||
|
this.serialNumber = serialNumber;
|
||||||
|
this.hardwareId = hardwareId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "DeviceInfo [manufacturer="
|
||||||
|
+ manufacturer
|
||||||
|
+ ", model="
|
||||||
|
+ model
|
||||||
|
+ ", firmwareVersion="
|
||||||
|
+ firmwareVersion
|
||||||
|
+ ", serialNumber="
|
||||||
|
+ serialNumber
|
||||||
|
+ ", hardwareId="
|
||||||
|
+ hardwareId
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getManufacturer() {
|
||||||
|
return manufacturer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManufacturer(String manufacturer) {
|
||||||
|
this.manufacturer = manufacturer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getModel() {
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModel(String model) {
|
||||||
|
this.model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFirmwareVersion() {
|
||||||
|
return firmwareVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirmwareVersion(String firmwareVersion) {
|
||||||
|
this.firmwareVersion = firmwareVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSerialNumber() {
|
||||||
|
return serialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSerialNumber(String serialNumber) {
|
||||||
|
this.serialNumber = serialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHardwareId() {
|
||||||
|
return hardwareId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHardwareId(String hardwareId) {
|
||||||
|
this.hardwareId = hardwareId;
|
||||||
|
}
|
||||||
|
}
|
||||||
252
onvif-java/src/main/java/de/onvif/discovery/DeviceDiscovery.java
Normal file
252
onvif-java/src/main/java/de/onvif/discovery/DeviceDiscovery.java
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
package de.onvif.discovery;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.DatagramSocket;
|
||||||
|
import java.net.Inet4Address;
|
||||||
|
import java.net.Inet6Address;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.InterfaceAddress;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.net.SocketTimeoutException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentSkipListSet;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import javax.xml.soap.MessageFactory;
|
||||||
|
import javax.xml.soap.MimeHeaders;
|
||||||
|
import javax.xml.soap.SOAPBody;
|
||||||
|
import javax.xml.soap.SOAPException;
|
||||||
|
import javax.xml.soap.SOAPMessage;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Device discovery class to list local accessible devices probed per UDP probe messages.
|
||||||
|
*
|
||||||
|
* @author th
|
||||||
|
* @version 0.1
|
||||||
|
* @date 2015-06-18
|
||||||
|
*/
|
||||||
|
@SuppressWarnings({"unused", "UseOfSystemOutOrSystemErr", "CallToPrintStackTrace"})
|
||||||
|
public class DeviceDiscovery {
|
||||||
|
public static final String WS_DISCOVERY_SOAP_VERSION = "SOAP 1.2 Protocol";
|
||||||
|
public static final String WS_DISCOVERY_CONTENT_TYPE = "application/soap+xml";
|
||||||
|
public static final int WS_DISCOVERY_TIMEOUT = 4000;
|
||||||
|
public static final int WS_DISCOVERY_PORT = 3702;
|
||||||
|
public static final String WS_DISCOVERY_ADDRESS_IPv4 = "239.255.255.250";
|
||||||
|
|
||||||
|
/** IPv6 not supported yet. set enableIPv6 to true for testing if you need IP6 discovery. */
|
||||||
|
public static final boolean enableIPv6 = false;
|
||||||
|
|
||||||
|
public static final String WS_DISCOVERY_ADDRESS_IPv6 = "[FF02::C]";
|
||||||
|
public static final String WS_DISCOVERY_PROBE_MESSAGE =
|
||||||
|
"<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" xmlns:tns=\"http://schemas.xmlsoap.org/ws/2005/04/discovery\"><soap:Header><wsa:Action>http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action><wsa:MessageID>urn:uuid:c032cfdd-c3ca-49dc-820e-ee6696ad63e2</wsa:MessageID><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:To></soap:Header><soap:Body><tns:Probe/></soap:Body></soap:Envelope>";
|
||||||
|
private static final Random random = new SecureRandom();
|
||||||
|
|
||||||
|
public static void main(String[] args) throws InterruptedException {
|
||||||
|
for (URL url : discoverWsDevicesAsUrls()) {
|
||||||
|
System.out.println("Device discovered: " + url.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Discover WS device on the local network and returns Urls
|
||||||
|
*
|
||||||
|
* @return list of unique device urls
|
||||||
|
*/
|
||||||
|
public static Collection<URL> discoverWsDevicesAsUrls() {
|
||||||
|
return discoverWsDevicesAsUrls("", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Discover WS device on the local network with specified filter
|
||||||
|
*
|
||||||
|
* @param regexpProtocol url protocol matching regexp like "^http$", might be empty ""
|
||||||
|
* @param regexpPath url path matching regexp like "onvif", might be empty ""
|
||||||
|
* @return list of unique device urls filtered
|
||||||
|
*/
|
||||||
|
public static Collection<URL> discoverWsDevicesAsUrls(String regexpProtocol, String regexpPath) {
|
||||||
|
final Collection<URL> urls =
|
||||||
|
new TreeSet<>(
|
||||||
|
new Comparator<URL>() {
|
||||||
|
public int compare(URL o1, URL o2) {
|
||||||
|
return o1.toString().compareTo(o2.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for (String key : discoverWsDevices()) {
|
||||||
|
try {
|
||||||
|
final URL url = new URL(key);
|
||||||
|
boolean ok = true;
|
||||||
|
if (regexpProtocol.length() > 0 && !url.getProtocol().matches(regexpProtocol)) ok = false;
|
||||||
|
if (regexpPath.length() > 0 && !url.getPath().matches(regexpPath)) ok = false;
|
||||||
|
// ignore ip6 hosts
|
||||||
|
if (ok && !enableIPv6 && url.getHost().startsWith("[")) ok = false;
|
||||||
|
if (ok) urls.add(url);
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return urls;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Discover WS device on the local network
|
||||||
|
*
|
||||||
|
* @return list of unique devices access strings which might be URLs in most cases
|
||||||
|
*/
|
||||||
|
public static Collection<String> discoverWsDevices() {
|
||||||
|
final Collection<String> addresses = new ConcurrentSkipListSet<>();
|
||||||
|
final CountDownLatch serverStarted = new CountDownLatch(1);
|
||||||
|
final CountDownLatch serverFinished = new CountDownLatch(1);
|
||||||
|
final Collection<InetAddress> addressList = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
final Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
|
||||||
|
if (interfaces != null) {
|
||||||
|
while (interfaces.hasMoreElements()) {
|
||||||
|
NetworkInterface anInterface = interfaces.nextElement();
|
||||||
|
if (!anInterface.isLoopback()) {
|
||||||
|
final List<InterfaceAddress> interfaceAddresses = anInterface.getInterfaceAddresses();
|
||||||
|
for (InterfaceAddress address : interfaceAddresses) {
|
||||||
|
Class clz = address.getAddress().getClass();
|
||||||
|
|
||||||
|
if (!enableIPv6 && address.getAddress() instanceof Inet6Address) continue;
|
||||||
|
addressList.add(address.getAddress());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SocketException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
||||||
|
for (final InetAddress address : addressList) {
|
||||||
|
Runnable runnable =
|
||||||
|
new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
final String uuid = UUID.randomUUID().toString();
|
||||||
|
final String probe =
|
||||||
|
WS_DISCOVERY_PROBE_MESSAGE.replaceAll(
|
||||||
|
"<wsa:MessageID>urn:uuid:.*</wsa:MessageID>",
|
||||||
|
"<wsa:MessageID>urn:uuid:" + uuid + "</wsa:MessageID>");
|
||||||
|
final int port = random.nextInt(20000) + 40000;
|
||||||
|
@SuppressWarnings("SocketOpenedButNotSafelyClosed")
|
||||||
|
final DatagramSocket server = new DatagramSocket(port, address);
|
||||||
|
new Thread() {
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
final DatagramPacket packet = new DatagramPacket(new byte[4096], 4096);
|
||||||
|
server.setSoTimeout(WS_DISCOVERY_TIMEOUT);
|
||||||
|
long timerStarted = System.currentTimeMillis();
|
||||||
|
while (System.currentTimeMillis() - timerStarted < (WS_DISCOVERY_TIMEOUT)) {
|
||||||
|
serverStarted.countDown();
|
||||||
|
server.receive(packet);
|
||||||
|
final Collection<String> collection =
|
||||||
|
parseSoapResponseForUrls(
|
||||||
|
Arrays.copyOf(packet.getData(), packet.getLength()));
|
||||||
|
for (String key : collection) {
|
||||||
|
addresses.add(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SocketTimeoutException ignored) {
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
serverFinished.countDown();
|
||||||
|
server.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.start();
|
||||||
|
try {
|
||||||
|
serverStarted.await(1000, TimeUnit.MILLISECONDS);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if (address instanceof Inet4Address) {
|
||||||
|
server.send(
|
||||||
|
new DatagramPacket(
|
||||||
|
probe.getBytes(StandardCharsets.UTF_8),
|
||||||
|
probe.length(),
|
||||||
|
InetAddress.getByName(WS_DISCOVERY_ADDRESS_IPv4),
|
||||||
|
WS_DISCOVERY_PORT));
|
||||||
|
} else {
|
||||||
|
if (address instanceof Inet6Address) {
|
||||||
|
if (enableIPv6)
|
||||||
|
server.send(
|
||||||
|
new DatagramPacket(
|
||||||
|
probe.getBytes(StandardCharsets.UTF_8),
|
||||||
|
probe.length(),
|
||||||
|
InetAddress.getByName(WS_DISCOVERY_ADDRESS_IPv6),
|
||||||
|
WS_DISCOVERY_PORT));
|
||||||
|
} else {
|
||||||
|
assert (false); // unknown network type.. ignore or warn developer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
serverFinished.await((WS_DISCOVERY_TIMEOUT), TimeUnit.MILLISECONDS);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
executorService.submit(runnable);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
executorService.shutdown();
|
||||||
|
executorService.awaitTermination(WS_DISCOVERY_TIMEOUT + 2000, TimeUnit.MILLISECONDS);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
return addresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Collection<Node> getNodeMatching(Node body, String regexp) {
|
||||||
|
final Collection<Node> nodes = new ArrayList<>();
|
||||||
|
if (body.getNodeName().matches(regexp)) nodes.add(body);
|
||||||
|
if (body.getChildNodes().getLength() == 0) return nodes;
|
||||||
|
NodeList returnList = body.getChildNodes();
|
||||||
|
for (int k = 0; k < returnList.getLength(); k++) {
|
||||||
|
final Node node = returnList.item(k);
|
||||||
|
nodes.addAll(getNodeMatching(node, regexp));
|
||||||
|
}
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Collection<String> parseSoapResponseForUrls(byte[] data)
|
||||||
|
throws SOAPException, IOException {
|
||||||
|
// System.out.println(new String(data));
|
||||||
|
final Collection<String> urls = new ArrayList<>();
|
||||||
|
MessageFactory factory = MessageFactory.newInstance(WS_DISCOVERY_SOAP_VERSION);
|
||||||
|
final MimeHeaders headers = new MimeHeaders();
|
||||||
|
headers.addHeader("Content-type", WS_DISCOVERY_CONTENT_TYPE);
|
||||||
|
SOAPMessage message = factory.createMessage(headers, new ByteArrayInputStream(data));
|
||||||
|
SOAPBody body = message.getSOAPBody();
|
||||||
|
for (Node node : getNodeMatching(body, ".*:XAddrs")) {
|
||||||
|
if (node.getTextContent().length() > 0) {
|
||||||
|
urls.addAll(Arrays.asList(node.getTextContent().split(" ")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return urls;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package de.onvif.discovery;
|
||||||
|
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author th
|
||||||
|
* @date 2015-06-18
|
||||||
|
*/
|
||||||
|
public class OnvifDiscovery {
|
||||||
|
|
||||||
|
public static Collection<URL> discoverOnvifURLs() {
|
||||||
|
return DeviceDiscovery.discoverWsDevicesAsUrls("^http$", ".*onvif.*");
|
||||||
|
}
|
||||||
|
}
|
||||||
92
onvif-java/src/main/java/de/onvif/soap/NaiveSSLHelper.java
Normal file
92
onvif-java/src/main/java/de/onvif/soap/NaiveSSLHelper.java
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
package de.onvif.soap;
|
||||||
|
|
||||||
|
import java.security.GeneralSecurityException;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.net.ssl.HostnameVerifier;
|
||||||
|
import javax.net.ssl.KeyManager;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.SSLSession;
|
||||||
|
import javax.net.ssl.SSLSocketFactory;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
import javax.xml.ws.BindingProvider;
|
||||||
|
import org.apache.cxf.configuration.jsse.TLSClientParameters;
|
||||||
|
import org.apache.cxf.transport.http.HTTPConduit;
|
||||||
|
|
||||||
|
public class NaiveSSLHelper {
|
||||||
|
public static void makeWebServiceClientTrustEveryone(Object webServicePort) {
|
||||||
|
if (webServicePort instanceof BindingProvider) {
|
||||||
|
BindingProvider bp = (BindingProvider) webServicePort;
|
||||||
|
Map requestContext = bp.getRequestContext();
|
||||||
|
requestContext.put(JAXWS_SSL_SOCKET_FACTORY, getTrustingSSLSocketFactory());
|
||||||
|
requestContext.put(JAXWS_HOSTNAME_VERIFIER, new NaiveHostnameVerifier());
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Web service port "
|
||||||
|
+ webServicePort.getClass().getName()
|
||||||
|
+ " does not implement "
|
||||||
|
+ BindingProvider.class.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SSLSocketFactory getTrustingSSLSocketFactory() {
|
||||||
|
return SSLSocketFactoryHolder.INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static SSLSocketFactory createSSLSocketFactory() {
|
||||||
|
TrustManager[] trustManagers = new TrustManager[] {new NaiveTrustManager()};
|
||||||
|
SSLContext sslContext;
|
||||||
|
try {
|
||||||
|
sslContext = SSLContext.getInstance("TLS");
|
||||||
|
sslContext.init(new KeyManager[0], trustManagers, new SecureRandom());
|
||||||
|
return sslContext.getSocketFactory();
|
||||||
|
} catch (GeneralSecurityException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void makeCxfWebServiceClientTrustEveryone(HTTPConduit http) {
|
||||||
|
TrustManager[] trustManagers = new TrustManager[] {new NaiveTrustManager()};
|
||||||
|
TLSClientParameters tlsParams = new TLSClientParameters();
|
||||||
|
tlsParams.setSecureSocketProtocol("TLS");
|
||||||
|
tlsParams.setKeyManagers(new KeyManager[0]);
|
||||||
|
tlsParams.setTrustManagers(trustManagers);
|
||||||
|
tlsParams.setDisableCNCheck(true);
|
||||||
|
http.setTlsClientParameters(tlsParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
private interface SSLSocketFactoryHolder {
|
||||||
|
SSLSocketFactory INSTANCE = createSSLSocketFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class NaiveHostnameVerifier implements HostnameVerifier {
|
||||||
|
@Override
|
||||||
|
public boolean verify(String hostName, SSLSession session) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class NaiveTrustManager implements X509TrustManager {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkClientTrusted(X509Certificate[] certs, String authType)
|
||||||
|
throws CertificateException {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkServerTrusted(X509Certificate[] certs, String authType)
|
||||||
|
throws CertificateException {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return new X509Certificate[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final java.lang.String JAXWS_HOSTNAME_VERIFIER =
|
||||||
|
"com.sun.xml.internal.ws.transport.https.client.hostname.verifier";
|
||||||
|
private static final java.lang.String JAXWS_SSL_SOCKET_FACTORY =
|
||||||
|
"com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory";
|
||||||
|
}
|
||||||
362
onvif-java/src/main/java/de/onvif/soap/OnvifDevice.java
Normal file
362
onvif-java/src/main/java/de/onvif/soap/OnvifDevice.java
Normal file
@ -0,0 +1,362 @@
|
|||||||
|
package de.onvif.soap;
|
||||||
|
|
||||||
|
import de.onvif.beans.DeviceInfo;
|
||||||
|
import java.net.ConnectException;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import javax.xml.soap.SOAPException;
|
||||||
|
|
||||||
|
import javax.xml.ws.BindingProvider;
|
||||||
|
import javax.xml.ws.Holder;
|
||||||
|
import org.apache.cxf.binding.soap.Soap12;
|
||||||
|
import org.apache.cxf.binding.soap.SoapBindingConfiguration;
|
||||||
|
import org.apache.cxf.endpoint.Client;
|
||||||
|
import org.apache.cxf.frontend.ClientProxy;
|
||||||
|
import org.apache.cxf.interceptor.LoggingInInterceptor;
|
||||||
|
import org.apache.cxf.interceptor.LoggingOutInterceptor;
|
||||||
|
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
|
||||||
|
import org.apache.cxf.transport.http.HTTPConduit;
|
||||||
|
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
|
||||||
|
import org.onvif.ver10.device.wsdl.Device;
|
||||||
|
import org.onvif.ver10.device.wsdl.DeviceService;
|
||||||
|
import org.onvif.ver10.events.wsdl.EventPortType;
|
||||||
|
import org.onvif.ver10.events.wsdl.EventService;
|
||||||
|
import org.onvif.ver10.media.wsdl.Media;
|
||||||
|
import org.onvif.ver10.media.wsdl.MediaService;
|
||||||
|
import org.onvif.ver10.recording.wsdl.RecordingPort;
|
||||||
|
import org.onvif.ver10.recording.wsdl.RecordingService;
|
||||||
|
import org.onvif.ver10.replay.wsdl.ReplayPort;
|
||||||
|
import org.onvif.ver10.replay.wsdl.ReplayService;
|
||||||
|
import org.onvif.ver10.schema.Capabilities;
|
||||||
|
import org.onvif.ver10.schema.CapabilityCategory;
|
||||||
|
import org.onvif.ver10.schema.DateTime;
|
||||||
|
import org.onvif.ver10.schema.MediaUri;
|
||||||
|
import org.onvif.ver10.schema.SetDateTimeType;
|
||||||
|
import org.onvif.ver10.schema.StreamSetup;
|
||||||
|
import org.onvif.ver10.schema.StreamType;
|
||||||
|
import org.onvif.ver10.schema.Transport;
|
||||||
|
import org.onvif.ver10.schema.TransportProtocol;
|
||||||
|
import org.onvif.ver20.imaging.wsdl.ImagingPort;
|
||||||
|
import org.onvif.ver20.imaging.wsdl.ImagingService;
|
||||||
|
import org.onvif.ver20.ptz.wsdl.PTZ;
|
||||||
|
import org.onvif.ver20.ptz.wsdl.PtzService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.onvif.ver10.device.wsdl.GetNetworkProtocolsResponse;
|
||||||
|
import org.onvif.ver10.schema.NetworkProtocol;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Robin Dick
|
||||||
|
* @author Modified by Brad Lowe
|
||||||
|
*/
|
||||||
|
public class OnvifDevice {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(OnvifDevice.class);
|
||||||
|
private static final String DEVICE_SERVICE = "/onvif/device_service";
|
||||||
|
private static final String RECORDING_SERVICE = "/onvif/recording_service";
|
||||||
|
private static final String REPLAY_SERVICE = "/onvif/replay_service";
|
||||||
|
|
||||||
|
private final URL url; // Example http://host:port, https://host, http://host, http://ip_address
|
||||||
|
|
||||||
|
private Device device;
|
||||||
|
private Media media;
|
||||||
|
private RecordingPort recordings;
|
||||||
|
private ReplayPort replay;
|
||||||
|
private PTZ ptz;
|
||||||
|
private ImagingPort imaging;
|
||||||
|
private EventPortType events;
|
||||||
|
|
||||||
|
private static boolean verbose = false; // enable/disable logging of SOAP messages
|
||||||
|
final SimpleSecurityHandler securityHandler;
|
||||||
|
|
||||||
|
private static URL cleanURL(URL u) throws ConnectException {
|
||||||
|
if (u == null) throw new ConnectException("null url not allowed");
|
||||||
|
String f = u.getFile();
|
||||||
|
if (!f.isEmpty()) {
|
||||||
|
String out = u.toString().replace(f, "");
|
||||||
|
try {
|
||||||
|
return new URL(out);
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
throw new ConnectException("MalformedURLException " + u);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return u;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* @param url is http://host or http://host:port or https://host or https://host:port
|
||||||
|
* @param user Username you need to login, or "" for none
|
||||||
|
* @param password User's password to login, or "" for none
|
||||||
|
*/
|
||||||
|
public OnvifDevice(URL url, String user, String password) throws ConnectException, SOAPException {
|
||||||
|
this.url = cleanURL(url);
|
||||||
|
securityHandler =
|
||||||
|
!user.isEmpty() && !password.isEmpty() ? new SimpleSecurityHandler(user, password) : null;
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes an Onvif device, e.g. a Network Video Transmitter (NVT) with logindata.
|
||||||
|
*
|
||||||
|
* @param deviceIp The IP address or host name of your device, you can also add a port
|
||||||
|
* @param user Username you need to login
|
||||||
|
* @param password User's password to login
|
||||||
|
* @throws ConnectException Exception gets thrown, if device isn't accessible or invalid and
|
||||||
|
* doesn't answer to SOAP messages
|
||||||
|
* @throws SOAPException
|
||||||
|
*/
|
||||||
|
public OnvifDevice(String deviceIp, String user, String password)
|
||||||
|
throws ConnectException, SOAPException, MalformedURLException {
|
||||||
|
this(
|
||||||
|
deviceIp.startsWith("http") ? new URL(deviceIp) : new URL("http://" + deviceIp),
|
||||||
|
user,
|
||||||
|
password);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes an Onvif device, e.g. a Network Video Transmitter (NVT) with logindata.
|
||||||
|
*
|
||||||
|
* @param hostIp The IP address of your device, you can also add a port but noch protocol (e.g.
|
||||||
|
* http://)
|
||||||
|
* @throws ConnectException Exception gets thrown, if device isn't accessible or invalid and
|
||||||
|
* doesn't answer to SOAP messages
|
||||||
|
* @throws SOAPException
|
||||||
|
*/
|
||||||
|
public OnvifDevice(String hostIp) throws ConnectException, SOAPException, MalformedURLException {
|
||||||
|
this(hostIp, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initalizes the addresses used for SOAP messages and to get the internal IP, if given IP is a
|
||||||
|
* proxy.
|
||||||
|
*
|
||||||
|
* @throws ConnectException Get thrown if device doesn't give answers to GetCapabilities()
|
||||||
|
* @throws SOAPException
|
||||||
|
*/
|
||||||
|
protected void init() throws ConnectException, SOAPException {
|
||||||
|
|
||||||
|
DeviceService deviceService = new DeviceService(null, DeviceService.SERVICE);
|
||||||
|
|
||||||
|
BindingProvider deviceServicePort = (BindingProvider) deviceService.getDevicePort();
|
||||||
|
this.device =
|
||||||
|
getServiceProxy(deviceServicePort, url.toString() + DEVICE_SERVICE).create(Device.class);
|
||||||
|
|
||||||
|
RecordingService recordingService = new RecordingService();
|
||||||
|
BindingProvider recServicePort = (BindingProvider) recordingService.getRecordingPort();
|
||||||
|
this.recordings = getServiceProxy(recServicePort,url.toString() + RECORDING_SERVICE).create(RecordingPort.class);
|
||||||
|
|
||||||
|
ReplayService replayService = new ReplayService();
|
||||||
|
BindingProvider replayServicePort = (BindingProvider) replayService.getReplayPort();
|
||||||
|
this.replay = getServiceProxy(replayServicePort,url.toString() + REPLAY_SERVICE).create(ReplayPort.class);
|
||||||
|
|
||||||
|
|
||||||
|
Capabilities capabilities = this.device.getCapabilities(Arrays.asList(CapabilityCategory.ALL));
|
||||||
|
|
||||||
|
if (capabilities == null) {
|
||||||
|
throw new ConnectException("Capabilities not reachable.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (capabilities.getMedia() != null && capabilities.getMedia().getXAddr() != null) {
|
||||||
|
this.media = new MediaService().getMediaPort();
|
||||||
|
this.media =
|
||||||
|
getServiceProxy((BindingProvider) media, capabilities.getMedia().getXAddr())
|
||||||
|
.create(Media.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (capabilities.getPTZ() != null && capabilities.getPTZ().getXAddr() != null) {
|
||||||
|
this.ptz = new PtzService().getPtzPort();
|
||||||
|
this.ptz =
|
||||||
|
getServiceProxy((BindingProvider) ptz, capabilities.getPTZ().getXAddr())
|
||||||
|
.create(PTZ.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (capabilities.getImaging() != null && capabilities.getImaging().getXAddr() != null) {
|
||||||
|
this.imaging = new ImagingService().getImagingPort();
|
||||||
|
this.imaging =
|
||||||
|
getServiceProxy((BindingProvider) imaging, capabilities.getImaging().getXAddr())
|
||||||
|
.create(ImagingPort.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (capabilities.getEvents() != null && capabilities.getEvents().getXAddr() != null) {
|
||||||
|
this.events = new EventService().getEventPort();
|
||||||
|
this.events =
|
||||||
|
getServiceProxy((BindingProvider) events, capabilities.getEvents().getXAddr())
|
||||||
|
.create(EventPortType.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JaxWsProxyFactoryBean getServiceProxy(BindingProvider servicePort, String serviceAddr) {
|
||||||
|
|
||||||
|
JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean();
|
||||||
|
proxyFactory.getHandlers();
|
||||||
|
|
||||||
|
if (serviceAddr != null) proxyFactory.setAddress(serviceAddr);
|
||||||
|
proxyFactory.setServiceClass(servicePort.getClass());
|
||||||
|
|
||||||
|
SoapBindingConfiguration config = new SoapBindingConfiguration();
|
||||||
|
|
||||||
|
config.setVersion(Soap12.getInstance());
|
||||||
|
proxyFactory.setBindingConfig(config);
|
||||||
|
Client deviceClient = ClientProxy.getClient(servicePort);
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
// these logging interceptors are depreciated, but should be fine for debugging/development
|
||||||
|
// use.
|
||||||
|
proxyFactory.getOutInterceptors().add(new LoggingOutInterceptor());
|
||||||
|
proxyFactory.getInInterceptors().add(new LoggingInInterceptor());
|
||||||
|
}
|
||||||
|
|
||||||
|
HTTPConduit http = (HTTPConduit) deviceClient.getConduit();
|
||||||
|
if (securityHandler != null) proxyFactory.getHandlers().add(securityHandler);
|
||||||
|
HTTPClientPolicy httpClientPolicy = http.getClient();
|
||||||
|
httpClientPolicy.setConnectionTimeout(36000);
|
||||||
|
httpClientPolicy.setReceiveTimeout(32000);
|
||||||
|
httpClientPolicy.setAllowChunking(false);
|
||||||
|
|
||||||
|
return proxyFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetSystemDateAndTime() {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
Date currentDate = new Date();
|
||||||
|
boolean daylightSavings = calendar.getTimeZone().inDaylightTime(currentDate);
|
||||||
|
org.onvif.ver10.schema.TimeZone timeZone = new org.onvif.ver10.schema.TimeZone();
|
||||||
|
timeZone.setTZ(displayTimeZone(calendar.getTimeZone()));
|
||||||
|
org.onvif.ver10.schema.Time time = new org.onvif.ver10.schema.Time();
|
||||||
|
time.setHour(calendar.get(Calendar.HOUR_OF_DAY));
|
||||||
|
time.setMinute(calendar.get(Calendar.MINUTE));
|
||||||
|
time.setSecond(calendar.get(Calendar.SECOND));
|
||||||
|
org.onvif.ver10.schema.Date date = new org.onvif.ver10.schema.Date();
|
||||||
|
date.setYear(calendar.get(Calendar.YEAR));
|
||||||
|
date.setMonth(calendar.get(Calendar.MONTH) + 1);
|
||||||
|
date.setDay(calendar.get(Calendar.DAY_OF_MONTH));
|
||||||
|
org.onvif.ver10.schema.DateTime utcDateTime = new org.onvif.ver10.schema.DateTime();
|
||||||
|
utcDateTime.setDate(date);
|
||||||
|
utcDateTime.setTime(time);
|
||||||
|
device.setSystemDateAndTime(SetDateTimeType.MANUAL, daylightSavings, timeZone, utcDateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String displayTimeZone(TimeZone tz) {
|
||||||
|
|
||||||
|
long hours = TimeUnit.MILLISECONDS.toHours(tz.getRawOffset());
|
||||||
|
long minutes =
|
||||||
|
TimeUnit.MILLISECONDS.toMinutes(tz.getRawOffset()) - TimeUnit.HOURS.toMinutes(hours);
|
||||||
|
// avoid -4:-30 issue
|
||||||
|
minutes = Math.abs(minutes);
|
||||||
|
|
||||||
|
String result = "";
|
||||||
|
if (hours > 0) {
|
||||||
|
result = String.format("GMT+%02d:%02d", hours, minutes);
|
||||||
|
} else {
|
||||||
|
result = String.format("GMT%02d:%02d", hours, minutes);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Is used for basic devices and requests of given Onvif Device */
|
||||||
|
public Device getDevice() {
|
||||||
|
return device;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RecordingPort getRecording(){
|
||||||
|
return recordings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReplayPort getReplay(){
|
||||||
|
return replay;
|
||||||
|
}
|
||||||
|
public PTZ getPtz() {
|
||||||
|
return ptz;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Media getMedia() {
|
||||||
|
return media;
|
||||||
|
}
|
||||||
|
// public RecordingPort getRecording(){return recordings;}
|
||||||
|
public ImagingPort getImaging() {
|
||||||
|
return imaging;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EventPortType getEvents() {
|
||||||
|
return events;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DateTime getDate() {
|
||||||
|
return device.getSystemDateAndTime().getLocalDateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceInfo getDeviceInfo() {
|
||||||
|
Holder<String> manufacturer = new Holder<>();
|
||||||
|
Holder<String> model = new Holder<>();
|
||||||
|
Holder<String> firmwareVersion = new Holder<>();
|
||||||
|
Holder<String> serialNumber = new Holder<>();
|
||||||
|
Holder<String> hardwareId = new Holder<>();
|
||||||
|
device.getDeviceInformation(manufacturer, model, firmwareVersion, serialNumber, hardwareId);
|
||||||
|
return new DeviceInfo(
|
||||||
|
manufacturer.value,
|
||||||
|
model.value,
|
||||||
|
firmwareVersion.value,
|
||||||
|
serialNumber.value,
|
||||||
|
hardwareId.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHostname() {
|
||||||
|
return device.getHostname().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String reboot() throws ConnectException, SOAPException {
|
||||||
|
return device.systemReboot();
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns http://host[:port]/path_for_snapshot
|
||||||
|
public String getSnapshotUri(String profileToken) {
|
||||||
|
MediaUri sceenshotUri = media.getSnapshotUri(profileToken);
|
||||||
|
if (sceenshotUri != null) {
|
||||||
|
return sceenshotUri.getUri();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSnapshotUri() {
|
||||||
|
return getSnapshotUri(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStreamUri() {
|
||||||
|
return getStreamUri(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get snapshot uri for profile with index
|
||||||
|
public String getSnapshotUri(int index) {
|
||||||
|
if (media.getProfiles().size() >= index)
|
||||||
|
return getSnapshotUri(media.getProfiles().get(index).getToken());
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStreamUri(int index) {
|
||||||
|
return getStreamUri(media.getProfiles().get(index).getToken());
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns rtsp://host[:port]/path_for_rtsp
|
||||||
|
public String getStreamUri(String profileToken) {
|
||||||
|
StreamSetup streamSetup = new StreamSetup();
|
||||||
|
Transport t = new Transport();
|
||||||
|
t.setProtocol(TransportProtocol.RTSP);
|
||||||
|
streamSetup.setTransport(t);
|
||||||
|
streamSetup.setStream(StreamType.RTP_UNICAST);
|
||||||
|
MediaUri rtsp = media.getStreamUri(streamSetup, profileToken);
|
||||||
|
return rtsp != null ? rtsp.getUri() : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isVerbose() {
|
||||||
|
return verbose;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setVerbose(boolean verbose) {
|
||||||
|
OnvifDevice.verbose = verbose;
|
||||||
|
}
|
||||||
|
}
|
||||||
282
onvif-java/src/main/java/de/onvif/soap/SSLUtilities.java
Normal file
282
onvif-java/src/main/java/de/onvif/soap/SSLUtilities.java
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
package de.onvif.soap;
|
||||||
|
|
||||||
|
/** @author schrepfler */
|
||||||
|
import java.security.GeneralSecurityException;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import javax.net.ssl.HostnameVerifier;
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.SSLSession;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
import javax.net.ssl.X509TrustManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class provide various static methods that relax X509 certificate and hostname verification
|
||||||
|
* while using the SSL over the HTTP protocol.
|
||||||
|
*
|
||||||
|
* @author Francis Labrie
|
||||||
|
*/
|
||||||
|
public final class SSLUtilities {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hostname verifier for the Sun's deprecated API.
|
||||||
|
*
|
||||||
|
* @deprecated see {@link #_hostnameVerifier}.
|
||||||
|
*/
|
||||||
|
private static HostnameVerifier __hostnameVerifier;
|
||||||
|
/**
|
||||||
|
* Thrust managers for the Sun's deprecated API.
|
||||||
|
*
|
||||||
|
* @deprecated see {@link #_trustManagers}.
|
||||||
|
*/
|
||||||
|
private static TrustManager[] __trustManagers;
|
||||||
|
/** Hostname verifier. */
|
||||||
|
private static HostnameVerifier _hostnameVerifier;
|
||||||
|
/** Thrust managers. */
|
||||||
|
private static TrustManager[] _trustManagers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default Hostname Verifier to an instance of a fake class that trust all hostnames. This
|
||||||
|
* method uses the old deprecated API from the com.sun.ssl package.
|
||||||
|
*
|
||||||
|
* @deprecated see {@link #_trustAllHostnames()}.
|
||||||
|
*/
|
||||||
|
private static void __trustAllHostnames() {
|
||||||
|
// Create a trust manager that does not validate certificate chains
|
||||||
|
if (__hostnameVerifier == null) {
|
||||||
|
__hostnameVerifier = new _FakeHostnameVerifier();
|
||||||
|
} // if
|
||||||
|
// Install the all-trusting host name verifier
|
||||||
|
HttpsURLConnection.setDefaultHostnameVerifier(__hostnameVerifier);
|
||||||
|
} // __trustAllHttpsCertificates
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default X509 Trust Manager to an instance of a fake class that trust all certificates,
|
||||||
|
* even the self-signed ones. This method uses the old deprecated API from the com.sun.ssl
|
||||||
|
* package.
|
||||||
|
*
|
||||||
|
* @deprecated see {@link #_trustAllHttpsCertificates()}.
|
||||||
|
*/
|
||||||
|
private static void __trustAllHttpsCertificates() {
|
||||||
|
SSLContext context;
|
||||||
|
|
||||||
|
// Create a trust manager that does not validate certificate chains
|
||||||
|
if (__trustManagers == null) {
|
||||||
|
__trustManagers = new TrustManager[] {new _FakeX509TrustManager()};
|
||||||
|
} // if
|
||||||
|
// Install the all-trusting trust manager
|
||||||
|
try {
|
||||||
|
context = SSLContext.getInstance("SSL");
|
||||||
|
context.init(null, __trustManagers, new SecureRandom());
|
||||||
|
} catch (GeneralSecurityException gse) {
|
||||||
|
throw new IllegalStateException(gse.getMessage());
|
||||||
|
} // catch
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
|
||||||
|
} // __trustAllHttpsCertificates
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if the protocol handler property java. protocol.handler.pkgs is set to the Sun's
|
||||||
|
* com.sun.net.ssl. internal.www.protocol deprecated one, false otherwise.
|
||||||
|
*
|
||||||
|
* @return true if the protocol handler property is set to the Sun's deprecated one, false
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
private static boolean isDeprecatedSSLProtocol() {
|
||||||
|
return ("com.sun.net.ssl.internal.www.protocol"
|
||||||
|
.equals(System.getProperty("java.protocol.handler.pkgs")));
|
||||||
|
} // isDeprecatedSSLProtocol
|
||||||
|
|
||||||
|
/** Set the default Hostname Verifier to an instance of a fake class that trust all hostnames. */
|
||||||
|
private static void _trustAllHostnames() {
|
||||||
|
// Create a trust manager that does not validate certificate chains
|
||||||
|
if (_hostnameVerifier == null) {
|
||||||
|
_hostnameVerifier = new FakeHostnameVerifier();
|
||||||
|
} // if
|
||||||
|
// Install the all-trusting host name verifier:
|
||||||
|
HttpsURLConnection.setDefaultHostnameVerifier(_hostnameVerifier);
|
||||||
|
} // _trustAllHttpsCertificates
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default X509 Trust Manager to an instance of a fake class that trust all certificates,
|
||||||
|
* even the self-signed ones.
|
||||||
|
*/
|
||||||
|
private static void _trustAllHttpsCertificates() {
|
||||||
|
SSLContext context;
|
||||||
|
|
||||||
|
// Create a trust manager that does not validate certificate chains
|
||||||
|
if (_trustManagers == null) {
|
||||||
|
_trustManagers = new TrustManager[] {new FakeX509TrustManager()};
|
||||||
|
} // if
|
||||||
|
// Install the all-trusting trust manager:
|
||||||
|
try {
|
||||||
|
context = SSLContext.getInstance("SSL");
|
||||||
|
context.init(null, _trustManagers, new SecureRandom());
|
||||||
|
} catch (GeneralSecurityException gse) {
|
||||||
|
throw new IllegalStateException(gse.getMessage());
|
||||||
|
} // catch
|
||||||
|
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
|
||||||
|
} // _trustAllHttpsCertificates
|
||||||
|
|
||||||
|
/** Set the default Hostname Verifier to an instance of a fake class that trust all hostnames. */
|
||||||
|
public static void trustAllHostnames() {
|
||||||
|
// Is the deprecated protocol setted?
|
||||||
|
if (isDeprecatedSSLProtocol()) {
|
||||||
|
__trustAllHostnames();
|
||||||
|
} else {
|
||||||
|
_trustAllHostnames();
|
||||||
|
} // else
|
||||||
|
} // trustAllHostnames
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the default X509 Trust Manager to an instance of a fake class that trust all certificates,
|
||||||
|
* even the self-signed ones.
|
||||||
|
*/
|
||||||
|
public static void trustAllHttpsCertificates() {
|
||||||
|
// Is the deprecated protocol setted?
|
||||||
|
if (isDeprecatedSSLProtocol()) {
|
||||||
|
__trustAllHttpsCertificates();
|
||||||
|
} else {
|
||||||
|
_trustAllHttpsCertificates();
|
||||||
|
} // else
|
||||||
|
} // trustAllHttpsCertificates
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class implements a fake hostname verificator, trusting any host name. This class uses the
|
||||||
|
* old deprecated API from the com.sun. ssl package.
|
||||||
|
*
|
||||||
|
* @author Francis Labrie
|
||||||
|
* @deprecated see {@link SSLUtilities.FakeHostnameVerifier}.
|
||||||
|
*/
|
||||||
|
public static class _FakeHostnameVerifier implements HostnameVerifier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always return true, indicating that the host name is an acceptable match with the server's
|
||||||
|
* authentication scheme.
|
||||||
|
*
|
||||||
|
* @param hostname the host name.
|
||||||
|
* @param session the SSL session used on the connection to host.
|
||||||
|
* @return the true boolean value indicating the host name is trusted.
|
||||||
|
*/
|
||||||
|
public boolean verify(String hostname, SSLSession session) {
|
||||||
|
return (true);
|
||||||
|
}
|
||||||
|
} // _FakeHostnameVerifier
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class allow any X509 certificates to be used to authenticate the remote side of a secure
|
||||||
|
* socket, including self-signed certificates. This class uses the old deprecated API from the
|
||||||
|
* com.sun.ssl package.
|
||||||
|
*
|
||||||
|
* @author Francis Labrie
|
||||||
|
* @deprecated see {@link SSLUtilities.FakeX509TrustManager}.
|
||||||
|
*/
|
||||||
|
public static class _FakeX509TrustManager implements X509TrustManager {
|
||||||
|
|
||||||
|
/** Empty array of certificate authority certificates. */
|
||||||
|
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[] {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always return true, trusting for client SSL chain peer certificate chain.
|
||||||
|
*
|
||||||
|
* @param chain the peer certificate chain.
|
||||||
|
* @return the true boolean value indicating the chain is trusted.
|
||||||
|
*/
|
||||||
|
public boolean isClientTrusted(X509Certificate[] chain) {
|
||||||
|
return (true);
|
||||||
|
} // checkClientTrusted
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always return true, trusting for server SSL chain peer certificate chain.
|
||||||
|
*
|
||||||
|
* @param chain the peer certificate chain.
|
||||||
|
* @return the true boolean value indicating the chain is trusted.
|
||||||
|
*/
|
||||||
|
public boolean isServerTrusted(X509Certificate[] chain) {
|
||||||
|
return (true);
|
||||||
|
} // checkServerTrusted
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an empty array of certificate authority certificates which are trusted for
|
||||||
|
* authenticating peers.
|
||||||
|
*
|
||||||
|
* @return a empty array of issuer certificates.
|
||||||
|
*/
|
||||||
|
public X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return (_AcceptedIssuers);
|
||||||
|
} // getAcceptedIssuers
|
||||||
|
|
||||||
|
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
|
||||||
|
throws CertificateException {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
|
||||||
|
throws CertificateException {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
} // _FakeX509TrustManager
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class implements a fake hostname verificator, trusting any host name.
|
||||||
|
*
|
||||||
|
* @author Francis Labrie
|
||||||
|
*/
|
||||||
|
public static class FakeHostnameVerifier implements HostnameVerifier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always return true, indicating that the host name is an acceptable match with the server's
|
||||||
|
* authentication scheme.
|
||||||
|
*
|
||||||
|
* @param hostname the host name.
|
||||||
|
* @param session the SSL session used on the connection to host.
|
||||||
|
* @return the true boolean value indicating the host name is trusted.
|
||||||
|
*/
|
||||||
|
public boolean verify(String hostname, SSLSession session) {
|
||||||
|
return (true);
|
||||||
|
} // verify
|
||||||
|
} // FakeHostnameVerifier
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class allow any X509 certificates to be used to authenticate the remote side of a secure
|
||||||
|
* socket, including self-signed certificates.
|
||||||
|
*
|
||||||
|
* @author Francis Labrie
|
||||||
|
*/
|
||||||
|
public static class FakeX509TrustManager implements X509TrustManager {
|
||||||
|
|
||||||
|
/** Empty array of certificate authority certificates. */
|
||||||
|
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[] {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always trust for client SSL chain peer certificate chain with any authType authentication
|
||||||
|
* types.
|
||||||
|
*
|
||||||
|
* @param chain the peer certificate chain.
|
||||||
|
* @param authType the authentication type based on the client certificate.
|
||||||
|
*/
|
||||||
|
public void checkClientTrusted(
|
||||||
|
X509Certificate[] chain, String authType) {} // checkClientTrusted
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always trust for server SSL chain peer certificate chain with any authType exchange algorithm
|
||||||
|
* types.
|
||||||
|
*
|
||||||
|
* @param chain the peer certificate chain.
|
||||||
|
* @param authType the key exchange algorithm used.
|
||||||
|
*/
|
||||||
|
public void checkServerTrusted(
|
||||||
|
X509Certificate[] chain, String authType) {} // checkServerTrusted
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an empty array of certificate authority certificates which are trusted for
|
||||||
|
* authenticating peers.
|
||||||
|
*
|
||||||
|
* @return a empty array of issuer certificates.
|
||||||
|
*/
|
||||||
|
public X509Certificate[] getAcceptedIssuers() {
|
||||||
|
return (_AcceptedIssuers);
|
||||||
|
} // getAcceptedIssuers
|
||||||
|
} // FakeX509TrustManager
|
||||||
|
} // SSLUtilities
|
||||||
@ -0,0 +1,172 @@
|
|||||||
|
package de.onvif.soap;
|
||||||
|
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.BASE64_ENCODING;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.CREATED_LN;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.NONCE_LN;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.PASSWORD_DIGEST;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.PASSWORD_LN;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.PASSWORD_TYPE_ATTR;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.USERNAME_LN;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.USERNAME_TOKEN_LN;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.WSSE_LN;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.WSSE_NS;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.WSSE_PREFIX;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.WSU_NS;
|
||||||
|
import static org.apache.wss4j.common.WSS4JConstants.WSU_PREFIX;
|
||||||
|
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.SimpleTimeZone;
|
||||||
|
import java.util.TimeZone;
|
||||||
|
import javax.xml.namespace.QName;
|
||||||
|
import javax.xml.soap.SOAPElement;
|
||||||
|
import javax.xml.soap.SOAPEnvelope;
|
||||||
|
import javax.xml.soap.SOAPHeader;
|
||||||
|
import javax.xml.soap.SOAPMessage;
|
||||||
|
import javax.xml.soap.SOAPPart;
|
||||||
|
import javax.xml.ws.handler.MessageContext;
|
||||||
|
import javax.xml.ws.handler.soap.SOAPHandler;
|
||||||
|
import javax.xml.ws.handler.soap.SOAPMessageContext;
|
||||||
|
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.apache.commons.codec.digest.MessageDigestAlgorithms;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Utility class to add user/password onvif credentials to SOAP communications
|
||||||
|
*/
|
||||||
|
public class SimpleSecurityHandler implements SOAPHandler<SOAPMessageContext> {
|
||||||
|
|
||||||
|
private final String username;
|
||||||
|
private final String password;
|
||||||
|
private String utcTime;
|
||||||
|
private static Random rnd = new SecureRandom();
|
||||||
|
|
||||||
|
public SimpleSecurityHandler(String username, String password) {
|
||||||
|
this.username = username;
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] generateNonce(int length) {
|
||||||
|
byte[] nonceBytes = new byte[length];
|
||||||
|
|
||||||
|
// fill byte[]
|
||||||
|
rnd.nextBytes(nonceBytes);
|
||||||
|
return nonceBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String encryptPassword(String password, byte[] nonceBytes) {
|
||||||
|
String digestBase64 = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 1. Base64 decode the nonce
|
||||||
|
byte[] decodedNonce = nonceBytes;
|
||||||
|
|
||||||
|
// 2. Concatenate decodedNonce, date, and password
|
||||||
|
byte[] dateBytes = getUTCTime().getBytes();
|
||||||
|
byte[] passwordBytes = password.getBytes();
|
||||||
|
byte[] toBeHashed = new byte[decodedNonce.length + dateBytes.length + passwordBytes.length];
|
||||||
|
|
||||||
|
System.arraycopy(decodedNonce, 0, toBeHashed, 0, decodedNonce.length);
|
||||||
|
System.arraycopy(dateBytes, 0, toBeHashed, decodedNonce.length, dateBytes.length);
|
||||||
|
System.arraycopy(passwordBytes, 0, toBeHashed, decodedNonce.length + dateBytes.length, passwordBytes.length);
|
||||||
|
|
||||||
|
// 3. SHA-1 hash the concatenated bytes
|
||||||
|
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||||
|
byte[] sha1Hash = digest.digest(toBeHashed);
|
||||||
|
|
||||||
|
// 4. Base64 encode the SHA-1 hash
|
||||||
|
digestBase64 = java.util.Base64.getEncoder().encodeToString(sha1Hash);
|
||||||
|
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return digestBase64;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handleMessage(final SOAPMessageContext msgCtx) {
|
||||||
|
byte[] nonceBytes = generateNonce(16);
|
||||||
|
// Indicator telling us which direction this message is going in
|
||||||
|
final Boolean outInd = (Boolean) msgCtx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
|
||||||
|
|
||||||
|
// Handler must only add security headers to outbound messages
|
||||||
|
if (outInd.booleanValue()) {
|
||||||
|
try {
|
||||||
|
// Create the xml
|
||||||
|
SOAPMessage soapMessage = msgCtx.getMessage();
|
||||||
|
SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
|
||||||
|
SOAPHeader header = envelope.getHeader();
|
||||||
|
if (header == null) {
|
||||||
|
header = envelope.addHeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
SOAPPart sp = soapMessage.getSOAPPart();
|
||||||
|
SOAPEnvelope se = sp.getEnvelope();
|
||||||
|
se.addNamespaceDeclaration(WSSE_PREFIX, WSSE_NS);
|
||||||
|
se.addNamespaceDeclaration(WSU_PREFIX, WSU_NS);
|
||||||
|
|
||||||
|
SOAPElement securityElem = header.addChildElement(WSSE_LN, WSSE_PREFIX);
|
||||||
|
// securityElem.setAttribute("SOAP-ENV:mustUnderstand", "1");
|
||||||
|
|
||||||
|
SOAPElement usernameTokenElem =
|
||||||
|
securityElem.addChildElement(USERNAME_TOKEN_LN, WSSE_PREFIX);
|
||||||
|
|
||||||
|
SOAPElement usernameElem = usernameTokenElem.addChildElement(USERNAME_LN, WSSE_PREFIX);
|
||||||
|
usernameElem.setTextContent(username);
|
||||||
|
|
||||||
|
SOAPElement passwordElem = usernameTokenElem.addChildElement(PASSWORD_LN, WSSE_PREFIX);
|
||||||
|
passwordElem.setAttribute(PASSWORD_TYPE_ATTR, PASSWORD_DIGEST);
|
||||||
|
passwordElem.setTextContent(encryptPassword(password, nonceBytes));
|
||||||
|
|
||||||
|
SOAPElement nonceElem = usernameTokenElem.addChildElement(NONCE_LN, WSSE_PREFIX);
|
||||||
|
nonceElem.setAttribute("EncodingType", BASE64_ENCODING);
|
||||||
|
nonceElem.setTextContent(Base64.encodeBase64String(nonceBytes));
|
||||||
|
|
||||||
|
SOAPElement createdElem = usernameTokenElem.addChildElement(CREATED_LN, WSU_PREFIX);
|
||||||
|
createdElem.setTextContent(getLastUTCTime());
|
||||||
|
} catch (final Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLastUTCTime() {
|
||||||
|
return utcTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUTCTime() {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-d'T'HH:mm:ss'Z'");
|
||||||
|
sdf.setTimeZone(new SimpleTimeZone(SimpleTimeZone.UTC_TIME, "UTC"));
|
||||||
|
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
|
||||||
|
String utcTime = sdf.format(cal.getTime());
|
||||||
|
this.utcTime = utcTime;
|
||||||
|
return utcTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handleFault(SOAPMessageContext context) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close(MessageContext context) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<QName> getHeaders() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
68
onvif-java/src/main/java/de/onvif/utils/OnvifUtils.java
Normal file
68
onvif-java/src/main/java/de/onvif/utils/OnvifUtils.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package de.onvif.utils;
|
||||||
|
|
||||||
|
import org.onvif.ver10.schema.PTZPreset;
|
||||||
|
import org.onvif.ver10.schema.PTZStatus;
|
||||||
|
import org.onvif.ver10.schema.PTZVector;
|
||||||
|
|
||||||
|
public class OnvifUtils {
|
||||||
|
|
||||||
|
public static String format(PTZVector vector) {
|
||||||
|
String out = "";
|
||||||
|
if (vector != null) {
|
||||||
|
out += "[" + vector.getPanTilt().getX() + "," + vector.getPanTilt().getY();
|
||||||
|
if (vector.getZoom() != null) out += "," + vector.getZoom().getX();
|
||||||
|
out += "]";
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String format(PTZPreset preset) {
|
||||||
|
String out = "";
|
||||||
|
if (preset != null) {
|
||||||
|
out += preset.getToken() + "/" + preset.getName() + ":" + format(preset.getPTZPosition());
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String format(PTZStatus status) {
|
||||||
|
String out = "";
|
||||||
|
if (status != null) {
|
||||||
|
out +=
|
||||||
|
"moveStatus="
|
||||||
|
+ format(status.getMoveStatus())
|
||||||
|
+ " position="
|
||||||
|
+ format(status.getPosition())
|
||||||
|
+ " time="
|
||||||
|
+ status.getUtcTime();
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String format(Object o) {
|
||||||
|
String out = "";
|
||||||
|
if (o != null) {
|
||||||
|
out = o.toString();
|
||||||
|
for (; ; ) {
|
||||||
|
int ch = out.indexOf("org.onvif.ver");
|
||||||
|
if (ch == -1) break;
|
||||||
|
int end = out.indexOf("[", ch);
|
||||||
|
if (end == -1) {
|
||||||
|
assert (false);
|
||||||
|
break;
|
||||||
|
} //
|
||||||
|
int at = out.indexOf("@", ch);
|
||||||
|
if (at == -1 || at > end) {
|
||||||
|
assert (false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
out = out.substring(0, ch) + out.substring(end);
|
||||||
|
}
|
||||||
|
|
||||||
|
out = out.replaceAll("<null>", ""); // speed=<null>,foo=bar to just speed=,foo=bar
|
||||||
|
|
||||||
|
// out += preset.getToken()+"/"+preset.getName()+":"+format(preset.getPTZPosition());
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
}
|
||||||
7
onvif-java/src/main/resources/log4j.properties
Normal file
7
onvif-java/src/main/resources/log4j.properties
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Root logger option
|
||||||
|
log4j.rootLogger=INFO, stdout
|
||||||
|
# Direct log messages to stdout
|
||||||
|
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.stdout.Target=System.out
|
||||||
|
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||||
40
onvif-java/src/test/java/org/onvif/client/AuthTest.java
Normal file
40
onvif-java/src/test/java/org/onvif/client/AuthTest.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
public class AuthTest {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
String date = "2024-03-06T06:04:30Z";
|
||||||
|
String nonce = "gHV4Y/cV8KE7OSY7+qGv0g==";
|
||||||
|
String password = "abcd1234";
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 1. Base64 decode the nonce
|
||||||
|
byte[] decodedNonce = Base64.getDecoder().decode(nonce);
|
||||||
|
|
||||||
|
// 2. Concatenate decodedNonce, date, and password
|
||||||
|
byte[] dateBytes = date.getBytes();
|
||||||
|
byte[] passwordBytes = password.getBytes();
|
||||||
|
byte[] toBeHashed = new byte[decodedNonce.length + dateBytes.length + passwordBytes.length];
|
||||||
|
|
||||||
|
System.arraycopy(decodedNonce, 0, toBeHashed, 0, decodedNonce.length);
|
||||||
|
System.arraycopy(dateBytes, 0, toBeHashed, decodedNonce.length, dateBytes.length);
|
||||||
|
System.arraycopy(passwordBytes, 0, toBeHashed, decodedNonce.length + dateBytes.length, passwordBytes.length);
|
||||||
|
|
||||||
|
// 3. SHA-1 hash the concatenated bytes
|
||||||
|
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||||
|
byte[] sha1Hash = digest.digest(toBeHashed);
|
||||||
|
|
||||||
|
// 4. Base64 encode the SHA-1 hash
|
||||||
|
String digestBase64 = Base64.getEncoder().encodeToString(sha1Hash);
|
||||||
|
|
||||||
|
System.out.println("Digest: " + digestBase64);
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
28
onvif-java/src/test/java/org/onvif/client/Base64Test.java
Normal file
28
onvif-java/src/test/java/org/onvif/client/Base64Test.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
public class Base64Test {
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String base64String = "4AUTXXJ214OBnsdeYBXatQ==";
|
||||||
|
|
||||||
|
// decode Base64
|
||||||
|
byte[] decodedBytes = Base64.getDecoder().decode(base64String);
|
||||||
|
|
||||||
|
// turn byte[] to hex
|
||||||
|
StringBuilder hexStringBuilder = new StringBuilder();
|
||||||
|
for (byte b : decodedBytes) {
|
||||||
|
String hex = Integer.toHexString(0xff & b);
|
||||||
|
if (hex.length() == 1) {
|
||||||
|
hexStringBuilder.append('0');
|
||||||
|
}
|
||||||
|
hexStringBuilder.append(hex);
|
||||||
|
}
|
||||||
|
String hexString = hexStringBuilder.toString();
|
||||||
|
|
||||||
|
System.out.println("hex:" + hexString);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import de.onvif.discovery.OnvifDiscovery;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class calls OnvifDiscovery and for each device URL found, calls TestDevice This assumes all onvif
|
||||||
|
* devices on your network use the same username and password.
|
||||||
|
*
|
||||||
|
* @author Brad Lowe
|
||||||
|
*/
|
||||||
|
public class DiscoverAndTest {
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(TestDevice.class);
|
||||||
|
|
||||||
|
public static String discoverAndTest(String user, String password) {
|
||||||
|
String sep = "\n";
|
||||||
|
StringBuffer out = new StringBuffer();
|
||||||
|
|
||||||
|
Collection<URL> urls = OnvifDiscovery.discoverOnvifURLs();
|
||||||
|
for (URL u : urls) {
|
||||||
|
out.append("Discovered URL:" + u.toString() + sep);
|
||||||
|
}
|
||||||
|
ArrayList<String> results = new ArrayList<>();
|
||||||
|
|
||||||
|
int good = 0, bad = 0;
|
||||||
|
|
||||||
|
for (URL u : urls) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
String result = TestDevice.testCamera(u, user, password);
|
||||||
|
LOG.info(u + "->" + result);
|
||||||
|
good++;
|
||||||
|
results.add(u.toString() + ":" + result);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
bad++;
|
||||||
|
LOG.error("error:" + u, e);
|
||||||
|
// This is a bit of a hack. When a camera is password protected (it should be!)
|
||||||
|
// and the password is not provided or wrong, a "Unable to Send Message" exception
|
||||||
|
// may be thrown. This is not clear-- buried in the stack track is the real cause.
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
e.printStackTrace(pw);
|
||||||
|
String trace = sw.getBuffer().toString();
|
||||||
|
if (trace.contains("Unauthorized")) results.add(u + ":Unauthorized:");
|
||||||
|
else results.add(u + ":" + trace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out.append("RESULTS: " + sep);
|
||||||
|
for (String s : results) out.append(s + sep);
|
||||||
|
out.append("cameras found:" + urls.size() + " good=" + good + ", bad=" + bad + sep);
|
||||||
|
return out.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// get user and password.. we will ignore device host
|
||||||
|
String user = "";
|
||||||
|
String password = "";
|
||||||
|
if (args.length > 0) user = args[0];
|
||||||
|
if (args.length > 1) password = args[1];
|
||||||
|
|
||||||
|
if (password.isEmpty()) {
|
||||||
|
LOG.warn(
|
||||||
|
"Warning: No password for discover and test... run with common user password as arguments");
|
||||||
|
}
|
||||||
|
// OnvifDevice.setVerbose(true);
|
||||||
|
LOG.info(discoverAndTest(user, password));
|
||||||
|
}
|
||||||
|
}
|
||||||
18
onvif-java/src/test/java/org/onvif/client/DiscoveryTest.java
Normal file
18
onvif-java/src/test/java/org/onvif/client/DiscoveryTest.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import de.onvif.discovery.OnvifDiscovery;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Collection;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class DiscoveryTest {
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(DiscoveryTest.class);
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Collection<URL> urls = OnvifDiscovery.discoverOnvifURLs();
|
||||||
|
for (URL u : urls) {
|
||||||
|
LOG.info(u.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
132
onvif-java/src/test/java/org/onvif/client/GetTestDevice.java
Normal file
132
onvif-java/src/test/java/org/onvif/client/GetTestDevice.java
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Scanner;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class GetTestDevice {
|
||||||
|
|
||||||
|
static String PROPERTY_NAME = "ONVIF_HOST";
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(GetTestDevice.class);
|
||||||
|
|
||||||
|
// Get a camera host, user name, and password for tests.
|
||||||
|
// Add an environment variable or java Property called "TEST_CAM" and set to
|
||||||
|
// host,user,password,profile
|
||||||
|
// or modify resource/onvif.properties
|
||||||
|
|
||||||
|
public static OnvifCredentials getOnvifCredentials(String[] args) {
|
||||||
|
|
||||||
|
OnvifCredentials creds = getFromArgs(args);
|
||||||
|
if (creds != null)
|
||||||
|
return creds;
|
||||||
|
|
||||||
|
creds = getFromProperties();
|
||||||
|
if (creds != null)
|
||||||
|
return creds;
|
||||||
|
try {
|
||||||
|
creds = getFirstFromResource("/onvif.properties");
|
||||||
|
if (creds != null)
|
||||||
|
return creds;
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
LOG.error("Error", ioe);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
creds = getFromStandardInput();
|
||||||
|
if (creds != null)
|
||||||
|
return creds;
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
LOG.error("Error", ioe);
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG.info("Unable to get default test onvif credentials");
|
||||||
|
return new OnvifCredentials("", "", "", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
// arguments to any test app can be host user password profilename
|
||||||
|
// if no arguments passed, returns null.
|
||||||
|
// All arguments optional.
|
||||||
|
public static OnvifCredentials getFromArgs(String[] args) {
|
||||||
|
if (args == null || args.length == 0)
|
||||||
|
return null;
|
||||||
|
String host = "", user = "", password = "", profile = "";
|
||||||
|
host = args[0];
|
||||||
|
if (args.length > 1)
|
||||||
|
user = args[1];
|
||||||
|
if (args.length > 2)
|
||||||
|
password = args[2];
|
||||||
|
if (args.length > 3)
|
||||||
|
profile = args[3];
|
||||||
|
return new OnvifCredentials(host, user, password, profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OnvifCredentials getFromProperties() {
|
||||||
|
String test = null;
|
||||||
|
if (test == null)
|
||||||
|
test = System.getProperty(PROPERTY_NAME);
|
||||||
|
if (test == null)
|
||||||
|
test = System.getenv(PROPERTY_NAME);
|
||||||
|
|
||||||
|
if (test != null) {
|
||||||
|
return parse(test);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static OnvifCredentials getFromStandardInput() throws IOException {
|
||||||
|
|
||||||
|
System.out.println("Getting camera credentials from standard input");
|
||||||
|
InputStreamReader inputStream = new InputStreamReader(System.in, StandardCharsets.UTF_8);
|
||||||
|
BufferedReader keyboardInput = new BufferedReader(inputStream);
|
||||||
|
System.out.println("Please enter camera IP (with port if not 80):");
|
||||||
|
String cameraAddress = keyboardInput.readLine();
|
||||||
|
System.out.println("Please enter camera username:");
|
||||||
|
String user = keyboardInput.readLine();
|
||||||
|
System.out.println("Please enter camera password:");
|
||||||
|
String password = keyboardInput.readLine();
|
||||||
|
System.out.println("Please enter camera profile [or enter to use first]:");
|
||||||
|
String profile = keyboardInput.readLine();
|
||||||
|
OnvifCredentials creds = new OnvifCredentials(cameraAddress, user, password, profile);
|
||||||
|
return creds;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static OnvifCredentials getFirstFromResource(String resource) throws IOException {
|
||||||
|
InputStream res = GetTestDevice.class.getResourceAsStream(resource);
|
||||||
|
if (res != null) {
|
||||||
|
try (Scanner s = new Scanner(res, StandardCharsets.UTF_8.name());) {
|
||||||
|
s.useDelimiter("\\A");
|
||||||
|
while (s.hasNextLine()) {
|
||||||
|
String line = s.nextLine();
|
||||||
|
if (!line.isEmpty() && !line.startsWith("#"))
|
||||||
|
return parse(line.substring(line.indexOf("=") + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// warning, this breaks if password contains a comma.
|
||||||
|
public static OnvifCredentials parse(String i) {
|
||||||
|
String host = "", user = "", password = "", profile = "";
|
||||||
|
if (i != null) {
|
||||||
|
if (i.contains(",")) {
|
||||||
|
String[] sp = i.split(",");
|
||||||
|
if (sp.length > 0)
|
||||||
|
host = sp[0];
|
||||||
|
if (sp.length > 1)
|
||||||
|
user = sp[1];
|
||||||
|
if (sp.length > 2)
|
||||||
|
password = sp[2];
|
||||||
|
if (sp.length > 3)
|
||||||
|
profile = sp[3];
|
||||||
|
|
||||||
|
} else
|
||||||
|
host = i;
|
||||||
|
}
|
||||||
|
return new OnvifCredentials(host, user, password, profile);
|
||||||
|
}
|
||||||
|
}
|
||||||
150
onvif-java/src/test/java/org/onvif/client/ONVIFClient.java
Normal file
150
onvif-java/src/test/java/org/onvif/client/ONVIFClient.java
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import javax.xml.soap.*;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
public class ONVIFClient {
|
||||||
|
private String deviceUrl;
|
||||||
|
private String username;
|
||||||
|
private String password;
|
||||||
|
private String realm;
|
||||||
|
private String nonce;
|
||||||
|
private String uri;
|
||||||
|
|
||||||
|
public ONVIFClient(String deviceUrl, String username, String password) {
|
||||||
|
this.deviceUrl = deviceUrl;
|
||||||
|
this.username = username;
|
||||||
|
this.password = password;
|
||||||
|
this.uri = "/onvif/device_service"; // Set to your ONVIF service URI
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getDeviceInfo() {
|
||||||
|
try {
|
||||||
|
// Step 1: Send initial request to get authentication details
|
||||||
|
URL url = new URL(deviceUrl + uri);
|
||||||
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
connection.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
|
||||||
|
|
||||||
|
// Get response and parse WWW-Authenticate header
|
||||||
|
int responseCode = connection.getResponseCode();
|
||||||
|
if (responseCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
|
||||||
|
String authHeader = connection.getHeaderField("WWW-Authenticate");
|
||||||
|
parseAuthHeader(authHeader);
|
||||||
|
|
||||||
|
// Step 2: Calculate the digest
|
||||||
|
String digest = calculateDigest();
|
||||||
|
|
||||||
|
// Step 3: Send the actual request with Digest Auth
|
||||||
|
connection = (HttpURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
connection.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
|
||||||
|
connection.setRequestProperty("Authorization", "Digest " + digest);
|
||||||
|
|
||||||
|
// Create SOAP Request
|
||||||
|
SOAPMessage soapMessage = createSOAPRequest();
|
||||||
|
soapMessage.saveChanges();
|
||||||
|
soapMessage.writeTo(connection.getOutputStream());
|
||||||
|
|
||||||
|
// Get the response
|
||||||
|
responseCode = connection.getResponseCode();
|
||||||
|
System.out.println("Response Code: " + responseCode);
|
||||||
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||||||
|
SOAPMessage responseMessage = MessageFactory.newInstance().createMessage(null, connection.getInputStream());
|
||||||
|
System.out.println("Response SOAP Message:");
|
||||||
|
responseMessage.writeTo(System.out);
|
||||||
|
} else {
|
||||||
|
System.out.println("Error in SOAP request: " + connection.getResponseMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("Unexpected response: " + responseCode);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void parseAuthHeader(String authHeader) {
|
||||||
|
String[] params = authHeader.split(", ");
|
||||||
|
for (String param : params) {
|
||||||
|
String[] keyValue = param.split("=");
|
||||||
|
if (keyValue.length == 2) {
|
||||||
|
switch (keyValue[0].trim()) {
|
||||||
|
case "realm":
|
||||||
|
this.realm = keyValue[1].replace("\"", "");
|
||||||
|
break;
|
||||||
|
case "nonce":
|
||||||
|
this.nonce = keyValue[1].replace("\"", "");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String calculateDigest() throws Exception {
|
||||||
|
String method = "POST";
|
||||||
|
String uri = this.uri;
|
||||||
|
String nc = "00000001"; // nonce count
|
||||||
|
String cnonce = "abc123"; // client nonce
|
||||||
|
String qop = "auth";
|
||||||
|
|
||||||
|
// Hashing required values
|
||||||
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||||
|
|
||||||
|
// A1 = MD5(username:realm:password)
|
||||||
|
String A1 = username + ":" + realm + ":" + password;
|
||||||
|
String ha1 = bytesToHex(md.digest(A1.getBytes()));
|
||||||
|
|
||||||
|
// A2 = MD5(method:uri)
|
||||||
|
String A2 = method + ":" + uri;
|
||||||
|
String ha2 = bytesToHex(md.digest(A2.getBytes()));
|
||||||
|
|
||||||
|
// Response = MD5(ha1:nonce:nc:cnonce:qop:ha2)
|
||||||
|
String response = ha1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" + ha2;
|
||||||
|
String digest = bytesToHex(md.digest(response.getBytes()));
|
||||||
|
|
||||||
|
return String.format("username=\"%s\", realm=\"%s\", nonce=\"%s\", uri=\"%s\", response=\"%s\", qop=%s, nc=%s, cnonce=\"%s\"",
|
||||||
|
username, realm, nonce, uri, digest, qop, nc, cnonce);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String bytesToHex(byte[] bytes) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (byte b : bytes) {
|
||||||
|
sb.append(String.format("%02x", b));
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private SOAPMessage createSOAPRequest() throws SOAPException {
|
||||||
|
// Create SOAP Message
|
||||||
|
MessageFactory messageFactory = MessageFactory.newInstance();
|
||||||
|
SOAPMessage soapMessage = messageFactory.createMessage();
|
||||||
|
SOAPPart soapPart = soapMessage.getSOAPPart();
|
||||||
|
|
||||||
|
// Create SOAP Envelope
|
||||||
|
SOAPEnvelope envelope = soapPart.getEnvelope();
|
||||||
|
envelope.addNamespaceDeclaration("tns", "http://www.onvif.org/ver10/device/wsdl");
|
||||||
|
|
||||||
|
// Create SOAP Body
|
||||||
|
SOAPBody soapBody = envelope.getBody();
|
||||||
|
soapBody.addChildElement("GetDeviceInformation", "tns");
|
||||||
|
|
||||||
|
return soapMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String deviceUrl = "http://192.168.51.137"; // Replace with your device URL
|
||||||
|
String username = "onvif1"; // Replace with your username
|
||||||
|
String password = "godspeed123"; // Replace with your password
|
||||||
|
|
||||||
|
ONVIFClient client = new ONVIFClient(deviceUrl, username, password);
|
||||||
|
client.getDeviceInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
public class OnvifCredentials {
|
||||||
|
private String host; // 92.168.xx.yy, or http://host[:port]
|
||||||
|
private String user; // admin
|
||||||
|
private String password; // secret
|
||||||
|
private String profile; // "MediaProfile000" If empty, will use first profile.
|
||||||
|
|
||||||
|
public OnvifCredentials(String host, String user, String password, String profile) {
|
||||||
|
this.host = host;
|
||||||
|
this.user = user;
|
||||||
|
this.password = password;
|
||||||
|
this.profile = profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHost() {
|
||||||
|
return host;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHost(String host) {
|
||||||
|
this.host = host;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUser() {
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUser(String user) {
|
||||||
|
this.user = user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProfile() {
|
||||||
|
return profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProfile(String profile) {
|
||||||
|
this.profile = profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return host; // + "," + user+ "," + "****,"++ "#" + profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String details() {
|
||||||
|
return host + "," + user + "," + password + "," + profile;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import de.onvif.soap.OnvifDevice;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.ConnectException;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.xml.soap.SOAPException;
|
||||||
|
import org.onvif.ver10.schema.Profile;
|
||||||
|
|
||||||
|
public class ReadCommandsFromStdInput {
|
||||||
|
|
||||||
|
private static final String INFO =
|
||||||
|
"Commands:\n \n url: Get snapshort URL.\n info: Get information about each valid command.\n profiles: Get all profiles.\n inspect: Get device details.\n exit: Exit this application.";
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
InputStreamReader inputStream = new InputStreamReader(System.in);
|
||||||
|
BufferedReader keyboardInput = new BufferedReader(inputStream);
|
||||||
|
String input, cameraAddress, user, password;
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.println("Please enter camera IP (with port if not 80):");
|
||||||
|
cameraAddress = keyboardInput.readLine();
|
||||||
|
System.out.println("Please enter camera username:");
|
||||||
|
user = keyboardInput.readLine();
|
||||||
|
System.out.println("Please enter camera password:");
|
||||||
|
password = keyboardInput.readLine();
|
||||||
|
if (cameraAddress == null || user == null || password == null)
|
||||||
|
throw new IOException("No input");
|
||||||
|
} catch (IOException e1) {
|
||||||
|
e1.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Connect to camera, please wait ...");
|
||||||
|
OnvifDevice cam;
|
||||||
|
try {
|
||||||
|
cam = new OnvifDevice(cameraAddress, user, password);
|
||||||
|
} catch (MalformedURLException | ConnectException | SOAPException e1) {
|
||||||
|
System.err.println("No connection to camera, please try again.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Connection to camera successful!");
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
System.out.println();
|
||||||
|
System.out.println("Enter a command (type \"info\" to get commands):");
|
||||||
|
input = keyboardInput.readLine();
|
||||||
|
if (input == null) break;
|
||||||
|
switch (input) {
|
||||||
|
case "url":
|
||||||
|
{
|
||||||
|
List<Profile> profiles = cam.getMedia().getProfiles();
|
||||||
|
for (Profile p : profiles) {
|
||||||
|
System.out.println(
|
||||||
|
"URL from Profile \'"
|
||||||
|
+ p.getName()
|
||||||
|
+ "\': "
|
||||||
|
+ cam.getMedia().getSnapshotUri(p.getToken()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "profiles":
|
||||||
|
List<Profile> profiles = cam.getMedia().getProfiles();
|
||||||
|
System.out.println("Number of profiles: " + profiles.size());
|
||||||
|
for (Profile p : profiles) {
|
||||||
|
System.out.println(" Profile " + p.getName() + " token is: " + p.getToken());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "info":
|
||||||
|
System.out.println(INFO);
|
||||||
|
break;
|
||||||
|
case "inspect":
|
||||||
|
System.out.println(TestDevice.inspect(cam));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "quit":
|
||||||
|
case "exit":
|
||||||
|
case "end":
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
System.out.println("Unknown command!");
|
||||||
|
System.out.println();
|
||||||
|
System.out.println(INFO);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
325
onvif-java/src/test/java/org/onvif/client/SimpleTest.java
Normal file
325
onvif-java/src/test/java/org/onvif/client/SimpleTest.java
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import org.onvif.ver10.recording.wsdl.*;
|
||||||
|
import de.onvif.soap.OnvifDevice;
|
||||||
|
import org.onvif.ver10.schema.*;
|
||||||
|
import org.onvif.ver10.schema.ImagingSettings;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.lang.Object;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class SimpleTest {
|
||||||
|
private RecordingService recordingService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static String getCameraDetailsPayload(String propFileRelativePath) throws Exception {
|
||||||
|
final Properties config = new Properties();
|
||||||
|
final File f = new File(propFileRelativePath);
|
||||||
|
if (!f.exists()) throw new Exception("File not found: " + f.getAbsolutePath());
|
||||||
|
config.load(new FileInputStream(f));
|
||||||
|
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
|
||||||
|
for (Object k : config.keySet()) {
|
||||||
|
String line = config.get(k.toString()).toString();
|
||||||
|
output.append(line).append("\n");
|
||||||
|
OnvifCredentials credentials = GetTestDevice.parse(line);
|
||||||
|
output.append("credentials: ").append(credentials.getUser()).append("\n");
|
||||||
|
if (credentials != null) {
|
||||||
|
try {
|
||||||
|
output.append("Connect to camera, please wait ...\n");
|
||||||
|
OnvifDevice cam = new OnvifDevice(
|
||||||
|
credentials.getHost(), credentials.getUser(), credentials.getPassword());
|
||||||
|
|
||||||
|
System.out.println("Connected to device ");
|
||||||
|
|
||||||
|
|
||||||
|
printProfiles(cam);
|
||||||
|
|
||||||
|
} catch (Throwable th) {
|
||||||
|
output.append("Error on device: ").append(k).append("\n");
|
||||||
|
th.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output.toString(); // Return the collected output as a string
|
||||||
|
}
|
||||||
|
// Add this method to print profiles
|
||||||
|
private static void printProfiles(OnvifDevice cam) {
|
||||||
|
|
||||||
|
// imagingSettings20.setBrightness(80.0F);
|
||||||
|
// System.out.println(cam.getImaging().getImagingSettings(cam.getMedia().getVideoSources().get(0).getToken()));
|
||||||
|
// cam.getImaging().setImagingSettings(cam.getMedia().getVideoSources().get(0).getToken(),imagingSettings20,false);
|
||||||
|
//
|
||||||
|
// ImagingSettings20 imagingSettings=new ImagingSettings20();
|
||||||
|
// imagingSettings.setBrightness(50.0F);
|
||||||
|
// cam.getImaging().setImagingSettings(cam.getMedia().getVideoSources().get(0).getToken(),imagingSettings,false);
|
||||||
|
System.out.println(cam.getReplay());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String printNetworkInterfaces(OnvifDevice cam) {
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
try {
|
||||||
|
List<NetworkInterface> interfaces = cam.getDevice().getNetworkInterfaces();
|
||||||
|
output.append("Network Interfaces:\n");
|
||||||
|
for (NetworkInterface iface : interfaces) {
|
||||||
|
output.append(iface).append("\n");
|
||||||
|
}
|
||||||
|
} catch (Throwable th) {
|
||||||
|
output.append("Error getting network interfaces: ").append(th.getMessage()).append("\n");
|
||||||
|
}
|
||||||
|
return output.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String printNetworkDefaultGateway(OnvifDevice cam) {
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
try {
|
||||||
|
NetworkGateway defaultGateway = cam.getDevice().getNetworkDefaultGateway();
|
||||||
|
output.append("Network Default Gateway:\n");
|
||||||
|
output.append(defaultGateway).append("\n");
|
||||||
|
} catch (Throwable th) {
|
||||||
|
output.append("Error getting network default gateway: ").append(th.getMessage()).append("\n");
|
||||||
|
}
|
||||||
|
return output.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String printSystemDateAndTime(OnvifDevice cam) {
|
||||||
|
StringBuilder output = new StringBuilder();
|
||||||
|
try {
|
||||||
|
SystemDateTime dateTime = cam.getDevice().getSystemDateAndTime();
|
||||||
|
output.append("System Date and Time:\n");
|
||||||
|
output.append(dateTime).append("\n");
|
||||||
|
} catch (Throwable th) {
|
||||||
|
output.append("Error getting system date and time: ").append(th.getMessage()).append("\n");
|
||||||
|
}
|
||||||
|
return output.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static String setosd(OnvifDevice cam,String user,String pass) {
|
||||||
|
// try {
|
||||||
|
// List<OSDConfiguration> osdConfigurations = cam.getMedia().getOSDs(null);
|
||||||
|
// // Assuming you want to update the second OSD configuration
|
||||||
|
// OSDConfiguration osdConfiguration = osdConfigurations.get(1);
|
||||||
|
//
|
||||||
|
//// Create the SetOSD object
|
||||||
|
// SetOSD setOSD = new SetOSD();
|
||||||
|
//
|
||||||
|
//// Set the OSDConfiguration in the SetOSD object
|
||||||
|
// setOSD.setOSD(osdConfiguration);
|
||||||
|
//
|
||||||
|
//// Retrieve the current token
|
||||||
|
// String osdToken = osdConfiguration.getToken();
|
||||||
|
//// Set the token explicitly (optional if already set)
|
||||||
|
// osdConfiguration.setToken(osdToken);
|
||||||
|
//
|
||||||
|
//// Set the VideoSourceConfigurationToken (ensure it's correct)
|
||||||
|
// osdConfiguration.setVideoSourceConfigurationToken(osdConfiguration.getVideoSourceConfigurationToken());
|
||||||
|
//
|
||||||
|
//// Set the OSD type (if necessary)
|
||||||
|
// osdConfiguration.setType(osdConfiguration.getType());
|
||||||
|
//
|
||||||
|
//// Set the position (create and set a new position if needed)
|
||||||
|
// OSDPosConfiguration position = new OSDPosConfiguration();
|
||||||
|
// position.setType("Custom");
|
||||||
|
// Vector positionVector = new Vector();
|
||||||
|
// positionVector.setX(0.5F); // Example x coordinate
|
||||||
|
// positionVector.setY(0.5F); // Example y coordinate
|
||||||
|
// position.setPos(positionVector);
|
||||||
|
// osdConfiguration.setPosition(position);
|
||||||
|
//
|
||||||
|
//// Set the text string
|
||||||
|
// OSDTextConfiguration textString = osdConfiguration.getTextString();
|
||||||
|
// textString.setType("Plain");
|
||||||
|
// textString.setPlainText("cam111");
|
||||||
|
//
|
||||||
|
//// Print the modified OSD configuration for debugging
|
||||||
|
// System.out.println(osdConfiguration);
|
||||||
|
//
|
||||||
|
//// Set the OSD configuration in the SetOSD object
|
||||||
|
// setOSD.setOSD(osdConfiguration);
|
||||||
|
//
|
||||||
|
// int port = extractPortFromUrl("rtsp://192.168.50.44:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif");
|
||||||
|
// Utility method to extract port from RTSP URL
|
||||||
|
|
||||||
|
// List<Profile> profiles = cam.getMedia().getProfiles();
|
||||||
|
// System.out.println(cam.getMedia().getProfiles());
|
||||||
|
//
|
||||||
|
// // Print the profiles' name and token in the format "{name, token}"
|
||||||
|
// List<String> profileStrings = profiles.stream()
|
||||||
|
// .map(profile -> String.format("{%s, %s}", profile.getName(), profile.getToken()))
|
||||||
|
// .collect(Collectors.toList());
|
||||||
|
//
|
||||||
|
// profileStrings.forEach(System.out::println); // Printing profile details
|
||||||
|
//
|
||||||
|
// // Get and print the stream URIs for each profile
|
||||||
|
// profiles.forEach(profile -> {
|
||||||
|
// String streamUri = cam.getStreamUri(profile.getToken());
|
||||||
|
// System.out.println("Stream URI for profile " + profile.getName() + ": " + streamUri);
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// // Create a GetReplayUri request
|
||||||
|
// GetReplayUri getReplayUri = new GetReplayUri();
|
||||||
|
//
|
||||||
|
// StreamSetup streamSetup = new StreamSetup();
|
||||||
|
// StreamType streamType = StreamType.RTP_UNICAST; // Or RTP-Multicast
|
||||||
|
// Transport transport = new Transport();
|
||||||
|
// transport.setProtocol(TransportProtocol.HTTP); // Or TCP, UDP
|
||||||
|
//
|
||||||
|
// streamSetup.setStream(streamType);
|
||||||
|
// streamSetup.setTransport(transport);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// // Calculate start and end times (last 10 minutes)
|
||||||
|
// Date endTime = new Date(); // Current UTC time
|
||||||
|
// Date startTime = new Date(endTime.getTime() - 10 * 60 * 200); // Subtract 10 minutes
|
||||||
|
//
|
||||||
|
// // Format timestamps for ONVIF (UTC, ISO 8601 format)
|
||||||
|
// SimpleDateFormat iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
|
||||||
|
// iso8601.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||||
|
//
|
||||||
|
// // Fetch the Replay URI
|
||||||
|
// String replayUri = cam.getReplay().getReplayUri(streamSetup,"RecordMediaProfile00000");
|
||||||
|
//
|
||||||
|
//// Modify the Replay URI
|
||||||
|
// replayUri = modifyReplayUri(replayUri);
|
||||||
|
// System.out.println("Replay URI: " + startTime);
|
||||||
|
//// Save video segment using FFmpeg
|
||||||
|
// saveVideoSegment(replayUri, startTime, endTime,user,pass);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Device device = cam.getDevice();
|
||||||
|
// List<NetworkProtocol> networkProtocols = device.getNetworkProtocols();
|
||||||
|
//
|
||||||
|
// final String[] httpPort = {null}; // Use an array to store the port
|
||||||
|
//
|
||||||
|
// networkProtocols.stream()
|
||||||
|
// .filter(protocol -> "HTTP".equals(protocol.getName().value())) // Filter for HTTP protocol
|
||||||
|
// .findFirst() // Find the first match
|
||||||
|
// .ifPresent(protocol -> httpPort[0] = protocol.getPort().get(0).toString());
|
||||||
|
////System.out.println(cam.getReplay().getReplayUri(streamSetup,cam.getRecordings1().getRecordings().get(0).getRecordingToken()));
|
||||||
|
// System.out.println(networkProtocols);
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// System.out.println("Failed to update OSD: " + e.getMessage());
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
// return null;
|
||||||
|
//System.out.println(cam.getRecordings1().getRecordings().get(0).getTracks());
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
private static String modifyReplayUri(String replayUri) {
|
||||||
|
if (replayUri == null || replayUri.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Replay URI is null or empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Replace "http" with "rtsp" and change port from 80 to 554
|
||||||
|
replayUri = replayUri.replaceFirst("http://", "rtsp://")
|
||||||
|
.replace(":80/", ":554/");
|
||||||
|
System.out.println("Modified Replay URI: " + replayUri);
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Error modifying replay URI: " + e.getMessage());
|
||||||
|
}
|
||||||
|
return replayUri;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int extractPortFromUrl(String url) {
|
||||||
|
Pattern pattern = Pattern.compile(":(\\d+)/");
|
||||||
|
Matcher matcher = pattern.matcher(url);
|
||||||
|
if (matcher.find()) {
|
||||||
|
return Integer.parseInt(matcher.group(1));
|
||||||
|
}
|
||||||
|
throw new IllegalArgumentException("Port not found in URL: " + url);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void saveVideoSegment(String replayUri, Date startTime, Date endTime,String username,String password) {
|
||||||
|
try {
|
||||||
|
// Calculate duration in seconds
|
||||||
|
long durationInSeconds = (endTime.getTime() - startTime.getTime()) / 1000;
|
||||||
|
|
||||||
|
// Generate output file name with timestamp
|
||||||
|
SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||||
|
String outputFileName = "video_last_10_mins_" + timestampFormat.format(startTime) + ".mp4";
|
||||||
|
String authenticatedReplayUri = replayUri.replaceFirst("rtsp://", "rtsp://" + username + ":" + password + "@");
|
||||||
|
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
|
||||||
|
String startTimeFormatted = timeFormat.format(startTime);
|
||||||
|
System.out.println(startTimeFormatted);
|
||||||
|
|
||||||
|
String[] command = {
|
||||||
|
"ffmpeg",
|
||||||
|
"-rtsp_transport", "tcp", // Ensure reliable RTSP transport
|
||||||
|
"-ss", startTimeFormatted, // Start time for the segment (before -i for faster seeking)
|
||||||
|
"-i", authenticatedReplayUri,
|
||||||
|
"-t", String.valueOf(durationInSeconds), // Duration in seconds
|
||||||
|
"-copyts", // Preserve input timestamps to avoid shifting the video
|
||||||
|
"-c:v", "copy", // Copy video stream without re-encoding
|
||||||
|
"-c:a", "aac", // Transcode audio stream to AAC
|
||||||
|
outputFileName
|
||||||
|
};
|
||||||
|
|
||||||
|
// Execute FFmpeg command
|
||||||
|
ProcessBuilder processBuilder = new ProcessBuilder(command);
|
||||||
|
processBuilder.redirectErrorStream(true); // Merge error stream with output
|
||||||
|
Process process = processBuilder.start();
|
||||||
|
|
||||||
|
// Read FFmpeg output (optional, for debugging)
|
||||||
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
|
||||||
|
String line;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
System.out.println(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for FFmpeg to complete
|
||||||
|
int exitCode = process.waitFor();
|
||||||
|
if (exitCode == 0) {
|
||||||
|
System.out.println("Video saved successfully as " + outputFileName);
|
||||||
|
} else {
|
||||||
|
System.err.println("FFmpeg process failed with exit code " + exitCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
System.err.println("Error saving video segment: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
final String propFileRelativePath = "C:/rajmohan/onvif/onvif-java/src/test/resources/onvif.properties";
|
||||||
|
final String outputFilePath = "C:/rajmohan/onvif/onvif-java/src/test/resources/output.xml";
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Get the payload
|
||||||
|
String payload = getCameraDetailsPayload(propFileRelativePath);
|
||||||
|
if (payload != null) {
|
||||||
|
// Write payload to XML file
|
||||||
|
try (FileWriter fileWriter = new FileWriter(new File(outputFilePath))) {
|
||||||
|
fileWriter.write(payload);
|
||||||
|
// System.out.println("Payload written to " + outputFilePath);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Error writing to file: " + e.getMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("No payload created.");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
82
onvif-java/src/test/java/org/onvif/client/SoapClient.java
Normal file
82
onvif-java/src/test/java/org/onvif/client/SoapClient.java
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
public class SoapClient {
|
||||||
|
private static final String SOAP_ENDPOINT_URL = "http://192.168.51.137/onvif/device_service"; // Replace with actual device IP and port
|
||||||
|
private static final String SOAP_ACTION = "http://www.onvif.org/ver10/device/wsdl/GetGeoLocation";
|
||||||
|
private static final String USERNAME = "onvif1"; // Replace with your username
|
||||||
|
private static final String PASSWORD = "godspeed123"; // Replace with your password
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
// Construct the SOAP request XML
|
||||||
|
String soapRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
|
||||||
|
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
|
||||||
|
"xmlns:tds=\"http://www.onvif.org/ver10/device/wsdl\">" +
|
||||||
|
"<soapenv:Header/>" +
|
||||||
|
"<soapenv:Body>" +
|
||||||
|
"<tds:GetGeoLocation/>" +
|
||||||
|
"</soapenv:Body>" +
|
||||||
|
"</soapenv:Envelope>";
|
||||||
|
|
||||||
|
// Create a connection to the SOAP endpoint
|
||||||
|
URL url = new URL(SOAP_ENDPOINT_URL);
|
||||||
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
|
||||||
|
connection.setRequestProperty("SOAPAction", SOAP_ACTION);
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
|
||||||
|
// Add Basic Authentication
|
||||||
|
String auth = USERNAME + ":" + PASSWORD;
|
||||||
|
String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes("UTF-8"));
|
||||||
|
connection.setRequestProperty("Authorization", "Basic " + encodedAuth);
|
||||||
|
|
||||||
|
// Send the SOAP request
|
||||||
|
OutputStream os = connection.getOutputStream();
|
||||||
|
os.write(soapRequest.getBytes("UTF-8"));
|
||||||
|
os.flush();
|
||||||
|
os.close();
|
||||||
|
|
||||||
|
// Check the response code
|
||||||
|
int responseCode = connection.getResponseCode();
|
||||||
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||||||
|
// Read the SOAP response
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
||||||
|
String inputLine;
|
||||||
|
StringBuilder response = new StringBuilder();
|
||||||
|
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
response.append(inputLine);
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
|
||||||
|
// Print the SOAP response
|
||||||
|
System.out.println("Response:");
|
||||||
|
System.out.println(response.toString());
|
||||||
|
} else {
|
||||||
|
// Handle errors
|
||||||
|
System.out.println("Error: " + responseCode);
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
|
||||||
|
String inputLine;
|
||||||
|
StringBuilder errorResponse = new StringBuilder();
|
||||||
|
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
errorResponse.append(inputLine);
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
|
||||||
|
// Print the error response
|
||||||
|
System.out.println("Error Response:");
|
||||||
|
System.out.println(errorResponse.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
196
onvif-java/src/test/java/org/onvif/client/TestDevice.java
Normal file
196
onvif-java/src/test/java/org/onvif/client/TestDevice.java
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import de.onvif.beans.DeviceInfo;
|
||||||
|
import de.onvif.soap.OnvifDevice;
|
||||||
|
import de.onvif.utils.OnvifUtils;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.xml.soap.SOAPException;
|
||||||
|
import org.onvif.ver10.device.wsdl.DeviceServiceCapabilities;
|
||||||
|
import org.onvif.ver10.events.wsdl.EventPortType;
|
||||||
|
import org.onvif.ver10.events.wsdl.GetEventProperties;
|
||||||
|
import org.onvif.ver10.events.wsdl.GetEventPropertiesResponse;
|
||||||
|
import org.onvif.ver10.media.wsdl.Media;
|
||||||
|
import org.onvif.ver10.schema.AudioSource;
|
||||||
|
import org.onvif.ver10.schema.PTZPreset;
|
||||||
|
import org.onvif.ver10.schema.PTZStatus;
|
||||||
|
import org.onvif.ver10.schema.Profile;
|
||||||
|
import org.onvif.ver10.schema.VideoSource;
|
||||||
|
import org.onvif.ver20.imaging.wsdl.ImagingPort;
|
||||||
|
import org.onvif.ver20.ptz.wsdl.Capabilities;
|
||||||
|
import org.onvif.ver20.ptz.wsdl.PTZ;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
|
/** @author Brad Lowe */
|
||||||
|
public class TestDevice {
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(TestDevice.class);
|
||||||
|
|
||||||
|
public static String testCamera(OnvifCredentials creds) throws SOAPException, IOException {
|
||||||
|
URL u =
|
||||||
|
creds.getHost().startsWith("http")
|
||||||
|
? new URL(creds.getHost())
|
||||||
|
: new URL("http://" + creds.getHost());
|
||||||
|
return testCamera(u, creds.getUser(), creds.getPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
static String sep = "\n";
|
||||||
|
|
||||||
|
// This method returns information about an initialized OnvifDevice.
|
||||||
|
// This could throw an uncaught SOAP or other error on some cameras...
|
||||||
|
// Would accept Pull Requests on printing out additional information about devices.
|
||||||
|
public static String inspect(OnvifDevice device) {
|
||||||
|
String out = "";
|
||||||
|
DeviceInfo info = device.getDeviceInfo();
|
||||||
|
out += "DeviceInfo:" + sep + "\t" + info + sep;
|
||||||
|
DeviceServiceCapabilities caps = device.getDevice().getServiceCapabilities();
|
||||||
|
String sysCaps = OnvifUtils.format(caps);
|
||||||
|
sysCaps = sysCaps.replace("],", "],\t\n");
|
||||||
|
|
||||||
|
out += "\tgetServiceCapabilities: " + sysCaps + sep;
|
||||||
|
// out += "\tgetServiceCapabilities.getSystem: " + OnvifUtils.format(caps.getSystem()) + sep;
|
||||||
|
|
||||||
|
Media media = device.getMedia();
|
||||||
|
|
||||||
|
media.getVideoSources();
|
||||||
|
List<Profile> profiles = media.getProfiles();
|
||||||
|
out += "Media Profiles: " + profiles.size() + sep;
|
||||||
|
for (Profile profile : profiles) {
|
||||||
|
String profileToken = profile.getToken();
|
||||||
|
String rtsp = device.getStreamUri(profileToken);
|
||||||
|
out += "\tProfile: " + profile.getName() + " token=" + profile.getToken() + sep;
|
||||||
|
out += "\t\tstream: " + rtsp + sep;
|
||||||
|
out += "\t\tsnapshot: " + device.getSnapshotUri(profileToken) + sep;
|
||||||
|
out += "\t\tdetails:" + OnvifUtils.format(profile) + sep;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<VideoSource> videoSources = media.getVideoSources();
|
||||||
|
out += "VideoSources: " + videoSources.size() + sep;
|
||||||
|
for (VideoSource v : videoSources) out += "\t" + OnvifUtils.format(v) + sep;
|
||||||
|
|
||||||
|
ImagingPort imaging = device.getImaging();
|
||||||
|
if (imaging != null && videoSources.size() > 0) {
|
||||||
|
String token = videoSources.get(0).getToken();
|
||||||
|
|
||||||
|
out += "Imaging:" + token + sep;
|
||||||
|
try {
|
||||||
|
org.onvif.ver20.imaging.wsdl.Capabilities image_caps = imaging.getServiceCapabilities();
|
||||||
|
out += "\tgetServiceCapabilities=" + OnvifUtils.format(image_caps) + sep;
|
||||||
|
|
||||||
|
if (token != null) {
|
||||||
|
out +=
|
||||||
|
"\tgetImagingSettings="
|
||||||
|
+ OnvifUtils.format(imaging.getImagingSettings(token))
|
||||||
|
+ sep;
|
||||||
|
out += "\tgetMoveOptions=" + OnvifUtils.format(imaging.getMoveOptions(token)) + sep;
|
||||||
|
out += "\tgetStatus=" + OnvifUtils.format(imaging.getStatus(token)) + sep;
|
||||||
|
out += "\tgetOptions=" + OnvifUtils.format(imaging.getOptions(token)) + sep;
|
||||||
|
}
|
||||||
|
} catch (Throwable th) {
|
||||||
|
out += "Imaging unavailable:" + th.getMessage() + sep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Throwable th) {
|
||||||
|
// this can fail if the device doesn't support video sources.
|
||||||
|
out += "VideoSources: " + th.getMessage() + sep;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
// This may throw a SoapFaultException with the message "This device does not support audio"
|
||||||
|
List<AudioSource> audioSources = media.getAudioSources();
|
||||||
|
out += "AudioSources: " + audioSources.size() + sep;
|
||||||
|
for (AudioSource a : audioSources) out += "\t" + OnvifUtils.format(a) + sep;
|
||||||
|
} catch (Throwable th) {
|
||||||
|
out += "AudioSources Unavailable: " + th.getMessage() + sep;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
EventPortType events = device.getEvents();
|
||||||
|
if (events != null) {
|
||||||
|
out += "Events:" + sep;
|
||||||
|
out +=
|
||||||
|
"\tgetServiceCapabilities=" + OnvifUtils.format(events.getServiceCapabilities()) + sep;
|
||||||
|
|
||||||
|
GetEventProperties getEventProperties = new GetEventProperties();
|
||||||
|
GetEventPropertiesResponse getEventPropertiesResp =
|
||||||
|
events.getEventProperties(getEventProperties);
|
||||||
|
out += "\tMessageContentFilterDialects:" + sep;
|
||||||
|
for (String f : getEventPropertiesResp.getMessageContentFilterDialect())
|
||||||
|
out += ("\t\t" + f + sep);
|
||||||
|
out += "\tTopicExpressionDialects:" + sep;
|
||||||
|
for (String f : getEventPropertiesResp.getTopicExpressionDialect())
|
||||||
|
out += ("\t\t" + f + sep);
|
||||||
|
|
||||||
|
out += "\tTopics:" + sep;
|
||||||
|
StringBuffer tree = new StringBuffer();
|
||||||
|
for (Object object : getEventPropertiesResp.getTopicSet().getAny()) {
|
||||||
|
Element e = (Element) object;
|
||||||
|
printTree(e, e.getNodeName(), tree);
|
||||||
|
// WsNotificationTest.printTree(e, e.getNodeName());
|
||||||
|
}
|
||||||
|
out += tree;
|
||||||
|
}
|
||||||
|
} catch (Throwable th) {
|
||||||
|
out += "Events Unavailable: " + th.getMessage() + sep;
|
||||||
|
}
|
||||||
|
PTZ ptz = device.getPtz();
|
||||||
|
if (ptz != null) {
|
||||||
|
|
||||||
|
String profileToken = profiles.get(0).getToken();
|
||||||
|
try {
|
||||||
|
Capabilities ptz_caps = ptz.getServiceCapabilities();
|
||||||
|
out += "PTZ:" + sep;
|
||||||
|
out += "\tgetServiceCapabilities=" + OnvifUtils.format(ptz_caps) + sep;
|
||||||
|
PTZStatus s = ptz.getStatus(profileToken);
|
||||||
|
out += "\tgetStatus=" + OnvifUtils.format(s) + sep;
|
||||||
|
// out += "ptz.getConfiguration=" + ptz.getConfiguration(profileToken) + sep;
|
||||||
|
List<PTZPreset> presets = ptz.getPresets(profileToken);
|
||||||
|
if (presets != null && !presets.isEmpty()) {
|
||||||
|
out += "\tPresets:" + presets.size() + sep;
|
||||||
|
for (PTZPreset p : presets) out += "\t\t" + OnvifUtils.format(p) + sep;
|
||||||
|
}
|
||||||
|
} catch (Throwable th) {
|
||||||
|
out += "PTZ: Unavailable" + th.getMessage() + sep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printTree(Node node, String name, StringBuffer buffer) {
|
||||||
|
|
||||||
|
if (node.hasChildNodes()) {
|
||||||
|
NodeList nodes = node.getChildNodes();
|
||||||
|
for (int i = 0; i < nodes.getLength(); i++) {
|
||||||
|
Node n = nodes.item(i);
|
||||||
|
printTree(n, name + " - " + n.getNodeName(), buffer);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
buffer.append("\t\t" + name + " - " + node.getNodeName() + "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String testCamera(URL url, String user, String password)
|
||||||
|
throws SOAPException, IOException {
|
||||||
|
LOG.info("Testing camera:" + url);
|
||||||
|
OnvifDevice device = new OnvifDevice(url, user, password);
|
||||||
|
return inspect(device);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
OnvifCredentials creds = GetTestDevice.getOnvifCredentials(args);
|
||||||
|
try {
|
||||||
|
// OnvifDevice.setVerbose(true);
|
||||||
|
String out = testCamera(creds);
|
||||||
|
|
||||||
|
LOG.info("\n" + out + "\n");
|
||||||
|
} catch (Throwable th) {
|
||||||
|
LOG.error("Failed for " + creds, th);
|
||||||
|
th.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,182 @@
|
|||||||
|
package org.onvif.client;
|
||||||
|
|
||||||
|
import de.onvif.soap.OnvifDevice;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.ConnectException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import javax.xml.bind.JAXBElement;
|
||||||
|
import javax.xml.soap.SOAPException;
|
||||||
|
import org.apache.activemq.ActiveMQConnectionFactory;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.cxf.wsn.client.Consumer;
|
||||||
|
import org.apache.cxf.wsn.client.NotificationBroker;
|
||||||
|
import org.apache.cxf.wsn.client.Subscription;
|
||||||
|
import org.apache.cxf.wsn.services.JaxwsNotificationBroker;
|
||||||
|
import org.oasis_open.docs.wsn.b_2.FilterType;
|
||||||
|
import org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType;
|
||||||
|
import org.oasis_open.docs.wsn.b_2.TopicExpressionType;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.InvalidFilterFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.InvalidMessageContentExpressionFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.InvalidProducerPropertiesExpressionFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.InvalidTopicExpressionFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.NotifyMessageNotSupportedFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.SubscribeCreationFailedFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.TopicExpressionDialectUnknownFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.TopicNotSupportedFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.UnacceptableInitialTerminationTimeFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.UnrecognizedPolicyRequestFault;
|
||||||
|
import org.oasis_open.docs.wsn.bw_2.UnsupportedPolicyRequestFault;
|
||||||
|
import org.oasis_open.docs.wsrf.rw_2.ResourceUnknownFault;
|
||||||
|
import org.onvif.ver10.events.wsdl.CreatePullPointSubscription;
|
||||||
|
import org.onvif.ver10.events.wsdl.CreatePullPointSubscription.SubscriptionPolicy;
|
||||||
|
import org.onvif.ver10.events.wsdl.CreatePullPointSubscriptionResponse;
|
||||||
|
import org.onvif.ver10.events.wsdl.EventPortType;
|
||||||
|
import org.onvif.ver10.events.wsdl.GetEventProperties;
|
||||||
|
import org.onvif.ver10.events.wsdl.GetEventPropertiesResponse;
|
||||||
|
import org.onvif.ver10.schema.Capabilities;
|
||||||
|
import org.onvif.ver10.schema.CapabilityCategory;
|
||||||
|
import org.onvif.ver10.schema.MediaUri;
|
||||||
|
import org.onvif.ver10.schema.Profile;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
|
public class WsNotificationTest {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
OnvifCredentials creds = GetTestDevice.getOnvifCredentials(args);
|
||||||
|
System.out.println("Connect to camera, please wait ...");
|
||||||
|
|
||||||
|
OnvifDevice cam = null;
|
||||||
|
try {
|
||||||
|
cam = new OnvifDevice(creds.getHost(), creds.getUser(), creds.getPassword());
|
||||||
|
} catch (ConnectException | SOAPException e1) {
|
||||||
|
System.err.println("No connection to device with IP " + creds + ", please try again.");
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
System.out.println("Connected to device " + cam.getDeviceInfo());
|
||||||
|
|
||||||
|
// Get device capabilities
|
||||||
|
Capabilities cap = cam.getDevice().getCapabilities(Arrays.asList(CapabilityCategory.ALL));
|
||||||
|
System.out.println(cap.getDevice().toString());
|
||||||
|
|
||||||
|
// Print profiles
|
||||||
|
printProfiles(cam);
|
||||||
|
|
||||||
|
EventPortType eventWs = cam.getEvents();
|
||||||
|
GetEventProperties getEventProperties = new GetEventProperties();
|
||||||
|
GetEventPropertiesResponse getEventPropertiesResp =
|
||||||
|
eventWs.getEventProperties(getEventProperties);
|
||||||
|
getEventPropertiesResp.getMessageContentFilterDialect().forEach(System.out::println);
|
||||||
|
getEventPropertiesResp.getTopicExpressionDialect().forEach(System.out::println);
|
||||||
|
for (Object object : getEventPropertiesResp.getTopicSet().getAny()) {
|
||||||
|
Element e = (Element) object;
|
||||||
|
printTree(e, e.getNodeName());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subscribe to all events by using the root topic or no topic at all
|
||||||
|
org.oasis_open.docs.wsn.b_2.ObjectFactory objectFactory =
|
||||||
|
new org.oasis_open.docs.wsn.b_2.ObjectFactory();
|
||||||
|
CreatePullPointSubscription pullPointSubscription = new CreatePullPointSubscription();
|
||||||
|
FilterType filter = new FilterType();
|
||||||
|
TopicExpressionType topicExp = new TopicExpressionType();
|
||||||
|
|
||||||
|
// Subscribe to all events by using the root topic or no specific topic filter
|
||||||
|
topicExp.getContent().add("tns1:Device"); // Root topic expression for all device events
|
||||||
|
topicExp.setDialect("http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet");
|
||||||
|
JAXBElement<?> topicExpElem = objectFactory.createTopicExpression(topicExp);
|
||||||
|
filter.getAny().add(topicExpElem); // This filters for all device events
|
||||||
|
pullPointSubscription.setFilter(filter);
|
||||||
|
|
||||||
|
org.onvif.ver10.events.wsdl.ObjectFactory eventObjFactory =
|
||||||
|
new org.onvif.ver10.events.wsdl.ObjectFactory();
|
||||||
|
SubscriptionPolicy subscriptionPolicy =
|
||||||
|
eventObjFactory.createCreatePullPointSubscriptionSubscriptionPolicy();
|
||||||
|
pullPointSubscription.setSubscriptionPolicy(subscriptionPolicy);
|
||||||
|
String timespan = "PT10S"; // Poll every 10 seconds
|
||||||
|
pullPointSubscription.setInitialTerminationTime(
|
||||||
|
objectFactory.createSubscribeInitialTerminationTime(timespan));
|
||||||
|
|
||||||
|
try {
|
||||||
|
CreatePullPointSubscriptionResponse resp =
|
||||||
|
eventWs.createPullPointSubscription(pullPointSubscription);
|
||||||
|
System.out.println(resp);
|
||||||
|
// Start a consumer that will listen for notification messages
|
||||||
|
String eventConsumerAddress = "http://localhost:9001/MyConsumer";
|
||||||
|
Consumer consumer =
|
||||||
|
new Consumer(
|
||||||
|
message -> {
|
||||||
|
Object o = message.getMessage().getAny();
|
||||||
|
System.out.println("Received notification:");
|
||||||
|
if (o instanceof Element) {
|
||||||
|
System.out.println(((Element) o).getTextContent());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
eventConsumerAddress);
|
||||||
|
|
||||||
|
String queuePort = "8182";
|
||||||
|
String brokerPort = "8181";
|
||||||
|
String brokerAddress = "http://localhost:" + brokerPort + "/wsn/NotificationBroker";
|
||||||
|
ActiveMQConnectionFactory activemq =
|
||||||
|
new ActiveMQConnectionFactory(
|
||||||
|
"vm:(broker:(tcp://localhost:" + queuePort + ")?persistent=false)");
|
||||||
|
JaxwsNotificationBroker notificationBrokerServer =
|
||||||
|
new JaxwsNotificationBroker("WSNotificationBroker", activemq);
|
||||||
|
notificationBrokerServer.setAddress(brokerAddress);
|
||||||
|
notificationBrokerServer.init();
|
||||||
|
|
||||||
|
// Create a subscription for a Topic on the broker
|
||||||
|
NotificationBroker notificationBroker = new NotificationBroker(brokerAddress);
|
||||||
|
Subscription subscription = notificationBroker.subscribe(consumer, "tns1:Device");
|
||||||
|
|
||||||
|
// Wait for some messages to accumulate in the pull point
|
||||||
|
Thread.sleep(50_000);
|
||||||
|
|
||||||
|
// Cleanup and exit
|
||||||
|
subscription.unsubscribe();
|
||||||
|
consumer.stop();
|
||||||
|
|
||||||
|
} catch (TopicNotSupportedFault
|
||||||
|
| TopicExpressionDialectUnknownFault
|
||||||
|
| InvalidTopicExpressionFault
|
||||||
|
| InvalidMessageContentExpressionFault
|
||||||
|
| InvalidProducerPropertiesExpressionFault
|
||||||
|
| UnacceptableInitialTerminationTimeFault
|
||||||
|
| NotifyMessageNotSupportedFault
|
||||||
|
| ResourceUnknownFault
|
||||||
|
| UnsupportedPolicyRequestFault
|
||||||
|
| InvalidFilterFault
|
||||||
|
| SubscribeCreationFailedFault
|
||||||
|
| UnrecognizedPolicyRequestFault e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printTree(Node node, String name) {
|
||||||
|
if (node.hasChildNodes()) {
|
||||||
|
NodeList nodes = node.getChildNodes();
|
||||||
|
for (int i = 0; i < nodes.getLength(); i++) {
|
||||||
|
Node n = nodes.item(i);
|
||||||
|
printTree(n, name + " - " + n.getNodeName());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println(name + " - " + node.getNodeName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void printProfiles(OnvifDevice cam) {
|
||||||
|
List<Profile> profiles = cam.getMedia().getProfiles();
|
||||||
|
for (Profile p : profiles) {
|
||||||
|
System.out.printf(
|
||||||
|
"Profile: [token=%s,name=%s,snapshotUri=%s]%n",
|
||||||
|
p.getToken(), p.getName(), cam.getMedia().getSnapshotUri(p.getToken()).getUri());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
onvif-java/src/test/resources/onvif.properties
Normal file
2
onvif-java/src/test/resources/onvif.properties
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#device name,IP address,username,password,profile-token
|
||||||
|
mycam1=10.197.171.5,admin,keltron@123,MediaProfile000
|
||||||
3
onvif-java/src/test/resources/output.xml
Normal file
3
onvif-java/src/test/resources/output.xml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
10.197.171.5,admin,keltron@123,MediaProfile000
|
||||||
|
credentials: admin
|
||||||
|
Connect to camera, please wait ...
|
||||||
189
onvif-ws-client/pom.xml
Normal file
189
onvif-ws-client/pom.xml
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.onvif</groupId>
|
||||||
|
<artifactId>onvif</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>onvif-ws-client</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-frontend-jaxws</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- <dependency> -->
|
||||||
|
<!-- <groupId>org.apache.cxf</groupId> -->
|
||||||
|
<!-- <artifactId>cxf-rt-transports-http-hc</artifactId> -->
|
||||||
|
<!-- <version>${cxf.version}</version> -->
|
||||||
|
<!-- </dependency> -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-transports-http-jetty</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Java 9+ javax dependencies start -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.ws</groupId>
|
||||||
|
<artifactId>jaxws-api</artifactId>
|
||||||
|
<version>2.3.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.jws</groupId>
|
||||||
|
<artifactId>javax.jws-api</artifactId>
|
||||||
|
<version>1.1</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Java 9+ javax dependencies end -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf.services.wsn</groupId>
|
||||||
|
<artifactId>cxf-services-wsn-core</artifactId>
|
||||||
|
<version>${cxf.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- For creating human readable toString() functions in generated classes. -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf.xjc-utils</groupId>
|
||||||
|
<artifactId>cxf-xjc-runtime</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-model-builder</artifactId>
|
||||||
|
<version>3.6.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-codegen-plugin</artifactId>
|
||||||
|
<version>3.3.2</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>generate-ws-stubs</id>
|
||||||
|
<phase>generate-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>wsdl2java</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
|
||||||
|
<sourceRoot>${basedir}/src/main/java</sourceRoot>
|
||||||
|
<!--
|
||||||
|
// TODO: Consider moving generated sources to separate folder and excluse from source control.
|
||||||
|
<sourceRoot>${basedir}/generated/src/main/java</sourceRoot>
|
||||||
|
-->
|
||||||
|
<includes>
|
||||||
|
<include>*.wsdl</include>
|
||||||
|
</includes>
|
||||||
|
<defaultOptions>
|
||||||
|
<extraargs>
|
||||||
|
<!-- DataMapper compatibility requires that the boolean getters
|
||||||
|
and setters follow naming conventions for other getters and setters. -->
|
||||||
|
<extraarg>-xjc-Xbg</extraarg>
|
||||||
|
<extraarg>-xjc-Xts</extraarg> <!-- added for toString() builder -->
|
||||||
|
<extraarg>-verbose</extraarg>
|
||||||
|
<extraarg>-suppress-generated-date</extraarg>
|
||||||
|
<extraarg>-wsdlLocation</extraarg>
|
||||||
|
<extraarg>null</extraarg>
|
||||||
|
|
||||||
|
<extraarg>-catalog</extraarg>
|
||||||
|
<extraarg>${basedir}/src/main/resources/wsdl/jax-ws-catalog.xml</extraarg>
|
||||||
|
|
||||||
|
</extraargs>
|
||||||
|
</defaultOptions>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf</groupId>
|
||||||
|
<artifactId>cxf-rt-bindings-soap</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- Boolean getters/setters -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf.xjcplugins</groupId>
|
||||||
|
<artifactId>cxf-xjc-boolean</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- ToString -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf.xjcplugins</groupId>
|
||||||
|
<artifactId>cxf-xjc-ts</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.cxf.xjc-utils</groupId>
|
||||||
|
<artifactId>cxf-xjc-runtime</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-model-builder</artifactId>
|
||||||
|
<version>3.6.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- for java 10+ -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.activation</groupId>
|
||||||
|
<artifactId>javax.activation</artifactId>
|
||||||
|
<version>${javax.activation.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<version>${jaxb.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-core</artifactId>
|
||||||
|
<version>2.3.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-impl</artifactId>
|
||||||
|
<version>${jaxb.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.annotation</groupId>
|
||||||
|
<artifactId>javax.annotation-api</artifactId>
|
||||||
|
<version>1.3.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.ws</groupId>
|
||||||
|
<artifactId>jaxws-api</artifactId>
|
||||||
|
<version>2.3.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.activation</groupId>
|
||||||
|
<artifactId>activation</artifactId>
|
||||||
|
<version>1.1.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
1
onvif-ws-client/src/main/java/.gitignore
vendored
Normal file
1
onvif-ws-client/src/main/java/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/org/
|
||||||
931
onvif-ws-client/src/main/resources/wsdl/accesscontrol_1.0.wsdl
Normal file
931
onvif-ws-client/src/main/resources/wsdl/accesscontrol_1.0.wsdl
Normal file
@ -0,0 +1,931 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../../ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2010-2013 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this
|
||||||
|
document so long as this copyright notice, license and disclaimer are
|
||||||
|
retained with all copies of the document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND
|
||||||
|
THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
|
||||||
|
INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
|
||||||
|
THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
|
||||||
|
OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS,
|
||||||
|
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
|
||||||
|
DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS
|
||||||
|
DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES
|
||||||
|
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES
|
||||||
|
WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR
|
||||||
|
DISTRIBUTION OF THIS DOCUMENT.
|
||||||
|
THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO,
|
||||||
|
INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS
|
||||||
|
AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN
|
||||||
|
CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions name="PACSService" targetNamespace="http://www.onvif.org/ver10/accesscontrol/wsdl"
|
||||||
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tac="http://www.onvif.org/ver10/accesscontrol/wsdl"
|
||||||
|
>
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/accesscontrol/wsdl"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:pt="http://www.onvif.org/ver10/pacs"
|
||||||
|
xmlns:tac="http://www.onvif.org/ver10/accesscontrol/wsdl"
|
||||||
|
elementFormDefault="qualified"
|
||||||
|
version="1.0">
|
||||||
|
<xs:import namespace="http://www.onvif.org/ver10/pacs" schemaLocation="types.xsd"/>
|
||||||
|
<!--====== types ======-->
|
||||||
|
<xs:complexType name="ServiceCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The service capabilities reflect optional functionality of a service.
|
||||||
|
The information is static and does not change during device operation.
|
||||||
|
The following capabilities are available:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="MaxLimit" type="xs:unsignedInt" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The maximum number of entries returned by a single GetList request.
|
||||||
|
The device shall never return more than this number of entities in a single response.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="AccessPointInfoBase">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Used as extension base for AccessPointInfo.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:extension base="pt:DataEntity">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Name" type="pt:Name">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>A user readable name. It shall be up to 64 characters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Description" type="pt:Description" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional user readable description for the AccessPoint. It shall
|
||||||
|
be up to 1024 characters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="AreaFrom" type="pt:ReferenceToken" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional reference to the Area from which access is requested.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="AreaTo" type="pt:ReferenceToken" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional reference to the Area to which access is requested.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="EntityType" type="xs:QName" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional entity type; if missing, a Door type as defined by the
|
||||||
|
ONVIF DoorControl service should be assumed. This can also be represented by the
|
||||||
|
QName value "tdc:Door" - where tdc is the namespace of the Door Control service:
|
||||||
|
"http://www.onvif.org/ver10/doorcontrol/wsdl". This field is provided
|
||||||
|
for future extensions; it will allow an AccessPoint being extended to cover
|
||||||
|
entity types other than Doors as well.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Entity" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Reference to the entity used to control access; the entity type
|
||||||
|
may be specified by the optional EntityType field explained below but is
|
||||||
|
typically a Door.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="AccessPointInfo">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The AccessPointInfo structure contains basic information about an AccessPoint instance.
|
||||||
|
An AccessPoint defines an entity a Credential can be granted or denied access to. The
|
||||||
|
AccessPointInfo provides basic information on how access is controlled in one direction
|
||||||
|
for a
|
||||||
|
door (from which area to which area).
|
||||||
|
</p><p>
|
||||||
|
door is the typical device involved, but other type of
|
||||||
|
devices may be supported as well.
|
||||||
|
Multiple AccessPoints may cover the same Door.
|
||||||
|
A typical case is one AccessPoint for entry and another for exit, both referencing
|
||||||
|
the same Door.
|
||||||
|
</p><p>
|
||||||
|
|
||||||
|
An ONVIF compliant device shall provide the following fields for each AccessPoint
|
||||||
|
instance:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:extension base="tac:AccessPointInfoBase">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="tac:AccessPointCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capabilities for the AccessPoint.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="AccessPointCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The AccessPoint capabilities reflect optional functionality of a particular physical
|
||||||
|
entity.
|
||||||
|
Different AccessPoint instances may have different set of capabilities. This information
|
||||||
|
may
|
||||||
|
change during device operation, e.g. if hardware settings are changed.
|
||||||
|
The following capabilities are available:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="DisableAccessPoint" type="xs:boolean" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates whether or not this AccessPoint instance supports
|
||||||
|
EnableAccessPoint and DisableAccessPoint commands.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="Duress" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates whether or not this AccessPoint instance supports generation
|
||||||
|
of duress events.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="AnonymousAccess" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates whether or not this AccessPoint has a REX switch or other
|
||||||
|
input that allows anonymous access.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="AccessTaken" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates whether or not this AccessPoint instance supports generation
|
||||||
|
of AccessTaken and AccessNotTaken events. If AnonymousAccess and AccessTaken are both
|
||||||
|
true, it indicates that the Anonymous versions of AccessTaken and AccessNotTaken are
|
||||||
|
supported.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="ExternalAuthorization" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates whether or not this AccessPoint instance supports the
|
||||||
|
ExternalAuthorization operation and the generation of Request events. If
|
||||||
|
AnonymousAccess and ExternalAuthorization are both true, it indicates that the
|
||||||
|
Anonymous version is supported as well.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="AreaInfoBase">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Basic information about an Area. Used as extension base.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:extension base="pt:DataEntity">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Name" type="pt:Name">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>User readable name. It shall be up to 64 characters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Description" type="pt:Description" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>User readable description for the Area. It shall be up to 1024
|
||||||
|
characters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="AreaInfo">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The AreaInfo structure contains basic information about an Area.
|
||||||
|
An ONVIF compliant device shall provide the following fields for each Area:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:extension base="tac:AreaInfoBase">
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="AccessPointState">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The AccessPointState contains state information for an AccessPoint.
|
||||||
|
An ONVIF compliant device shall provide the following fields for each AccessPoint
|
||||||
|
instance:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Enabled" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the AccessPoint is enabled. By default this field
|
||||||
|
value shall be True, if the DisableAccessPoint capabilities is not supported.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:simpleType name="Decision">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The Decision enumeration represents a choice of two available options for an access
|
||||||
|
request:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="Granted">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The decision is to grant access.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="Denied">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The decision is to deny access.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:simpleType name="DenyReason">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Non-normative enum that describes the various reasons for denying access.
|
||||||
|
The following strings shall be used for the reason field:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="CredentialNotEnabled">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever a valid
|
||||||
|
credential is not enabled or has been disabled (e.g., due to credential being lost
|
||||||
|
etc.) to prevent unauthorized entry.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="CredentialNotActive">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever a valid
|
||||||
|
credential is presented though it is not active yet;: e.g, the credential was
|
||||||
|
presented before the start date.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="CredentialExpired">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever a valid
|
||||||
|
credential was presented after its expiry date.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="InvalidPIN">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever an entered
|
||||||
|
PIN code does not match the credential.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="NotPermittedAtThisTime">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever a valid
|
||||||
|
credential is denied access to the requested AccessPoint because the credential is
|
||||||
|
not permitted at the moment.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="Unauthorized">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever the presented
|
||||||
|
credential is not authorized.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
<xs:enumeration value="Other">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The device shall provide the following event, whenever the request
|
||||||
|
is denied and no other specific event matches it or is supported by the service.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:enumeration>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<!--===============================-->
|
||||||
|
<!-- Message Request / Response elements -->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="tac:ServiceCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capability response message contains the requested Access
|
||||||
|
Control service capabilities using a hierarchical XML capability structure.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessPointInfoList">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Limit" type="xs:int" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum number of entries to return. If not specified, less than
|
||||||
|
one or higher than what the device supports, the number of items is determined by
|
||||||
|
the device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="StartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Start returning entries from this start reference. If not
|
||||||
|
specified, entries shall start from the beginning of the dataset.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessPointInfoListResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="NextStartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>StartReference to use in next call to get the following items. If
|
||||||
|
absent, no more items to get.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="AccessPointInfo" type="tac:AccessPointInfo" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of AccessPointInfo items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessPointInfo">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Tokens of AccessPointInfo items to get.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessPointInfoResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessPointInfo" type="tac:AccessPointInfo" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of AccessPointInfo items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAreaInfoList">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Limit" type="xs:int" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum number of entries to return. If not specified, less than
|
||||||
|
one or higher than what the device supports, the number of items is determined by
|
||||||
|
the device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="StartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Start returning entries from this start reference. If not
|
||||||
|
specified, entries shall start from the beginning of the dataset.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAreaInfoListResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="NextStartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>StartReference to use in next call to get the following items. If
|
||||||
|
absent, no more items to get.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="AreaInfo" type="tac:AreaInfo" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of AreaInfo items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAreaInfo">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Tokens of AreaInfo items to get.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAreaInfoResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AreaInfo" type="tac:AreaInfo" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of AreaInfo items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessPointState">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of AccessPoint instance to get AccessPointState for.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessPointStateResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessPointState" type="tac:AccessPointState">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>AccessPointState item.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="EnableAccessPoint">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the AccessPoint instance to enable.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="EnableAccessPointResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="DisableAccessPoint">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the AccessPoint instance to disable.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="DisableAccessPointResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="ExternalAuthorization">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessPointToken" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the Access Point instance.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="CredentialToken" type="pt:ReferenceToken" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional token of the Credential involved.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Reason" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional reason for decision.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Decision" type="tac:Decision">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Decision - Granted or Denied.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="ExternalAuthorizationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="GetAccessPointInfoListRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAccessPointInfoList"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessPointInfoListResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAccessPointInfoListResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="GetAccessPointInfoRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAccessPointInfo"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessPointInfoResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAccessPointInfoResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="GetAreaInfoListRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAreaInfoList"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAreaInfoListResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAreaInfoListResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="GetAreaInfoRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAreaInfo"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAreaInfoResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAreaInfoResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="GetAccessPointStateRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAccessPointState"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessPointStateResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:GetAccessPointStateResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="EnableAccessPointRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:EnableAccessPoint"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="EnableAccessPointResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:EnableAccessPointResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="DisableAccessPointRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:DisableAccessPoint"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="DisableAccessPointResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:DisableAccessPointResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:message name="ExternalAuthorizationRequest">
|
||||||
|
<wsdl:part name="parameters" element="tac:ExternalAuthorization"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ExternalAuthorizationResponse">
|
||||||
|
<wsdl:part name="parameters" element="tac:ExternalAuthorizationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--====== Faults messages ========-->
|
||||||
|
<wsdl:portType name="PACSPort">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation returns the capabilities of the Access Control service.
|
||||||
|
</p><p>
|
||||||
|
An ONVIF compliant device which provides the Access Control service shall
|
||||||
|
implement this method.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="tac:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessPointInfoList">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of all AccessPointInfo items provided by the device.
|
||||||
|
An ONVIF compliant device which provides the Access Control service shall implement this
|
||||||
|
method.
|
||||||
|
</p><p>
|
||||||
|
A call to this method shall return a StartReference when not all data is returned and more
|
||||||
|
data is available. The reference shall be valid for retrieving the next set of data.
|
||||||
|
Please refer section [Retrieving system configuration] for more details.
|
||||||
|
</p><p>
|
||||||
|
The number of items returned shall not be greater than Limit parameter.
|
||||||
|
</p><p>
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:GetAccessPointInfoListRequest"/>
|
||||||
|
<wsdl:output message="tac:GetAccessPointInfoListResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessPointInfo">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of AccessPointInfo items matching the given tokens.
|
||||||
|
</p><p>
|
||||||
|
An ONVIF compliant device which provides Access Control service shall implement this method.
|
||||||
|
</p><p>
|
||||||
|
The device shall ignore tokens it cannot resolve and shall return an empty list if there
|
||||||
|
are no items matching specified tokens. The device shall not return a fault in this case.
|
||||||
|
</p><p>
|
||||||
|
If the number of requested items is greater than MaxLimit, a TooManyItems
|
||||||
|
fault shall be returned.
|
||||||
|
</p><p>
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:GetAccessPointInfoRequest"/>
|
||||||
|
<wsdl:output message="tac:GetAccessPointInfoResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAreaInfoList">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of all AreaInfo items provided by the device.
|
||||||
|
An ONVIF compliant device which provides the Access Control service shall implement this
|
||||||
|
method.
|
||||||
|
</p><p>
|
||||||
|
A call to this method shall return a StartReference when not all data is returned and more
|
||||||
|
data is available. The reference shall be valid for retrieving the next set of data.
|
||||||
|
Please refer section [Retrieving system configuration] for more details.
|
||||||
|
</p><p>
|
||||||
|
The number of items returned shall not be greater than Limit parameter.
|
||||||
|
</p><p>
|
||||||
|
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:GetAreaInfoListRequest"/>
|
||||||
|
<wsdl:output message="tac:GetAreaInfoListResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAreaInfo">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of AreaInfo items matching the given tokens.
|
||||||
|
</p><p>
|
||||||
|
An ONVIF compliant device which provides Access Control service shall implement this method.
|
||||||
|
</p><p>
|
||||||
|
The device shall ignore tokens it cannot resolve and shall return an empty list if there
|
||||||
|
are no items matching specified tokens. The device shall not return a fault in this case.
|
||||||
|
</p><p>
|
||||||
|
If the number of requested items is greater than MaxLimit, a TooManyItems
|
||||||
|
fault shall be returned.
|
||||||
|
</p><p>
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:GetAreaInfoRequest"/>
|
||||||
|
<wsdl:output message="tac:GetAreaInfoResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessPointState">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests the AccessPointState for the AccessPoint instance specified by
|
||||||
|
Token.
|
||||||
|
</p><p>
|
||||||
|
An ONVIF compliant device that provides Access Control service shall implement this method.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:GetAccessPointStateRequest"/>
|
||||||
|
<wsdl:output message="tac:GetAccessPointStateResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="EnableAccessPoint">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation allows enabling an access point.
|
||||||
|
</p><p>
|
||||||
|
A device that signals support for DisableAccessPoint capability for a particular AccessPoint
|
||||||
|
instance shall implement this command.
|
||||||
|
</p><p>
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:EnableAccessPointRequest"/>
|
||||||
|
<wsdl:output message="tac:EnableAccessPointResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DisableAccessPoint">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation allows disabling an access point.
|
||||||
|
</p><p>
|
||||||
|
A device that signals support for DisableAccessPoint capability for a particular AccessPoint
|
||||||
|
instance shall implement this command.
|
||||||
|
</p><p>
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:DisableAccessPointRequest"/>
|
||||||
|
<wsdl:output message="tac:DisableAccessPointResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ExternalAuthorization">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation allows to Deny or Grant decision at an AccessPoint instance.
|
||||||
|
</p><p>
|
||||||
|
A device that signals support for ExternalAuthorization capability for a particular
|
||||||
|
AccessPoint instance shall implement this method.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tac:ExternalAuthorizationRequest"/>
|
||||||
|
<wsdl:output message="tac:ExternalAuthorizationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:binding name="PACSBinding" type="tac:PACSPort">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Copyright (c) 2010-2013 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
<br/>
|
||||||
|
This is the initial minimized version of the Access Control service
|
||||||
|
aimed at the first PACS Profile C.
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
The AccessControl service implements the Authentication and
|
||||||
|
Authorization functionality and controls the actions to get
|
||||||
|
access to various Access Points controlling access to Doors and Areas.
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
The basic data structures used by the service are:
|
||||||
|
|
||||||
|
* CredentialInfo holding basic information of a credential.
|
||||||
|
<br/>
|
||||||
|
* AccessPointInfo holding basic information on how access is controlled in
|
||||||
|
one direction for a door (from which area to which area) defined in the DoorControl service.
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
</wsdl:documentation>
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/GetServiceCapabilities"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="GetAccessPointInfoList">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/GetAccessPointInfoList"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="GetAccessPointInfo">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/GetAccessPointInfo"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="GetAreaInfoList">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/GetAreaInfoList"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="GetAreaInfo">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/GetAreaInfo"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="GetAccessPointState">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/GetAccessPointState"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="EnableAccessPoint">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/EnableAccessPoint"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="DisableAccessPoint">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/DisableAccessPoint"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:operation name="ExternalAuthorization">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accesscontrol/wsdl/ExternalAuthorization"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<!--===============================-->
|
||||||
|
</wsdl:binding>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:service name="PACSService">
|
||||||
|
<wsdl:port name="PACSPort" binding="tac:PACSBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/accesscontrol/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
695
onvif-ws-client/src/main/resources/wsdl/accessrules_1.0.wsdl
Normal file
695
onvif-ws-client/src/main/resources/wsdl/accessrules_1.0.wsdl
Normal file
@ -0,0 +1,695 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../../../ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2010-2015 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this
|
||||||
|
document so long as this copyright notice, license and disclaimer are
|
||||||
|
retained with all copies of the document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND
|
||||||
|
THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
|
||||||
|
INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
|
||||||
|
THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
|
||||||
|
OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS,
|
||||||
|
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
|
||||||
|
DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS
|
||||||
|
DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES
|
||||||
|
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES
|
||||||
|
WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR
|
||||||
|
DISTRIBUTION OF THIS DOCUMENT.
|
||||||
|
THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO,
|
||||||
|
INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS
|
||||||
|
AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN
|
||||||
|
CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions
|
||||||
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tar="http://www.onvif.org/ver10/accessrules/wsdl" name="AccessRulesService"
|
||||||
|
targetNamespace="http://www.onvif.org/ver10/accessrules/wsdl">
|
||||||
|
<!-- The data types definition for the 'Access Rules Service' -->
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/accessrules/wsdl"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pt="http://www.onvif.org/ver10/pacs"
|
||||||
|
xmlns:tar="http://www.onvif.org/ver10/accessrules/wsdl" elementFormDefault="qualified"
|
||||||
|
version="1.0">
|
||||||
|
<xs:import namespace="http://www.onvif.org/ver10/pacs" schemaLocation="../../pacs/types.xsd"/>
|
||||||
|
<!--ServiceCapabilities definitions-->
|
||||||
|
<xs:complexType name="ServiceCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The service capabilities reflect optional functionality of a service. The information is
|
||||||
|
static
|
||||||
|
and does not change during device operation. The following capabilities are available:
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="MaxLimit" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The maximum number of entries returned by a single Get<Entity>List or Get<Entity>
|
||||||
|
request. The device shall never return more than this number of entities in a single
|
||||||
|
response.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:unsignedInt">
|
||||||
|
<xs:minInclusive value="1"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="MaxAccessProfiles" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Indicates the maximum number of access profiles supported by the device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:unsignedInt">
|
||||||
|
<xs:minInclusive value="1"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="MaxAccessPoliciesPerAccessProfile" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Indicates the maximum number of access policies per access profile supported by the
|
||||||
|
device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:unsignedInt">
|
||||||
|
<xs:minInclusive value="1"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="MultipleSchedulesPerAccessPointSupported" type="xs:boolean"
|
||||||
|
use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Indicates whether or not several access policies can refer to the same access point in
|
||||||
|
an
|
||||||
|
access profile.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<!-- End of definition -->
|
||||||
|
<!--AccessPolicy definitions-->
|
||||||
|
<xs:complexType name="AccessPolicy">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The access policy is an association of an access point and a schedule. It defines when
|
||||||
|
an access
|
||||||
|
point can be accessed using an access profile which contains this access policy. If an
|
||||||
|
access
|
||||||
|
profile contains several access policies specifying different schedules for the same
|
||||||
|
access
|
||||||
|
point will result in a union of the schedules.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ScheduleToken" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Reference to the schedule used by the access policy
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Entity" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference to the entity used by the rule engine, the entity type may be specified by
|
||||||
|
the
|
||||||
|
optional EntityType field explained below but is typically an access point.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="EntityType" type="xs:QName" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Optional entity type; if missing, an access point type as defined by the ONVIF
|
||||||
|
Access
|
||||||
|
Control service should be assumed. This can also be represented by the QName value
|
||||||
|
“tac:AccessPoint” where tac is the namespace of Access Control Service
|
||||||
|
Specification.
|
||||||
|
This field is provided for future extensions; it will allow an access policy being
|
||||||
|
extended to cover entity types other than access points as well.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Extension" type="tar:AccessPolicyExtension" minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="AccessPolicyExtension">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<!-- End of definition -->
|
||||||
|
<!--AccessProfileInfo definitions-->
|
||||||
|
<xs:complexType name="AccessProfileInfo">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The AccessProfileInfo structure contains basic information about an access profile. The
|
||||||
|
device
|
||||||
|
shall provide the following fields for each AccessProfileInfo.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:extension base="pt:DataEntity">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Name" type="pt:Name">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>A user readable name. It shall be up to 64 characters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Description" type="pt:Description" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>User readable description for the access profile. It shall be up
|
||||||
|
to 1024 characters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!-- End of definition -->
|
||||||
|
<!--AccessProfileInfo definitions-->
|
||||||
|
<xs:complexType name="AccessProfile">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The access profile structure contains information about the collection of access
|
||||||
|
policies. The
|
||||||
|
device shall include all properties of the AccessProfileInfo structure and also a list
|
||||||
|
of access
|
||||||
|
policies.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:extension base="tar:AccessProfileInfo">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessPolicy" type="tar:AccessPolicy" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>A list of access policy structures, where each access policy
|
||||||
|
defines during which schedule an access point can be accessed.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Extension" type="tar:AccessProfileExtension" minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="AccessProfileExtension">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<!-- End of data types definition -->
|
||||||
|
<!-- #################-->
|
||||||
|
<!-- Message request / response elements-->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="tar:ServiceCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capability response message contains the requested access
|
||||||
|
rules
|
||||||
|
service capabilities using a hierarchical XML capability structure.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfileInfo">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken" minOccurs="1" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Tokens of AccessProfileInfo items to get.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfileInfoResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessProfileInfo" type="tar:AccessProfileInfo" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of AccessProfileInfo items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfileInfoList">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Limit" type="xs:int" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum number of entries to return. If not specified, less than
|
||||||
|
one
|
||||||
|
or higher than what the device supports, the number of items is determined by the
|
||||||
|
device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="StartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Start returning entries from this start reference. If not
|
||||||
|
specified,
|
||||||
|
entries shall start from the beginning of the dataset.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfileInfoListResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="NextStartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>StartReference to use in next call to get the following items. If
|
||||||
|
absent, no more items to get.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="AccessProfileInfo" type="tar:AccessProfileInfo" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of AccessProfileInfo items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfiles">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken" minOccurs="1" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Tokens of AccessProfile items to get.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfilesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessProfile" type="tar:AccessProfile" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of Access Profile items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfileList">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Limit" type="xs:int" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum number of entries to return. If not specified, less than
|
||||||
|
one
|
||||||
|
or higher than what the device supports, the number of items is determined by the
|
||||||
|
device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="StartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Start returning entries from this start reference. If not
|
||||||
|
specified,
|
||||||
|
entries shall start from the beginning of the dataset.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetAccessProfileListResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="NextStartReference" type="xs:string" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>StartReference to use in next call to get the following items. If
|
||||||
|
absent, no more items to get.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="AccessProfile" type="tar:AccessProfile" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of Access Profile items.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="CreateAccessProfile">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessProfile" type="tar:AccessProfile">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The AccessProfile to create.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="CreateAccessProfileResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The Token of created AccessProfile.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="ModifyAccessProfile">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="AccessProfile" type="tar:AccessProfile">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The details of Access Profile</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="ModifyAccessProfileResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="DeleteAccessProfile">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Token" type="pt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The token of the access profile to delete.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="DeleteAccessProfileResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!-- #################-->
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<!--Definition of 'GetServiceCapabilities' message-->
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'GetAccessProfileInfo' message-->
|
||||||
|
<wsdl:message name="GetAccessProfileInfoRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfileInfo"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessProfileInfoResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfileInfoResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'GetAccessProfileInfoList' message-->
|
||||||
|
<wsdl:message name="GetAccessProfileInfoListRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfileInfoList"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessProfileInfoListResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfileInfoListResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'GetAccessProfiles' message-->
|
||||||
|
<wsdl:message name="GetAccessProfilesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfiles"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessProfilesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfilesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'GetAccessProfileList' message-->
|
||||||
|
<wsdl:message name="GetAccessProfileListRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfileList"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetAccessProfileListResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:GetAccessProfileListResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'CreateAccessProfile' message-->
|
||||||
|
<wsdl:message name="CreateAccessProfileRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:CreateAccessProfile"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreateAccessProfileResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:CreateAccessProfileResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'ModifyAccessProfile' message-->
|
||||||
|
<wsdl:message name="ModifyAccessProfileRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:ModifyAccessProfile"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ModifyAccessProfileResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:ModifyAccessProfileResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--Definition of 'DeleteAccessProfile' message-->
|
||||||
|
<wsdl:message name="DeleteAccessProfileRequest">
|
||||||
|
<wsdl:part name="parameters" element="tar:DeleteAccessProfile"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="DeleteAccessProfileResponse">
|
||||||
|
<wsdl:part name="parameters" element="tar:DeleteAccessProfileResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:portType name="AccessRulesPort">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>This operation returns the capabilities of the access rules service.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="tar:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfileInfo">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of AccessProfileInfo items matching the given tokens. The
|
||||||
|
device shall
|
||||||
|
ignore tokens it cannot resolve and shall return an empty list if there are no items
|
||||||
|
matching specified
|
||||||
|
tokens. The device shall not return a fault in this case.
|
||||||
|
If the number of requested items is greater than MaxLimit, a TooManyItems fault shall be
|
||||||
|
returned.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:GetAccessProfileInfoRequest"/>
|
||||||
|
<wsdl:output message="tar:GetAccessProfileInfoResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfileInfoList">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of all of AccessProfileInfo items provided by the device.
|
||||||
|
A call to this method shall return a StartReference when not all data is returned and more
|
||||||
|
data is
|
||||||
|
available. The reference shall be valid for retrieving the next set of data. Please refer
|
||||||
|
Access Control
|
||||||
|
Service Specification for more details.
|
||||||
|
The number of items returned shall not be greater than Limit parameter.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:GetAccessProfileInfoListRequest"/>
|
||||||
|
<wsdl:output message="tar:GetAccessProfileInfoListResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfiles">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation returns the specified access profile item matching the given tokens.
|
||||||
|
The device shall ignore tokens it cannot resolve and shall return an empty list if there are
|
||||||
|
no items
|
||||||
|
matching specified tokens. The device shall not return a fault in this case.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:GetAccessProfilesRequest"/>
|
||||||
|
<wsdl:output message="tar:GetAccessProfilesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfileList">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation requests a list of all of access profile items provided by the device.
|
||||||
|
A call to this method shall return a StartReference when not all data is returned and more
|
||||||
|
data is
|
||||||
|
available. The reference shall be valid for retrieving the next set of data. Please refer
|
||||||
|
Access Control
|
||||||
|
Service Specification for more details.
|
||||||
|
The number of items returned shall not be greater the Limit parameter.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:GetAccessProfileListRequest"/>
|
||||||
|
<wsdl:output message="tar:GetAccessProfileListResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreateAccessProfile">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation creates the specified access profile. The token field of the access profile
|
||||||
|
shall be
|
||||||
|
empty, the service shall allocate a token for the access profile. The allocated token shall
|
||||||
|
be returned
|
||||||
|
in the response. If the client sends any value in the token field, the device shall return
|
||||||
|
InvalidArgVal
|
||||||
|
as generic fault code.
|
||||||
|
In an access profile, if several access policies specifying different schedules for the same
|
||||||
|
access
|
||||||
|
point will result in a union of the schedule.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:CreateAccessProfileRequest"/>
|
||||||
|
<wsdl:output message="tar:CreateAccessProfileResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ModifyAccessProfile">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation will modify the access profile for the specified access profile token. If
|
||||||
|
several access
|
||||||
|
policies specifying different schedules for the same access point will result in a union of
|
||||||
|
the
|
||||||
|
schedule.
|
||||||
|
If the device could not store the access profile information then a fault will be generated.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:ModifyAccessProfileRequest"/>
|
||||||
|
<wsdl:output message="tar:ModifyAccessProfileResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DeleteAccessProfile">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This operation will delete the specified access profile.
|
||||||
|
If it is associated with one or more entities some devices may not be able to delete the
|
||||||
|
access profile,
|
||||||
|
and consequently a ReferenceInUse fault shall be generated.
|
||||||
|
If the access profile is deleted, all access policies associated to the access profile will
|
||||||
|
also be
|
||||||
|
deleted.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tar:DeleteAccessProfileRequest"/>
|
||||||
|
<wsdl:output message="tar:DeleteAccessProfileResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<!--Protocol & data format for the operations and messages for the port type 'AccessRulesPort'-->
|
||||||
|
<wsdl:binding name="AccessRulesBinding" type="tar:AccessRulesPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accessrules/wsdl/GetServiceCapabilities"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfileInfo">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accessrules/wsdl/GetAccessProfileInfo"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfileInfoList">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accessrules/wsdl/GetAccessProfileInfoList"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfiles">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accessrules/wsdl/GetAccessProfiles"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetAccessProfileList">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/accessrules/wsdl/GetAccessProfileList"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreateAccessProfile">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accessrules/wsdl/CreateAccessProfile"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ModifyAccessProfile">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accessrules/wsdl/ModifyAccessProfile"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DeleteAccessProfile">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/accessrules/wsdl/DeleteAccessProfile"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:service name="AccessRulesService">
|
||||||
|
<wsdl:port name="AccessRulesPort" binding="tar:AccessRulesBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/accessrules/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
3236
onvif-ws-client/src/main/resources/wsdl/advancedsecurity_1.2.wsdl
Normal file
3236
onvif-ws-client/src/main/resources/wsdl/advancedsecurity_1.2.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
1589
onvif-ws-client/src/main/resources/wsdl/deviceio_2.6.1.wsdl
Normal file
1589
onvif-ws-client/src/main/resources/wsdl/deviceio_2.6.1.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
4483
onvif-ws-client/src/main/resources/wsdl/devicemgmt_2.5.wsdl
Normal file
4483
onvif-ws-client/src/main/resources/wsdl/devicemgmt_2.5.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
579
onvif-ws-client/src/main/resources/wsdl/display_2.1.1.wsdl
Normal file
579
onvif-ws-client/src/main/resources/wsdl/display_2.1.1.wsdl
Normal file
@ -0,0 +1,579 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="http://www.onvif.org/onvif/ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2008-2010 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tls="http://www.onvif.org/ver10/display/wsdl"
|
||||||
|
targetNamespace="http://www.onvif.org/ver10/display/wsdl">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/display/wsdl"
|
||||||
|
xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified">
|
||||||
|
<xs:import namespace="http://www.onvif.org/ver10/schema"
|
||||||
|
schemaLocation="http://www.onvif.org/onvif/ver10/schema/onvif.xsd"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="tls:Capabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capabilities for the display service is returned in the
|
||||||
|
Capabilities element.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="Capabilities">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="FixedLayout" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indication that the SetLayout command supports only predefined
|
||||||
|
layouts.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="Capabilities" type="tls:Capabilities"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetLayout">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the Video Output whose Layout is requested
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetLayoutResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Layout" type="tt:Layout">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Current layout of the video output.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetLayout">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the Video Output whose Layout shall be changed.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Layout" type="tt:Layout">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Layout to be set</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetLayoutResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetDisplayOptions">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the Video Output whose options are requested
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetDisplayOptionsResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="LayoutOptions" type="tt:LayoutOptions" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The LayoutOptions describe the fixed and predefined layouts of a
|
||||||
|
device. If the device does
|
||||||
|
not offer fixed layouts and allows setting the layout free this element is empty.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="CodingCapabilities" type="tt:CodingCapabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>decoding and encoding capabilities of the device
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetPaneConfigurations">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Reference Token of the Video Output whose Pane Configurations are
|
||||||
|
requested
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetPaneConfigurationsResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PaneConfiguration" type="tt:PaneConfiguration" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Contains a list of defined Panes of the specified VideoOutput.
|
||||||
|
Each VideoOutput has at least one PaneConfiguration.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetPaneConfiguration">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Reference Token of the Video Output the requested pane belongs
|
||||||
|
to
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Pane" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Reference Token of the Pane whose Configuration is requested
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetPaneConfigurationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PaneConfiguration" type="tt:PaneConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>returns the configuration of the requested pane.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetPaneConfigurations">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the video output whose panes to set.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="PaneConfiguration" type="tt:PaneConfiguration" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Pane Configuration to be set.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetPaneConfigurationsResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetPaneConfiguration">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the video output whose panes to set.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="PaneConfiguration" type="tt:PaneConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Pane Configuration to be set.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetPaneConfigurationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="CreatePaneConfiguration">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the video output where the pane shall be created.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="PaneConfiguration" type="tt:PaneConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Configuration of the pane to be created.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="CreatePaneConfigurationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="PaneToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the new pane configuration.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="DeletePaneConfiguration">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoOutput" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the video output where the pane shall be deleted.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="PaneToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Token of the pane to be deleted.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="DeletePaneConfigurationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetLayoutRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetLayout"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetLayoutResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetLayoutResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetLayoutRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:SetLayout"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetLayoutResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:SetLayoutResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetDisplayOptionsRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetDisplayOptions"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetDisplayOptionsResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetDisplayOptionsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetPaneConfigurationsRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetPaneConfigurations"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetPaneConfigurationsResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetPaneConfigurationsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetPaneConfigurationRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetPaneConfiguration"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetPaneConfigurationResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:GetPaneConfigurationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetPaneConfigurationsRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:SetPaneConfigurations"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetPaneConfigurationsResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:SetPaneConfigurationsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetPaneConfigurationRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:SetPaneConfiguration"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetPaneConfigurationResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:SetPaneConfigurationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreatePaneConfigurationRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:CreatePaneConfiguration"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreatePaneConfigurationResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:CreatePaneConfigurationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="DeletePaneConfigurationRequest">
|
||||||
|
<wsdl:part name="parameters" element="tls:DeletePaneConfiguration"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="DeletePaneConfigurationResponse">
|
||||||
|
<wsdl:part name="parameters" element="tls:DeletePaneConfigurationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="DisplayPort">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>Returns the capabilities of the display service. The result is returned in
|
||||||
|
a typed answer.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="tls:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetLayout">
|
||||||
|
<wsdl:documentation>Return the current layout of a video output. The Layout assigns a pane
|
||||||
|
configuration to a certain area of the display. The layout settings
|
||||||
|
directly affect a specific video output. The layout consists of a list of PaneConfigurations
|
||||||
|
and
|
||||||
|
their associated display areas.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:GetLayoutRequest"/>
|
||||||
|
<wsdl:output message="tls:GetLayoutResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetLayout">
|
||||||
|
<wsdl:documentation>Change the layout of a display (e.g. change from
|
||||||
|
single view to split screen view).The Layout assigns a pane configuration to a certain area
|
||||||
|
of the display. The layout settings
|
||||||
|
directly affect a specific video output. The layout consists of a list of PaneConfigurations
|
||||||
|
and
|
||||||
|
their associated display areas.
|
||||||
|
<br/>
|
||||||
|
A device implementation shall be tolerant against rounding errors when matching a layout
|
||||||
|
against its fixed set of layouts by accepting differences of at least one percent.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:SetLayoutRequest"/>
|
||||||
|
<wsdl:output message="tls:SetLayoutResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetDisplayOptions">
|
||||||
|
<wsdl:documentation>The Display Options contain the supported layouts (LayoutOptions) and the
|
||||||
|
decoding and
|
||||||
|
encoding capabilities (CodingCapabilities) of the device. The GetDisplayOptions command
|
||||||
|
returns both, Layout and Coding Capabilities, of a VideoOutput.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:GetDisplayOptionsRequest"/>
|
||||||
|
<wsdl:output message="tls:GetDisplayOptionsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetPaneConfigurations">
|
||||||
|
<wsdl:documentation>List all currently defined panes of a device for a specified video output
|
||||||
|
(regardless if this pane is visible at a moment). A Pane is a display area on the monitor
|
||||||
|
that is attached to a video output. A pane has a
|
||||||
|
PaneConfiguration that describes which entities are associated with the pane. A client has
|
||||||
|
to configure the pane according to the connection to be established by setting the
|
||||||
|
AudioOutput and/or AudioSourceToken. If a Token is not set, the corresponding session will
|
||||||
|
not be established.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:GetPaneConfigurationsRequest"/>
|
||||||
|
<wsdl:output message="tls:GetPaneConfigurationsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetPaneConfiguration">
|
||||||
|
<wsdl:documentation>Retrieve the pane configuration for a pane token.</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:GetPaneConfigurationRequest"/>
|
||||||
|
<wsdl:output message="tls:GetPaneConfigurationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetPaneConfigurations">
|
||||||
|
<wsdl:documentation>Modify one or more configurations of the specified video output.
|
||||||
|
This method will only modify the provided configurations and leave the others unchanged.
|
||||||
|
Use <a href="#op.DeletePaneConfiguration">DeletePaneConfiguration</a> to remove pane
|
||||||
|
configurations.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:SetPaneConfigurationsRequest"/>
|
||||||
|
<wsdl:output message="tls:SetPaneConfigurationsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetPaneConfiguration">
|
||||||
|
<wsdl:documentation>This command changes the configuration of the specified pane (tbd)
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:SetPaneConfigurationRequest"/>
|
||||||
|
<wsdl:output message="tls:SetPaneConfigurationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreatePaneConfiguration">
|
||||||
|
<wsdl:documentation>Create a new pane configuration describing the streaming and coding
|
||||||
|
settings for a display area.
|
||||||
|
<br/>
|
||||||
|
This optional method is only supported by devices that signal support of dynamic pane
|
||||||
|
creation via their capabilities.
|
||||||
|
<br/>
|
||||||
|
The content of the Token field may be ignored by the device.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:CreatePaneConfigurationRequest"/>
|
||||||
|
<wsdl:output message="tls:CreatePaneConfigurationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DeletePaneConfiguration">
|
||||||
|
<wsdl:documentation>Delete a pane configuration. A service must respond with an error if the
|
||||||
|
pane configuration
|
||||||
|
is in use by the current layout.
|
||||||
|
<br/>
|
||||||
|
This optional method is only supported by devices that signal support of dynamic pane
|
||||||
|
creation via their capabilities.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tls:DeletePaneConfigurationRequest"/>
|
||||||
|
<wsdl:output message="tls:DeletePaneConfigurationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="DisplayBinding" type="tls:DisplayPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/GetServiceCapabilities"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetLayout">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/GetLayout"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetLayout">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/SetLayout"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetDisplayOptions">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/GetDisplayOptions"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetPaneConfigurations">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/GetPaneConfigurations"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetPaneConfiguration">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/GetPaneConfiguration"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetPaneConfigurations">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/SetPaneConfigurations"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetPaneConfiguration">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/SetPaneConfiguration"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreatePaneConfiguration">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/CreatePaneConfiguration"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DeletePaneConfiguration">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/display/wsdl/DeletePaneConfiguration"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
|
||||||
|
<!--===============================-->
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:service name="DisplayService">
|
||||||
|
<wsdl:port name="DisplayPort" binding="tls:DisplayBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/display/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
1336
onvif-ws-client/src/main/resources/wsdl/doorcontrol_1.0.wsdl
Normal file
1336
onvif-ws-client/src/main/resources/wsdl/doorcontrol_1.0.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
878
onvif-ws-client/src/main/resources/wsdl/event_2.6.wsdl
Normal file
878
onvif-ws-client/src/main/resources/wsdl/event_2.6.wsdl
Normal file
@ -0,0 +1,878 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../../../ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Note that the location of the document has been changed to reflect the namespace.
|
||||||
|
Copyright (c) 2008-2015 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
|
||||||
|
xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
xmlns:wsntw="http://docs.oasis-open.org/wsn/bw-2"
|
||||||
|
xmlns:tev="http://www.onvif.org/ver10/events/wsdl"
|
||||||
|
xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"
|
||||||
|
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
|
||||||
|
targetNamespace="http://www.onvif.org/ver10/events/wsdl">
|
||||||
|
<wsdl:import namespace="http://docs.oasis-open.org/wsn/bw-2"
|
||||||
|
location="http://docs.oasis-open.org/wsn/bw-2.wsdl"/>
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/events/wsdl"
|
||||||
|
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" elementFormDefault="qualified" version="2.6">
|
||||||
|
<xs:import namespace="http://www.w3.org/2005/08/addressing"
|
||||||
|
schemaLocation="http://www.w3.org/2005/08/addressing/ws-addr.xsd"/>
|
||||||
|
<xs:import namespace="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsn/t-1.xsd"/>
|
||||||
|
<xs:import namespace="http://docs.oasis-open.org/wsn/b-2"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsn/b-2.xsd"/>
|
||||||
|
<!-- Message Request/Responses elements -->
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="tev:Capabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capabilities for the event service is returned in the
|
||||||
|
Capabilities element.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="Capabilities">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="WSSubscriptionPolicySupport" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the WS Subscription policy is supported.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="WSPullPointSupport" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the WS Pull Point is supported.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="WSPausableSubscriptionManagerInterfaceSupport" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the WS Pausable Subscription Manager Interface is
|
||||||
|
supported.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="MaxNotificationProducers" type="xs:int">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum number of supported notification producers as defined by
|
||||||
|
WS-BaseNotification.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="MaxPullPoints" type="xs:int">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum supported number of notification pull points.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="PersistentNotificationStorage" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indication if the device supports persistent notification storage.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="Capabilities" type="tev:Capabilities"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="CreatePullPointSubscription">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Filter" type="wsnt:FilterType" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional XPATH expression to select specific topics.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="InitialTerminationTime" type="wsnt:AbsoluteOrRelativeTimeType"
|
||||||
|
nillable="true" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Initial termination time.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SubscriptionPolicy" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Refer to <a
|
||||||
|
href="http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-os.htm">Web
|
||||||
|
Services Base Notification 1.3 (WS-BaseNotification)</a>.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="CreatePullPointSubscriptionResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="SubscriptionReference" type="wsa:EndpointReferenceType">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Endpoint reference of the subscription to be used for pulling the
|
||||||
|
messages.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element ref="wsnt:CurrentTime">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Current time of the server for synchronization purposes.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element ref="wsnt:TerminationTime">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Date time when the PullPoint will be shut down without further
|
||||||
|
pull requests.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="PullMessages">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Timeout" type="xs:duration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum time to block until this method returns.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="MessageLimit" type="xs:int">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Upper limit for the number of messages to return at once. A server
|
||||||
|
implementation may decide to return less messages.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="PullMessagesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="CurrentTime" type="xs:dateTime">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The date and time when the messages have been delivered by the web
|
||||||
|
server to the client.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="TerminationTime" type="xs:dateTime">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Date time when the PullPoint will be shut down without further
|
||||||
|
pull requests.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element ref="wsnt:NotificationMessage" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of messages. This list shall be empty in case of a timeout.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="PullMessagesFaultResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="MaxTimeout" type="xs:duration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum timeout supported by the device.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="MaxMessageLimit" type="xs:int">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Maximum message limit supported by the device.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="Seek">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="UtcTime" type="xs:dateTime">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The date and time to match against stored messages.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Reverse" type="xs:boolean" minOccurs="0" maxOccurs="1">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Reverse the pull direction of PullMessages.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SeekResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetSynchronizationPoint">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SetSynchronizationPointResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetEventProperties">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetEventPropertiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="TopicNamespaceLocation" type="xs:anyURI" minOccurs="1"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>List of topic namespaces supported.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element ref="wsnt:FixedTopicSet">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>True when topicset is fixed for all times.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element ref="wstop:TopicSet">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Set of topics supported.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element ref="wsnt:TopicExpressionDialect" minOccurs="1" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Defines the XPath expression syntax supported for matching topic expressions.
|
||||||
|
<br/>
|
||||||
|
The following TopicExpressionDialects are mandatory for an ONVIF compliant device
|
||||||
|
:
|
||||||
|
<ul type="disc">
|
||||||
|
<li>http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete</li>
|
||||||
|
<li>http://www.onvif.org/ver10/tev/topicExpression/ConcreteSet.</li>
|
||||||
|
</ul>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="MessageContentFilterDialect" type="xs:anyURI" minOccurs="1"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Defines the XPath function set supported for message content filtering.
|
||||||
|
<br/>
|
||||||
|
The following MessageContentFilterDialects should be returned if a device supports
|
||||||
|
the message content filtering:
|
||||||
|
<ul type="disc">
|
||||||
|
<li>http://www.onvif.org/ver10/tev/messageContentFilter/ItemFilter.</li>
|
||||||
|
</ul>
|
||||||
|
A device that does not support any MessageContentFilterDialect returns a single
|
||||||
|
empty url.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="ProducerPropertiesFilterDialect" type="xs:anyURI" minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Optional ProducerPropertiesDialects. Refer to <a
|
||||||
|
href="http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-os.htm">Web
|
||||||
|
Services Base Notification 1.3 (WS-BaseNotification)
|
||||||
|
</a> for advanced filtering.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="MessageContentSchemaLocation" type="xs:anyURI" minOccurs="1"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
The Message Content Description Language allows referencing
|
||||||
|
of vendor-specific types. In order to ease the integration of such types into a
|
||||||
|
client application,
|
||||||
|
the GetEventPropertiesResponse shall list all URI locations to schema files whose
|
||||||
|
types are
|
||||||
|
used in the description of notifications, with MessageContentSchemaLocation
|
||||||
|
elements.
|
||||||
|
<br/>
|
||||||
|
This list shall at least contain the URI of the ONVIF schema file.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation/>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:any>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="SubscriptionPolicy">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Optional ONVIF defined pull point subscription policies
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="ChangedOnly" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The pullpoint should not provide Initialized nor Deleted events for
|
||||||
|
Properties.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tev:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreatePullPointSubscriptionRequest">
|
||||||
|
<wsdl:part name="parameters" element="tev:CreatePullPointSubscription"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreatePullPointSubscriptionResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:CreatePullPointSubscriptionResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="PullMessagesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tev:PullMessages"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="PullMessagesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:PullMessagesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="PullMessagesFaultResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:PullMessagesFaultResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SeekRequest">
|
||||||
|
<wsdl:part name="parameters" element="tev:Seek"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SeekResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:SeekResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetSynchronizationPointRequest">
|
||||||
|
<wsdl:part name="parameters" element="tev:SetSynchronizationPoint"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetSynchronizationPointResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:SetSynchronizationPointResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetEventPropertiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="tev:GetEventProperties"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetEventPropertiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="tev:GetEventPropertiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="EventPortType">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>Returns the capabilities of the event service. The result is returned in a
|
||||||
|
typed answer.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tev:GetServiceCapabilitiesRequest"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/EventPortType/GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="tev:GetServiceCapabilitiesResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/EventPortType/GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreatePullPointSubscription">
|
||||||
|
<wsdl:documentation>This method returns a PullPointSubscription that can be polled using
|
||||||
|
PullMessages.
|
||||||
|
This message contains the same elements as the SubscriptionRequest of the
|
||||||
|
WS-BaseNotification without the ConsumerReference.
|
||||||
|
<br/>
|
||||||
|
If no Filter is specified the pullpoint notifies all occurring events to the client.
|
||||||
|
<br/>
|
||||||
|
This method is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tev:CreatePullPointSubscriptionRequest"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/EventPortType/CreatePullPointSubscriptionRequest"/>
|
||||||
|
<wsdl:output message="tev:CreatePullPointSubscriptionResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/EventPortType/CreatePullPointSubscriptionResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="InvalidFilterFault" message="wsntw:InvalidFilterFault"/>
|
||||||
|
<wsdl:fault name="TopicExpressionDialectUnknownFault"
|
||||||
|
message="wsntw:TopicExpressionDialectUnknownFault"/>
|
||||||
|
<wsdl:fault name="InvalidTopicExpressionFault" message="wsntw:InvalidTopicExpressionFault"/>
|
||||||
|
<wsdl:fault name="TopicNotSupportedFault" message="wsntw:TopicNotSupportedFault"/>
|
||||||
|
<wsdl:fault name="InvalidProducerPropertiesExpressionFault"
|
||||||
|
message="wsntw:InvalidProducerPropertiesExpressionFault"/>
|
||||||
|
<wsdl:fault name="InvalidMessageContentExpressionFault"
|
||||||
|
message="wsntw:InvalidMessageContentExpressionFault"/>
|
||||||
|
<wsdl:fault name="UnacceptableInitialTerminationTimeFault"
|
||||||
|
message="wsntw:UnacceptableInitialTerminationTimeFault"/>
|
||||||
|
<wsdl:fault name="UnrecognizedPolicyRequestFault"
|
||||||
|
message="wsntw:UnrecognizedPolicyRequestFault"/>
|
||||||
|
<wsdl:fault name="UnsupportedPolicyRequestFault"
|
||||||
|
message="wsntw:UnsupportedPolicyRequestFault"/>
|
||||||
|
<wsdl:fault name="NotifyMessageNotSupportedFault"
|
||||||
|
message="wsntw:NotifyMessageNotSupportedFault"/>
|
||||||
|
<wsdl:fault name="SubscribeCreationFailedFault" message="wsntw:SubscribeCreationFailedFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetEventProperties">
|
||||||
|
<wsdl:documentation>The WS-BaseNotification specification defines a set of OPTIONAL
|
||||||
|
WS-ResouceProperties.
|
||||||
|
This specification does not require the implementation of the WS-ResourceProperty interface.
|
||||||
|
Instead, the subsequent direct interface shall be implemented by an ONVIF compliant device
|
||||||
|
in order to provide information about the FilterDialects, Schema files and topics supported
|
||||||
|
by
|
||||||
|
the device.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tev:GetEventPropertiesRequest"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/EventPortType/GetEventPropertiesRequest"/>
|
||||||
|
<wsdl:output message="tev:GetEventPropertiesResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/EventPortType/GetEventPropertiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:portType name="PullPointSubscription">
|
||||||
|
<wsdl:operation name="PullMessages">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This method pulls one or more messages from a PullPoint.
|
||||||
|
The device shall provide the following PullMessages command for all SubscriptionManager
|
||||||
|
endpoints returned by the CreatePullPointSubscription command. This method shall not wait
|
||||||
|
until
|
||||||
|
the requested number of messages is available but return as soon as at least one message is
|
||||||
|
available.
|
||||||
|
<br/>
|
||||||
|
The command shall at least support a Timeout of one minute. In case a device supports
|
||||||
|
retrieval of less messages
|
||||||
|
than requested it shall return these without generating a fault.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tev:PullMessagesRequest"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest"/>
|
||||||
|
<wsdl:output message="tev:PullMessagesResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesResponse"/>
|
||||||
|
<wsdl:fault name="PullMessagesFaultResponse" message="tev:PullMessagesFaultResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessages/Fault/PullMessagesFaultResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Seek">
|
||||||
|
<wsdl:documentation>
|
||||||
|
This method readjusts the pull pointer into the past.
|
||||||
|
A device supporting persistent notification storage shall provide the
|
||||||
|
following Seek command for all SubscriptionManager endpoints returned by
|
||||||
|
the CreatePullPointSubscription command. The optional Reverse argument can
|
||||||
|
be used to reverse the pull direction of the PullMessages command.
|
||||||
|
<br/>
|
||||||
|
The UtcTime argument will be matched against the UtcTime attribute on a
|
||||||
|
NotificationMessage.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tev:SeekRequest"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/SeekRequest"/>
|
||||||
|
<wsdl:output message="tev:SeekResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/SeekResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetSynchronizationPoint">
|
||||||
|
<wsdl:documentation>Properties inform a client about property creation, changes and
|
||||||
|
deletion in a uniform way. When a client wants to synchronize its properties with the
|
||||||
|
properties of the device, it can request a synchronization point which repeats the current
|
||||||
|
status of all properties to which a client has subscribed. The PropertyOperation of all
|
||||||
|
produced notifications is set to “Initialized”. The Synchronization Point is
|
||||||
|
requested directly from the SubscriptionManager which was returned in either the
|
||||||
|
SubscriptionResponse or in the CreatePullPointSubscriptionResponse. The property update is
|
||||||
|
transmitted via the notification transportation of the notification interface. This method
|
||||||
|
is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="tev:SetSynchronizationPointRequest"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/SetSynchronizationPointRequest"/>
|
||||||
|
<wsdl:output message="tev:SetSynchronizationPointResponse"
|
||||||
|
wsaw:Action="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/SetSynchronizationPointResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="PullPointSubscriptionBinding" type="tev:PullPointSubscription">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="PullMessages">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="PullMessagesFaultResponse">
|
||||||
|
<soap:fault name="PullMessagesFaultResponse" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Seek">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/SeekRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetSynchronizationPoint">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/SetSynchronizationPointRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="EventBinding" type="tev:EventPortType">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/events/wsdl/EventPortType/GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreatePullPointSubscription">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/events/wsdl/EventPortType/CreatePullPointSubscriptionRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidFilterFault">
|
||||||
|
<soap:fault name="InvalidFilterFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="TopicExpressionDialectUnknownFault">
|
||||||
|
<soap:fault name="TopicExpressionDialectUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidTopicExpressionFault">
|
||||||
|
<soap:fault name="InvalidTopicExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="TopicNotSupportedFault">
|
||||||
|
<soap:fault name="TopicNotSupportedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidProducerPropertiesExpressionFault">
|
||||||
|
<soap:fault name="InvalidProducerPropertiesExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidMessageContentExpressionFault">
|
||||||
|
<soap:fault name="InvalidMessageContentExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnacceptableInitialTerminationTimeFault">
|
||||||
|
<soap:fault name="UnacceptableInitialTerminationTimeFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnrecognizedPolicyRequestFault">
|
||||||
|
<soap:fault name="UnrecognizedPolicyRequestFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnsupportedPolicyRequestFault">
|
||||||
|
<soap:fault name="UnsupportedPolicyRequestFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="NotifyMessageNotSupportedFault">
|
||||||
|
<soap:fault name="NotifyMessageNotSupportedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="SubscribeCreationFailedFault">
|
||||||
|
<soap:fault name="SubscribeCreationFailedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetEventProperties">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://www.onvif.org/ver10/events/wsdl/EventPortType/GetEventPropertiesRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="SubscriptionManagerBinding" type="wsntw:SubscriptionManager">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="Renew">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/RenewRequest"/>
|
||||||
|
<wsdl:input name="RenewRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="RenewResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnacceptableTerminationTimeFault">
|
||||||
|
<soap:fault name="UnacceptableTerminationTimeFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Unsubscribe">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest"/>
|
||||||
|
<wsdl:input name="UnsubscribeRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="UnsubscribeResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnableToDestroySubscriptionFault">
|
||||||
|
<soap:fault name="UnableToDestroySubscriptionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="NotificationProducerBinding" type="wsntw:NotificationProducer">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="Subscribe">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidFilterFault">
|
||||||
|
<soap:fault name="InvalidFilterFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="TopicExpressionDialectUnknownFault">
|
||||||
|
<soap:fault name="TopicExpressionDialectUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidTopicExpressionFault">
|
||||||
|
<soap:fault name="InvalidTopicExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="TopicNotSupportedFault">
|
||||||
|
<soap:fault name="TopicNotSupportedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidProducerPropertiesExpressionFault">
|
||||||
|
<soap:fault name="InvalidProducerPropertiesExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidMessageContentExpressionFault">
|
||||||
|
<soap:fault name="InvalidMessageContentExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnacceptableInitialTerminationTimeFault">
|
||||||
|
<soap:fault name="UnacceptableInitialTerminationTimeFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnrecognizedPolicyRequestFault">
|
||||||
|
<soap:fault name="UnrecognizedPolicyRequestFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnsupportedPolicyRequestFault">
|
||||||
|
<soap:fault name="UnsupportedPolicyRequestFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="NotifyMessageNotSupportedFault">
|
||||||
|
<soap:fault name="NotifyMessageNotSupportedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="SubscribeCreationFailedFault">
|
||||||
|
<soap:fault name="SubscribeCreationFailedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetCurrentMessage">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="TopicExpressionDialectUnknownFault">
|
||||||
|
<soap:fault name="TopicExpressionDialectUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="InvalidTopicExpressionFault">
|
||||||
|
<soap:fault name="InvalidTopicExpressionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="TopicNotSupportedFault">
|
||||||
|
<soap:fault name="TopicNotSupportedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="NoCurrentMessageOnTopicFault">
|
||||||
|
<soap:fault name="NoCurrentMessageOnTopicFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="MultipleTopicsSpecifiedFault">
|
||||||
|
<soap:fault name="MultipleTopicsSpecifiedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="NotificationConsumerBinding" type="wsntw:NotificationConsumer">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="Notify">
|
||||||
|
<soap:operation soapAction="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="PullPointBinding" type="wsntw:PullPoint">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetMessages">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/PullPoint/GetMessagesRequest"/>
|
||||||
|
<wsdl:input name="GetMessagesRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="GetMessagesResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnableToGetMessagesFault">
|
||||||
|
<soap:fault name="UnableToGetMessagesFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DestroyPullPoint">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/PullPoint/DestroyPullPointRequest"/>
|
||||||
|
<wsdl:input name="DestroyPullPointRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="DestroyPullPointResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnableToDestroyPullPointFault">
|
||||||
|
<soap:fault name="UnableToDestroyPullPointFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Notify">
|
||||||
|
<soap:operation soapAction="http://docs.oasis-open.org/wsn/bw-2/PullPoint/Notify"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="CreatePullPointBinding" type="wsntw:CreatePullPoint">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="CreatePullPoint">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/CreatePullPoint/CreatePullPointRequest"/>
|
||||||
|
<wsdl:input name="CreatePullPointRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="CreatePullPointResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="UnableToCreatePullPointFault">
|
||||||
|
<soap:fault name="UnableToCreatePullPointFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="PausableSubscriptionManagerBinding" type="wsntw:PausableSubscriptionManager">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="Renew">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/PausableSubscriptionManager/RenewRequest"/>
|
||||||
|
<wsdl:input name="RenewRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="RenewResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnacceptableTerminationTimeFault">
|
||||||
|
<soap:fault name="UnacceptableTerminationTimeFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Unsubscribe">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/PausableSubscriptionManager/UnsubscribeRequest"/>
|
||||||
|
<wsdl:input name="UnsubscribeRequest">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output name="UnsubscribeResponse">
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="UnableToDestroySubscriptionFault">
|
||||||
|
<soap:fault name="UnableToDestroySubscriptionFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="PauseSubscription">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/PausableSubscriptionManager/PauseSubscriptionRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="PauseFailedFault">
|
||||||
|
<soap:fault name="PauseFailedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ResumeSubscription">
|
||||||
|
<soap:operation
|
||||||
|
soapAction="http://docs.oasis-open.org/wsn/bw-2/PausableSubscriptionManager/ResumeSubscriptionRequest"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault">
|
||||||
|
<soap:fault name="ResourceUnknownFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
<wsdl:fault name="ResumeFailedFault">
|
||||||
|
<soap:fault name="ResumeFailedFault" use="literal"/>
|
||||||
|
</wsdl:fault>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<!--===============================-->
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:service name="EventService">
|
||||||
|
<wsdl:port name="EventPort" binding="tev:EventBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/events/wsdl/event.wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
442
onvif-ws-client/src/main/resources/wsdl/imaging_2.5.wsdl
Normal file
442
onvif-ws-client/src/main/resources/wsdl/imaging_2.5.wsdl
Normal file
@ -0,0 +1,442 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../../../ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2008-2014 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tt="http://www.onvif.org/ver10/schema"
|
||||||
|
name="ImagingService" targetNamespace="http://www.onvif.org/ver20/imaging/wsdl">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tt="http://www.onvif.org/ver10/schema"
|
||||||
|
xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl"
|
||||||
|
targetNamespace="http://www.onvif.org/ver20/imaging/wsdl" elementFormDefault="qualified"
|
||||||
|
version="2.5">
|
||||||
|
<xs:import namespace="http://www.onvif.org/ver10/schema"
|
||||||
|
schemaLocation="../../../ver10/schema/onvif.xsd"/>
|
||||||
|
<!-- Message Request/Responses elements -->
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="timg:Capabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capabilities for the imaging service is returned in the
|
||||||
|
Capabilities element.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="Capabilities">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="ImageStabilization" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates whether or not Image Stabilization feature is supported.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="Capabilities" type="timg:Capabilities"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetImagingSettings">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference token to the VideoSource for which the ImagingSettings.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetImagingSettingsResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ImagingSettings" type="tt:ImagingSettings20">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
ImagingSettings for the VideoSource that was requested.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="SetImagingSettings">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken"/>
|
||||||
|
<xs:element name="ImagingSettings" type="tt:ImagingSettings20"/>
|
||||||
|
<xs:element name="ForcePersistence" type="xs:boolean" maxOccurs="1" minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SetImagingSettingsResponse">
|
||||||
|
<xs:complexType/>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetOptions">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference token to the VideoSource for which the imaging parameter options are
|
||||||
|
requested.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetOptionsResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ImagingOptions" type="tt:ImagingOptions20">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Valid ranges for the imaging parameters that are categorized as device specific.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="Move">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference to the VideoSource for the requested move (focus) operation.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Focus" type="tt:FocusMove">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Content of the requested move (focus) operation.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="MoveResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetMoveOptions">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference token to the VideoSource for the requested move options.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetMoveOptionsResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="MoveOptions" type="tt:MoveOptions20">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Valid ranges for the focus lens move options.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="Stop">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference token to the VideoSource where the focus movement should be stopped.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="StopResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetStatus">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="VideoSourceToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Reference token to the VideoSource where the imaging status should be requested.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetStatusResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Status" type="tt:ImagingStatus20">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Requested imaging status.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetImagingSettingsRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetImagingSettings"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetImagingSettingsResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetImagingSettingsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetImagingSettingsRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:SetImagingSettings"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetImagingSettingsResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:SetImagingSettingsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetOptionsRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetOptions"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetOptionsResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetOptionsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="MoveRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:Move"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="MoveResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:MoveResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetMoveOptionsRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetMoveOptions"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetMoveOptionsResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetMoveOptionsResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="StopRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:Stop"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="StopResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:StopResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetStatusRequest">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetStatus"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetStatusResponse">
|
||||||
|
<wsdl:part name="parameters" element="timg:GetStatusResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="ImagingPort">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>Returns the capabilities of the imaging service. The result is returned in
|
||||||
|
a typed answer.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="timg:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetImagingSettings">
|
||||||
|
<wsdl:documentation>Get the ImagingConfiguration for the requested VideoSource.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:GetImagingSettingsRequest"/>
|
||||||
|
<wsdl:output message="timg:GetImagingSettingsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetImagingSettings">
|
||||||
|
<wsdl:documentation>Set the ImagingConfiguration for the requested VideoSource.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:SetImagingSettingsRequest"/>
|
||||||
|
<wsdl:output message="timg:SetImagingSettingsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetOptions">
|
||||||
|
<wsdl:documentation>This operation gets the valid ranges for the imaging parameters that have
|
||||||
|
device specific ranges.
|
||||||
|
This command is mandatory for all device implementing the imaging service. The command
|
||||||
|
returns all supported parameters and their ranges
|
||||||
|
such that these can be applied to the SetImagingSettings command.
|
||||||
|
<br/>
|
||||||
|
For read-only parameters which cannot be modified via the SetImagingSettings command only a
|
||||||
|
single option or identical Min and Max values
|
||||||
|
is provided.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:GetOptionsRequest"/>
|
||||||
|
<wsdl:output message="timg:GetOptionsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Move">
|
||||||
|
<wsdl:documentation>The Move command moves the focus lens in an absolute, a relative or in a
|
||||||
|
continuous manner from its current position.
|
||||||
|
The speed argument is optional for absolute and relative control, but required for
|
||||||
|
continuous. If no speed argument is used, the default speed is used.
|
||||||
|
Focus adjustments through this operation will turn off the autofocus. A device with support
|
||||||
|
for remote focus control should support absolute,
|
||||||
|
relative or continuous control through the Move operation. The supported MoveOpions are
|
||||||
|
signalled via the GetMoveOptions command.
|
||||||
|
At least one focus control capability is required for this operation to be functional.
|
||||||
|
<br/>
|
||||||
|
The move operation contains the following commands:
|
||||||
|
<br/>
|
||||||
|
<b>Absolute</b>
|
||||||
|
– Requires position parameter and optionally takes a speed argument. A unitless type is used
|
||||||
|
by default for focus positioning and speed. Optionally, if supported, the position may be
|
||||||
|
requested in m-1 units.
|
||||||
|
<br/>
|
||||||
|
<b>Relative</b>
|
||||||
|
– Requires distance parameter and optionally takes a speed argument. Negative distance means
|
||||||
|
negative direction.
|
||||||
|
<b>Continuous</b>
|
||||||
|
– Requires a speed argument. Negative speed argument means negative direction.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:MoveRequest"/>
|
||||||
|
<wsdl:output message="timg:MoveResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetMoveOptions">
|
||||||
|
<wsdl:documentation>Imaging move operation options supported for the Video source.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:GetMoveOptionsRequest"/>
|
||||||
|
<wsdl:output message="timg:GetMoveOptionsResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Stop">
|
||||||
|
<wsdl:documentation>The Stop command stops all ongoing focus movements of the lense. A device
|
||||||
|
with support for remote focus control as signalled via
|
||||||
|
the GetMoveOptions supports this command.<br/>The operation will not affect ongoing
|
||||||
|
autofocus operation.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:StopRequest"/>
|
||||||
|
<wsdl:output message="timg:StopResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetStatus">
|
||||||
|
<wsdl:documentation>Via this command the current status of the Move operation can be
|
||||||
|
requested. Supported for this command is available if the support for the Move operation is
|
||||||
|
signalled via GetMoveOptions.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="timg:GetStatusRequest"/>
|
||||||
|
<wsdl:output message="timg:GetStatusResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="ImagingBinding" type="timg:ImagingPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/GetServiceCapabilities"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetImagingSettings">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/GetImagingSettings"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetImagingSettings">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/SetImagingSettings"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetOptions">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/GetOptions"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Move">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/Move"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Stop">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/FocusStop"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetStatus">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/GetStatus"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetMoveOptions">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver20/imaging/wsdl/GetMoveOptions"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
|
||||||
|
<wsdl:service name="ImagingService">
|
||||||
|
<wsdl:port name="ImagingPort" binding="timg:ImagingBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver20/imaging/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
20
onvif-ws-client/src/main/resources/wsdl/jax-ws-catalog.xml
Normal file
20
onvif-ws-client/src/main/resources/wsdl/jax-ws-catalog.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
|
||||||
|
<rewriteURI uriStartString="http://" rewritePrefix="local/"/>
|
||||||
|
<rewriteURI uriStartString="../ver10/device/wsdl/devicemgmt.wsdl"
|
||||||
|
rewritePrefix="devicemgmt_2.5.wsdl"/>
|
||||||
|
<rewriteURI uriStartString="../ver10/media/wsdl/media.wsdl" rewritePrefix="media_2.6.wsdl"/>
|
||||||
|
<rewriteURI uriStartString="http://www.onvif.org/onvif/ver10/schema/onvif.xsd"
|
||||||
|
rewritePrefix="local/www.onvif.org/ver10/schema/onvif.xsd"/>
|
||||||
|
<rewriteURI uriStartString="../../../ver10/schema/onvif.xsd"
|
||||||
|
rewritePrefix="local/www.onvif.org/ver10/schema/onvif.xsd"/>
|
||||||
|
<rewriteURI uriStartString="../ver10/schema/onvif.xsd"
|
||||||
|
rewritePrefix="local/www.onvif.org/ver10/schema/onvif.xsd"/>
|
||||||
|
<rewriteURI uriStartString="types.xsd" rewritePrefix="local/www.onvif.org/ver10/pacs/types.xsd"/>
|
||||||
|
<rewriteURI uriStartString="../../pacs/types.xsd"
|
||||||
|
rewritePrefix="local/www.onvif.org/ver10/pacs/types.xsd"/>
|
||||||
|
<rewriteURI uriStartString="http://www.onvif.org/ver10/pacs"
|
||||||
|
rewritePrefix="local/www.onvif.org/ver10/pacs/types.xsd"/>
|
||||||
|
<rewriteURI uriStartString="http://www.onvif.org/ver10/schema"
|
||||||
|
rewritePrefix="local/www.onvif.org/ver10/schema/onvif.xsd"/>
|
||||||
|
</catalog>
|
||||||
@ -0,0 +1,582 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
|
||||||
|
|
||||||
|
OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
|
||||||
|
|
||||||
|
Copyright (C) OASIS Open (2004-2006). All Rights Reserved.
|
||||||
|
|
||||||
|
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.
|
||||||
|
|
||||||
|
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
|
||||||
|
|
||||||
|
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsd:schema
|
||||||
|
targetNamespace="http://docs.oasis-open.org/wsn/b-2"
|
||||||
|
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
|
||||||
|
xmlns:wsa="http://www.w3.org/2005/08/addressing"
|
||||||
|
xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"
|
||||||
|
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||||
|
|
||||||
|
<!-- ======================== Imports ============================ -->
|
||||||
|
|
||||||
|
<xsd:import namespace="http://www.w3.org/2005/08/addressing"
|
||||||
|
schemaLocation="http://www.w3.org/2005/08/addressing/ws-addr.xsd"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<xsd:import namespace="http://docs.oasis-open.org/wsrf/bf-2"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsrf/bf-2.xsd"
|
||||||
|
/>
|
||||||
|
<xsd:import namespace="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsn/t-1.xsd"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- ===================== Misc. Helper Types ===================== -->
|
||||||
|
|
||||||
|
<xsd:complexType name="QueryExpressionType" mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="Dialect" type="xsd:anyURI" use="required"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:complexType name="TopicExpressionType" mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="Dialect" type="xsd:anyURI" use="required"/>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:complexType name="FilterType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:complexType name="SubscriptionPolicyType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<!-- =============== Resource Property Related =================== -->
|
||||||
|
<!-- ======== Resource Properties for NotificationProducer ======== -->
|
||||||
|
<xsd:element name="TopicExpression" type="wsnt:TopicExpressionType"/>
|
||||||
|
<xsd:element name="FixedTopicSet" type="xsd:boolean" default="true"/>
|
||||||
|
<xsd:element name="TopicExpressionDialect" type="xsd:anyURI"/>
|
||||||
|
|
||||||
|
<xsd:element name="NotificationProducerRP">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element ref="wsnt:TopicExpression"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<xsd:element ref="wsnt:FixedTopicSet"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:TopicExpressionDialect"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<xsd:element ref="wstop:TopicSet"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<!-- ======== Resource Properties for SubscriptionManager ========= -->
|
||||||
|
<xsd:element name="ConsumerReference"
|
||||||
|
type="wsa:EndpointReferenceType"/>
|
||||||
|
<xsd:element name="Filter" type="wsnt:FilterType"/>
|
||||||
|
<xsd:element name="SubscriptionPolicy" type="wsnt:SubscriptionPolicyType"/>
|
||||||
|
|
||||||
|
|
||||||
|
<xsd:element name="CreationTime" type="xsd:dateTime"/>
|
||||||
|
|
||||||
|
<xsd:element name="SubscriptionManagerRP">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element ref="wsnt:ConsumerReference"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:Filter"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:SubscriptionPolicy"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:CreationTime"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<!-- ================= Notification Metadata ===================== -->
|
||||||
|
<xsd:element name="SubscriptionReference"
|
||||||
|
type="wsa:EndpointReferenceType"/>
|
||||||
|
<xsd:element name="Topic"
|
||||||
|
type="wsnt:TopicExpressionType"/>
|
||||||
|
<xsd:element name="ProducerReference"
|
||||||
|
type="wsa:EndpointReferenceType"/>
|
||||||
|
|
||||||
|
<!-- ================== Message Helper Types ===================== -->
|
||||||
|
<xsd:complexType name="NotificationMessageHolderType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element ref="wsnt:SubscriptionReference"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:Topic"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:ProducerReference"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element name="Message">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##any" processContents="lax"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="NotificationMessage"
|
||||||
|
type="wsnt:NotificationMessageHolderType"/>
|
||||||
|
|
||||||
|
<!-- ========== Message Types for NotificationConsumer =========== -->
|
||||||
|
<xsd:element name="Notify">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element ref="wsnt:NotificationMessage"
|
||||||
|
minOccurs="1" maxOccurs="unbounded"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<!-- ========== Message Types for NotificationProducer =========== -->
|
||||||
|
|
||||||
|
<xsd:simpleType name="AbsoluteOrRelativeTimeType">
|
||||||
|
<xsd:union memberTypes="xsd:dateTime xsd:duration"/>
|
||||||
|
</xsd:simpleType>
|
||||||
|
|
||||||
|
<xsd:element name="CurrentTime" type="xsd:dateTime"/>
|
||||||
|
|
||||||
|
<xsd:element name="TerminationTime"
|
||||||
|
nillable="true" type="xsd:dateTime"/>
|
||||||
|
|
||||||
|
<xsd:element name="ProducerProperties"
|
||||||
|
type="wsnt:QueryExpressionType"/>
|
||||||
|
|
||||||
|
<xsd:element name="MessageContent"
|
||||||
|
type="wsnt:QueryExpressionType"/>
|
||||||
|
|
||||||
|
<xsd:element name="UseRaw">
|
||||||
|
<xsd:complexType/>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="Subscribe">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="ConsumerReference"
|
||||||
|
type="wsa:EndpointReferenceType"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element name="Filter"
|
||||||
|
type="wsnt:FilterType"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element name="InitialTerminationTime"
|
||||||
|
type="wsnt:AbsoluteOrRelativeTimeType"
|
||||||
|
nillable="true"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element name="SubscriptionPolicy"
|
||||||
|
minOccurs="0" maxOccurs="1">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##any" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="SubscribeResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="SubscriptionReference"
|
||||||
|
type="wsa:EndpointReferenceType"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:CurrentTime"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:TerminationTime"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="GetCurrentMessage">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="Topic"
|
||||||
|
type="wsnt:TopicExpressionType"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="GetCurrentMessageResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:complexType name="SubscribeCreationFailedFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="SubscribeCreationFailedFault"
|
||||||
|
type="wsnt:SubscribeCreationFailedFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="InvalidFilterFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="UnknownFilter" type="xsd:QName"
|
||||||
|
minOccurs="1" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="InvalidFilterFault"
|
||||||
|
type="wsnt:InvalidFilterFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="TopicExpressionDialectUnknownFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="TopicExpressionDialectUnknownFault"
|
||||||
|
type="wsnt:TopicExpressionDialectUnknownFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="InvalidTopicExpressionFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="InvalidTopicExpressionFault"
|
||||||
|
type="wsnt:InvalidTopicExpressionFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="TopicNotSupportedFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="TopicNotSupportedFault"
|
||||||
|
type="wsnt:TopicNotSupportedFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="MultipleTopicsSpecifiedFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="MultipleTopicsSpecifiedFault"
|
||||||
|
type="wsnt:MultipleTopicsSpecifiedFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="InvalidProducerPropertiesExpressionFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="InvalidProducerPropertiesExpressionFault"
|
||||||
|
type="wsnt:InvalidProducerPropertiesExpressionFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="InvalidMessageContentExpressionFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="InvalidMessageContentExpressionFault"
|
||||||
|
type="wsnt:InvalidMessageContentExpressionFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnrecognizedPolicyRequestFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="UnrecognizedPolicy" type="xsd:QName"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="UnrecognizedPolicyRequestFault"
|
||||||
|
type="wsnt:UnrecognizedPolicyRequestFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnsupportedPolicyRequestFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="UnsupportedPolicy" type="xsd:QName"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="UnsupportedPolicyRequestFault"
|
||||||
|
type="wsnt:UnsupportedPolicyRequestFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="NotifyMessageNotSupportedFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="NotifyMessageNotSupportedFault"
|
||||||
|
type="wsnt:NotifyMessageNotSupportedFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnacceptableInitialTerminationTimeFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="MinimumTime" type="xsd:dateTime"/>
|
||||||
|
<xsd:element name="MaximumTime" type="xsd:dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="UnacceptableInitialTerminationTimeFault"
|
||||||
|
type="wsnt:UnacceptableInitialTerminationTimeFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="NoCurrentMessageOnTopicFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="NoCurrentMessageOnTopicFault"
|
||||||
|
type="wsnt:NoCurrentMessageOnTopicFaultType"/>
|
||||||
|
|
||||||
|
<!-- ======== Message Types for PullPoint ======================== -->
|
||||||
|
<xsd:element name="GetMessages">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="MaximumNumber"
|
||||||
|
type="xsd:nonNegativeInteger"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="GetMessagesResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element ref="wsnt:NotificationMessage"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="DestroyPullPoint">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="DestroyPullPointResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnableToGetMessagesFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:element name="UnableToGetMessagesFault"
|
||||||
|
type="wsnt:UnableToGetMessagesFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnableToDestroyPullPointFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:element name="UnableToDestroyPullPointFault"
|
||||||
|
type="wsnt:UnableToDestroyPullPointFaultType"/>
|
||||||
|
|
||||||
|
<!-- ======== Message Types for Create PullPoint ================= -->
|
||||||
|
<xsd:element name="CreatePullPoint">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="CreatePullPointResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="PullPoint"
|
||||||
|
type="wsa:EndpointReferenceType"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnableToCreatePullPointFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="UnableToCreatePullPointFault"
|
||||||
|
type="wsnt:UnableToCreatePullPointFaultType"/>
|
||||||
|
|
||||||
|
<!-- ======== Message Types for Base SubscriptionManager ========= -->
|
||||||
|
<xsd:element name="Renew">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="TerminationTime"
|
||||||
|
type="wsnt:AbsoluteOrRelativeTimeType"
|
||||||
|
nillable="true"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="RenewResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element ref="wsnt:TerminationTime"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element ref="wsnt:CurrentTime"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnacceptableTerminationTimeFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="MinimumTime" type="xsd:dateTime"/>
|
||||||
|
<xsd:element name="MaximumTime" type="xsd:dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="UnacceptableTerminationTimeFault"
|
||||||
|
type="wsnt:UnacceptableTerminationTimeFaultType"/>
|
||||||
|
|
||||||
|
<xsd:element name="Unsubscribe">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="UnsubscribeResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:complexType name="UnableToDestroySubscriptionFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="UnableToDestroySubscriptionFault"
|
||||||
|
type="wsnt:UnableToDestroySubscriptionFaultType"/>
|
||||||
|
|
||||||
|
<!-- ====== Message Types for Pausable SubscriptionManager ======= -->
|
||||||
|
|
||||||
|
<xsd:element name="PauseSubscription">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="PauseSubscriptionResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="ResumeSubscription">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="ResumeSubscriptionResponse">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:complexType name="PauseFailedFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="PauseFailedFault"
|
||||||
|
type="wsnt:PauseFailedFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="ResumeFailedFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="ResumeFailedFault"
|
||||||
|
type="wsnt:ResumeFailedFaultType"/>
|
||||||
|
|
||||||
|
</xsd:schema>
|
||||||
@ -0,0 +1,447 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
|
||||||
|
|
||||||
|
OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
|
||||||
|
|
||||||
|
Copyright (C) OASIS Open (2004-2006). All Rights Reserved.
|
||||||
|
|
||||||
|
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.
|
||||||
|
|
||||||
|
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
|
||||||
|
|
||||||
|
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<wsdl:definitions name="WS-BaseNotification"
|
||||||
|
targetNamespace="http://docs.oasis-open.org/wsn/bw-2"
|
||||||
|
xmlns:wsntw="http://docs.oasis-open.org/wsn/bw-2"
|
||||||
|
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
|
||||||
|
xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
||||||
|
|
||||||
|
<!-- ========================== Imports =========================== -->
|
||||||
|
<wsdl:import
|
||||||
|
namespace="http://docs.oasis-open.org/wsrf/rw-2"
|
||||||
|
location="http://docs.oasis-open.org/wsrf/rw-2.wsdl"/>
|
||||||
|
|
||||||
|
<!-- ===================== Types Definitions ====================== -->
|
||||||
|
<wsdl:types>
|
||||||
|
<xsd:schema>
|
||||||
|
<xsd:import
|
||||||
|
namespace="http://docs.oasis-open.org/wsn/b-2"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsn/b-2.xsd"/>
|
||||||
|
</xsd:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
|
||||||
|
<!-- ================ NotificationConsumer::Notify ================
|
||||||
|
Notify(
|
||||||
|
NotificationMessage
|
||||||
|
(SubscriptionReference, TopicExpression, ProducerReference,
|
||||||
|
Message)*
|
||||||
|
returns: n/a (one way)
|
||||||
|
-->
|
||||||
|
<wsdl:message name="Notify">
|
||||||
|
<wsdl:part name="Notify" element="wsnt:Notify"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ============== NotificationProducer::Subscribe ===============
|
||||||
|
Subscribe(
|
||||||
|
(ConsumerEndpointReference, [Filter], [SubscriptionPolicy],
|
||||||
|
[InitialTerminationTime])
|
||||||
|
returns: WS-Resource qualified EPR to a Subscription
|
||||||
|
-->
|
||||||
|
<wsdl:message name="SubscribeRequest">
|
||||||
|
<wsdl:part name="SubscribeRequest"
|
||||||
|
element="wsnt:Subscribe"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="SubscribeResponse">
|
||||||
|
<wsdl:part name="SubscribeResponse"
|
||||||
|
element="wsnt:SubscribeResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="SubscribeCreationFailedFault">
|
||||||
|
<wsdl:part name="SubscribeCreationFailedFault"
|
||||||
|
element="wsnt:SubscribeCreationFailedFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="TopicExpressionDialectUnknownFault">
|
||||||
|
<wsdl:part name="TopicExpressionDialectUnknownFault"
|
||||||
|
element="wsnt:TopicExpressionDialectUnknownFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="InvalidFilterFault">
|
||||||
|
<wsdl:part name="InvalidFilterFault"
|
||||||
|
element="wsnt:InvalidFilterFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="InvalidProducerPropertiesExpressionFault">
|
||||||
|
<wsdl:part name="InvalidProducerPropertiesExpressionFault"
|
||||||
|
element="wsnt:InvalidProducerPropertiesExpressionFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="InvalidMessageContentExpressionFault">
|
||||||
|
<wsdl:part name="InvalidMessageContentExpressionFault"
|
||||||
|
element="wsnt:InvalidMessageContentExpressionFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnrecognizedPolicyRequestFault">
|
||||||
|
<wsdl:part name="UnrecognizedPolicyRequestFault"
|
||||||
|
element="wsnt:UnrecognizedPolicyRequestFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnsupportedPolicyRequestFault">
|
||||||
|
<wsdl:part name="UnsupportedPolicyRequestFault"
|
||||||
|
element="wsnt:UnsupportedPolicyRequestFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="NotifyMessageNotSupportedFault">
|
||||||
|
<wsdl:part name="NotifyMessageNotSupportedFault"
|
||||||
|
element="wsnt:NotifyMessageNotSupportedFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnacceptableInitialTerminationTimeFault">
|
||||||
|
<wsdl:part name="UnacceptableInitialTerminationTimeFault"
|
||||||
|
element="wsnt:UnacceptableInitialTerminationTimeFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ========== NotificationProducer::GetCurrentMessage ===========
|
||||||
|
GetCurrentMessage(topicExpression)
|
||||||
|
returns: a NotificationMessage (xsd:any)
|
||||||
|
-->
|
||||||
|
<wsdl:message name="GetCurrentMessageRequest">
|
||||||
|
<wsdl:part name="GetCurrentMessageRequest"
|
||||||
|
element="wsnt:GetCurrentMessage"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="GetCurrentMessageResponse">
|
||||||
|
<wsdl:part name="GetCurrentMessageResponse"
|
||||||
|
element="wsnt:GetCurrentMessageResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="InvalidTopicExpressionFault">
|
||||||
|
<wsdl:part name="InvalidTopicExpressionFault"
|
||||||
|
element="wsnt:InvalidTopicExpressionFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="TopicNotSupportedFault">
|
||||||
|
<wsdl:part name="TopicNotSupportedFault"
|
||||||
|
element="wsnt:TopicNotSupportedFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="MultipleTopicsSpecifiedFault">
|
||||||
|
<wsdl:part name="MultipleTopicsSpecifiedFault"
|
||||||
|
element="wsnt:MultipleTopicsSpecifiedFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="NoCurrentMessageOnTopicFault">
|
||||||
|
<wsdl:part name="NoCurrentMessageOnTopicFault"
|
||||||
|
element="wsnt:NoCurrentMessageOnTopicFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ========== PullPoint::GetMessages ===========
|
||||||
|
GetMessages(MaximumNumber)
|
||||||
|
returns: NotificationMessage list
|
||||||
|
-->
|
||||||
|
<wsdl:message name="GetMessagesRequest">
|
||||||
|
<wsdl:part name="GetMessagesRequest"
|
||||||
|
element="wsnt:GetMessages"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="GetMessagesResponse">
|
||||||
|
<wsdl:part name="GetMessagesResponse"
|
||||||
|
element="wsnt:GetMessagesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnableToGetMessagesFault">
|
||||||
|
<wsdl:part name="UnableToGetMessagesFault"
|
||||||
|
element="wsnt:UnableToGetMessagesFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ========== PullPoint::DestroyPullPoint ===========
|
||||||
|
DestroyPullPoint()
|
||||||
|
returns: void
|
||||||
|
-->
|
||||||
|
<wsdl:message name="DestroyPullPointRequest">
|
||||||
|
<wsdl:part name="DestroyPullPointRequest"
|
||||||
|
element="wsnt:DestroyPullPoint"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="DestroyPullPointResponse">
|
||||||
|
<wsdl:part name="DestroyPullPointResponse"
|
||||||
|
element="wsnt:DestroyPullPointResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnableToDestroyPullPointFault">
|
||||||
|
<wsdl:part name="UnableToDestroyPullPointFault"
|
||||||
|
element="wsnt:UnableToDestroyPullPointFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ========== PullPoint::CreatePullPoint ===========
|
||||||
|
CreatePullPoint()
|
||||||
|
returns: PullPoint (wsa:EndpointReference)
|
||||||
|
-->
|
||||||
|
<wsdl:message name="CreatePullPointRequest">
|
||||||
|
<wsdl:part name="CreatePullPointRequest"
|
||||||
|
element="wsnt:CreatePullPoint"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="CreatePullPointResponse">
|
||||||
|
<wsdl:part name="CreatePullPointResponse"
|
||||||
|
element="wsnt:CreatePullPointResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnableToCreatePullPointFault">
|
||||||
|
<wsdl:part name="UnableToCreatePullPointFault"
|
||||||
|
element="wsnt:UnableToCreatePullPointFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ================ SubscriptionManager::Renew ==================
|
||||||
|
Renew( Duration | AbsoluteTime)
|
||||||
|
returns: (New Termination Time [CurrentTime])
|
||||||
|
-->
|
||||||
|
<wsdl:message name="RenewRequest">
|
||||||
|
<wsdl:part name="RenewRequest"
|
||||||
|
element="wsnt:Renew"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="RenewResponse">
|
||||||
|
<wsdl:part name="RenewResponse"
|
||||||
|
element="wsnt:RenewResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnacceptableTerminationTimeFault">
|
||||||
|
<wsdl:part name="UnacceptableTerminationTimeFault"
|
||||||
|
element="wsnt:UnacceptableTerminationTimeFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ============== SubscriptionManager::Unsubscribe ===============
|
||||||
|
Unsubscribe()
|
||||||
|
returns: empty
|
||||||
|
-->
|
||||||
|
<wsdl:message name="UnsubscribeRequest">
|
||||||
|
<wsdl:part name="UnsubscribeRequest"
|
||||||
|
element="wsnt:Unsubscribe"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnsubscribeResponse">
|
||||||
|
<wsdl:part name="UnsubscribeResponse"
|
||||||
|
element="wsnt:UnsubscribeResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="UnableToDestroySubscriptionFault">
|
||||||
|
<wsdl:part name="UnableToDestroySubscriptionFault"
|
||||||
|
element="wsnt:UnableToDestroySubscriptionFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ========== SubscriptionManager::PauseSubscription ============
|
||||||
|
PauseSubscription()
|
||||||
|
returns: empty
|
||||||
|
-->
|
||||||
|
<wsdl:message name="PauseSubscriptionRequest">
|
||||||
|
<wsdl:part name="PauseSubscriptionRequest"
|
||||||
|
element="wsnt:PauseSubscription"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="PauseSubscriptionResponse">
|
||||||
|
<wsdl:part name="PauseSubscriptionResponse"
|
||||||
|
element="wsnt:PauseSubscriptionResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="PauseFailedFault">
|
||||||
|
<wsdl:part name="PauseFailedFault"
|
||||||
|
element="wsnt:PauseFailedFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- ========= SubscriptionManager::ResumeSubscription ============
|
||||||
|
ResumeSubscription()
|
||||||
|
returns: empty
|
||||||
|
-->
|
||||||
|
<wsdl:message name="ResumeSubscriptionRequest">
|
||||||
|
<wsdl:part name="ResumeSubscriptionRequest"
|
||||||
|
element="wsnt:ResumeSubscription"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="ResumeSubscriptionResponse">
|
||||||
|
<wsdl:part name="ResumeSubscriptionResponse"
|
||||||
|
element="wsnt:ResumeSubscriptionResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="ResumeFailedFault">
|
||||||
|
<wsdl:part name="ResumeFailedFault"
|
||||||
|
element="wsnt:ResumeFailedFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<!-- =================== PortType Definitions ===================== -->
|
||||||
|
<!-- ========= NotificationConsumer PortType Definition =========== -->
|
||||||
|
<wsdl:portType name="NotificationConsumer">
|
||||||
|
<wsdl:operation name="Notify">
|
||||||
|
<wsdl:input message="wsntw:Notify"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
|
||||||
|
<!-- ========= NotificationProducer PortType Definition =========== -->
|
||||||
|
<wsdl:portType name="NotificationProducer">
|
||||||
|
<wsdl:operation name="Subscribe">
|
||||||
|
<wsdl:input message="wsntw:SubscribeRequest"/>
|
||||||
|
<wsdl:output message="wsntw:SubscribeResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="InvalidFilterFault"
|
||||||
|
message="wsntw:InvalidFilterFault"/>
|
||||||
|
<wsdl:fault name="TopicExpressionDialectUnknownFault"
|
||||||
|
message="wsntw:TopicExpressionDialectUnknownFault"/>
|
||||||
|
<wsdl:fault name="InvalidTopicExpressionFault"
|
||||||
|
message="wsntw:InvalidTopicExpressionFault"/>
|
||||||
|
<wsdl:fault name="TopicNotSupportedFault"
|
||||||
|
message="wsntw:TopicNotSupportedFault"/>
|
||||||
|
<wsdl:fault name="InvalidProducerPropertiesExpressionFault"
|
||||||
|
message="wsntw:InvalidProducerPropertiesExpressionFault"/>
|
||||||
|
<wsdl:fault name="InvalidMessageContentExpressionFault"
|
||||||
|
message="wsntw:InvalidMessageContentExpressionFault"/>
|
||||||
|
<wsdl:fault name="UnacceptableInitialTerminationTimeFault"
|
||||||
|
message="wsntw:UnacceptableInitialTerminationTimeFault"/>
|
||||||
|
<wsdl:fault name="UnrecognizedPolicyRequestFault"
|
||||||
|
message="wsntw:UnrecognizedPolicyRequestFault"/>
|
||||||
|
<wsdl:fault name="UnsupportedPolicyRequestFault"
|
||||||
|
message="wsntw:UnsupportedPolicyRequestFault"/>
|
||||||
|
<wsdl:fault name="NotifyMessageNotSupportedFault"
|
||||||
|
message="wsntw:NotifyMessageNotSupportedFault"/>
|
||||||
|
<wsdl:fault name="SubscribeCreationFailedFault"
|
||||||
|
message="wsntw:SubscribeCreationFailedFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
|
||||||
|
<wsdl:operation name="GetCurrentMessage">
|
||||||
|
<wsdl:input message="wsntw:GetCurrentMessageRequest"/>
|
||||||
|
<wsdl:output message="wsntw:GetCurrentMessageResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="TopicExpressionDialectUnknownFault"
|
||||||
|
message="wsntw:TopicExpressionDialectUnknownFault"/>
|
||||||
|
<wsdl:fault name="InvalidTopicExpressionFault"
|
||||||
|
message="wsntw:InvalidTopicExpressionFault"/>
|
||||||
|
<wsdl:fault name="TopicNotSupportedFault"
|
||||||
|
message="wsntw:TopicNotSupportedFault"/>
|
||||||
|
<wsdl:fault name="NoCurrentMessageOnTopicFault"
|
||||||
|
message="wsntw:NoCurrentMessageOnTopicFault"/>
|
||||||
|
<wsdl:fault name="MultipleTopicsSpecifiedFault"
|
||||||
|
message="wsntw:MultipleTopicsSpecifiedFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
|
||||||
|
<!-- ========== PullPoint PortType Definition ===================== -->
|
||||||
|
<wsdl:portType name="PullPoint">
|
||||||
|
<wsdl:operation name="GetMessages">
|
||||||
|
<wsdl:input name="GetMessagesRequest"
|
||||||
|
message="wsntw:GetMessagesRequest"/>
|
||||||
|
<wsdl:output name="GetMessagesResponse"
|
||||||
|
message="wsntw:GetMessagesResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="UnableToGetMessagesFault"
|
||||||
|
message="wsntw:UnableToGetMessagesFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
|
||||||
|
<wsdl:operation name="DestroyPullPoint">
|
||||||
|
<wsdl:input name="DestroyPullPointRequest"
|
||||||
|
message="wsntw:DestroyPullPointRequest"/>
|
||||||
|
<wsdl:output name="DestroyPullPointResponse"
|
||||||
|
message="wsntw:DestroyPullPointResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="UnableToDestroyPullPointFault"
|
||||||
|
message="wsntw:UnableToDestroyPullPointFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
|
||||||
|
<wsdl:operation name="Notify">
|
||||||
|
<wsdl:input message="wsntw:Notify"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
|
||||||
|
<!-- ========== CreatePullPoint PortType Definition =============== -->
|
||||||
|
<wsdl:portType name="CreatePullPoint">
|
||||||
|
<wsdl:operation name="CreatePullPoint">
|
||||||
|
<wsdl:input name="CreatePullPointRequest"
|
||||||
|
message="wsntw:CreatePullPointRequest"/>
|
||||||
|
<wsdl:output name="CreatePullPointResponse"
|
||||||
|
message="wsntw:CreatePullPointResponse"/>
|
||||||
|
<wsdl:fault name="UnableToCreatePullPointFault"
|
||||||
|
message="wsntw:UnableToCreatePullPointFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
|
||||||
|
<!-- ========== SubscriptionManager PortType Definition =========== -->
|
||||||
|
<wsdl:portType name="SubscriptionManager">
|
||||||
|
<wsdl:operation name="Renew">
|
||||||
|
<wsdl:input name="RenewRequest"
|
||||||
|
message="wsntw:RenewRequest"/>
|
||||||
|
<wsdl:output name="RenewResponse"
|
||||||
|
message="wsntw:RenewResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="UnacceptableTerminationTimeFault"
|
||||||
|
message=
|
||||||
|
"wsntw:UnacceptableTerminationTimeFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Unsubscribe">
|
||||||
|
<wsdl:input name="UnsubscribeRequest"
|
||||||
|
message="wsntw:UnsubscribeRequest"/>
|
||||||
|
<wsdl:output name="UnsubscribeResponse"
|
||||||
|
message="wsntw:UnsubscribeResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="UnableToDestroySubscriptionFault"
|
||||||
|
message=
|
||||||
|
"wsntw:UnableToDestroySubscriptionFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
|
||||||
|
<!-- ====== PausableSubscriptionManager PortType Definition ======= -->
|
||||||
|
<wsdl:portType name="PausableSubscriptionManager">
|
||||||
|
<!-- ============== Extends: SubscriptionManager ============ -->
|
||||||
|
<wsdl:operation name="Renew">
|
||||||
|
<wsdl:input name="RenewRequest"
|
||||||
|
message="wsntw:RenewRequest"/>
|
||||||
|
<wsdl:output name="RenewResponse"
|
||||||
|
message="wsntw:RenewResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="UnacceptableTerminationTimeFault"
|
||||||
|
message=
|
||||||
|
"wsntw:UnacceptableTerminationTimeFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Unsubscribe">
|
||||||
|
<wsdl:input name="UnsubscribeRequest"
|
||||||
|
message="wsntw:UnsubscribeRequest"/>
|
||||||
|
<wsdl:output name="UnsubscribeResponse"
|
||||||
|
message="wsntw:UnsubscribeResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="UnableToDestroySubscriptionFault"
|
||||||
|
message=
|
||||||
|
"wsntw:UnableToDestroySubscriptionFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
|
||||||
|
<!-- === PausableSubscriptionManager specific operations === -->
|
||||||
|
<wsdl:operation name="PauseSubscription">
|
||||||
|
<wsdl:input message="wsntw:PauseSubscriptionRequest"/>
|
||||||
|
<wsdl:output message="wsntw:PauseSubscriptionResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="PauseFailedFault"
|
||||||
|
message="wsntw:PauseFailedFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ResumeSubscription">
|
||||||
|
<wsdl:input message="wsntw:ResumeSubscriptionRequest"/>
|
||||||
|
<wsdl:output message="wsntw:ResumeSubscriptionResponse"/>
|
||||||
|
<wsdl:fault name="ResourceUnknownFault"
|
||||||
|
message="wsrf-rw:ResourceUnknownFault"/>
|
||||||
|
<wsdl:fault name="ResumeFailedFault"
|
||||||
|
message="wsntw:ResumeFailedFault"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
</wsdl:definitions>
|
||||||
@ -0,0 +1,184 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
|
||||||
|
|
||||||
|
OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
|
||||||
|
|
||||||
|
Copyright (C) OASIS Open (2004-2006). All Rights Reserved.
|
||||||
|
|
||||||
|
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.
|
||||||
|
|
||||||
|
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
|
||||||
|
|
||||||
|
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<xsd:schema
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
targetNamespace="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||||
|
|
||||||
|
<!-- =============== utility type definitions ==================== -->
|
||||||
|
<xsd:complexType name="Documentation" mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any processContents="lax" minOccurs="0"
|
||||||
|
maxOccurs="unbounded" namespace="##any"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:complexType name="ExtensibleDocumented" abstract="true"
|
||||||
|
mixed="false">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="documentation" type="wstop:Documentation"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:complexType name="QueryExpressionType" mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any minOccurs="0" maxOccurs="1" processContents="lax"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="Dialect" type="xsd:anyURI" use="required"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<!-- ================== Topic-Namespace Related ================ -->
|
||||||
|
<xsd:complexType name="TopicNamespaceType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wstop:ExtensibleDocumented">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="Topic"
|
||||||
|
minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wstop:TopicType">
|
||||||
|
<xsd:attribute name="parent" type="wstop:ConcreteTopicExpression"/>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:any namespace="##other"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"
|
||||||
|
processContents="lax"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:NCName"/>
|
||||||
|
<xsd:attribute name="targetNamespace" type="xsd:anyURI"
|
||||||
|
use="required"/>
|
||||||
|
<xsd:attribute name="final" type="xsd:boolean"
|
||||||
|
default="false"/>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:element name="TopicNamespace" type="wstop:TopicNamespaceType">
|
||||||
|
<xsd:unique name="rootTopicUniqueness">
|
||||||
|
<xsd:selector xpath="wstop:Topic"/>
|
||||||
|
<xsd:field xpath="@name"/>
|
||||||
|
</xsd:unique>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:attribute name="topicNamespaceLocation" type="xsd:anyURI"/>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ===================== Topic Related ========================= -->
|
||||||
|
|
||||||
|
<xsd:complexType name="TopicType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wstop:ExtensibleDocumented">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="MessagePattern"
|
||||||
|
type="wstop:QueryExpressionType"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element name="Topic" type="wstop:TopicType"
|
||||||
|
minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xsd:unique name="childTopicUniqueness">
|
||||||
|
<xsd:selector xpath="wstop:topic"/>
|
||||||
|
<xsd:field xpath="@name"/>
|
||||||
|
</xsd:unique>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:any namespace="##other" minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:NCName"/>
|
||||||
|
<xsd:attribute name="messageTypes">
|
||||||
|
<xsd:simpleType>
|
||||||
|
<xsd:list itemType="xsd:QName"/>
|
||||||
|
</xsd:simpleType>
|
||||||
|
</xsd:attribute>
|
||||||
|
<xsd:attribute name="final" type="xsd:boolean"
|
||||||
|
default="false"/>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<!-- ================ Topic Set Related =================== -->
|
||||||
|
|
||||||
|
<xsd:complexType name="TopicSetType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wstop:ExtensibleDocumented">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"
|
||||||
|
processContents="lax"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
|
||||||
|
<xsd:element name="TopicSet" type="wstop:TopicSetType"/>
|
||||||
|
<xsd:attribute name="topic" type="xsd:boolean" default="false"/>
|
||||||
|
|
||||||
|
<!-- ================ Topic Expression Related =================== -->
|
||||||
|
|
||||||
|
<xsd:simpleType name="FullTopicExpression">
|
||||||
|
<xsd:restriction base="xsd:token">
|
||||||
|
<xsd:annotation>
|
||||||
|
<xsd:documentation>
|
||||||
|
TopicPathExpression ::= TopicPath ( '|' TopicPath )*
|
||||||
|
TopicPath ::= RootTopic ChildTopicExpression*
|
||||||
|
RootTopic ::= NamespacePrefix? ('//')? (NCName | '*')
|
||||||
|
NamespacePrefix ::= NCName ':'
|
||||||
|
ChildTopicExpression ::= '/' '/'? (QName | NCName | '*'| '.')
|
||||||
|
|
||||||
|
</xsd:documentation>
|
||||||
|
</xsd:annotation>
|
||||||
|
<xsd:pattern value=
|
||||||
|
"([\i-[:]][\c-[:]]*:)?(//)?([\i-[:]][\c-[:]]*|\*)((/|//)(([\i-[:]][\c-[:]]*:)?[\i-[:]][\c-[:]]*|\*|[.]))*(\|([\i-[:]][\c-[:]]*:)?(//)?([\i-[:]][\c-[:]]*|\*)((/|//)(([\i-[:]][\c-[:]]*:)?[\i-[:]][\c-[:]]*|\*|[.]))*)*">
|
||||||
|
</xsd:pattern>
|
||||||
|
</xsd:restriction>
|
||||||
|
</xsd:simpleType>
|
||||||
|
|
||||||
|
<xsd:simpleType name="ConcreteTopicExpression">
|
||||||
|
<xsd:restriction base="xsd:token">
|
||||||
|
<xsd:annotation>
|
||||||
|
<xsd:documentation>
|
||||||
|
The pattern allows strings matching the following EBNF:
|
||||||
|
ConcreteTopicPath ::= RootTopic ChildTopic*
|
||||||
|
RootTopic ::= QName
|
||||||
|
ChildTopic ::= '/' (QName | NCName)
|
||||||
|
|
||||||
|
</xsd:documentation>
|
||||||
|
</xsd:annotation>
|
||||||
|
<xsd:pattern value=
|
||||||
|
"(([\i-[:]][\c-[:]]*:)?[\i-[:]][\c-[:]]*)(/([\i-[:]][\c-[:]]*:)?[\i-[:]][\c-[:]]*)*">
|
||||||
|
</xsd:pattern>
|
||||||
|
</xsd:restriction>
|
||||||
|
</xsd:simpleType>
|
||||||
|
|
||||||
|
<xsd:simpleType name="SimpleTopicExpression">
|
||||||
|
<xsd:restriction base="xsd:QName">
|
||||||
|
<xsd:annotation>
|
||||||
|
<xsd:documentation>
|
||||||
|
The pattern allows strings matching the following EBNF:
|
||||||
|
RootTopic ::= QName
|
||||||
|
|
||||||
|
</xsd:documentation>
|
||||||
|
</xsd:annotation>
|
||||||
|
</xsd:restriction>
|
||||||
|
</xsd:simpleType>
|
||||||
|
|
||||||
|
</xsd:schema>
|
||||||
@ -0,0 +1,84 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the OASIS Executive Director.
|
||||||
|
|
||||||
|
OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
|
||||||
|
|
||||||
|
Copyright (C) OASIS Open (2005). All Rights Reserved.
|
||||||
|
|
||||||
|
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.
|
||||||
|
|
||||||
|
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
|
||||||
|
|
||||||
|
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xsd:schema
|
||||||
|
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wsa="http://www.w3.org/2005/08/addressing"
|
||||||
|
xmlns:wsrf-bf=
|
||||||
|
"http://docs.oasis-open.org/wsrf/bf-2"
|
||||||
|
elementFormDefault="qualified" attributeFormDefault="unqualified"
|
||||||
|
targetNamespace=
|
||||||
|
"http://docs.oasis-open.org/wsrf/bf-2">
|
||||||
|
<xsd:import
|
||||||
|
namespace="http://www.w3.org/2005/08/addressing"
|
||||||
|
schemaLocation=
|
||||||
|
"http://www.w3.org/2005/08/addressing/ws-addr.xsd"/>
|
||||||
|
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
|
||||||
|
schemaLocation="http://www.w3.org/2001/xml.xsd">
|
||||||
|
<xsd:annotation>
|
||||||
|
<xsd:documentation>
|
||||||
|
Get access to the xml: attribute groups for xml:lang as declared on 'schema'
|
||||||
|
and 'documentation' below
|
||||||
|
</xsd:documentation>
|
||||||
|
</xsd:annotation>
|
||||||
|
</xsd:import>
|
||||||
|
<!-- ====================== BaseFault Types ======================= -->
|
||||||
|
|
||||||
|
<xsd:element name="BaseFault" type="wsrf-bf:BaseFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="BaseFaultType">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<xsd:element name="Timestamp" type="xsd:dateTime"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xsd:element name="Originator" type="wsa:EndpointReferenceType"
|
||||||
|
minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xsd:element name="ErrorCode"
|
||||||
|
minOccurs="0" maxOccurs="1">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:complexContent mixed="true">
|
||||||
|
<xsd:extension base="xsd:anyType">
|
||||||
|
<xsd:attribute name="dialect" type="xsd:anyURI"
|
||||||
|
use="required"/>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
|
||||||
|
<xsd:element name="Description"
|
||||||
|
minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:simpleContent>
|
||||||
|
<xsd:extension base="xsd:string">
|
||||||
|
<xsd:attribute ref="xml:lang" use="optional"/>
|
||||||
|
</xsd:extension>
|
||||||
|
</xsd:simpleContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="FaultCause" minOccurs="0" maxOccurs="1">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:any namespace="##other" processContents="lax"
|
||||||
|
minOccurs="1" maxOccurs="1"/>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:schema>
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
|
||||||
|
|
||||||
|
OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
|
||||||
|
|
||||||
|
Copyright (C) OASIS Open (2005). All Rights Reserved.
|
||||||
|
|
||||||
|
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.
|
||||||
|
|
||||||
|
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
|
||||||
|
|
||||||
|
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xsd:schema
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2"
|
||||||
|
xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"
|
||||||
|
elementFormDefault="qualified" attributeFormDefault="unqualified"
|
||||||
|
targetNamespace="http://docs.oasis-open.org/wsrf/r-2"
|
||||||
|
>
|
||||||
|
|
||||||
|
<xsd:import
|
||||||
|
namespace=
|
||||||
|
"http://docs.oasis-open.org/wsrf/bf-2"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsrf/bf-2.xsd"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- ====================== WS-Resource fault types ============= -->
|
||||||
|
|
||||||
|
<xsd:complexType name="ResourceUnknownFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="ResourceUnknownFault"
|
||||||
|
type="wsrf-r:ResourceUnknownFaultType"/>
|
||||||
|
|
||||||
|
<xsd:complexType name="ResourceUnavailableFaultType">
|
||||||
|
<xsd:complexContent>
|
||||||
|
<xsd:extension base="wsrf-bf:BaseFaultType"/>
|
||||||
|
</xsd:complexContent>
|
||||||
|
</xsd:complexType>
|
||||||
|
<xsd:element name="ResourceUnavailableFault"
|
||||||
|
type="wsrf-r:ResourceUnavailableFaultType"/>
|
||||||
|
</xsd:schema>
|
||||||
|
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.
|
||||||
|
|
||||||
|
OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.
|
||||||
|
|
||||||
|
Copyright (C) OASIS Open (2005). All Rights Reserved.
|
||||||
|
|
||||||
|
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.
|
||||||
|
|
||||||
|
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
|
||||||
|
|
||||||
|
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<wsdl:definitions name="WS-Resource"
|
||||||
|
xmlns="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2"
|
||||||
|
targetNamespace="http://docs.oasis-open.org/wsrf/rw-2"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- ===================== Types Definitions ====================== -->
|
||||||
|
<wsdl:types>
|
||||||
|
<xsd:schema
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
targetNamespace="http://docs.oasis-open.org/wsrf/rw-2"
|
||||||
|
elementFormDefault="qualified"
|
||||||
|
attributeFormDefault="unqualified">
|
||||||
|
|
||||||
|
<xsd:import
|
||||||
|
namespace="http://docs.oasis-open.org/wsrf/r-2"
|
||||||
|
schemaLocation="http://docs.oasis-open.org/wsrf/r-2.xsd"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</xsd:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
|
||||||
|
<!-- ================= WS-Resource faults ========================= -->
|
||||||
|
<wsdl:message name="ResourceUnknownFault">
|
||||||
|
<part name="ResourceUnknownFault"
|
||||||
|
element="wsrf-r:ResourceUnknownFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
<wsdl:message name="ResourceUnavailableFault">
|
||||||
|
<part name="ResourceUnavailableFault"
|
||||||
|
element="wsrf-r:ResourceUnavailableFault"/>
|
||||||
|
</wsdl:message>
|
||||||
|
|
||||||
|
</wsdl:definitions>
|
||||||
|
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' ?>
|
||||||
|
|
||||||
|
<!-- Schema for the SOAP/1.1 envelope
|
||||||
|
|
||||||
|
Portions © 2001 DevelopMentor.
|
||||||
|
© 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.
|
||||||
|
|
||||||
|
This document is governed by the W3C Software License [1] as described in the FAQ [2].
|
||||||
|
[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
|
||||||
|
[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
|
||||||
|
By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
|
||||||
|
|
||||||
|
1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
|
||||||
|
|
||||||
|
2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/"
|
||||||
|
|
||||||
|
3. Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)
|
||||||
|
|
||||||
|
Original W3C files; http://www.w3.org/2001/06/soap-envelope
|
||||||
|
Changes made:
|
||||||
|
- reverted namespace to http://schemas.xmlsoap.org/soap/envelope/
|
||||||
|
- reverted mustUnderstand to only allow 0 and 1 as lexical values
|
||||||
|
- made encodingStyle a global attribute 20020825
|
||||||
|
- removed default value from mustUnderstand attribute declaration
|
||||||
|
|
||||||
|
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
|
||||||
|
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
|
||||||
|
|
||||||
|
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
|
||||||
|
targetNamespace="http://schemas.xmlsoap.org/soap/envelope/" >
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Envelope, header and body -->
|
||||||
|
<xs:element name="Envelope" type="tns:Envelope" />
|
||||||
|
<xs:complexType name="Envelope" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="tns:Header" minOccurs="0" />
|
||||||
|
<xs:element ref="tns:Body" minOccurs="1" />
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Header" type="tns:Header" />
|
||||||
|
<xs:complexType name="Header" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Body" type="tns:Body" />
|
||||||
|
<xs:complexType name="Body" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##any" processContents="lax" >
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Prose in the spec does not specify that attributes are allowed on the Body element
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:anyAttribute>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Global Attributes. The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->
|
||||||
|
<xs:attribute name="mustUnderstand" >
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base='xs:boolean'>
|
||||||
|
<xs:pattern value='0|1' />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="actor" type="xs:anyURI" />
|
||||||
|
|
||||||
|
<xs:simpleType name="encodingStyle" >
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element. For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:list itemType="xs:anyURI" />
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:attribute name="encodingStyle" type="tns:encodingStyle" />
|
||||||
|
<xs:attributeGroup name="encodingStyle" >
|
||||||
|
<xs:attribute ref="tns:encodingStyle" />
|
||||||
|
</xs:attributeGroup>
|
||||||
|
|
||||||
|
<xs:element name="Fault" type="tns:Fault" />
|
||||||
|
<xs:complexType name="Fault" final="extension" >
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Fault reporting structure
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="faultcode" type="xs:QName" />
|
||||||
|
<xs:element name="faultstring" type="xs:string" />
|
||||||
|
<xs:element name="faultactor" type="xs:anyURI" minOccurs="0" />
|
||||||
|
<xs:element name="detail" type="tns:detail" minOccurs="0" />
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="detail">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##any" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,149 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
Copyright © 2002-2004 BEA Systems Inc., International Business Machines Corporation,
|
||||||
|
Microsoft Corporation, Inc, SAP AG, and Sun Microsystems, Inc.. All rights reserved.
|
||||||
|
|
||||||
|
Permission to copy, display, perform, modify and distribute the WS-Addressing Specification,
|
||||||
|
and to authorize others to do the foregoing, in any medium without fee or royalty is hereby
|
||||||
|
granted for the purpose of developing and evaluating the WS-Addressing Specification.
|
||||||
|
|
||||||
|
BEA, IBM, Microsoft, SAP AG, and Sun Microsystems (collectively, the "Authors") each agree
|
||||||
|
to grant a license to third parties, under royalty-free and otherwise reasonable,
|
||||||
|
non-discriminatory terms and conditions, to their respective essential patent claims that
|
||||||
|
they deem necessary to implement the WS-Addressing Specification.
|
||||||
|
|
||||||
|
DISCLAIMERS:
|
||||||
|
|
||||||
|
THE WS-Addressing Specification IS PROVIDED "AS IS", AND THE AUTHORS MAKE NO REPRESENTATIONS
|
||||||
|
OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE
|
||||||
|
CONTENTS OF THE WS-Addressing Specification IS SUITABLE FOR ANY PURPOSE; NOR THAT THE
|
||||||
|
IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
|
||||||
|
TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
|
||||||
|
THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||||
|
DAMAGES ARISING OUT OF ANY USE OF THE WS-Addressing Specification OR THE PERFORMANCE OR
|
||||||
|
IMPLEMENTATION OF THE CONTENTS THEREOF.
|
||||||
|
|
||||||
|
You may remove these disclaimers from your modified versions of the WS-Addressing
|
||||||
|
Specification provided that you effectively disclaim all warranties and liabilities on behalf
|
||||||
|
of all copyright holders in the copies of any such modified versions you distribute.
|
||||||
|
|
||||||
|
The name and trademarks of the Authors may NOT be used in any manner, including advertising
|
||||||
|
or publicity pertaining to the WS-Addressing Specification or its contents without specific,
|
||||||
|
written prior permission. Title to copyright in the WS-Addressing Specification will at all
|
||||||
|
times remain with the Authors.
|
||||||
|
|
||||||
|
No other rights are granted by implication, estoppel or otherwise.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xs:schema targetNamespace="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" elementFormDefault="qualified" blockDefault="#all">
|
||||||
|
<!-- //////////////////// WS-Addressing //////////////////// -->
|
||||||
|
<!-- Endpoint reference -->
|
||||||
|
<xs:element name="EndpointReference" type="wsa:EndpointReferenceType"/>
|
||||||
|
<xs:complexType name="EndpointReferenceType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Address" type="wsa:AttributedURI"/>
|
||||||
|
<xs:element name="ReferenceProperties" type="wsa:ReferencePropertiesType" minOccurs="0"/>
|
||||||
|
<xs:element name="ReferenceParameters" type="wsa:ReferenceParametersType" minOccurs="0"/>
|
||||||
|
<xs:element name="PortType" type="wsa:AttributedQName" minOccurs="0"/>
|
||||||
|
<xs:element name="ServiceName" type="wsa:ServiceNameType" minOccurs="0"/>
|
||||||
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements).
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:any>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferencePropertiesType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ReferenceParametersType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ServiceNameType">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:QName">
|
||||||
|
<xs:attribute name="PortName" type="xs:NCName"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!-- Message information header blocks -->
|
||||||
|
<xs:element name="MessageID" type="wsa:AttributedURI"/>
|
||||||
|
<xs:element name="RelatesTo" type="wsa:Relationship"/>
|
||||||
|
<xs:element name="To" type="wsa:AttributedURI"/>
|
||||||
|
<xs:element name="Action" type="wsa:AttributedURI"/>
|
||||||
|
<xs:element name="From" type="wsa:EndpointReferenceType"/>
|
||||||
|
<xs:element name="ReplyTo" type="wsa:EndpointReferenceType"/>
|
||||||
|
<xs:element name="FaultTo" type="wsa:EndpointReferenceType"/>
|
||||||
|
<xs:complexType name="Relationship">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:anyURI">
|
||||||
|
<xs:attribute name="RelationshipType" type="xs:QName" use="optional"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="RelationshipTypeValues">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="wsa:Reply"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<!--
|
||||||
|
June 19, 2007: The ReplyAfter element is deprecated. The name of this element does not match the
|
||||||
|
name (RetryAfter) used in the specification (http://www.w3.org/Submission/2004/SUBM-ws-addressing-20040810/).
|
||||||
|
-->
|
||||||
|
<xs:element name="ReplyAfter" type="wsa:ReplyAfterType"/>
|
||||||
|
<xs:complexType name="ReplyAfterType">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:nonNegativeInteger">
|
||||||
|
<xs:anyAttribute namespace="##other"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--
|
||||||
|
June 19, 2007: The RetryAfter element has been added to be consistent with the specification
|
||||||
|
(http://www.w3.org/Submission/2004/SUBM-ws-addressing-20040810/).
|
||||||
|
-->
|
||||||
|
<xs:element name="RetryAfter" type="wsa:RetryAfterType"/>
|
||||||
|
<xs:complexType name="RetryAfterType">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:nonNegativeInteger">
|
||||||
|
<xs:anyAttribute namespace="##other"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:simpleType name="FaultSubcodeValues">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="wsa:InvalidMessageInformationHeader"/>
|
||||||
|
<xs:enumeration value="wsa:MessageInformationHeaderRequired"/>
|
||||||
|
<xs:enumeration value="wsa:DestinationUnreachable"/>
|
||||||
|
<xs:enumeration value="wsa:ActionNotSupported"/>
|
||||||
|
<xs:enumeration value="wsa:EndpointUnavailable"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:attribute name="Action" type="xs:anyURI"/>
|
||||||
|
<!-- Common declarations and definitions -->
|
||||||
|
<xs:complexType name="AttributedQName">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:QName">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="AttributedURI">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:anyURI">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:schema>
|
||||||
@ -0,0 +1,272 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
(c) 2004-2005 Microsoft Corporation, Inc. All rights reserved.
|
||||||
|
|
||||||
|
Permission to copy, display, perform, modify and distribute the
|
||||||
|
WS-Discovery Specification (the "Specification", which includes
|
||||||
|
WSDL and schema documents), and to authorize others to do the
|
||||||
|
foregoing, in any medium without fee or royalty is hereby granted
|
||||||
|
for the purpose of developing and evaluating the Specification.
|
||||||
|
|
||||||
|
BEA Systems, Canon, Intel, Microsoft, and webMethods, Inc.
|
||||||
|
(collectively, the "Co-Developers") each agree to grant a license
|
||||||
|
to third parties, under royalty-free and other reasonable,
|
||||||
|
non-discriminatory terms and conditions, to their respective
|
||||||
|
essential Licensed Claims, which reasonable, non-discriminatory
|
||||||
|
terms and conditions may include, for example, but are not limited
|
||||||
|
to, an affirmation of the obligation to grant reciprocal licenses
|
||||||
|
under any of the licensee's patents that are necessary to implement
|
||||||
|
the Specification.
|
||||||
|
|
||||||
|
DISCLAIMERS:
|
||||||
|
|
||||||
|
THE SPECIFICATION IS PROVIDED "AS IS," AND THE CO-DEVELOPERS MAKE
|
||||||
|
NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING,
|
||||||
|
BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS
|
||||||
|
OF THE SPECIFICATION ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE
|
||||||
|
IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
|
||||||
|
PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
|
||||||
|
THE CO-DEVELOPERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY
|
||||||
|
USE OF THE SPECIFICATION OR THE PERFORMANCE OR IMPLEMENTATION OF
|
||||||
|
THE CONTENTS THEREOF.
|
||||||
|
|
||||||
|
You may remove these disclaimers from your modified versions of the
|
||||||
|
Specification provided that you effectively disclaim all warranties
|
||||||
|
and liabilities on behalf of all Co-developers and any copyright
|
||||||
|
holders in the copies of any such modified versions you distribute.
|
||||||
|
|
||||||
|
The name and trademarks of the Co-developers may NOT be used in any
|
||||||
|
manner, including advertising or publicity pertaining to the
|
||||||
|
Specification or its contents without specific, written prior
|
||||||
|
permission. Title to copyright in the Specification will at all
|
||||||
|
times remain with Microsoft.
|
||||||
|
|
||||||
|
No other rights are granted by implication, estoppel or otherwise.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<xs:schema
|
||||||
|
targetNamespace="http://schemas.xmlsoap.org/ws/2005/04/discovery"
|
||||||
|
xmlns:tns="http://schemas.xmlsoap.org/ws/2005/04/discovery"
|
||||||
|
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified"
|
||||||
|
blockDefault="#all">
|
||||||
|
|
||||||
|
<xs:import
|
||||||
|
namespace="http://schemas.xmlsoap.org/ws/2004/08/addressing"
|
||||||
|
schemaLocation="http://schemas.xmlsoap.org/ws/2004/08/addressing"/>
|
||||||
|
|
||||||
|
<!-- //////////////////// Discovery Messages //////////////////// -->
|
||||||
|
|
||||||
|
<xs:element name="Hello" type="tns:HelloType"/>
|
||||||
|
<xs:complexType name="HelloType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="wsa:EndpointReference"/>
|
||||||
|
<xs:element ref="tns:Types" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Scopes" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:XAddrs" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:MetadataVersion"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:simpleType name="RelationshipType">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="tns:Suppression"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="OpenRelationshipType">
|
||||||
|
<xs:union memberTypes="tns:RelationshipType xs:QName"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="Bye" type="tns:ByeType"/>
|
||||||
|
<xs:complexType name="ByeType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="wsa:EndpointReference"/>
|
||||||
|
<xs:element ref="tns:Types" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Scopes" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:XAddrs" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:MetadataVersion" minOccurs="0"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Probe" type="tns:ProbeType"/>
|
||||||
|
<xs:complexType name="ProbeType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="tns:Types" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Scopes" minOccurs="0"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ProbeMatches" type="tns:ProbeMatchesType"/>
|
||||||
|
<xs:complexType name="ProbeMatchesType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ProbeMatch"
|
||||||
|
type="tns:ProbeMatchType"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded">
|
||||||
|
</xs:element>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ProbeMatchType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="wsa:EndpointReference"/>
|
||||||
|
<xs:element ref="tns:Types" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Scopes" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:XAddrs" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:MetadataVersion"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Resolve" type="tns:ResolveType"/>
|
||||||
|
<xs:complexType name="ResolveType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="wsa:EndpointReference"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ResolveMatches" type="tns:ResolveMatchesType"/>
|
||||||
|
<xs:complexType name="ResolveMatchesType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ResolveMatch"
|
||||||
|
type="tns:ResolveMatchType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="ResolveMatchType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="wsa:EndpointReference"/>
|
||||||
|
<xs:element ref="tns:Types" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Scopes" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:XAddrs"/>
|
||||||
|
<xs:element ref="tns:MetadataVersion"/>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Types" type="tns:QNameListType"/>
|
||||||
|
<xs:simpleType name="QNameListType">
|
||||||
|
<xs:list itemType="xs:QName"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="Scopes" type="tns:ScopesType"/>
|
||||||
|
<xs:complexType name="ScopesType">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="tns:UriListType">
|
||||||
|
<xs:attribute name="MatchBy" type="xs:anyURI"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="XAddrs" type="tns:UriListType"/>
|
||||||
|
<xs:simpleType name="UriListType">
|
||||||
|
<xs:list itemType="xs:anyURI"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="MetadataVersion" type="xs:unsignedInt"/>
|
||||||
|
|
||||||
|
<!-- //////////////////// Faults //////////////////// -->
|
||||||
|
|
||||||
|
<xs:simpleType name="FaultCodeType">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="tns:MatchingRuleNotSupported"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<xs:simpleType name="FaultCodeOpenType">
|
||||||
|
<xs:union memberTypes="tns:FaultCodeType xs:QName"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="SupportedMatchingRules" type="tns:UriListType"/>
|
||||||
|
|
||||||
|
<!-- //////////////////// Compact Signature //////////////////// -->
|
||||||
|
|
||||||
|
<xs:attribute name="Id" type="xs:ID"/>
|
||||||
|
|
||||||
|
<xs:element name="Security" type="tns:SecurityType"/>
|
||||||
|
<xs:complexType name="SecurityType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="tns:Sig" minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Sig" type="tns:SigType"/>
|
||||||
|
<xs:complexType name="SigType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##other"
|
||||||
|
processContents="lax"
|
||||||
|
minOccurs="0"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="Scheme" type="xs:anyURI" use="required"/>
|
||||||
|
<xs:attribute name="KeyId" type="xs:base64Binary"/>
|
||||||
|
<xs:attribute name="Refs" type="xs:IDREFS" use="required"/>
|
||||||
|
<xs:attribute name="Sig" type="xs:base64Binary" use="required"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- //////////////////// General Headers //////////////////// -->
|
||||||
|
|
||||||
|
<xs:element name="AppSequence" type="tns:AppSequenceType"/>
|
||||||
|
<xs:complexType name="AppSequenceType">
|
||||||
|
<xs:complexContent>
|
||||||
|
<xs:restriction base="xs:anyType">
|
||||||
|
<xs:attribute name="InstanceId"
|
||||||
|
type="xs:unsignedInt"
|
||||||
|
use="required"/>
|
||||||
|
<xs:attribute name="SequenceId" type="xs:anyURI"/>
|
||||||
|
<xs:attribute name="MessageNumber"
|
||||||
|
type="xs:unsignedInt"
|
||||||
|
use="required"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:complexContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
@ -0,0 +1,89 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2010-2013 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this
|
||||||
|
document so long as this copyright notice, license and disclaimer are
|
||||||
|
retained with all copies of the document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND
|
||||||
|
THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
|
||||||
|
INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
|
||||||
|
THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE;
|
||||||
|
OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS,
|
||||||
|
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
|
||||||
|
DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS
|
||||||
|
DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES
|
||||||
|
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES
|
||||||
|
WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR
|
||||||
|
DISTRIBUTION OF THIS DOCUMENT.
|
||||||
|
THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO,
|
||||||
|
INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS
|
||||||
|
AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN
|
||||||
|
CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/pacs"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:pt="http://www.onvif.org/ver10/pacs"
|
||||||
|
elementFormDefault="qualified"
|
||||||
|
version="1.0">
|
||||||
|
<!--====== types ======-->
|
||||||
|
<xs:simpleType name="ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Type used to reference logical and physical entities.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:maxLength value="64"/>
|
||||||
|
<xs:minLength value="0"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="DataEntity">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
General datastructure referenced by a token.
|
||||||
|
Should be used as extension base.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="token" type="pt:ReferenceToken" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>A service-unique identifier of the item.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
</xs:complexType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:simpleType name="Name">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Type used for names of logical and physical entities.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:maxLength value="64"/>
|
||||||
|
<xs:minLength value="0"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:simpleType name="Description">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Description is optional and the maximum length is device specific.
|
||||||
|
If the length is more than maximum length, it is silently chopped to the maximum length
|
||||||
|
supported by the device/service (which may be 0).
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:maxLength value="1024"/>
|
||||||
|
<xs:minLength value="0"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
<!--===============================-->
|
||||||
|
</xs:schema>
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
This xml document functions as a place holder for the ONVIF topic namespace.
|
||||||
|
Copyright (c) 2008-2010 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wstop:TopicNamespace name="ONVIF" targetNamespace="http://www.onvif.org/ver10/topics"
|
||||||
|
xmlns:wstop="http://docs.oasis-open.org/wsn/t-1"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
</wstop:TopicNamespace>
|
||||||
@ -0,0 +1,321 @@
|
|||||||
|
<?xml version='1.0'?>
|
||||||
|
<?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?>
|
||||||
|
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xml:lang="en">
|
||||||
|
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div>
|
||||||
|
<h1>About the XML namespace</h1>
|
||||||
|
|
||||||
|
<div class="bodytext">
|
||||||
|
<p>
|
||||||
|
This schema document describes the XML namespace, in a form
|
||||||
|
suitable for import by other schema documents.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See <a href="http://www.w3.org/XML/1998/namespace.html">
|
||||||
|
http://www.w3.org/XML/1998/namespace.html
|
||||||
|
</a> and
|
||||||
|
<a href="http://www.w3.org/TR/REC-xml">
|
||||||
|
http://www.w3.org/TR/REC-xml
|
||||||
|
</a>
|
||||||
|
for information
|
||||||
|
about this namespace.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Note that local names in this namespace are intended to be
|
||||||
|
defined only by the World Wide Web Consortium or its subgroups.
|
||||||
|
The names currently defined in this namespace are listed below.
|
||||||
|
They should not be used with conflicting semantics by any Working
|
||||||
|
Group, specification, or document instance.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See further below in this document for more information about <a
|
||||||
|
href="#usage">how to refer to this schema document from your own
|
||||||
|
XSD schema documents
|
||||||
|
</a> and about <a href="#nsversioning">the
|
||||||
|
namespace-versioning policy governing this schema document</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
|
||||||
|
<xs:attribute name="lang">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h3>lang (as an attribute name)</h3>
|
||||||
|
<p>
|
||||||
|
denotes an attribute whose value
|
||||||
|
is a language code for the natural language of the content of
|
||||||
|
any element; its value is inherited. This name is reserved
|
||||||
|
by virtue of its definition in the XML specification.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h4>Notes</h4>
|
||||||
|
<p>
|
||||||
|
Attempting to install the relevant ISO 2- and 3-letter
|
||||||
|
codes as the enumerated possible values is probably never
|
||||||
|
going to be a realistic possibility.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See BCP 47 at
|
||||||
|
<a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
|
||||||
|
http://www.rfc-editor.org/rfc/bcp/bcp47.txt
|
||||||
|
</a>
|
||||||
|
and the IANA language subtag registry at
|
||||||
|
<a href="http://www.iana.org/assignments/language-subtag-registry">
|
||||||
|
http://www.iana.org/assignments/language-subtag-registry
|
||||||
|
</a>
|
||||||
|
for further information.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The union allows for the 'un-declaration' of xml:lang with
|
||||||
|
the empty string.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:union memberTypes="xs:language">
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value=""/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:union>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
|
||||||
|
<xs:attribute name="space">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h3>space (as an attribute name)</h3>
|
||||||
|
<p>
|
||||||
|
denotes an attribute whose
|
||||||
|
value is a keyword indicating what whitespace processing
|
||||||
|
discipline is intended for the content of the element; its
|
||||||
|
value is inherited. This name is reserved by virtue of its
|
||||||
|
definition in the XML specification.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:NCName">
|
||||||
|
<xs:enumeration value="default"/>
|
||||||
|
<xs:enumeration value="preserve"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
|
||||||
|
<xs:attribute name="base" type="xs:anyURI">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h3>base (as an attribute name)</h3>
|
||||||
|
<p>
|
||||||
|
denotes an attribute whose value
|
||||||
|
provides a URI to be used as the base for interpreting any
|
||||||
|
relative URIs in the scope of the element on which it
|
||||||
|
appears; its value is inherited. This name is reserved
|
||||||
|
by virtue of its definition in the XML Base specification.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
See
|
||||||
|
<a
|
||||||
|
href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/
|
||||||
|
</a>
|
||||||
|
for information about this attribute.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
|
||||||
|
<xs:attribute name="id" type="xs:ID">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h3>id (as an attribute name)</h3>
|
||||||
|
<p>
|
||||||
|
denotes an attribute whose value
|
||||||
|
should be interpreted as if declared to be of type ID.
|
||||||
|
This name is reserved by virtue of its definition in the
|
||||||
|
xml:id specification.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
See
|
||||||
|
<a
|
||||||
|
href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/
|
||||||
|
</a>
|
||||||
|
for information about this attribute.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
|
||||||
|
<xs:attributeGroup name="specialAttrs">
|
||||||
|
<xs:attribute ref="xml:base"/>
|
||||||
|
<xs:attribute ref="xml:lang"/>
|
||||||
|
<xs:attribute ref="xml:space"/>
|
||||||
|
<xs:attribute ref="xml:id"/>
|
||||||
|
</xs:attributeGroup>
|
||||||
|
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h3>Father (in any context at all)</h3>
|
||||||
|
|
||||||
|
<div class="bodytext">
|
||||||
|
<p>
|
||||||
|
denotes Jon Bosak, the chair of
|
||||||
|
the original XML Working Group. This name is reserved by
|
||||||
|
the following decision of the W3C XML Plenary and
|
||||||
|
XML Coordination groups:
|
||||||
|
</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>
|
||||||
|
In appreciation for his vision, leadership and
|
||||||
|
dedication the W3C XML Plenary on this 10th day of
|
||||||
|
February, 2000, reserves for Jon Bosak in perpetuity
|
||||||
|
the XML name "xml:Father".
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div xml:id="usage" id="usage">
|
||||||
|
<h2>
|
||||||
|
<a name="usage">About this schema document</a>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="bodytext">
|
||||||
|
<p>
|
||||||
|
This schema defines attributes and an attribute group suitable
|
||||||
|
for use by schemas wishing to allow <code>xml:base</code>,
|
||||||
|
<code>xml:lang</code>, <code>xml:space</code> or
|
||||||
|
<code>xml:id</code>
|
||||||
|
attributes on elements they define.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
To enable this, such a schema must import this schema for
|
||||||
|
the XML namespace, e.g. as follows:
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
<schema . . .>
|
||||||
|
. . .
|
||||||
|
<import namespace="http://www.w3.org/XML/1998/namespace"
|
||||||
|
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
||||||
|
</pre>
|
||||||
|
<p>
|
||||||
|
or
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
<import namespace="http://www.w3.org/XML/1998/namespace"
|
||||||
|
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
|
||||||
|
</pre>
|
||||||
|
<p>
|
||||||
|
Subsequently, qualified reference to any of the attributes or the
|
||||||
|
group defined below will have the desired effect, e.g.
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
<type . . .>
|
||||||
|
. . .
|
||||||
|
<attributeGroup ref="xml:specialAttrs"/>
|
||||||
|
</pre>
|
||||||
|
<p>
|
||||||
|
will define a type which will schema-validate an instance element
|
||||||
|
with any of those attributes.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
<div id="nsversioning" xml:id="nsversioning">
|
||||||
|
<h2>
|
||||||
|
<a name="nsversioning">Versioning policy for this schema document</a>
|
||||||
|
</h2>
|
||||||
|
<div class="bodytext">
|
||||||
|
<p>
|
||||||
|
In keeping with the XML Schema WG's standard versioning
|
||||||
|
policy, this schema document will persist at
|
||||||
|
<a href="http://www.w3.org/2009/01/xml.xsd">
|
||||||
|
http://www.w3.org/2009/01/xml.xsd</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
At the date of issue it can also be found at
|
||||||
|
<a href="http://www.w3.org/2001/xml.xsd">
|
||||||
|
http://www.w3.org/2001/xml.xsd</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The schema document at that URI may however change in the future,
|
||||||
|
in order to remain compatible with the latest version of XML
|
||||||
|
Schema itself, or with the XML namespace itself. In other words,
|
||||||
|
if the XML Schema or XML namespaces change, the version of this
|
||||||
|
document at
|
||||||
|
<a href="http://www.w3.org/2001/xml.xsd">
|
||||||
|
http://www.w3.org/2001/xml.xsd
|
||||||
|
</a>
|
||||||
|
will change accordingly; the version at
|
||||||
|
<a href="http://www.w3.org/2009/01/xml.xsd">
|
||||||
|
http://www.w3.org/2009/01/xml.xsd
|
||||||
|
</a>
|
||||||
|
will not change.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Previous dated (and unchanging) versions of this schema
|
||||||
|
document are at:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="http://www.w3.org/2009/01/xml.xsd">
|
||||||
|
http://www.w3.org/2009/01/xml.xsd
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="http://www.w3.org/2007/08/xml.xsd">
|
||||||
|
http://www.w3.org/2007/08/xml.xsd
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="http://www.w3.org/2004/10/xml.xsd">
|
||||||
|
http://www.w3.org/2004/10/xml.xsd
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="http://www.w3.org/2001/03/xml.xsd">
|
||||||
|
http://www.w3.org/2001/03/xml.xsd
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
|
|
||||||
@ -0,0 +1,165 @@
|
|||||||
|
<!-- Schema defined in the SOAP Version 1.2 Part 1 specification
|
||||||
|
Recommendation:
|
||||||
|
http://www.w3.org/TR/2003/REC-soap12-part1-20030624/
|
||||||
|
$Id: soap-envelope.xsd,v 1.2 2006/12/20 20:43:36 ylafon Exp $
|
||||||
|
|
||||||
|
Copyright (C)2003 W3C(R) (MIT, ERCIM, Keio), All Rights Reserved.
|
||||||
|
W3C viability, trademark, document use and software licensing rules
|
||||||
|
apply.
|
||||||
|
http://www.w3.org/Consortium/Legal/
|
||||||
|
|
||||||
|
This document is governed by the W3C Software License [1] as
|
||||||
|
described in the FAQ [2].
|
||||||
|
|
||||||
|
[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
|
||||||
|
[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
|
||||||
|
-->
|
||||||
|
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tns="http://www.w3.org/2003/05/soap-envelope"
|
||||||
|
targetNamespace="http://www.w3.org/2003/05/soap-envelope"
|
||||||
|
elementFormDefault="qualified" >
|
||||||
|
|
||||||
|
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
||||||
|
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
||||||
|
|
||||||
|
<!-- Envelope, header and body -->
|
||||||
|
<xs:element name="Envelope" type="tns:Envelope" />
|
||||||
|
<xs:complexType name="Envelope" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="tns:Header" minOccurs="0" />
|
||||||
|
<xs:element ref="tns:Body" minOccurs="1" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Header" type="tns:Header" />
|
||||||
|
<xs:complexType name="Header" >
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Body" type="tns:Body" />
|
||||||
|
<xs:complexType name="Body" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- Global Attributes. The following attributes are intended to be
|
||||||
|
usable via qualified attribute names on any complex type referencing
|
||||||
|
them. -->
|
||||||
|
<xs:attribute name="mustUnderstand" type="xs:boolean" default="0" />
|
||||||
|
<xs:attribute name="relay" type="xs:boolean" default="0" />
|
||||||
|
<xs:attribute name="role" type="xs:anyURI" />
|
||||||
|
|
||||||
|
<!-- 'encodingStyle' indicates any canonicalization conventions
|
||||||
|
followed in the contents of the containing element. For example, the
|
||||||
|
value 'http://www.w3.org/2003/05/soap-encoding' indicates the pattern
|
||||||
|
described in the SOAP Version 1.2 Part 2: Adjuncts Recommendation -->
|
||||||
|
|
||||||
|
<xs:attribute name="encodingStyle" type="xs:anyURI" />
|
||||||
|
|
||||||
|
<xs:element name="Fault" type="tns:Fault" />
|
||||||
|
<xs:complexType name="Fault" final="extension" >
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>
|
||||||
|
Fault reporting structure
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Code" type="tns:faultcode" />
|
||||||
|
<xs:element name="Reason" type="tns:faultreason" />
|
||||||
|
<xs:element name="Node" type="xs:anyURI" minOccurs="0" />
|
||||||
|
<xs:element name="Role" type="xs:anyURI" minOccurs="0" />
|
||||||
|
<xs:element name="Detail" type="tns:detail" minOccurs="0" />
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="faultreason" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Text" type="tns:reasontext"
|
||||||
|
minOccurs="1" maxOccurs="unbounded" />
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="reasontext" >
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:string" >
|
||||||
|
<xs:attribute ref="xml:lang" use="required" />
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="faultcode">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Value"
|
||||||
|
type="tns:faultcodeEnum"/>
|
||||||
|
<xs:element name="Subcode"
|
||||||
|
type="tns:subcode"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:simpleType name="faultcodeEnum">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="tns:DataEncodingUnknown"/>
|
||||||
|
<xs:enumeration value="tns:MustUnderstand"/>
|
||||||
|
<xs:enumeration value="tns:Receiver"/>
|
||||||
|
<xs:enumeration value="tns:Sender"/>
|
||||||
|
<xs:enumeration value="tns:VersionMismatch"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:complexType name="subcode">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Value"
|
||||||
|
type="xs:QName"/>
|
||||||
|
<xs:element name="Subcode"
|
||||||
|
type="tns:subcode"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="detail">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- Global element declaration and complex type definition for header entry returned due to a mustUnderstand fault -->
|
||||||
|
<xs:element name="NotUnderstood" type="tns:NotUnderstoodType" />
|
||||||
|
<xs:complexType name="NotUnderstoodType" >
|
||||||
|
<xs:attribute name="qname" type="xs:QName" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Global element and associated types for managing version transition as described in Appendix A of the SOAP Version 1.2 Part 1 Recommendation --> <xs:complexType name="SupportedEnvType" >
|
||||||
|
<xs:attribute name="qname" type="xs:QName" use="required" />
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Upgrade" type="tns:UpgradeType" />
|
||||||
|
<xs:complexType name="UpgradeType" >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="SupportedEnvelope" type="tns:SupportedEnvType" minOccurs="1" maxOccurs="unbounded" />
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||||
|
xmlns:tns='http://www.w3.org/2004/08/xop/include'
|
||||||
|
targetNamespace='http://www.w3.org/2004/08/xop/include' >
|
||||||
|
|
||||||
|
<xs:element name='Include' type='tns:Include' />
|
||||||
|
<xs:complexType name='Include' >
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' />
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name='href' type='xs:anyURI' use='required' />
|
||||||
|
<xs:anyAttribute namespace='##other' />
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:schema>
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!--
|
||||||
|
W3C XML Schema defined in the Describing Media Content of Binary Data in XML
|
||||||
|
specification
|
||||||
|
http://www.w3.org/TR/xml-media-types
|
||||||
|
|
||||||
|
Copyright © 2005 World Wide Web Consortium,
|
||||||
|
|
||||||
|
(Massachusetts Institute of Technology, European Research Consortium for
|
||||||
|
Informatics and Mathematics, Keio University). All Rights Reserved. This
|
||||||
|
work is distributed under the W3C® Software License [1] in the hope that
|
||||||
|
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
|
||||||
|
|
||||||
|
$Id: xmlmime.xsd,v 1.1 2005/04/25 17:08:35 hugo Exp $
|
||||||
|
-->
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:xmime="http://www.w3.org/2005/05/xmlmime"
|
||||||
|
targetNamespace="http://www.w3.org/2005/05/xmlmime" >
|
||||||
|
|
||||||
|
<xs:attribute name="contentType">
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:string" >
|
||||||
|
<xs:minLength value="3" />
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
|
||||||
|
<xs:attribute name="expectedContentTypes" type="xs:string" />
|
||||||
|
|
||||||
|
<xs:complexType name="base64Binary" >
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:base64Binary" >
|
||||||
|
<xs:attribute ref="xmime:contentType" />
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="hexBinary" >
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:hexBinary" >
|
||||||
|
<xs:attribute ref="xmime:contentType" />
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
@ -0,0 +1,144 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
W3C XML Schema defined in the Web Services Addressing 1.0 specification
|
||||||
|
http://www.w3.org/TR/ws-addr-core
|
||||||
|
|
||||||
|
Copyright © 2005 World Wide Web Consortium,
|
||||||
|
|
||||||
|
(Massachusetts Institute of Technology, European Research Consortium for
|
||||||
|
Informatics and Mathematics, Keio University). All Rights Reserved. This
|
||||||
|
work is distributed under the W3C® Software License [1] in the hope that
|
||||||
|
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
|
||||||
|
|
||||||
|
$Id: ws-addr.xsd,v 1.4 2008/07/14 18:48:47 plehegar Exp $
|
||||||
|
-->
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2005/08/addressing" targetNamespace="http://www.w3.org/2005/08/addressing" blockDefault="#all" elementFormDefault="qualified" finalDefault="" attributeFormDefault="unqualified">
|
||||||
|
|
||||||
|
<!-- Constructs from the WS-Addressing Core -->
|
||||||
|
|
||||||
|
<xs:element name="EndpointReference" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:complexType name="EndpointReferenceType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Address" type="tns:AttributedURIType"/>
|
||||||
|
<xs:element name="ReferenceParameters" type="tns:ReferenceParametersType" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Metadata" minOccurs="0"/>
|
||||||
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:complexType name="ReferenceParametersType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Metadata" type="tns:MetadataType"/>
|
||||||
|
<xs:complexType name="MetadataType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="MessageID" type="tns:AttributedURIType"/>
|
||||||
|
<xs:element name="RelatesTo" type="tns:RelatesToType"/>
|
||||||
|
<xs:complexType name="RelatesToType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:anyURI">
|
||||||
|
<xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" default="http://www.w3.org/2005/08/addressing/reply"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:simpleType name="RelationshipTypeOpenEnum">
|
||||||
|
<xs:union memberTypes="tns:RelationshipType xs:anyURI"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="RelationshipType">
|
||||||
|
<xs:restriction base="xs:anyURI">
|
||||||
|
<xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="ReplyTo" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:element name="From" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:element name="FaultTo" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:element name="To" type="tns:AttributedURIType"/>
|
||||||
|
<xs:element name="Action" type="tns:AttributedURIType"/>
|
||||||
|
|
||||||
|
<xs:complexType name="AttributedURIType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:anyURI">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- Constructs from the WS-Addressing SOAP binding -->
|
||||||
|
|
||||||
|
<xs:attribute name="IsReferenceParameter" type="xs:boolean"/>
|
||||||
|
|
||||||
|
<xs:simpleType name="FaultCodesOpenEnumType">
|
||||||
|
<xs:union memberTypes="tns:FaultCodesType xs:QName"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="FaultCodesType">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="tns:InvalidAddressingHeader"/>
|
||||||
|
<xs:enumeration value="tns:InvalidAddress"/>
|
||||||
|
<xs:enumeration value="tns:InvalidEPR"/>
|
||||||
|
<xs:enumeration value="tns:InvalidCardinality"/>
|
||||||
|
<xs:enumeration value="tns:MissingAddressInEPR"/>
|
||||||
|
<xs:enumeration value="tns:DuplicateMessageID"/>
|
||||||
|
<xs:enumeration value="tns:ActionMismatch"/>
|
||||||
|
<xs:enumeration value="tns:MessageAddressingHeaderRequired"/>
|
||||||
|
<xs:enumeration value="tns:DestinationUnreachable"/>
|
||||||
|
<xs:enumeration value="tns:ActionNotSupported"/>
|
||||||
|
<xs:enumeration value="tns:EndpointUnavailable"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/>
|
||||||
|
<xs:complexType name="AttributedUnsignedLongType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:unsignedLong">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/>
|
||||||
|
<xs:complexType name="AttributedQNameType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:QName">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ProblemHeader" type="tns:AttributedAnyType"/>
|
||||||
|
<xs:complexType name="AttributedAnyType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="1" maxOccurs="1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ProblemIRI" type="tns:AttributedURIType"/>
|
||||||
|
|
||||||
|
<xs:element name="ProblemAction" type="tns:ProblemActionType"/>
|
||||||
|
<xs:complexType name="ProblemActionType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="tns:Action" minOccurs="0"/>
|
||||||
|
<xs:element name="SoapAction" minOccurs="0" type="xs:anyURI"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
@ -0,0 +1,141 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
W3C XML Schema defined in the Web Services Addressing 1.0 specification
|
||||||
|
http://www.w3.org/TR/ws-addr-core
|
||||||
|
|
||||||
|
Copyright © 2005 World Wide Web Consortium,
|
||||||
|
|
||||||
|
(Massachusetts Institute of Technology, European Research Consortium for
|
||||||
|
Informatics and Mathematics, Keio University). All Rights Reserved. This
|
||||||
|
work is distributed under the W3C® Software License [1] in the hope that
|
||||||
|
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
|
||||||
|
|
||||||
|
$Id: ws-addr.xsd,v 1.2 2008/07/23 13:38:16 plehegar Exp $
|
||||||
|
-->
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:tns="http://www.w3.org/2005/08/addressing"
|
||||||
|
targetNamespace="http://www.w3.org/2005/08/addressing" blockDefault="#all"
|
||||||
|
elementFormDefault="qualified" finalDefault="" attributeFormDefault="unqualified">
|
||||||
|
|
||||||
|
<!-- Constructs from the WS-Addressing Core -->
|
||||||
|
|
||||||
|
<xs:element name="EndpointReference" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:complexType name="EndpointReferenceType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Address" type="tns:AttributedURIType"/>
|
||||||
|
<xs:element ref="tns:ReferenceParameters" minOccurs="0"/>
|
||||||
|
<xs:element ref="tns:Metadata" minOccurs="0"/>
|
||||||
|
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ReferenceParameters" type="tns:ReferenceParametersType"/>
|
||||||
|
<xs:complexType name="ReferenceParametersType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="Metadata" type="tns:MetadataType"/>
|
||||||
|
<xs:complexType name="MetadataType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="MessageID" type="tns:AttributedURIType"/>
|
||||||
|
<xs:element name="RelatesTo" type="tns:RelatesToType"/>
|
||||||
|
<xs:complexType name="RelatesToType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:anyURI">
|
||||||
|
<xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional"
|
||||||
|
default="http://www.w3.org/2005/08/addressing/reply"/>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:simpleType name="RelationshipTypeOpenEnum">
|
||||||
|
<xs:union memberTypes="tns:RelationshipType xs:anyURI"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="RelationshipType">
|
||||||
|
<xs:restriction base="xs:anyURI">
|
||||||
|
<xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="ReplyTo" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:element name="From" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:element name="FaultTo" type="tns:EndpointReferenceType"/>
|
||||||
|
<xs:element name="To" type="tns:AttributedURIType"/>
|
||||||
|
<xs:element name="Action" type="tns:AttributedURIType"/>
|
||||||
|
|
||||||
|
<xs:complexType name="AttributedURIType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:anyURI">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<!-- Constructs from the WS-Addressing SOAP binding -->
|
||||||
|
|
||||||
|
<xs:attribute name="IsReferenceParameter" type="xs:boolean"/>
|
||||||
|
|
||||||
|
<xs:simpleType name="FaultCodesOpenEnumType">
|
||||||
|
<xs:union memberTypes="tns:FaultCodesType xs:QName"/>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:simpleType name="FaultCodesType">
|
||||||
|
<xs:restriction base="xs:QName">
|
||||||
|
<xs:enumeration value="tns:InvalidAddressingHeader"/>
|
||||||
|
<xs:enumeration value="tns:InvalidAddress"/>
|
||||||
|
<xs:enumeration value="tns:InvalidEPR"/>
|
||||||
|
<xs:enumeration value="tns:InvalidCardinality"/>
|
||||||
|
<xs:enumeration value="tns:MissingAddressInEPR"/>
|
||||||
|
<xs:enumeration value="tns:DuplicateMessageID"/>
|
||||||
|
<xs:enumeration value="tns:ActionMismatch"/>
|
||||||
|
<xs:enumeration value="tns:MessageAddressingHeaderRequired"/>
|
||||||
|
<xs:enumeration value="tns:DestinationUnreachable"/>
|
||||||
|
<xs:enumeration value="tns:ActionNotSupported"/>
|
||||||
|
<xs:enumeration value="tns:EndpointUnavailable"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
|
||||||
|
<xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/>
|
||||||
|
<xs:complexType name="AttributedUnsignedLongType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:unsignedLong">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/>
|
||||||
|
<xs:complexType name="AttributedQNameType" mixed="false">
|
||||||
|
<xs:simpleContent>
|
||||||
|
<xs:extension base="xs:QName">
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:extension>
|
||||||
|
</xs:simpleContent>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
<xs:element name="ProblemIRI" type="tns:AttributedURIType"/>
|
||||||
|
|
||||||
|
<xs:element name="ProblemAction" type="tns:ProblemActionType"/>
|
||||||
|
<xs:complexType name="ProblemActionType" mixed="false">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element ref="tns:Action" minOccurs="0"/>
|
||||||
|
<xs:element name="SoapAction" minOccurs="0" type="xs:anyURI"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
|
||||||
|
</xs:schema>
|
||||||
4237
onvif-ws-client/src/main/resources/wsdl/media_2.6.wsdl
Normal file
4237
onvif-ws-client/src/main/resources/wsdl/media_2.6.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
1393
onvif-ws-client/src/main/resources/wsdl/ptz_2.5.wsdl
Normal file
1393
onvif-ws-client/src/main/resources/wsdl/ptz_2.5.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
423
onvif-ws-client/src/main/resources/wsdl/receiver_2.1.1.wsdl
Normal file
423
onvif-ws-client/src/main/resources/wsdl/receiver_2.1.1.wsdl
Normal file
@ -0,0 +1,423 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2008-2010 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:trv="http://www.onvif.org/ver10/receiver/wsdl"
|
||||||
|
targetNamespace="http://www.onvif.org/ver10/receiver/wsdl">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/receiver/wsdl"
|
||||||
|
xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified" version="2.1.1">
|
||||||
|
<xs:import namespace="http://www.onvif.org/ver10/schema"
|
||||||
|
schemaLocation="../ver10/schema/onvif.xsd"/>
|
||||||
|
<!-- Message Request/Responses elements -->
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="trv:Capabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capabilities for the receiver service is returned in the
|
||||||
|
Capabilities element.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="Capabilities">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="RTP_Multicast" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the device can receive RTP multicast streams.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="RTP_TCP" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the device can receive RTP/TCP streams
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="RTP_RTSP_TCP" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates that the device can receive RTP/RTSP/TCP streams.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="SupportedReceivers" type="xs:int" use="required">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The maximum number of receivers supported by the device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="MaximumRTSPURILength" type="xs:int">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The maximum allowed length for RTSP URIs (Minimum and default value is
|
||||||
|
128 octet).
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="Capabilities" type="trv:Capabilities"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetReceivers">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReceiversResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Receivers" type="tt:Receiver" minOccurs="0" maxOccurs="unbounded">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>A list of all receivers that currently exist on the device.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReceiver">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ReceiverToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The token of the receiver to be retrieved.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReceiverResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Receiver" type="tt:Receiver">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The details of the receiver.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="CreateReceiver">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Configuration" type="tt:ReceiverConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The initial configuration for the new receiver.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="CreateReceiverResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Receiver" type="tt:Receiver">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The details of the receiver that was created.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="DeleteReceiver">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ReceiverToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The token of the receiver to be deleted.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="DeleteReceiverResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="ConfigureReceiver">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ReceiverToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The token of the receiver to be configured.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Configuration" type="tt:ReceiverConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The new configuration for the receiver.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="ConfigureReceiverResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SetReceiverMode">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ReceiverToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The token of the receiver to be changed.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="Mode" type="tt:ReceiverMode">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The new receiver mode. Options available are:</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SetReceiverModeResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReceiverState">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ReceiverToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The token of the receiver to be queried.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReceiverStateResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="ReceiverState" type="tt:ReceiverStateInformation">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Description of the current receiver state.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReceiversRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetReceivers"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReceiversResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetReceiversResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReceiverRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetReceiver"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReceiverResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetReceiverResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreateReceiverRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:CreateReceiver"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="CreateReceiverResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:CreateReceiverResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="DeleteReceiverRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:DeleteReceiver"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="DeleteReceiverResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:DeleteReceiverResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ConfigureReceiverRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:ConfigureReceiver"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ConfigureReceiverResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:ConfigureReceiverResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetReceiverModeRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:SetReceiverMode"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetReceiverModeResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:SetReceiverModeResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReceiverStateRequest">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetReceiverState"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReceiverStateResponse">
|
||||||
|
<wsdl:part name="parameters" element="trv:GetReceiverStateResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="ReceiverPort">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>Returns the capabilities of the receiver service. The result is returned
|
||||||
|
in a typed answer.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="trv:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReceivers">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Lists all receivers currently present on a device. This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:GetReceiversRequest"/>
|
||||||
|
<wsdl:output message="trv:GetReceiversResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReceiver">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Retrieves the details of a specific receiver. This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:GetReceiverRequest"/>
|
||||||
|
<wsdl:output message="trv:GetReceiverResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreateReceiver">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Creates a new receiver. This operation is mandatory, although the service may
|
||||||
|
raise a fault if the receiver cannot be created.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:CreateReceiverRequest"/>
|
||||||
|
<wsdl:output message="trv:CreateReceiverResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DeleteReceiver">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Deletes an existing receiver. A receiver may be deleted only if it is not
|
||||||
|
currently in use; otherwise a fault shall be raised.
|
||||||
|
This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:DeleteReceiverRequest"/>
|
||||||
|
<wsdl:output message="trv:DeleteReceiverResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ConfigureReceiver">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Configures an existing receiver. This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:ConfigureReceiverRequest"/>
|
||||||
|
<wsdl:output message="trv:ConfigureReceiverResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetReceiverMode">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Sets the mode of the receiver without affecting the rest of its configuration.
|
||||||
|
This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:SetReceiverModeRequest"/>
|
||||||
|
<wsdl:output message="trv:SetReceiverModeResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReceiverState">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Determines whether the receiver is currently disconnected, connected or
|
||||||
|
attempting to connect.
|
||||||
|
This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trv:GetReceiverStateRequest"/>
|
||||||
|
<wsdl:output message="trv:GetReceiverStateResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="ReceiverBinding" type="trv:ReceiverPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/GetServiceCapabilities"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReceivers">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/GetReceivers"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReceiver">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/GetReceiver"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="CreateReceiver">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/CreateReceiver"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="DeleteReceiver">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/DeleteReceiver"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="ConfigureReceiver">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/ConfigureReceiver"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetReceiverMode">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/SetReceiverMode"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReceiverState">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/receiver/wsdl/GetReceiverState"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
|
||||||
|
<!--===============================-->
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:service name="ReceiverService">
|
||||||
|
<wsdl:port name="ReceiverPort" binding="trv:ReceiverBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/receiver/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
1239
onvif-ws-client/src/main/resources/wsdl/recording_2.5.wsdl
Normal file
1239
onvif-ws-client/src/main/resources/wsdl/recording_2.5.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
112
onvif-ws-client/src/main/resources/wsdl/remotediscovery_1.0.wsdl
Normal file
112
onvif-ws-client/src/main/resources/wsdl/remotediscovery_1.0.wsdl
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="http://www.onvif.org/onvif/ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2008-2010 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions xmlns:dn="http://www.onvif.org/ver10/network/wsdl"
|
||||||
|
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
targetNamespace="http://www.onvif.org/ver10/network/wsdl">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/network/wsdl"
|
||||||
|
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" elementFormDefault="qualified">
|
||||||
|
<xs:import namespace="http://schemas.xmlsoap.org/ws/2005/04/discovery"
|
||||||
|
schemaLocation="http://schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd"/>
|
||||||
|
<!-- Message Request/Responses elements -->
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="Hello" type="d:HelloType"/>
|
||||||
|
<xs:element name="HelloResponse" type="d:ResolveType"/>
|
||||||
|
<xs:element name="Probe" type="d:ProbeType"/>
|
||||||
|
<xs:element name="ProbeResponse" type="d:ProbeMatchesType"/>
|
||||||
|
<xs:element name="Bye" type="d:ByeType"/>
|
||||||
|
<xs:element name="ByeResponse" type="d:ResolveType"/>
|
||||||
|
<!--===============================-->
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="HelloRequest">
|
||||||
|
<wsdl:part name="parameters" element="dn:Hello"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="HelloResponse">
|
||||||
|
<wsdl:part name="parameters" element="dn:HelloResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ProbeRequest">
|
||||||
|
<wsdl:part name="parameters" element="dn:Probe"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ProbeResponse">
|
||||||
|
<wsdl:part name="parameters" element="dn:ProbeResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ByeRequest">
|
||||||
|
<wsdl:part name="parameters" element="dn:Bye"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="ByeResponse">
|
||||||
|
<wsdl:part name="parameters" element="dn:ByeResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="RemoteDiscoveryPort">
|
||||||
|
<wsdl:operation name="Hello">
|
||||||
|
<wsdl:input message="dn:HelloRequest"
|
||||||
|
dn:Action="http://schemas.xmlsoap.org/ws/2005/04/discovery/Hello"/>
|
||||||
|
<wsdl:output message="dn:HelloResponse"
|
||||||
|
dn:Action="http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Bye">
|
||||||
|
<wsdl:input message="dn:ByeRequest"
|
||||||
|
dn:Action="http://schemas.xmlsoap.org/ws/2005/04/discovery/Bye"/>
|
||||||
|
<wsdl:output message="dn:ByeResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:portType name="DiscoveryLookupPort">
|
||||||
|
<wsdl:operation name="Probe">
|
||||||
|
<wsdl:input message="dn:ProbeRequest"
|
||||||
|
dn:Action="http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe"/>
|
||||||
|
<wsdl:output message="dn:ProbeResponse"
|
||||||
|
dn:Action="http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="RemoteDiscoveryBinding" type="dn:RemoteDiscoveryPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="Hello">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/network/wsdl/Hello"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="Bye">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/network/wsdl/Bye"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
<wsdl:binding name="DiscoveryLookupBinding" type="dn:DiscoveryLookupPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="Probe">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/network/wsdl/Probe"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
|
||||||
|
<wsdl:service name="DiscoveryService">
|
||||||
|
<wsdl:port name="DiscoveryLookupPort" binding="dn:DiscoveryLookupBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/network/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
<wsdl:port name="RemoteDiscoveryPort" binding="dn:RemoteDiscoveryBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/network/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
243
onvif-ws-client/src/main/resources/wsdl/replay_2.2.1.wsdl
Normal file
243
onvif-ws-client/src/main/resources/wsdl/replay_2.2.1.wsdl
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="../ver20/util/onvif-wsdl-viewer.xsl"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2008-2010 by ONVIF: Open Network Video Interface Forum. All rights reserved.
|
||||||
|
|
||||||
|
Recipients of this document may copy, distribute, publish, or display this document so long as this copyright notice, license and disclaimer are retained with all copies of the document. No license is granted to modify this document.
|
||||||
|
|
||||||
|
THIS DOCUMENT IS PROVIDED "AS IS," AND THE CORPORATION AND ITS MEMBERS AND THEIR AFFILIATES, MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THIS DOCUMENT ARE SUITABLE FOR ANY PURPOSE; OR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
|
||||||
|
IN NO EVENT WILL THE CORPORATION OR ITS MEMBERS OR THEIR AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT, WHETHER OR NOT (1) THE CORPORATION, MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR (2) SUCH DAMAGES WERE REASONABLY FORESEEABLE, AND ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THIS DOCUMENT. THE FOREGOING DISCLAIMER AND LIMITATION ON LIABILITY DO NOT APPLY TO, INVALIDATE, OR LIMIT REPRESENTATIONS AND WARRANTIES MADE BY THE MEMBERS AND THEIR RESPECTIVE AFFILIATES TO THE CORPORATION AND OTHER MEMBERS IN CERTAIN WRITTEN POLICIES OF THE CORPORATION.
|
||||||
|
-->
|
||||||
|
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
||||||
|
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:trp="http://www.onvif.org/ver10/replay/wsdl"
|
||||||
|
targetNamespace="http://www.onvif.org/ver10/replay/wsdl">
|
||||||
|
<wsdl:types>
|
||||||
|
<xs:schema targetNamespace="http://www.onvif.org/ver10/replay/wsdl"
|
||||||
|
xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified" version="2.2.1">
|
||||||
|
<xs:import namespace="http://www.onvif.org/ver10/schema"
|
||||||
|
schemaLocation="../ver10/schema/onvif.xsd"/>
|
||||||
|
<!-- Message Request/Responses elements -->
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetServiceCapabilities">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence/>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetServiceCapabilitiesResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Capabilities" type="trp:Capabilities">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The capabilities for the replay service is returned in the
|
||||||
|
Capabilities element.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:complexType name="Capabilities">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute name="ReversePlayback" type="xs:boolean" default="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicator that the Device supports reverse playback as defined in the
|
||||||
|
ONVIF Streaming Specification.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="SessionTimeoutRange" type="tt:FloatAttrList">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The list contains two elements defining the minimum and maximum valid
|
||||||
|
values supported as session timeout in seconds.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:attribute name="RTP_RTSP_TCP" type="xs:boolean">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Indicates support for RTP/RTSP/TCP.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:attribute>
|
||||||
|
<xs:anyAttribute processContents="lax"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:element name="Capabilities" type="trp:Capabilities"/>
|
||||||
|
<!--===============================-->
|
||||||
|
<xs:element name="GetReplayUri">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="StreamSetup" type="tt:StreamSetup">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Specifies the connection parameters to be used for the stream. The
|
||||||
|
URI that is returned may depend on these parameters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="RecordingToken" type="tt:ReferenceToken">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The identifier of the recording to be streamed.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReplayUriResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Uri" type="xs:anyURI">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The URI to which the client should connect in order to stream the
|
||||||
|
recording.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SetReplayConfiguration">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Configuration" type="tt:ReplayConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Description of the new replay configuration parameters.
|
||||||
|
</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="SetReplayConfigurationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReplayConfiguration">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
<xs:element name="GetReplayConfigurationResponse">
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element name="Configuration" type="tt:ReplayConfiguration">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>The current replay configuration parameters.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
</xs:schema>
|
||||||
|
</wsdl:types>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesRequest">
|
||||||
|
<wsdl:part name="parameters" element="trp:GetServiceCapabilities"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetServiceCapabilitiesResponse">
|
||||||
|
<wsdl:part name="parameters" element="trp:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReplayUriRequest">
|
||||||
|
<wsdl:part name="parameters" element="trp:GetReplayUri"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReplayUriResponse">
|
||||||
|
<wsdl:part name="parameters" element="trp:GetReplayUriResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetReplayConfigurationRequest">
|
||||||
|
<wsdl:part name="parameters" element="trp:SetReplayConfiguration"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="SetReplayConfigurationResponse">
|
||||||
|
<wsdl:part name="parameters" element="trp:SetReplayConfigurationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReplayConfigurationRequest">
|
||||||
|
<wsdl:part name="parameters" element="trp:GetReplayConfiguration"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:message name="GetReplayConfigurationResponse">
|
||||||
|
<wsdl:part name="parameters" element="trp:GetReplayConfigurationResponse"/>
|
||||||
|
</wsdl:message>
|
||||||
|
<wsdl:portType name="ReplayPort">
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<wsdl:documentation>Returns the capabilities of the replay service. The result is returned in
|
||||||
|
a typed answer.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trp:GetServiceCapabilitiesRequest"/>
|
||||||
|
<wsdl:output message="trp:GetServiceCapabilitiesResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReplayUri">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Requests a URI that can be used to initiate playback of a recorded stream
|
||||||
|
using RTSP as the control protocol. The URI is valid only as it is
|
||||||
|
specified in the response.
|
||||||
|
This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trp:GetReplayUriRequest"/>
|
||||||
|
<wsdl:output message="trp:GetReplayUriResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReplayConfiguration">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Returns the current configuration of the replay service.
|
||||||
|
This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trp:GetReplayConfigurationRequest"/>
|
||||||
|
<wsdl:output message="trp:GetReplayConfigurationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetReplayConfiguration">
|
||||||
|
<wsdl:documentation>
|
||||||
|
Changes the current configuration of the replay service.
|
||||||
|
This operation is mandatory.
|
||||||
|
</wsdl:documentation>
|
||||||
|
<wsdl:input message="trp:SetReplayConfigurationRequest"/>
|
||||||
|
<wsdl:output message="trp:SetReplayConfigurationResponse"/>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:portType>
|
||||||
|
<wsdl:binding name="ReplayBinding" type="trp:ReplayPort">
|
||||||
|
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
|
||||||
|
<wsdl:operation name="GetServiceCapabilities">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/replay/wsdl/GetServiceCapabilities"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReplayUri">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/replay/wsdl/GetReplayUri"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="GetReplayConfiguration">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/replay/wsdl/GetReplayConfiguration"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
<wsdl:operation name="SetReplayConfiguration">
|
||||||
|
<soap:operation soapAction="http://www.onvif.org/ver10/replay/wsdl/SetReplayConfiguration"/>
|
||||||
|
<wsdl:input>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:input>
|
||||||
|
<wsdl:output>
|
||||||
|
<soap:body parts="parameters" use="literal"/>
|
||||||
|
</wsdl:output>
|
||||||
|
</wsdl:operation>
|
||||||
|
</wsdl:binding>
|
||||||
|
|
||||||
|
<!--===============================-->
|
||||||
|
<!--===============================-->
|
||||||
|
<wsdl:service name="ReplayService">
|
||||||
|
<wsdl:port name="ReplayPort" binding="trp:ReplayBinding">
|
||||||
|
<soap:address location="http://www.onvif.org/ver10/replay/wsdl"/>
|
||||||
|
</wsdl:port>
|
||||||
|
</wsdl:service>
|
||||||
|
</wsdl:definitions>
|
||||||
1038
onvif-ws-client/src/main/resources/wsdl/search_2.4.2.wsdl
Normal file
1038
onvif-ws-client/src/main/resources/wsdl/search_2.4.2.wsdl
Normal file
File diff suppressed because it is too large
Load Diff
82
pom.xml
Normal file
82
pom.xml
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.onvif</groupId>
|
||||||
|
<artifactId>onvif</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<cxf.version>3.3.2</cxf.version> <!-- 3.1.10 -->
|
||||||
|
<checkstyle-maven-plugin.version>3.0.0</checkstyle-maven-plugin.version>
|
||||||
|
<javax.activation.version>1.2.0</javax.activation.version>
|
||||||
|
<jaxb.api.version>2.3.1</jaxb.api.version> <!-- 2.3.0, 2.3.1 or 2.4.0-b180830.0359 -->
|
||||||
|
<java.release>8</java.release>
|
||||||
|
<!-- <java.version>1.10</java.version>-->
|
||||||
|
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<module>onvif-ws-client</module>
|
||||||
|
<module>onvif-java</module>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven-compiler-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<jdkToolchain>
|
||||||
|
<version>${java.release}</version>
|
||||||
|
</jdkToolchain>
|
||||||
|
<!-- <release>${java.release}</release> -->
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
|
<version>${checkstyle-maven-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<configLocation>google_checks.xml</configLocation>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>check</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<reporting>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
|
<version>${checkstyle-maven-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<configLocation>google_checks.xml</configLocation>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</reporting>
|
||||||
|
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>internal</id>
|
||||||
|
<url>file://${project.build.directory}/mvn-repo</url>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement>
|
||||||
|
|
||||||
|
</project>
|
||||||
Loading…
x
Reference in New Issue
Block a user