Skip to content

Commit

Permalink
#123 close to being able to do a remote query for component names on …
Browse files Browse the repository at this point in the history
…a remote profile container
  • Loading branch information
jstrachan committed Jun 7, 2013
1 parent 1c5327c commit d103a68
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 3 deletions.
49 changes: 46 additions & 3 deletions hawtio-web/src/main/webapp/app/camel/js/endpointChooser.ts
Expand Up @@ -158,6 +158,20 @@ module Camel {
}
};

$scope.jolokia = jolokia;

// lets see if we need to use a remote jolokia container
var versionId = $scope.branch;
var profileId = $scope.pageId;
if (profileId && versionId) {
var idx = profileId.lastIndexOf("/");
if (idx) {
profileId = profileId.substring(0, idx);
}
console.log("finding jolokia " + profileId + " " + versionId);
Fabric.profileWebAppURL(jolokia, "org.jolokia", profileId, versionId, onJolokiaUrl, onJolokiaUrl);
}

var silentOptions = {silent: true};

$scope.$watch('workspace.selection', function () {
Expand All @@ -180,7 +194,7 @@ module Camel {
var endpointParameters = {};
var completionText = $scope.endpointPath || "";
if (mbean && componentName && completionText) {
answer = jolokia.execute(mbean, 'completeEndpointPath', componentName, endpointParameters, completionText, onSuccess(null, silentOptions));
answer = $scope.jolokia.execute(mbean, 'completeEndpointPath', componentName, endpointParameters, completionText, onSuccess(null, silentOptions));
}
return answer;
};
Expand All @@ -189,7 +203,13 @@ module Camel {
$scope.componentNames = null;
var mbean = findCamelContextMBean();
if (mbean) {
jolokia.execute(mbean, 'findComponentNames', onSuccess(onComponents, silentOptions));
//$scope.jolokia.execute(mbean, 'findComponentNames', onSuccess(onComponents, silentOptions));
$scope.jolokia.execute(mbean, 'findComponentNames', onSuccess(onComponents));
/*
$scope.jolokia.execute(mbean, 'findComponentNames', onSuccess(onComponents, {error: function (response) {
console.log("FAILED: " + response);
}}));
*/
} else {
console.log("WARNING: No camel context mbean so cannot load component names");
}
Expand All @@ -198,12 +218,13 @@ module Camel {
$scope.loadEndpointSchema = (componentName) => {
var mbean = findCamelContextMBean();
if (mbean && componentName) {
jolokia.execute(mbean, 'componentParameterJsonSchema', componentName, onSuccess(onEndpointSchema, silentOptions));
$scope.jolokia.execute(mbean, 'componentParameterJsonSchema', componentName, onSuccess(onEndpointSchema, silentOptions));
}
};

function onComponents(response) {
$scope.componentNames = response;
console.log("===== onComponents: " + response);
$scope.hasComponentNames = $scope.componentNames ? true : false;
Core.$apply($scope);
}
Expand Down Expand Up @@ -236,6 +257,14 @@ module Camel {
}

function findCamelContextMBean() {
// we could be remote to lets query jolokia
var results = $scope.jolokia.search("org.apache.camel:*,type=context", onSuccess(null));
//var results = $scope.jolokia.search("org.apache.camel:*", onSuccess(null));
if (results && results.length) {
console.log("===== Got results: " + results);
return results[0];
}

var mbean = Camel.getSelectionCamelContextMBean(workspace);
if (!mbean && $scope.findProfileCamelContext) {
// TODO as a hack for now lets just find any camel context we can
Expand All @@ -245,5 +274,19 @@ module Camel {
return mbean;
}

function onJolokiaUrl(response) {
if (response) {
var url = response.value;
console.log("========== onJolokiaURL: " + url);
if (url) {
var jolokiaParams = {url: url, canonicalNaming: false, ignoreErrors: true, mimeType: 'application/json'};
// TODO dirty hack!!!
jolokiaParams["username"] = "admin";
jolokiaParams["password"] = "admin";
$scope.jolokia = new Jolokia(jolokiaParams);
$scope.loadEndpointNames();
}
}
}
}
}
4 changes: 4 additions & 0 deletions hawtio-web/src/main/webapp/app/fabric/js/helpers.ts
Expand Up @@ -76,6 +76,10 @@ module Fabric {
doAction('deleteProfile(java.lang.String, java.lang.String)', jolokia, [version, id], success, error);
}

export function profileWebAppURL(jolokia, webAppId, profileId, versionId, success, error) {
doAction('profileWebAppURL', jolokia, [webAppId, profileId, versionId], success, error);
}

export function doAction(action, jolokia, arguments, success, error) {
jolokia.request(
{
Expand Down

0 comments on commit d103a68

Please sign in to comment.