# # Copyright (c) 2014 Aconex # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed 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. See the GNU General Public License # for more details. # use strict; package PCP::Queue; use Digest::MD5 qw(md5); sub new { my $class = shift; my $self = { _name => shift, _rest_client => shift, }; bless $self, $class; return $self; } sub attribute_for { my ($self, $attribute) = @_; my $camel_case_attribute = "_" . $attribute; $camel_case_attribute =~ s/_(\w)/\U$1/g; return $self->query($camel_case_attribute); } sub query { my ($self, $value) = @_; my $response = $self->{_rest_client}->get("/api/jolokia/read/" . $self->{_name} . "?ignoreErrors=true"); return undef unless defined($response); return $response->{'value'}->{$value}; } sub short_name { my ($self) = @_; # parse fully qualified bean name such as ... # "org.apache.activemq:brokerName=localhost,destinationName=queue1,destinationType=Queue,type=Broker" # ... ame into a hash of key/values. my %bean_name = split(/[=,]/, $self->{_name}); return $bean_name{"destinationName"}; } 1;