amo_crm 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +28 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CHANGELOG.md +22 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +29 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +1 -0
  10. data/Rakefile +14 -0
  11. data/amo_crm.gemspec +41 -0
  12. data/dump_amocrm_account.rb +7 -0
  13. data/lib/amo_crm.rb +31 -0
  14. data/lib/amo_crm/client.rb +98 -0
  15. data/lib/amo_crm/client/error.rb +18 -0
  16. data/lib/amo_crm/client/errors.rb +16 -0
  17. data/lib/amo_crm/entities.rb +14 -0
  18. data/lib/amo_crm/entities/account.rb +7 -0
  19. data/lib/amo_crm/entities/attachment_document.rb +16 -0
  20. data/lib/amo_crm/entities/attribute.rb +71 -0
  21. data/lib/amo_crm/entities/attribute_metadata.rb +38 -0
  22. data/lib/amo_crm/entities/barcode.rb +19 -0
  23. data/lib/amo_crm/entities/base.rb +5 -0
  24. data/lib/amo_crm/entities/collection.rb +12 -0
  25. data/lib/amo_crm/entities/common.rb +15 -0
  26. data/lib/amo_crm/entities/common_object.rb +27 -0
  27. data/lib/amo_crm/entities/company.rb +30 -0
  28. data/lib/amo_crm/entities/company_concern.rb +20 -0
  29. data/lib/amo_crm/entities/consignment.rb +22 -0
  30. data/lib/amo_crm/entities/contact.rb +29 -0
  31. data/lib/amo_crm/entities/contract.rb +2 -0
  32. data/lib/amo_crm/entities/country.rb +10 -0
  33. data/lib/amo_crm/entities/custom_entity.rb +18 -0
  34. data/lib/amo_crm/entities/custom_entity_metadata.rb +36 -0
  35. data/lib/amo_crm/entities/custom_field.rb +6 -0
  36. data/lib/amo_crm/entities/custom_field_definition.rb +13 -0
  37. data/lib/amo_crm/entities/custom_field_value.rb +5 -0
  38. data/lib/amo_crm/entities/custom_fields.rb +24 -0
  39. data/lib/amo_crm/entities/custom_fields_definition.rb +4 -0
  40. data/lib/amo_crm/entities/customer_order.rb +51 -0
  41. data/lib/amo_crm/entities/customer_order_position.rb +22 -0
  42. data/lib/amo_crm/entities/embedded_entity_metadata.rb +18 -0
  43. data/lib/amo_crm/entities/error.rb +13 -0
  44. data/lib/amo_crm/entities/feature.rb +23 -0
  45. data/lib/amo_crm/entities/good.rb +34 -0
  46. data/lib/amo_crm/entities/good_folder.rb +10 -0
  47. data/lib/amo_crm/entities/good_ref.rb +12 -0
  48. data/lib/amo_crm/entities/image.rb +21 -0
  49. data/lib/amo_crm/entities/images.rb +10 -0
  50. data/lib/amo_crm/entities/lead.rb +28 -0
  51. data/lib/amo_crm/entities/my_company.rb +12 -0
  52. data/lib/amo_crm/entities/page.rb +5 -0
  53. data/lib/amo_crm/entities/price.rb +15 -0
  54. data/lib/amo_crm/entities/price_type.rb +13 -0
  55. data/lib/amo_crm/entities/sale_price.rb +18 -0
  56. data/lib/amo_crm/entities/sale_prices.rb +10 -0
  57. data/lib/amo_crm/entities/slot.rb +10 -0
  58. data/lib/amo_crm/entities/stock_to.rb +33 -0
  59. data/lib/amo_crm/entities/warehouse.rb +15 -0
  60. data/lib/amo_crm/entities/workflow.rb +11 -0
  61. data/lib/amo_crm/entities/workflow_state.rb +8 -0
  62. data/lib/amo_crm/entities/xml_fix.rb +14 -0
  63. data/lib/amo_crm/errors.rb +1 -0
  64. data/lib/amo_crm/resources.rb +18 -0
  65. data/lib/amo_crm/resources/account.rb +30 -0
  66. data/lib/amo_crm/resources/base.rb +149 -0
  67. data/lib/amo_crm/resources/companies.rb +27 -0
  68. data/lib/amo_crm/resources/contacts.rb +23 -0
  69. data/lib/amo_crm/resources/custom_entity_metadata.rb +18 -0
  70. data/lib/amo_crm/resources/custom_field.rb +28 -0
  71. data/lib/amo_crm/resources/embedded_entity_metadata.rb +20 -0
  72. data/lib/amo_crm/resources/embedded_entity_metadata_indexed.rb +7 -0
  73. data/lib/amo_crm/resources/indexed.rb +89 -0
  74. data/lib/amo_crm/resources/leads.rb +31 -0
  75. data/lib/amo_crm/resources/stock.rb +36 -0
  76. data/lib/amo_crm/resources/subresource.rb +21 -0
  77. data/lib/amo_crm/resources/where_filter.rb +26 -0
  78. data/lib/amo_crm/response.rb +7 -0
  79. data/lib/amo_crm/universe.rb +44 -0
  80. data/lib/amo_crm/version.rb +3 -0
  81. data/scripts/rest.sh +25 -0
  82. data/spec/fixtures/302.raw +15 -0
  83. data/spec/fixtures/400.raw +8 -0
  84. data/spec/fixtures/401.html +1 -0
  85. data/spec/fixtures/401_2.html +1 -0
  86. data/spec/fixtures/405.raw +9 -0
  87. data/spec/fixtures/500.raw +8 -0
  88. data/spec/fixtures/502.raw +8 -0
  89. data/spec/fixtures/Consignment_list_0.raw +14 -0
  90. data/spec/fixtures/Consignment_list_1000.raw +14 -0
  91. data/spec/fixtures/Country_list.raw +14 -0
  92. data/spec/fixtures/CustomEntityMetadata_list.raw +14 -0
  93. data/spec/fixtures/CustomEntity_list.raw +14 -0
  94. data/spec/fixtures/CustomEntity_list_bad_chars.raw +17 -0
  95. data/spec/fixtures/EmbeddedEntityMetadata_list.raw +15 -0
  96. data/spec/fixtures/Feature_list.raw +14 -0
  97. data/spec/fixtures/Feature_list_1000.raw +14 -0
  98. data/spec/fixtures/Good_WithManyAttributes.raw +13 -0
  99. data/spec/fixtures/Good_e932ebe1-2e22-11e4-9406-002590a28eca.raw +12 -0
  100. data/spec/fixtures/Good_eb77ad57-2e22-11e4-4030-002590a28eca.raw +12 -0
  101. data/spec/fixtures/Goods_list.raw +14 -0
  102. data/spec/fixtures/Metadata_list.raw +14 -0
  103. data/spec/fixtures/PriceType_list.raw +14 -0
  104. data/spec/fixtures/Stock.raw +11 -0
  105. data/spec/fixtures/Stock_showConsignments.raw +11 -0
  106. data/spec/fixtures/Uom_list.raw +14 -0
  107. data/spec/fixtures/Warehouse_list.raw +14 -0
  108. data/spec/fixtures/Workflow_list.raw +15 -0
  109. data/spec/fixtures/attribute_boolean.xml +6 -0
  110. data/spec/fixtures/attribute_dictionary.xml +5 -0
  111. data/spec/fixtures/attribute_double.xml +6 -0
  112. data/spec/fixtures/attribute_file.xml +12 -0
  113. data/spec/fixtures/attribute_long.xml +6 -0
  114. data/spec/fixtures/attribute_text.xml +5 -0
  115. data/spec/fixtures/attribute_time.xml +6 -0
  116. data/spec/fixtures/attribute_url.xml +6 -0
  117. data/spec/fixtures/bad_chars.xml +6 -0
  118. data/spec/fixtures/customer_order.xml +28 -0
  119. data/spec/fixtures/good_with_attributes.raw +12 -0
  120. data/spec/fixtures/good_with_image.xml +39 -0
  121. data/spec/fixtures/resource_forbidden.raw +9 -0
  122. data/spec/fixtures/wrong_password.raw +9 -0
  123. data/spec/fixtures/wrong_type.raw +70 -0
  124. data/spec/fixtures/wrong_user.raw +9 -0
  125. data/spec/lib/amocrm/client/errors_spec.rb +102 -0
  126. data/spec/lib/amocrm/entities/attribute_metadata_spec.rb +30 -0
  127. data/spec/lib/amocrm/entities/attribute_spec.rb +36 -0
  128. data/spec/lib/amocrm/entities/country_spec.rb +25 -0
  129. data/spec/lib/amocrm/entities/custom_entity_metadata_spec.rb +34 -0
  130. data/spec/lib/amocrm/entities/custom_entity_spec.rb +34 -0
  131. data/spec/lib/amocrm/entities/customer_order_position_spec.rb +35 -0
  132. data/spec/lib/amocrm/entities/customer_order_spec.rb +58 -0
  133. data/spec/lib/amocrm/entities/good_spec.rb +55 -0
  134. data/spec/lib/amocrm/resources/base_spec.rb +61 -0
  135. data/spec/lib/amocrm/resources/countries_spec.rb +22 -0
  136. data/spec/lib/amocrm/resources/custom_entity_metadata_spec.rb +13 -0
  137. data/spec/lib/amocrm/resources/embedded_entity_metadata_indexed_spec.rb +20 -0
  138. data/spec/lib/amocrm/resources/embedded_entity_metadata_spec.rb +11 -0
  139. data/spec/lib/amocrm/resources/good_folders_spec.rb +17 -0
  140. data/spec/lib/amocrm/resources/indexed_spec.rb +61 -0
  141. data/spec/lib/amocrm/resources/stock_spec.rb +63 -0
  142. data/spec/lib/amocrm/resources/subresource_spec.rb +13 -0
  143. data/spec/lib/amocrm/resources/warehouses_spec.rb +20 -0
  144. data/spec/lib/amocrm/resources/workflows_spec.rb +21 -0
  145. data/spec/lib/amocrm/resources_spec.rb +10 -0
  146. data/spec/lib/amocrm/universe_spec.rb +53 -0
  147. data/spec/lib/amocrm_spec.rb +8 -0
  148. data/spec/spec_helper.rb +106 -0
  149. data/spec/support/resource.rb +72 -0
  150. metadata +500 -0
