I am trying to validate the XML SOAP response below, but it's not working. Please let me know the correct approach. Please let me know if more info is needed.
Response XML:
<GetTariffsInfoResult>
<Status>
<StatusCode>0</StatusCode>
<StatusDescription>SUCCESS</StatusDescription>
</Status>
<OutputParameterSets>
<OutputParameterSet>
<OutputParameters>
<OutputParameter>
<Name>COMP_AVAILABLE</Name>
<Value>TRUE</Value>
</OutputParameter>
<OutputParameter>
<Name>ILEC_VENDORNAME</Name>
<Value>COMP1</Value>
</OutputParameter>
<OutputParameter>
<Name>ABC</Name>
<Value>FALSE</Value>
</OutputParameter>
<OutputParameter>
<Name>TEST</Name>
<Value>Identical</Value>
</OutputParameter>
</OutputParameters>
</OutputParameterSet>
</OutputParameterSets>
</GetTariffsInfoResult>
feature
Scenario: Check Request and Respone xml
* set /Envelope/Body/GetTariffsInfoResponse/GetTariffsInfoResult
| Path | Value |
| OutputParameter[1]/Name | 'QOS_AVAILABLE' |
| OutputParameter[1]/Value | 'True' |
| OutputParameter[2]/Name | 'ILEC_VENDORNAME' |
| OutputParameter[2]/Value | 'CENTURYTEL OF MW-WISCONSIN LLC DBA CENTURYLINK - NORTH' |
| OutputParameter[3]/Name | 'QC' |
| OutputParameter[3]/Value | 'FALSE' |
| OutputParameter[4]/Name | 'ELA_PREMIER_TYPE' |
| OutputParameter[4]/Value | 'Identical' |
| OutputParameter[5]/Name | 'QOS_ALIGNMENT' |
| OutputParameter[5]/Value | 'Y' |
| OutputParameter[6]/Name | 'QOS_IDENTICAL' |
| OutputParameter[6]/Value | 'Y' |
| OutputParameter[7]/Name | 'QOS_MEDIUM' |
| OutputParameter[7]/Value | 'Y' |
| OutputParameter[8]/Name | 'QOS_NONE' |
| OutputParameter[8]/Value | 'Y' |
#|path
Given request read('request.xml')
When soap action 'XYZ'
Then status 200
And match /Envelope/Body/GetTariffsInfoResponse/GetTariffsInfoResult/Status/StatusCode == 0
And match /Envelope/Body/GetTariffsInfoResponse/GetTariffsInfoResult == read('Excepted.xml')
And print 'response: ', response
And match / == read('Excepted.xml')
In this feature everything is passing only last step is failing "And match / == read('Excepted.xml')". which is throwing actual as '(not present')
Please, in the future, simplify your example and don't dump your whole work here like this.
When you do match / you are trying to match the FULL XML starting from the root. I recommend you just match the parts you need and make life simple.
You can cut and paste the below into a new Scenario: and try it. You will see one mistake you made is the table columns path and value should be lower-case. I have also shown you how you can use XML itself as expected results instead of painfully creating a table. Read the documentation carefully and also refer to this file for good examples: xml.feature
* def response =
"""
<GetTariffsInfoResult>
<Status>
<StatusCode>0</StatusCode>
<StatusDescription>SUCCESS</StatusDescription>
</Status>
<OutputParameterSets>
<OutputParameterSet>
<OutputParameters>
<OutputParameter>
<Name>COMP_AVAILABLE</Name>
<Value>TRUE</Value>
</OutputParameter>
<OutputParameter>
<Name>ILEC_VENDORNAME</Name>
<Value>COMP1</Value>
</OutputParameter>
<OutputParameter>
<Name>ABC</Name>
<Value>FALSE</Value>
</OutputParameter>
<OutputParameter>
<Name>TEST</Name>
<Value>Identical</Value>
</OutputParameter>
</OutputParameters>
</OutputParameterSet>
</OutputParameterSets>
</GetTariffsInfoResult>
"""
* set expected /OutputParameters
| path | value |
| OutputParameter[1]/Name | 'COMP_AVAILABLE' |
| OutputParameter[1]/Value | 'TRUE' |
| OutputParameter[2]/Name | 'ILEC_VENDORNAME' |
| OutputParameter[2]/Value | 'COMP1' |
| OutputParameter[3]/Name | 'ABC' |
| OutputParameter[3]/Value | 'FALSE' |
| OutputParameter[4]/Name | 'TEST' |
| OutputParameter[4]/Value | 'Identical' |
* match /GetTariffsInfoResult/OutputParameterSets/OutputParameterSet/OutputParameters == expected
* match /GetTariffsInfoResult/OutputParameterSets/OutputParameterSet/OutputParameters ==
"""
<OutputParameters>
<OutputParameter>
<Name>COMP_AVAILABLE</Name>
<Value>TRUE</Value>
</OutputParameter>
<OutputParameter>
<Name>ILEC_VENDORNAME</Name>
<Value>COMP1</Value>
</OutputParameter>
<OutputParameter>
<Name>ABC</Name>
<Value>FALSE</Value>
</OutputParameter>
<OutputParameter>
<Name>TEST</Name>
<Value>Identical</Value>
</OutputParameter>
</OutputParameters>
"""
Related
I am looking into the feasibility of converting a simple open source Android chart tool to Flutter. Looking at a few Android charting tools, I find they may use the following Android imports.
Next, I am trying to identify Flutter classes that would, very roughly and loosely, correspond to the Android classes. Mostly looking by names, I find this rough mapping.
Would someone be able to point me to Flutter classes on lines with questionmarks? (Comments on the filled up lines are also great)
| Android | Flutter | Comment | Android API | Flutter API |
|-------------------------------------+-----------------+---------+---------------------------------------------------------------------------------+------------------------------------------------------------|
| android.content.Context; | ? | | https://developer.android.com/reference/android/content/Context.html | ? |
| android.util.AttributeSet; | ? | | https://developer.android.com/reference/android/util/AttributeSet.html | ? |
| android.graphics.Color; | dart:ui.Color | | https://developer.android.com/reference/android/graphics/Color.html | https://docs.flutter.io/flutter/dart-ui/Color-class.html |
| android.graphics.Canvas; | dart:ui.Canvas | | https://developer.android.com/reference/android/graphics/Canvas.html | https://docs.flutter.io/flutter/dart-ui/Canvas-class.html |
| android.graphics.Rect; | dart:ui.Rect | | https://developer.android.com/reference/android/graphics/Rect.html | https://docs.flutter.io/flutter/dart-ui/Rect-class.html |
| android.graphics.Point; | dart:math.Point | | https://developer.android.com/reference/android/graphics/Point.html | https://docs.flutter.io/flutter/dart-math/Point-class.html |
| android.graphics.Paint; | dart:ui.Paint | | https://developer.android.com/reference/android/graphics/Paint.html | https://docs.flutter.io/flutter/dart-ui/Paint-class.html |
| android.graphics.Region; | ? | | https://developer.android.com/reference/android/graphics/Region.html | ? |
| android.graphics.drawable.Drawable; | ? Picture ? | | https://developer.android.com/reference/android/graphics/drawable/Drawable.html | ? |
| android.view.View; | ? Viewport ? | | https://developer.android.com/reference/android/view/View.html | ? |
During the Android->Flutter code conversion of a graphics application, I ended up using the following mapping of classes. Except of AttributeSet that I ended up not needing, each has more or less corresponding class.
| Android | Flutter | Comment |
|---------------------------------------+------------------------------------------+-----------------------------------------------------------------|
| android.content.Context; | package:flutter:widgets.BuildContext | somewhat equivalent |
| android.util.AttributeSet; | ? | |
| android.graphics.Color; | dart:ui.Color | import 'dart:ui' as ui; // in code: ui.Color |
| android.graphics.Canvas; | dart:ui.Canvas | |
| android.graphics.Rect; | dart:ui.Rect | For operations such as "contains(Offset)" etc |
| android.graphics.Point; | dart:ui.Offset (*not* dart:math.Point) | Offset in context of graphics |
| android.graphics.Paint; | dart:ui.Paint | |
| android.graphics.Region; | dart:ui.Rect | |
| android.graphics.drawable.Drawable; | used CustomPaint - see line below | |
| android.view.View; impl Drawable | package:flutter/widgets.dart.CustomPaint | import 'package:flutter/widgets.dart' as widgets; |
| - (continuation line) | - combined with CustomPainter | - in code: widgets.CustomPaint, widgets.CustomPainter |
| android.graphics.Path | dart:ui.Path | |
| android.graphics.PathEffect | Needed for dash-lines. | there is no dash-lines effect in Dart, intentional, performance |
| android.Text (when drawing on Canvas) | package:flutter/painting.dart.TextSpan | import package:flutter/painting.dart'; |
| - (continuation line) | - *not* widgets.Text | - there are multiple *Text* classes in Dart. |
| | | - TextSpan is for drawing text on Canvas. |
I'm trying to integrate Cygnus to CartoDB but when the Cygnus receives an Orion notify it doesn't store the information on CartoDB.
Following the log trace
time=2016-12-19T14:37:13.657Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=intercept | msg=com.telefonica.iot.cygnus.interceptors.NGSIGroupingInterceptor[127] : [gi] Event put in the channel, id=1724500127
time=2016-12-19T14:37:13.658Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=debug | msg=org.mortbay.log.Slf4jLog[40] : RESPONSE /notify 200
time=2016-12-19T14:37:13.659Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=debug | msg=org.mortbay.log.Slf4jLog[40] : EOF
time=2016-12-19T14:37:15.165Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=processNewBatches | msg=com.telefonica.iot.cygnus.sinks.NGSISink[509] : Batch completed, persisting it
time=2016-12-19T14:37:15.166Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=persistBatch | msg=com.telefonica.iot.cygnus.sinks.NGSICartoDBSink[333] : [cartodb-sink] Processing sub-batch regarding the default_/_waste1_wastectr destination
time=2016-12-19T14:37:15.166Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=aggregate | msg=com.telefonica.iot.cygnus.sinks.NGSICartoDBSink$CartoDBAggregator[508] : [cartodb-sink] Processing context element (id=waste1, type=wastectr)
time=2016-12-19T14:37:15.166Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=aggregate | msg=com.telefonica.iot.cygnus.sinks.NGSICartoDBSink$CartoDBAggregator[530] : [cartodb-sink] Processing context attribute (name=category, type=StructuredValue)
time=2016-12-19T14:37:15.167Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=aggregate | msg=com.telefonica.iot.cygnus.sinks.NGSICartoDBSink$CartoDBAggregator[530] : [cartodb-sink] Processing context attribute (name=status, type=Text)
time=2016-12-19T14:37:15.171Z | lvl=DEBUG | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=processNewBatches | msg=com.telefonica.iot.cygnus.sinks.NGSISink[523] : [java.util.ArrayList.rangeCheck(Unknown Source), java.util.ArrayList.get(Unknown Source), com.telefonica.iot.cygnus.sinks.NGSICartoDBSink$CartoDBAggregator.getRows(NGSICartoDBSink.java:410), com.telefonica.iot.cygnus.sinks.NGSICartoDBSink.persistRawAggregation(NGSICartoDBSink.java:552), com.telefonica.iot.cygnus.sinks.NGSICartoDBSink.persistBatch(NGSICartoDBSink.java:362), com.telefonica.iot.cygnus.sinks.NGSISink.processNewBatches(NGSISink.java:510), com.telefonica.iot.cygnus.sinks.NGSISink.process(NGSISink.java:327), org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68), org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147), java.lang.Thread.run(Unknown Source)]
time=2016-12-19T14:37:15.171Z | lvl=WARN | corr=68c76dfc-c5f8-11e6-9346-fa163e00324f | trans=e2827b21-972d-4692-b25a-e1b252961491 | srv=default | subsrv=/ | comp=cygnus-ngsi | op=processNewBatches | msg=com.telefonica.iot.cygnus.sinks.NGSISink[541] : Index: 0, Size: 0
time=2016-12-19T14:37:16.090Z | lvl=DEBUG | corr= | trans= | srv= | subsrv= | comp=cygnus-ngsi | op=run | msg=org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable[126] : Checking file:/usr/cygnus/conf/agent_ngsi_1.conf for changes
The configuration of agent_ngsi_1.conf is
The next tree fields set the sources, sinks and channels used by Cygnus
cygnus-ngsi.sinks = cartodb-sink
cygnus-ngsi.channels = cartodb-channel
Source configuration
# channel name where to write the notification events
#cygnus-ngsi.sources.http-source.channels = hdfs-channel mysql-channel ckan- channel mongo-channel sth-channel kafka-channel dynamodb-channel postgresql- channel
cygnus-ngsi.sources.http-source.channels = cartodb-channel
# source class, must not be changed
cygnus-ngsi.sources.http-source.type = org.apache.flume.source.http.HTTPSource
# listening port the Flume source will use for receiving incoming notifications
cygnus-ngsi.sources.http-source.port = 5050
# Flume handler that will parse the notifications, must not be changed
cygnus-ngsi.sources.http-source.handler = com.telefonica.iot.cygnus.handlers.NGSIRestHandler
# URL target
cygnus-ngsi.sources.http-source.handler.notification_target = /notify
# default service (service semantic depends on the persistence sink)
cygnus-ngsi.sources.http-source.handler.default_service = default
# default service path (service path semantic depends on the persistence sink)
cygnus-ngsi.sources.http-source.handler.default_service_path = /
# source interceptors, do not change
cygnus-ngsi.sources.http-source.interceptors = ts gi
# TimestampInterceptor, do not change
cygnus-ngsi.sources.http-source.interceptors.ts.type = timestamp
# GroupingInterceptor, do not change
cygnus-ngsi.sources.http-source.interceptors.gi.type = com.telefonica.iot.cygnus.interceptors.NGSIGroupingInterceptor$Builder
# Grouping rules for the GroupingInterceptor, put the right absolute path to the file if necessary
# see the doc/design/interceptors document for more details
cygnus-ngsi.sources.http-source.interceptors.gi.grouping_rules_conf_file = /usr/cygnus/conf/grouping_rules.conf
NGSICartoDBSink configuration
# sink class, must not be changed
cygnus-ngsi.sinks.cartodb-sink.type = com.telefonica.iot.cygnus.sinks.NGSICartoDBSink
# channel name from where to read notification events
cygnus-ngsi.sinks.cartodb-sink.channel = cartodb-channel
# true if the grouping feature is enabled for this sink, false otherwise
cygnus-ngsi.sinks.cartodb-sink.enable_grouping = false
# true if name mappings are enabled for this sink, false otherwise
cygnus-ngsi.sinks.cartodb-sink.enable_name_mappings = false
# true if lower case is wanted to forced in all the element names, false otherwise
cygnus-ngsi.sinks.cartodb-sink.enable_lowercase = false
# select the data_model: dm-by-service-path or dm-by-entity
cygnus-ngsi.sinks.cartodb-sink.data_model = dm-by-entity
# absolute path to the CartoDB file containing the mapping between FIWARE service/CartoDB usernames and CartoDB API Keys
cygnus-ngsi.sinks.cartodb-sink.keys_conf_file = /usr/cygnus/conf/cartodb_keys.conf
# if true the latitude and longitude values are exchanged, false otherwise
#cygnus-ngsi.sinks.cartodb-sink.swap_coordinates = true
# if true, a raw based storage is done, false otherwise
cygnus-ngsi.sinks.cartodb-sink.enable_raw = true
# if true, a distance based storage is done, false otherwise
cygnus-ngsi.sinks.cartodb-sink.enable_distance = false
# number of notifications to be included within a processing batch
#cygnus-ngsi.sinks.cartodb-sink.batch_size = 100
# timeout for batch accumulation
#cygnus-ngsi.sinks.cartodb-sink.batch_timeout = 30
# number of retries upon persistence error
#cygnus-ngsi.sinks.cartodb-sink.batch_ttl = 10
# maximum number of connections allowed for a Http-based HDFS backend
#cygnus-ngsi.sinks.cartodb-sink.backend.max_conns = 500
# maximum number of connections per route allowed for a Http-based HDFS backend
#cygnus-ngsi.sinks.cartodb-sink.backend.max_conns_per_route = 100
I'm trying to use a JBoss AMQ 6.3 to act a a bridge between a WebSphere MQ hosted on mainframe and applications running in distributed environments. In order to make it work I've successfully installed the OSGi libraries for WebSphere MQ and deployed a camel component file:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="eager">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="wmq:queue:DLC1.PBX.LS000004"/>
<to uri="activemq:queue:GreenQueue?username=jbamq&password=ThisIsABig10-4"/>
</route>
<route>
<from uri="activemq:queue:BlueQueue?username=jbamq&password=ThisIsABig10-4" />
<to uri="wmq:queue:DLC1.PBX.LE000002" />
</route>
</camelContext>
<bean id="amqConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
<bean id="pooledConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
<property name="maxConnections" value="8" />
<property name="connectionFactory" ref="amqConnectionFactory" />
</bean>
<bean id="amqConfig"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory"/>
<property name="concurrentConsumers" value="10"/>
</bean>
<bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="amqConfig"/>
</bean>
<bean id="wmqConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory">
<property name="hostName" value="DLC1.thisorganization.org" />
<property name="port" value="1414" />
<property name="queueManager" value="DLC1" />
<property name="channel" value="DLC1.PBX010.SVRCONN" />
<property name="transportType" value="1" />
<property name="shareConvAllowed" value="0" />
</bean>
<bean id="wmq" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="wmqConnectionFactory"/>
<property name="maxConcurrentConsumers" value="5"/>
<property name="cacheLevelName" value="CACHE_NONE"/>
</bean>
</blueprint>
At the beginning the component just deployed when starting JBoss AMQ but one week later it is no longer able to start, throwing the following error:
2016-11-16 16:24:43,028 | ERROR | FelixStartLevel | BlueprintContainerImpl | container.BlueprintContainerImpl 409 | 21 - org.apache.aries.blueprint.core - 1.4.5 | Unable to start blueprint container for bundle DeployedQueues.xml/0.0.0
org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting property: PropertyDescriptor <name: connectionFactory, getter: null, setter: [class org.apache.camel.component.jms.JmsComponent.setConnectionFactory(interface javax.jms.ConnectionFactory)]
at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:963)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:929)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:910)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:844)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[21:org.apache.aries.blueprint.core:1.4.5]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_80]
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:247)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:688)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:383)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:270)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[15:org.apache.aries.util:1.1.0]
at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[15:org.apache.aries.util:1.1.0]
at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[15:org.apache.aries.util:1.1.0]
at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[15:org.apache.aries.util:1.1.0]
at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[15:org.apache.aries.util:1.1.0]
at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)[org.apache.felix.framework-4.4.1.jar:]
at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)[org.apache.felix.framework-4.4.1.jar:]
at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)[org.apache.felix.framework-4.4.1.jar:]
at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)[org.apache.felix.framework-4.4.1.jar:]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)[org.apache.felix.framework-4.4.1.jar:]
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)[org.apache.felix.framework-4.4.1.jar:]
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)[org.apache.felix.framework-4.4.1.jar:]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_80]
Caused by: java.lang.Exception: Unable to convert value | com.ibm.mq.jms.MQConnectionFactory#c79b6829 :-
| | XMSC_ADMIN_OBJECT_TYPE :- 20
| | XMSC_ASYNC_EXCEPTIONS :- 1
| | XMSC_CLIENT_ID :- <null>
| | XMSC_CONNECTION_TYPE :- 1
| | XMSC_CONNECTION_TYPE_NAME :- com.ibm.msg.client.wmq
| | XMSC_RTT_DIRECT_AUTH :- 0
| | XMSC_RTT_PROXY_HOSTNAME :- <null>
| | XMSC_RTT_PROXY_PORT :- 443
| | XMSC_WMQ_BROKER_CC_SUBQ :- SYSTEM.JMS.ND.CC.SUBSCRIBER.QUEUE
| | XMSC_WMQ_BROKER_CONTROLQ :- SYSTEM.BROKER.CONTROL.QUEUE
| | XMSC_WMQ_BROKER_PUBQ :- SYSTEM.BROKER.DEFAULT.STREAM
| | XMSC_WMQ_BROKER_QMGR :-
| | XMSC_WMQ_BROKER_SUBQ :- SYSTEM.JMS.ND.SUBSCRIBER.QUEUE
| | XMSC_WMQ_CCDTURL :- <null>
| | XMSC_WMQ_CF_DESCRIPTION :- <null>
| | XMSC_WMQ_CHANNEL :- SQD1.AXB010.SVRCONN
| | XMSC_WMQ_CLEANUP_INTERVAL :- 3600000
| | XMSC_WMQ_CLEANUP_LEVEL :- 1
| | XMSC_WMQ_CLIENT_RECONNECT_OPTIONS :- 0
| | XMSC_WMQ_CLIENT_RECONNECT_TIMEOUT :- 1800
| | XMSC_WMQ_CLONE_SUPPORT :- 0
| | XMSC_WMQ_CONNECTION_MODE :- 1
| | XMSC_WMQ_CONNECTION_NAME_LIST_INT :-
| | | 0 :- SQD1.axa-seguros-es.intraxa(1414)
| | XMSC_WMQ_CONNECTION_TAG :- [B#32525605
| | XMSC_WMQ_CONNECT_OPTIONS :- 0
| | XMSC_WMQ_HEADER_COMP :-
| | | 0 :- 0
| | XMSC_WMQ_LOCAL_ADDRESS :-
| | XMSC_WMQ_MAP_NAME_STYLE :- true
| | XMSC_WMQ_MAX_BUFFER_SIZE :- 1000
| | XMSC_WMQ_MESSAGE_RETENTION :- 1
| | XMSC_WMQ_MESSAGE_SELECTION :- 0
| | XMSC_WMQ_MSG_BATCH_SIZE :- 10
| | XMSC_WMQ_MSG_COMP :-
| | | 0 :- 0
| | XMSC_WMQ_OPT_PUB :- false
| | XMSC_WMQ_OUTCOME_NOTIFICATION :- true
| | XMSC_WMQ_POLLING_INTERVAL :- 5000
| | XMSC_WMQ_PROCESS_DURATION :- 0
| | XMSC_WMQ_PROVIDER_VERSION :- unspecified
| | XMSC_WMQ_PUB_ACK_INTERVAL :- 25
| | XMSC_WMQ_QMGR_CCSID :- 819
| | XMSC_WMQ_QUEUE_MANAGER :- SQD1
| | XMSC_WMQ_RECEIVE_EXIT :- <null>
| | XMSC_WMQ_RECEIVE_EXIT_INIT :- <null>
| | XMSC_WMQ_RECEIVE_ISOLATION :- 0
| | XMSC_WMQ_RESCAN_INTERVAL :- 5000
| | XMSC_WMQ_SECURITY_EXIT :- <null>
| | XMSC_WMQ_SECURITY_EXIT_INIT :- <null>
| | XMSC_WMQ_SEND_CHECK_COUNT :- 0
| | XMSC_WMQ_SEND_EXIT :- <null>
| | XMSC_WMQ_SEND_EXIT_INIT :- <null>
| | XMSC_WMQ_SHARE_CONV_ALLOWED :- 0
| | XMSC_WMQ_SPARSE_SUBSCRIPTIONS :- false
| | XMSC_WMQ_SSL_CERT_STORES_COL :- <null>
| | XMSC_WMQ_SSL_CERT_STORES_STR :- <null>
| | XMSC_WMQ_SSL_CIPHER_SUITE :- <null>
| | XMSC_WMQ_SSL_FIPS_REQUIRED :- false
| | XMSC_WMQ_SSL_KEY_RESETCOUNT :- 0
| | XMSC_WMQ_SSL_PEER_NAME :- <null>
| | XMSC_WMQ_SSL_SOCKET_FACTORY :- <null>
| | XMSC_WMQ_STATUS_REFRESH_INTERVAL :- 60000
| | XMSC_WMQ_SUBSCRIPTION_STORE :- 1
| | XMSC_WMQ_SYNCPOINT_ALL_GETS :- false
| | XMSC_WMQ_TARGET_CLIENT_MATCHING :- true
| | XMSC_WMQ_TEMPORARY_MODEL :- SYSTEM.DEFAULT.MODEL.QUEUE
| | XMSC_WMQ_TEMP_Q_PREFIX :-
| | XMSC_WMQ_TEMP_TOPIC_PREFIX :-
| | XMSC_WMQ_USE_CONNECTION_POOLING :- true
| | brokerVersion :- -1
| | failIfQuiesce :- 1
| | multicast :- 0
| | version :- 7
| | wildcardFormat :- 0 to type javax.jms.ConnectionFactory
at org.apache.aries.blueprint.container.AggregateConverter.convert(AggregateConverter.java:184)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BlueprintRepository.convert(BlueprintRepository.java:402)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.convert(ReflectionUtils.java:396)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.utils.ReflectionUtils$MethodPropertyDescriptor.internalSet(ReflectionUtils.java:630)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.set(ReflectionUtils.java:380)[21:org.apache.aries.blueprint.core:1.4.5]
at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:961)[21:org.apache.aries.blueprint.core:1.4.5]
... 28 more
I suspect it stopped working once it received the first message from WebSphereMQ
Finally I managed to deploy the camel component by using a workaround. Once the JBoss A-MQ server is started I login in the web console and go to the OSGi tab, then select to show all bundles and filter by jms.
For each bundle I click on it and on the next screen click the reload button:
Well, perhaps not all bundles are needed to reload but this way finally the Camel component is deployed
I'd like to build a Flow such as represented in the following asciiFlow :
Custom Flow
+-------------------------------------------------------------+
| |
| +------------------+ |
| | | |
| | +---------------------------------------------->
| | | |
+---------> CustomFanOut2 | +--------------------+ |
| | | | | |
| | +-------> CustomSink | |
| +------------------+ | | |
| +--------------------+ |
| |
+-------------------------------------------------------------+
Of course, I can use GraphDSL, but it boils down to just putting a sink on one of the outlets for CustomFanOut2, so it seems that there could be a method
Graph[FanOutShape2[I, O0, O1], Mat1].to1(sink: Sink[O1, Any]: Flow[I, O0, Mat1]
or equivalents on other inlets and outlets, for other graphs than Source, Flow, Sink and Bidi.
Does such a method exist, or could it exist in some future version of akka-stream? In the case where it would not be possible, why is it so?
I can see that it is possible to add metadata to a Rackspace virtual machine instance.
I want to get a list of running instances, filtered by a particular metatag value.
I can't see how to do so in the documentation however.
is it possible?
You should be able to do so using the openstack client... but it depends on which metatag you're interested in.
You can get a list of all servers:
openstack server list
Will spit something like
+--------------------------------------+------------------+--------+-----------------------------------------------------------------------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+------------------+--------+-----------------------------------------------------------------------------------------------------------+
| 97606ae9-7f18-4a3c-903a-1583d446119b | trysmallwin | ERROR | |
| cb78b8d5-2f03-4a3f-ab26-f389acbd0b76 | Win-try again | ERROR | public=2607:f298:5:101d:f816:3eff:fe9e:5cd4, 208.113.133.90, 2607:f298:5:101d:f816:3eff:fe36:da45, |
| | | | 208.113.133.93, 2607:f298:5:101d:f816:3eff:fe40:57d5, 208.113.133.95 |
| 040751d1-c4c5-47aa-8dec-1d69a468be1c | hnxhdkwskrvwvdwr | ACTIVE | public=2607:f298:5:101d:f816:3eff:fe60:324, 208.113.130.52 |
+--------------------------------------+------------------+--------+-----------------------------------------------------------------------------------------------------------+
note the ID of the server and investigate deeper:
openstack server show 040751d1-c4c5-47aa-8dec-1d69a468be1c
+--------------------------------------+------------------------------------------------------------+
| Field | Value |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | iad-2 |
| OS-EXT-STS:power_state | Running |
| OS-EXT-STS:task_state | None |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2016-07-26T17:32:01.000000 |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | public=2607:f298:5:101d:f816:3eff:fe60:324, 208.113.130.52 |
| config_drive | True |
| created | 2016-07-26T17:31:51Z |
| flavor | gp1.semisonic (50) |
| hostId | e1efd75d1e8f6a7f5bb228a35db13647281996087d39c65af8ce83d9 |
| id | 040751d1-c4c5-47aa-8dec-1d69a468be1c |
| image | Ubuntu-14.04 (03f89ff2-d66e-49f5-ae61-656a006bbbe9) |
| key_name | stef |
| name | hnxhdkwskrvwvdwr |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| project_id | d2fb6996496044158cf977c2129c8660 |
| properties | |
| security_groups | [{u'name': u'default'}] |
| status | ACTIVE |
| updated | 2016-07-26T17:32:01Z |
| user_id | 5b2ca246f39a425f9a833460bf322603 |
+--------------------------------------+------------------------------------------------------------+
openstack --f json will output the same stuff but in json format that you can more easily manipulate programmatically.
HTH