@@ -0,0 +1,27 @@
1
+ module AmoCRM::Resources
2
+ class Companies < Base
3
+ def find
4
+ raise 'no such method'
5
+ end
6
+
7
+ def set_path
8
+ 'company/set'
9
+ end
10
+
11
+ def list_path
12
+ 'company/list'
13
+ end
14
+
15
+ def response_key
16
+ 'contacts'
17
+ end
18
+
19
+ def self.entity_class
20
+ AmoCRM::Entities::Company
21
+ end
22
+
23
+ def self.resource_name
24
+ :companies
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ module AmoCRM::Resources
2
+ class Contacts < Base
3
+ def set_path
4
+ 'contacts/set'
5
+ end
6
+
7
+ def list_path
8
+ 'contacts/list'
9
+ end
10
+
11
+ def response_key
12
+ 'contacts'
13
+ end
14
+
15
+ def self.entity_class
16
+ AmoCRM::Entities::Contact
17
+ end
18
+
19
+ def self.resource_name
20
+ :contacts
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ module AmoCRM::Resources
2
+ # https://online.moysklad.ru/exchange/rest/ms/xml/CustomEntityMetadata/list
3
+ # Список аттрибутов, которые используются как свойства товара
4
+ class CustomEntityMetadata < Base
5
+ def self.entity_class
6
+ AmoCRM::Entities::CustomEntityMetadata
7
+ end
8
+
9
+ def self.type
10
+ 'CustomEntityMetadata'
11
+ end
12
+
13
+ def self.resource_name
14
+ :custom_entity_metadata
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,28 @@
1
+ module AmoCRM::Resources
2
+ class CustomField < Base
3
+
4
+ def all
5
+ page.items
6
+ end
7
+
8
+ def find
9
+ raise 'no such method'
10
+ end
11
+
12
+ def list_path
13
+ 'accounts/current'
14
+ end
15
+
16
+ def pluralized_key_path
17
+ 'account' # custom_fields
18
+ end
19
+
20
+ def self.entity_class
21
+ AmoCRM::Entities::CustomField
22
+ end
23
+
24
+ def self.resource_name
25
+ :custom_fields
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ module AmoCRM::Resources
2
+ class EmbeddedEntityMetadata < Base
3
+ def self.entity_class
4
+ AmoCRM::Entities::EmbeddedEntityMetadata
5
+ end
6
+
7
+ def self.type
8
+ 'EmbeddedEntityMetadata'
9
+ end
10
+
11
+ def self.resource_name
12
+ :embedded_entity_metadata
13
+ end
14
+
15
+ def self.indexed *args
16
+ AmoCRM::Resources::EmbeddedEntityMetadataIndexed.new new(*args)
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module AmoCRM::Resources
2
+ class EmbeddedEntityMetadataIndexed < Indexed
3
+ def subresource_by_name name
4
+ Subresource.new findWhere(name: name.to_s).attributeMetadata
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,89 @@
1
+ require_relative 'where_filter'
2
+
3
+ module AmoCRM::Resources
4
+ class Indexed < SimpleDelegator
5
+ WrongEntriesCountError = Class.new StandardError
6
+ ObjectHaveNoUuidError = Class.new StandardError
7
+
8
+ include WhereFilter
9
+
10
+ def initialize resource
11
+ raise TypeError, 'resource должен быть AmoCRM::Resources::Base' unless resource.is_a? AmoCRM::Resources::Base
12
+ super resource
13
+ end
14
+
15
+ # Автоматически подгружает постранично данныез из API и возвращает их все сразу.
16
+ #
17
+ # @return [Array of AmoCRM::Entities::Base]
18
+ def all
19
+ @cached_list || pull_list
20
+ end
21
+
22
+ # Возвращает запрашивемую запись из кеша.
23
+ # Предварительно подгружает все записи через метод `all`
24
+ #
25
+ # @return Moyskald::Entities::Base
26
+ def find uuid
27
+ index[uuid]
28
+ end
29
+
30
+ # Перечень uuid-ов всех элементов в ресуресе
31
+ #
32
+ # @return [Array of uuids]
33
+ def uuids
34
+ index.keys
35
+ end
36
+
37
+ # Неиндексированный ресурс
38
+ #
39
+ # @return AmoCRM::Resources::Base
40
+ def resource
41
+ __getobj__
42
+ end
43
+
44
+ private
45
+
46
+ def values
47
+ index.values
48
+ end
49
+
50
+ def index
51
+ pull_list unless @_index
52
+ @_index
53
+ end
54
+
55
+ def pull_list
56
+ @cached_list = load_full_list
57
+ @_index = prepare_index @cached_list
58
+ @cached_list
59
+ end
60
+
61
+ def load_full_list
62
+ start = 0
63
+ list = []
64
+
65
+ _page = nil
66
+
67
+ begin
68
+ _page = page start: start
69
+ list += _page.items
70
+ break if _page.items.empty?
71
+ start = list.count
72
+ end while start<_page.total
73
+
74
+ raise WrongEntriesCountError, "При загрузке коллекции в результате колиество не совпадает с total: #{list.count}<>#{_page.total}" unless list.count==_page.total
75
+
76
+ list
77
+ end
78
+
79
+ def prepare_index cached_list
80
+ i={}
81
+ cached_list.each do |r|
82
+ raise ObjectHaveNoUuidError, "У объекта нет uuid: #{r.to_xml}" unless r.respond_to?(:uuid) && r.uuid
83
+ i[r.uuid]=r
84
+ end
85
+ return i
86
+ end
87
+
88
+ end
89
+ end
@@ -0,0 +1,31 @@
1
+ module AmoCRM::Resources
2
+ class Leads < Base
3
+ def all
4
+ page.items
5
+ end
6
+
7
+ def find
8
+ raise 'no such method'
9
+ end
10
+
11
+ def set_path
12
+ 'leads/set'
13
+ end
14
+
15
+ def list_path
16
+ 'leads/list'
17
+ end
18
+
19
+ def response_key
20
+ 'leads'
21
+ end
22
+
23
+ def self.entity_class
24
+ AmoCRM::Entities::Lead
25
+ end
26
+
27
+ def self.resource_name
28
+ :leads
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,36 @@
1
+ module AmoCRM::Resources
2
+ class Stock < Base
3
+
4
+ def listWithConsignments params={}
5
+ list params.merge(showConsignments: true)
6
+ end
7
+
8
+ def all
9
+ page.items
10
+ end
11
+
12
+ def find
13
+ raise 'no such method'
14
+ end
15
+
16
+ def list_path
17
+ 'exchange/rest/stock/xml'
18
+ end
19
+
20
+ def self.entity_class
21
+ AmoCRM::Entities::StockTO
22
+ end
23
+
24
+ def self.resource_name
25
+ :stock
26
+ end
27
+
28
+ private
29
+
30
+ def parse_page content
31
+ items = AmoCRM::Entities::StockTO.parse content
32
+ AmoCRM::Entities::Page.new items, items.count, 0, items.count
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'where_filter'
2
+ module AmoCRM::Resources
3
+ class Subresource < Struct.new(:items)
4
+ include WhereFilter
5
+
6
+ def find uuid
7
+ findWhere uuid: uuid
8
+ end
9
+
10
+ def all
11
+ items
12
+ end
13
+
14
+ private
15
+
16
+ def values
17
+ items
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module AmoCRM::Resources::WhereFilter
2
+
3
+ # Возвращает список элементов по переданному фильтру.
4
+ # Например:
5
+ # > universe.features.where goodUuid: uuid
6
+ #
7
+ # @return [Array of AmoCRM::Entities::Base]
8
+ #
9
+ def where filter
10
+ values.select { |v| filtered? v, filter }
11
+ end
12
+
13
+ # Возвращает первый найденный по фильтру элемент или
14
+ # nil
15
+ #
16
+ # @return AmoCRM::Entities::Base || nil
17
+ def findWhere filter
18
+ where(filter).first
19
+ end
20
+
21
+ private
22
+
23
+ def filtered? o, filter={}
24
+ filter.select { |k,v| o.send(k)==v }.count == filter.keys.count
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ module AmoCRM
2
+ class Response
3
+ include Virtus.model
4
+ attribute :response
5
+ attribute :server_time, Integer
6
+ end
7
+ end
@@ -0,0 +1,44 @@
1
+ require 'hashie'
2
+
3
+ module AmoCRM
4
+ class Universe
5
+
6
+ cattr_reader :resources_list
7
+ attr_reader :client
8
+
9
+ # @param client[AmoCRM::Client]
10
+ def initialize client: nil
11
+ raise "Должен быть client[AmoCRM::Client]" unless client.is_a? AmoCRM::Client
12
+ @client = client
13
+ @resources={}
14
+ end
15
+
16
+ def self.client_class
17
+ Client
18
+ end
19
+
20
+ # Ленивое создание universe
21
+ #
22
+ # @param user_login
23
+ # @param user_hash
24
+ def self.build user_login: , user_hash: , url:
25
+ client = client_class.new url: url
26
+ client.authorize! user_login: user_login, user_hash: user_hash
27
+ new client: client
28
+ end
29
+
30
+ @@resources_list = []
31
+ AmoCRM::Resources.resources.each do |resource_klass|
32
+ resource = resource_klass.resource_name.to_sym
33
+ fail "Already have such resource #{resource}" if @@resources_list.include? resource
34
+ @@resources_list << resource
35
+ define_method resource_klass.resource_name do
36
+ @resources[resource_klass.type] ||= resource_klass.indexed( client: client )
37
+ end
38
+ end
39
+
40
+ def class_by_resource resource
41
+ "AmoCRM::Resources::#{resource.to_s.singularize.capitalize}".constantize
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module AmoCRM
2
+ VERSION = "0.2.2"
3
+ end
@@ -0,0 +1,25 @@
1
+
2
+ # source ./tmp/test_env
3
+ resource=$1
4
+ action=$2
5
+ start=$3
6
+
7
+ if [ -z "$MS_LOGIN" ] || [ -z "$MS_PASSWORD" ]; then
8
+ echo "Утсановите переменные окружения MS_LOGIN и MS_PASSWORD"
9
+ exit 1
10
+ fi
11
+
12
+ if [ -z "$resource" ]; then
13
+ echo "Запуск: rest.sh Resoruce [action]"
14
+ echo "Например: rest.sh Feature list"
15
+ exit 2
16
+ fi
17
+
18
+ url="https://online.moysklad.ru/exchange/rest/ms/xml/$1/$2"
19
+
20
+ if [ "$action"=="list" ] && [ -n "$start" ]; then
21
+ url="$url?start=$start"
22
+ fi
23
+
24
+ echo $url >&2
25
+ curl --max-redirs 3 -is -u $MS_LOGIN:$MS_PASSWORD $url
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 302 Moved Temporarily
2
+ Server: nginx
3
+ Date: Thu, 13 Nov 2014 16:43:43 GMT
4
+ Content-Type: text/html
5
+ Content-Length: 154
6
+ Connection: keep-alive
7
+ Location: http://brandymint.ru/
8
+
9
+ <html>
10
+ <head><title>302 Found</title></head>
11
+ <body bgcolor="white">
12
+ <center><h1>302 Found</h1></center>
13
+ <hr><center>nginx</center>
14
+ </body>
15
+ </html>
@@ -0,0 +1,8 @@
1
+ HTTP/1.1 400 Bad Request
2
+ Server: nginx/1.6.1
3
+ Date: Thu, 13 Nov 2014 14:40:41 GMT
4
+ Content-Type: text/html;charset=utf-8
5
+ Content-Length: 1801
6
+ Connection: close
7
+
8
+ <html><head><title>JBoss Web/7.2.0.Final - JBWEB000064: Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>JBWEB000065: HTTP Status 400 - Unable to extract parameter from http request: javax.ws.rs.QueryParam(&quot;start&quot;) value is '' for public abstract javax.ws.rs.core.StreamingOutput com.lognex.sklad.back.ejb.exchange.rest.IRestExchangeManagerUser.entityList(java.lang.String,java.lang.String,java.lang.Integer,java.lang.Integer,java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean)</h1><HR size="1" noshade="noshade"><p><b>JBWEB000309: type</b> JBWEB000067: Status report</p><p><b>JBWEB000068: message</b> <u>Unable to extract parameter from http request: javax.ws.rs.QueryParam(&quot;start&quot;) value is '' for public abstract javax.ws.rs.core.StreamingOutput com.lognex.sklad.back.ejb.exchange.rest.IRestExchangeManagerUser.entityList(java.lang.String,java.lang.String,java.lang.Integer,java.lang.Integer,java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean)</u></p><p><b>JBWEB000069: description</b> <u>JBWEB000120: The request sent by the client was syntactically incorrect.</u></p><HR size="1" noshade="noshade"><h3>JBoss Web/7.2.0.Final</h3></body></html>