Esempio n. 1
0
var exec = function (fn, request, response, session) {
    var es = require('store'),
        carbon = require('carbon'),
        tenant = es.server.tenant(request, session),
        user = es.server.current(session);
    var tenantApi = require('/modules/tenant-api.js').api;
    var tenantId;
    var tenantDetails = tenantApi.createTenantDetails(request, session);
    tenantId = tenantDetails.tenantId;
    //Determine if the tenant domain was not resolved
    if(tenantId===-1){
        response.sendError(404,'Tenant:'+tenantDetails.domain+' not registered');
        return;
    }
    var app = require('rxt').app;
    if(log.isDebugEnabled()){
        log.debug('Checking for asset types hot deployment');
    }
    if(app.isAssetTypesHotDeployed(tenantId)){
        app.hotDeployAssetTypes(tenantId);
        if(log.isDebugEnabled()){
            log.debug('Finished hot deployment of asset types');
        }
    }
    if(log.isDebugEnabled()){
        log.debug('Finished checking for asset types hot deployment');
    }
    es.server.sandbox({
        tenantId: tenantId,
        username: user ? user.username : carbon.user.anonUser,
        request: request
    }, function () {
        var configs = require('/config/store.js').config();
        return fn.call(null, {
            tenant: tenant,
            server: es.server,
            usr: es.user,
            user: user,
            store: require('/modules/store.js').store(tenantId, session),
            configs: configs,
            request: request,
            response: response,
            session: session,
            application: application,
            event: require('event'),
            params: request.getAllParameters(),
            urlParams:tenantDetails.urlParams,
            files: request.getAllFiles(),
            matcher: new URIMatcher(request.getRequestURI()),
            site: require('/modules/site.js'),
            log: new Log(request.getMappedPath())
        });
    });
};
Esempio n. 2
0
 pageDecorators.popularAssets = function(ctx, page) {
     var app = require('rxt').app;
     var asset = require('rxt').asset;
     var ratingApi = require('/modules/rating-api.js').api;
     var assets = {};
     var items = [];
     var assetsOfType;
     var am;
     var type;
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     var tenantAssetResources;
     //Support for cross tenant views
     ctx = tenantAppResources.context;
     var types = app.getActivatedAssets(ctx.tenantId);
     for (var index in types) {
         type = types[index];
         tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, {
             type: type
         });
         am = tenantAssetResources.am;
         // if (ctx.isAnonContext) {
         //     am = asset.createAnonAssetManager(ctx.session, type, ctx.tenantId);
         // } else {
         //     am = asset.createUserAssetManager(ctx.session, type);
         // }
         assetsOfType = am.popularAssets();
         ratingApi.addRatings(assetsOfType, am, ctx.tenantId, ctx.username);
         items = items.concat(assetsOfType);
     }
     page.popularAssets = items;
 };
Esempio n. 3
0
 pageDecorators.navigationBar = function(ctx, page, utils) {
     var app = require('rxt').app;
     //Change the context to support cross tenant views
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     //Support for cross tenant views
     ctx = tenantAppResources.context;
     var rxtManager = ctx.rxtManager;
     //Obtain all of the available rxt types
     var availableTypes = app.getActivatedAssets(ctx.tenantId);
     var types = [];
     var type;
     var currentType;
     page.navigationBar = {};
     for (var index in availableTypes) {
         type = availableTypes[index];
         if (permissionsAPI.hasAssetPermission(permissionsAPI.ASSET_LIST, type, ctx.tenantId, ctx.username)) {
             currentType = rxtManager.getRxtTypeDetails(type);
             currentType.selected = false;
             currentType.listingUrl = utils.buildAssetPageUrl(currentType.shortName, '/list');
             if (currentType.shortName == ctx.assetType) {
                 currentType.selected = true;
             }
             types.push(currentType);
         }
     }
     page.navigationBar.types = types;
     return page;
 };
Esempio n. 4
0
 pageDecorators.socialFeature = function(ctx, page) {
     var app = require('rxt').app;
     var constants = require('rxt').constants;
     if (!app.isFeatureEnabled(ctx.tenantId, constants.SOCIAL_FEATURE)) {
         log.debug('social feature has been disabled.');
         return page;
     }
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     //Support for cross tenant views
     ctx = tenantAppResources.context;
     var socialFeatureDetails = app.getSocialFeatureDetails(ctx.tenantId);
     var domain = carbon.server.tenantDomain({
         tenantId: ctx.tenantId
     });
     socialFeatureDetails.keys.urlDomain = domain; //getDomainFromURL(request);
     page.features[constants.SOCIAL_FEATURE] = socialFeatureDetails;
     return page;
 };
Esempio n. 5
0
 pageDecorators.recentAssetsOfActivatedTypes = function(ctx, page) {
     var app = require('rxt').app;
     var asset = require('rxt').asset;
     var assets = {};
     var items = [];
     var assetsByType = [];
     var am;
     var type;
     var rxtDetails;
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     var tenantAssetResources;
     // Supporting cross tenant views
     ctx = tenantAppResources.context;
     types = app.getActivatedAssets(ctx.tenantId);
     var typeDetails;
     var ratingApi = require('/modules/rating-api.js').api;
     var q = page.assetMeta.q;
     var query = buildRecentAssetQuery(q);
     for (var index in types) {
         typeDetails = ctx.rxtManager.getRxtTypeDetails(types[index]);
         type = typeDetails.shortName;
         tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, {
             type: type
         });
         am = tenantAssetResources.am;
         // if (ctx.isAnonContext) {
         //     am = asset.createAnonAssetManager(ctx.session, type, ctx.tenantId);
         // } else {
         //     am = asset.createUserAssetManager(ctx.session, type);
         // }
         if (permissionsAPI.hasAssetPermission(permissionsAPI.ASSET_LIST, type, ctx.tenantId, ctx.username)) {
             if (query) {
                 query = replaceNameQuery(query, ctx.rxtManager, type);
                 query = replaceCategoryQuery(query, ctx.rxtManager, type);
                 assets = am.recentAssets({
                     q: query
                 });
             } else {
                 assets = am.recentAssets();
             }
             if (assets.length > 0) {
                 //Add subscription details if this is not an anon context
                 if (!ctx.isAnonContext) {
                     addSubscriptionDetails(assets, am, ctx.session);
                 }
                 ratingApi.addRatings(assets, am, ctx.tenantId, ctx.username);
                 items = items.concat(assets);
                 assetsByType.push({
                     assets: assets,
                     rxt: typeDetails
                 });
             }
         }
     }
     page.recentAssets = items;
     page.recentAssetsByType = assetsByType;
 };
Esempio n. 6
0
var resolve = function(path) {
    var themeResolver = this.__proto__.resolve;
    var asset = require('rxt').asset;
    var app = require('rxt').app;
    var appPath = app.resolve(request, path, this.name, this, themeResolver, session);
    if (!appPath) {
        path = asset.resolve(request, path, this.name, this, themeResolver);
    } else {
        path = appPath;
    }
    return path;
};
Esempio n. 7
0
 var isActivatedAsset = function(assetType, tenantId) {
     var app = require('rxt').app;
     var activatedAssets = app.getUIActivatedAssets(tenantId); //ctx.tenantConfigs.assets;
     //return true;
     if (!activatedAssets) {
         throw 'Unable to load all activated assets for current tenant: ' + tenatId + '.Make sure that the assets property is present in the tenant config';
     }
     for (var index in activatedAssets) {
         if (activatedAssets[index] == assetType) {
             return true;
         }
     }
     return false;
 };
Esempio n. 8
0
function isActivatedAssetsType(assetType) {
    var app = require('rxt').app;
    var server = require('carbon').server;
    var tenantId = server.superTenant.tenantId;
    var activatedAssets = app.getUIActivatedAssets(tenantId); //ctx.tenantConfigs.assets;
    if (!activatedAssets) {
        throw 'Unable to load all activated assets for current tenant: ' + tenantId + '.Make sure that the assets property is present in the tenant config';
    }
    for (var index in activatedAssets) {
        if (activatedAssets[index] == assetType) {
            return true;
        }
    }
    return false;
}
Esempio n. 9
0
var resolve = function(path) {
    /*var themeResolver = this.__proto__.resolve;
    var asset = require('rxt').asset;
    path = asset.resolve(request, path, this.name, this, themeResolver);
    return path;*/
    var themeResolver = this.__proto__.resolve;
    var asset = require('rxt').asset;
    var app = require('rxt').app;
    for(var key in this.engine.partials){
    }
    var appPath = app.resolve(request, path, this.name, this, themeResolver, session);
    if (!appPath) {
        path = asset.resolve(request, path, this.name, this, themeResolver);
    } else {
        path = appPath;
    }
    return path;
};
Esempio n. 10
0
 pageDecorators.socialSites = function(ctx, page, meta, util) {
     var utils = require('utils');
     if (!utils.reflection.isArray(page.assets || [])) {
         var asset = page.assets;
         var assetUrl = util.buildAssetPageUrl(asset.type, '/details/' + asset.id);
         var process = require('process');
         var host = process.getProperty('server.host');
         var port = process.getProperty('http.port');
         var app = require('rxt').app;
         var context = app.getContext();
         var tenantSuffix = buildTenantQualifiedUrlSuffix(ctx.session);
         var completeAssetUrl = ('http://' + host + ':' + port + context + tenantSuffix + assetUrl);
         page.socialSites = {};
         var facebook = page.socialSites.facebook = {};
         var gplus = page.socialSites.gplus = {};
         var twitter = page.socialSites.twitter = {};
         var diggit = page.socialSites.diggit = {};
         facebook.href = facebookLink(completeAssetUrl, asset);
         gplus.href = gplusLink(completeAssetUrl, asset);
         twitter.href = twitterLink(completeAssetUrl, asset);
         diggit.href = diggitLink(completeAssetUrl, asset);
     }
     return page;
 };
Esempio n. 11
0
asset.manager = function(ctx) {    
    var tenantAPI = require('/modules/tenant-api.js').api;
    var rxtApp = require('rxt').app;
    var availableUIAssetTypes = rxtApp.getUIActivatedAssets(ctx.tenantId);
    var availableAssetTypes = rxtApp.getActivatedAssets(ctx.tenantId);
    var allAvailableAssetTypes = String(availableAssetTypes.concat(availableUIAssetTypes));

    var getRegistry = function(cSession) {
        var tenantDetails = tenantAPI.createTenantAwareAssetResources(cSession,{type:ctx.assetType});
        if((!tenantDetails)&&(!tenantDetails.am)) {
            log.error('The tenant-api was unable to create a registry instance by resolving tenant details');
            throw 'The tenant-api  was unable to create a registry instance by resolving tenant details';
        }
        return tenantDetails.am.registry;
    };

    var setCustomAssetAttributes = function(asset, userRegistry) {
        var ByteArrayInputStream = Packages.java.io.ByteArrayInputStream;

        var path = asset.path;
        if (path != null) {
            var subPaths = path.split('/');
            var swaggerName = subPaths[subPaths.length - 1];
            var version = subPaths[subPaths.length - 2];
            var resource = userRegistry.registry.get(path);
            var authorUserName = resource.getAuthorUserName();
            var content = resource.getContent();
            var value = '' + new Stream(new ByteArrayInputStream(content));
            asset.swaggerName = swaggerName;
            asset.assetName = swaggerName;
            asset.attributes.overview_name = swaggerName;
            asset.overview_name = swaggerName;
            asset.version = version;
            asset.attributes.overview_version = version;
            asset.overview_version = version;
            asset.authorUserName = authorUserName;
            asset.swaggerContent = value;
        }
    };

    var getAssociations = function(genericArtifacts, userRegistry){
        var associations = [];
        if (genericArtifacts != null) {
            for (var index in genericArtifacts) {
                var deps = {};
                var path = genericArtifacts[index].getPath();
                var mediaType = genericArtifacts[index].getMediaType();
                var name = genericArtifacts[index].getQName().getLocalPart();
                var govUtils = Packages.org.wso2.carbon.governance.api.util.GovernanceUtils;
                var keyName = govUtils.getArtifactConfigurationByMediaType(getRegistry(ctx.session).registry, mediaType).getKey();
                if (isDisabledAsset(keyName)) {
                    continue;
                }
                var subPaths = path.split('/');
                var versionAttribute = ctx.rxtManager.getVersionAttribute(keyName);
                var associationVersion = genericArtifacts[index].getAttribute(versionAttribute);
                // This is only for WSO2 OOTB artifacts which have correct storage path
                if (!associationVersion && (subPaths.length - 2) > -1) {
                    associationVersion = subPaths[subPaths.length - 2]
                }
                var resource = userRegistry.registry.get('/_system/governance' + path);
                var associationUUID = resource.getUUID();
                deps.associationName = name;
                deps.associationType = keyName;
                deps.associationUUID = associationUUID;
                deps.associationVersion = associationVersion;
                associations.push(deps);
            }
        }
        return associations;
    };

    var isDisabledAsset = function (shortName) {
        // This method will return true if shortName not available in allAvailableAssetTypes string.
        var pat1 = new RegExp("^" + shortName + ",");
        var pat2 = new RegExp("," + shortName + "$");
        var pat3 = new RegExp("," + shortName + ",");
        return (!(pat3.test(allAvailableAssetTypes)) && !(pat1.test(allAvailableAssetTypes)) && !(pat2.test(allAvailableAssetTypes)));
    };

    var setDependencies = function(genericArtifact, asset ,userRegistry) {
        var dependencyArtifacts = genericArtifact.getDependencies();
        asset.dependencies = getAssociations(dependencyArtifacts, userRegistry);
    };

    var setDependents = function(genericArtifact, asset, userRegistry) {
        var dependentArtifacts = genericArtifact.getDependents();
        asset.dependents = getAssociations(dependentArtifacts, userRegistry);
    };

    return {
        search: function(query, paging) {
            var assets = this._super.search.call(this, query, paging);
            var userRegistry = getRegistry(ctx.session);
            for (var index in assets) {
                var asset = assets[index];
                try {
                    setCustomAssetAttributes(asset, userRegistry);
                } catch (e){}

                var path = asset.path;
                var subPaths = path.split('/');
                var name = subPaths[subPaths.length - 1];
                asset.name = name;
                asset.version = subPaths[subPaths.length - 2];
                asset.attributes.overview_name = name;
                asset.overview_version = asset.version;
                asset.attributes.overview_version = asset.version;
                asset.attributes.version = asset.version;
            }
            return assets;
        },
        get: function(id) {
            var item;
            try{
                item = this._super.get.call(this, id);
                var subPaths = item.path.split('/');
                item.name = subPaths[subPaths.length - 1];
                item.attributes.overview_name = item.name;
                item.version = subPaths[subPaths.length - 2];
                item.attributes.overview_version = item.version;
                var userRegistry = getRegistry(ctx.session);
                var ByteArrayInputStream = Packages.java.io.ByteArrayInputStream;
                var resource = userRegistry.registry.get(item.path);
                item.authorUserName = resource.getAuthorUserName();
                var content = resource.getContent();
                var value = '' + new Stream(new ByteArrayInputStream(content));
                item.content = value;

                var rawArtifact = this.am.manager.getGenericArtifact(id);
                try {
                    setDependencies(rawArtifact, item, userRegistry);
                } catch (e){}
                try {
                    setDependents(rawArtifact, item, userRegistry);
                } catch (e){}
            } catch(e) {
                log.error(e);
                return null;
            }

            return item;
        },
        list: function(paging) {
            var items = this._super.list.call(this, paging);
            for (var index = 0; index < items.length; index++) {
                var result = items[index];
                var path = result.path;
                var subPaths = path.split('/');
                var name = subPaths[subPaths.length - 1];
                result.name = name;
                result.version = subPaths[subPaths.length - 2];

                result.attributes.overview_name = result.name;
                result.attributes.overview_version = result.version;
            }
            return items;
        },
        getName: function(asset) {
            if(asset.path){
                asset.name = asset.path.substring(asset.path.lastIndexOf("/") + 1);
                asset.overview_name = asset.name;
                asset.attributes.overview_name = asset.name;
                return asset.path.substring(asset.path.lastIndexOf("/") + 1);
            }
            return asset.name;
        },
        getVersion: function(asset) {
            if (!asset.attributes["version"]) {
                var subPaths = asset.path.split('/');
                asset.version = subPaths[subPaths.length - 2];
                asset.attributes["version"] = asset.version;
            }
            asset.attributes["overview_version"] = asset.attributes["version"];
            return asset.attributes["version"];
        },
        getAssetGroup:function(asset){
            var results = this._super.getAssetGroup.call(this,asset);
            for (var index = 0; index < results.length; index++) {
                var result = results[index];
                var path = result.path;
                var subPaths = path.split('/');
                var name = subPaths[subPaths.length - 1];
                result.name = name;
                result.version = subPaths[subPaths.length - 2];
                result.attributes.overview_name = name;
                result.overview_version = result.version;
                result.attributes.overview_version = result.version;
                result.attributes.version = result.version;
            }
            return results;
        }
    };
};
Esempio n. 12
0
asset.manager = function(ctx) {
    var tenantAPI = require('/modules/tenant-api.js').api;
    var rxtApp = require('rxt').app;
    var availableUIAssetTypes = rxtApp.getUIActivatedAssets(ctx.tenantId);
    var availableAssetTypes = rxtApp.getActivatedAssets(ctx.tenantId);
    var allAvailableAssetTypes = String(availableAssetTypes.concat(availableUIAssetTypes));

    var getAssociations = function (genericArtifacts, userRegistry) {
        //Array to store the association names.
        var associations = [];
        if (genericArtifacts != null) {
            for (var index in genericArtifacts) {
                var deps = {};
                var path = genericArtifacts[index].getPath();
                var mediaType = genericArtifacts[index].getMediaType();
                var name = genericArtifacts[index].getQName().getLocalPart();
                var govUtils = Packages.org.wso2.carbon.governance.api.util.GovernanceUtils
                var keyName = govUtils.getArtifactConfigurationByMediaType(getRegistry(ctx.session).registry, mediaType).getKey();
                if (isDisabledAsset(keyName)) {
                    continue;
                }
                var subPaths = path.split('/');
                var versionAttribute = ctx.rxtManager.getVersionAttribute(keyName);
                var associationVersion = genericArtifacts[index].getAttribute(versionAttribute);
                // This is only for WSO2 OOTB artifacts which have correct storage path
                if (!associationVersion && (subPaths.length - 2) > -1) {
                    associationVersion = subPaths[subPaths.length - 2]
                }
                var resource = userRegistry.registry.get('/_system/governance' + path);
                var associationUUID = resource.getUUID();
                deps.associationName = name;
                deps.associationType = keyName;
                deps.associationUUID = associationUUID;
                deps.associationVersion = associationVersion;
                associations.push(deps);
            }
        }
        return associations;
    };

    var isDisabledAsset = function (shortName) {
        // This method will return true if shortName not available in allAvailableAssetTypes string.
        var pat1 = new RegExp("^" + shortName + ",");
        var pat2 = new RegExp("," + shortName + "$");
        var pat3 = new RegExp("," + shortName + ",");
        return (!(pat3.test(allAvailableAssetTypes)) && !(pat1.test(allAvailableAssetTypes)) && !(pat2.test(allAvailableAssetTypes)));
    };

    var setDependencies = function(genericArtifact, asset ,userRegistry) {
        //get dependencies of the artifact.
        var dependencyArtifacts = genericArtifact.getDependencies();
        asset.dependencies = getAssociations(dependencyArtifacts, userRegistry);
    };
    var setDependents = function(genericArtifact, asset, userRegistry) {
        var dependentArtifacts = genericArtifact.getDependents();
        asset.dependents = getAssociations(dependentArtifacts, userRegistry);
    };
    var getRegistry = function(cSession) {
        var tenantDetails = tenantAPI.createTenantAwareAssetResources(cSession,{type:ctx.assetType});
        if((!tenantDetails)&&(!tenantDetails.am)) {
            log.error('The tenant-api was unable to create a registry instance by resolving tenant details');
            throw 'The tenant-api  was unable to create a registry instance by resolving tenant details';
        }
        return tenantDetails.am.registry;
    };

    return {
        search: function(query, paging) {
            var assets = this._super.search.call(this, query, paging);
            return assets;
        },
        get: function(id) {
            //TODO: support services added through WSDL, once multiple lifecycle is supported.
            var asset = this._super.get.call(this, id);
            var userRegistry = getRegistry(ctx.session);
            var rawArtifact = this.am.manager.getGenericArtifact(id);
            try {
                setDependencies(rawArtifact, asset, userRegistry);
            } catch (e){
                log.error('Error occurred while retrieving associated "depends" dependencies');
            }
            try {
                setDependents(rawArtifact, asset, userRegistry);
            } catch (e){
                log.error('Error occurred while retrieving associated "usedBy" dependencies');
            }
            return asset;
        }
    };
};
Esempio n. 13
0
 pageDecorators.recentAssetsOfActivatedTypes = function(ctx, page) {
     var app = require('rxt').app;
     var asset = require('rxt').asset;
     var permissions = require('rxt').permissions;
     var assetAPI = require('/modules/asset-api.js').api;
     var assets = {};
     var items = [];
     var pcItems = [];
     var pcTypeDetails = [];
     var pcAssets = [];
     var assetsByType = [];
     var am;
     var type;
     var rxtDetails;
     var assetMap = {};
     var bookmarkable;
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     var tenantAssetResources;
     // Supporting cross tenant views
     ctx = tenantAppResources.context;
     types = app.getUIActivatedAssets(ctx.tenantId);
     var typeDetails;
     var ratingApi = require('/modules/rating-api.js').api;
     var q = page.assetMeta.q;
     var query = buildRecentAssetQuery(q);
     var username = ctx.username || null;
     var tenantId = ctx.tenantId;
     var canBookmark = function(type) {
         return permissions.hasAssetPermission(permissions.ASSET_BOOKMARK, type, tenantId, username);
     };
     var bookmarkPerms = {};
     if (query) {
         items = asset.advanceSearch(query, null, session, ctx.tenantId)||[];
         ratingApi.addRatings(items, am, ctx.tenantId, ctx.username);
         assetMap = {};
         var template;
         //Sort the results by type
         items.forEach(function(item){
             var type = item.type;
             if(!assetMap[type]){
                 assetMap[type] = [];
             }
             bookmarkable = bookmarkPerms[type];
             if (bookmarkable === undefined) {
                 bookmarkable = (bookmarkPerms[type] = canBookmark(type));
             }
             item.bookmarkable = bookmarkable;
             assetMap[type].push(item);
         });
         //Collect the asset result set along with the rxt definition
         for(var key in assetMap){
             template = ctx.rxtManager.getRxtTypeDetails(key);
             assetsByType.push({
                 assets:assetMap[key],
                 rxt:template
             });
         }
     } else {
         for (var index in types) {
             typeDetails = ctx.rxtManager.getRxtTypeDetails(types[index]);
             type = typeDetails.shortName;
             tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, {
                 type: type
             });
             bookmarkable = bookmarkPerms[type];
             if(bookmarkable === undefined) {
                 bookmarkable = (bookmarkPerms[type] = canBookmark(type));
             }
             am = tenantAssetResources.am;
             if (permissionsAPI.hasAssetPermission(permissionsAPI.ASSET_LIST, type, ctx.tenantId, ctx.username)) {
                 assets = am.recentAssets();
                 if (assets.length > 0) {
                     //Add subscription details if this is not an anon context
                     if (!ctx.isAnonContext) {
                         addSubscriptionDetails(assets, am, ctx.session, bookmarkable);
                     }
                     ratingApi.addRatings(assets, am, ctx.tenantId, ctx.username);
                     items = items.concat(assets);
                     assetsByType.push({
                         assets: assets,
                         rxt: typeDetails
                     });
                 }
             }
         }
     }
     // Display only process type assets for recent assets
     for(var i = 0; i <items.length; i++){
          if(items[i].type == "process"){
             log.debug("Found Process type assets"+ i); 
            var pcCurrentType =ctx.rxtManager.getRxtTypeDetails(items[i].type);
            pcTypeDetails = pcCurrentType ;
            pcItems.push(items[i]);
          }
     }
     
     pcAssets.push({
      assets:pcItems,
      rxt:pcTypeDetails
     });
     
     page.recentAssets = pcItems;
     page.recentAssetsByType = pcAssets;
 };
Esempio n. 14
0
 var resolveContext = function (value) {
     var rxt = require('rxt');
     var context = rxt.app.getContext();
     return value.replace('/%context%', context);
 };
Esempio n. 15
0
 pageDecorators.recentAssetsOfActivatedTypes = function(ctx, page) {
     var app = require('rxt').app;
     var asset = require('rxt').asset;
     var permissions = require('rxt').permissions;
     var assetAPI = require('/modules/asset-api.js').api;
     var assets = {};
     var items = [];
     var assetsByType = [];
     var am;
     var type;
     var rxtDetails;
     var assetMap = {};
     var bookmarkable;
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     var tenantAssetResources;
     // Supporting cross tenant views
     ctx = tenantAppResources.context;
     types = app.getUIActivatedAssets(ctx.tenantId);
     var typeDetails;
     var ratingApi = require('/modules/rating-api.js').api;
     var q = page.assetMeta.q;
     var query = buildRecentAssetQuery(q);
     var username = ctx.username || null;
     var tenantId = ctx.tenantId;
     var canBookmark = function(type) {
         return permissions.hasAssetPermission(permissions.ASSET_BOOKMARK, type, tenantId, username);
     };
     var bookmarkPerms = {};
     
     // check whether the given query is a mediaType search query. Due to REGISTRY-3379.
     // case 1 : Search query provided with mediaType search
     if(isMediaType(query,types)){
         var paging = {'start': 0,
                     'count': 7,
                     'sortOrder': 'desc',
                     'sortBy': 'createdDate',
                     'paginationLimit': 7 };
         tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, {
             type: query.mediaType
         });
         assets = tenantAssetResources.am.advanceSearch(query, paging);
         page.recentAssets = [];
         page.recentAssetsByType = [];
         typeDetails = ctx.rxtManager.getRxtTypeDetails(query.mediaType);
         page.recentAssetsByType.push({
             assets:assets,
             rxt:typeDetails
         });
         return;
     }
     // case 2 : Search query provided without a mediaType search
         for (var index in types) {
             typeDetails = ctx.rxtManager.getRxtTypeDetails(types[index]);
             type = typeDetails.shortName;
             tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, {
                 type: type
             });
             bookmarkable = bookmarkPerms[type];
             if(bookmarkable === undefined) {
                 bookmarkable = (bookmarkPerms[type] = canBookmark(type));
             }
             am = tenantAssetResources.am;
             if (permissionsAPI.hasAssetPermission(permissionsAPI.ASSET_LIST, type, ctx.tenantId, ctx.username)) {
                 if (query) {
                     var paging = {'start': 0,
                                 'count': 7,
                                 'sortOrder': 'desc',
                                 'sortBy': 'createdDate',
                                 'paginationLimit': 7 };
                     assets = am.advanceSearch(query, paging);
                 } else {
                     assets = am.recentAssets();
                 }
                 if (assets.length > 0) {
                     //Add subscription details if this is not an anon context
                     if (!ctx.isAnonContext) {
                         addSubscriptionDetails(assets, am, ctx.session, bookmarkable);
                     }
                     ratingApi.addRatings(assets, am, ctx.tenantId, ctx.username);
                     items = items.concat(assets);
                     assetsByType.push({
                         assets: assets,
                         rxt: typeDetails
                     });
                 }
             }
         }
     page.recentAssets = items;
     page.recentAssetsByType = assetsByType;
 };
Esempio n. 16
0
asset.manager = function(ctx) {
    var configs = require("/extensions/assets/wsdl/config/properties.json");
    var tenantAPI = require('/modules/tenant-api.js').api;
    var rxtApp = require('rxt').app;
    var availableUIAssetTypes = rxtApp.getUIActivatedAssets(ctx.tenantId);
    var availableAssetTypes = rxtApp.getActivatedAssets(ctx.tenantId);
    var allAvailableAssetTypes = String(availableAssetTypes.concat(availableUIAssetTypes));

    /**
     * The function augments the provided query to include published state information
     * @param  {[type]} query [description]
     * @return {[type]}       The provided query object
     */
    var buildPublishedQuery = function(query) {
        //Get all of the published assets
        var publishedStates = ctx.rxtManager.getPublishedStates(ctx.assetType) || [];
        //Determine if there are any published states
        if (publishedStates.length == 0) {
            return query;
        }
        //If there is no query then build a new one
        if (!query) {
            query = {};
        }
        //TODO: Even though an array is sent in only the first search value is accepted
        query.lcState = [publishedStates[0]];
        return query;
    };
    var getRegistry = function(cSession) {
        var tenantDetails = tenantAPI.createTenantAwareAssetResources(cSession,{type:ctx.assetType});
        if((!tenantDetails)&&(!tenantDetails.am)) {
            log.error('The tenant-api was unable to create a registry instance by resolving tenant details');
            throw 'The tenant-api  was unable to create a registry instance by resolving tenant details';
        }
        return tenantDetails.am.registry;
    };
    var setCustomAssetAttributes = function(asset, userRegistry) {
        var ByteArrayInputStream = Packages.java.io.ByteArrayInputStream;
        //check for the wsdl url in the asset json object
        var path = asset.path;
        if (path != null) {
            var subPaths = path.split('/');
            //setting asset.name did not work, as it seems there comes a default 'name'
            //attribute.
            var wsdlname = subPaths[subPaths.length - 1];
            var version = subPaths[subPaths.length - 2];
            var resource = userRegistry.registry.get(path);
            var authorUserName = resource.getAuthorUserName();
            var content = resource.getContent();
            var value = '' + new Stream(new ByteArrayInputStream(content));
            //since this is wsdlcontent.
            asset.wsdlname = wsdlname;
            asset.assetName = wsdlname;
            asset.attributes.overview_name = wsdlname;
            asset.overview_name = wsdlname;
            asset.name = wsdlname;
            asset.version = version;
            asset.attributes.overview_version = version;
            asset.overview_version = version;
            asset.authorUserName = authorUserName;
            asset.wsdlContent = value;
        }
    };
    var getAssociations = function(genericArtifacts, userRegistry){
        //Array to store the association names.
        var associations = [];
        if (genericArtifacts != null) {
            for (var index in genericArtifacts) {
                var deps = {};
                var path = genericArtifacts[index].getPath();
                var mediaType = genericArtifacts[index].getMediaType();
                var name = genericArtifacts[index].getQName().getLocalPart();
                var govUtils = Packages.org.wso2.carbon.governance.api.util.GovernanceUtils;
                var keyName = govUtils.getArtifactConfigurationByMediaType(getRegistry(ctx.session).registry, mediaType).getKey();
                if (isDisabledAsset(keyName)) {
                    continue;
                }
                var subPaths = path.split('/');
                var versionAttribute = ctx.rxtManager.getVersionAttribute(keyName);
                var associationVersion = genericArtifacts[index].getAttribute(versionAttribute);
                // This is only for WSO2 OOTB artifacts which have correct storage path
                if (!associationVersion && (subPaths.length - 2) > -1) {
                    associationVersion = subPaths[subPaths.length - 2]
                }
                var resource = userRegistry.registry.get(configs.depends_asset_path_prefix + path);
                var associationUUID = resource.getUUID();
                deps.associationName = name;
                deps.associationType = keyName;
                deps.associationUUID = associationUUID;
                deps.associationVersion = associationVersion;
                associations.push(deps);
            }
        }
        return associations;
    };

    var isDisabledAsset = function (shortName) {
        // This method will return true if shortName not available in allAvailableAssetTypes string.
        var pat1 = new RegExp("^" + shortName + ",");
        var pat2 = new RegExp("," + shortName + "$");
        var pat3 = new RegExp("," + shortName + ",");
        return (!(pat3.test(allAvailableAssetTypes)) && !(pat1.test(allAvailableAssetTypes)) && !(pat2.test(allAvailableAssetTypes)));
    };

    var setDependencies = function(genericArtifact, asset ,userRegistry) {
        //get dependencies of the artifact.
        var dependencyArtifacts = genericArtifact.getDependencies();
        asset.dependencies = getAssociations(dependencyArtifacts, userRegistry);
    };
    var setDependents = function(genericArtifact, asset, userRegistry) {
        var dependentArtifacts = genericArtifact.getDependents();
        asset.dependents = getAssociations(dependentArtifacts, userRegistry);
    };
    return {
        //due to a bug needed to replicate the 'search' method. JIRA:https://wso2.org/jira/browse/STORE-561
        search: function(query, paging) {
            //query = buildPublishedQuery(query);--commented this inorder to let anystate 
            //to be visible in store.
            var assets = this._super.search.call(this, query, paging);
            var userRegistry = getRegistry(ctx.session);
            for (var index in assets) {
                var asset = assets[index];
                try {
                    setCustomAssetAttributes(asset, userRegistry);
                } catch (e){}

                var path = asset.path;
                var subPaths = path.split('/');
                var name = subPaths[subPaths.length - 1];
                asset.name = name;
                asset.version = subPaths[subPaths.length - 2];
                asset.attributes.overview_name = name;
                asset.overview_version = asset.version;
                asset.attributes.overview_version = asset.version;
                asset.attributes.version = asset.version;
            }
            return assets;
        },
        get: function(id) {
            //TODO: support services added through WSDL, once multiple lifecycle is supported.
            var asset = this._super.get.call(this, id);
            var userRegistry = getRegistry(ctx.session);
            try {
                setCustomAssetAttributes(asset, userRegistry);
            } catch (e){}            //get the GenericArtifactManager
            var rawArtifact = this.am.manager.getGenericArtifact(id);
            try {
                setDependencies(rawArtifact, asset, userRegistry);
            } catch (e){}
            try {
                setDependents(rawArtifact, asset, userRegistry);
            } catch (e){}
            return asset;
        },
        getName: function(asset) {
            if(asset.path){
                asset.name = asset.path.substring(asset.path.lastIndexOf("/") + 1);
                asset.overview_name = asset.name;
                asset.attributes.overview_name = asset.name;
                return asset.path.substring(asset.path.lastIndexOf("/") + 1);
            }
            return asset.name;
        },
        getVersion: function(asset) {
            if (!asset.attributes.version) {
                var subPaths = asset.path.split('/');
                asset.version = subPaths[subPaths.length - 2];
                asset.attributes.version = asset.version;
            }
            asset.attributes["overview_version"] = asset.attributes.version;
            return asset.attributes.version;
        },
        getAssetGroup: function (asset) {
            var results = this._super.getAssetGroup.call(this, asset);
            for (var index = 0; index < results.length; index++) {
                var result = results[index];
                var path = result.path;
                var subPaths = path.split('/');
                var name = subPaths[subPaths.length - 1];
                result.name = name;
                result.version = subPaths[subPaths.length - 2];
                result.attributes.overview_name = name;
                result.overview_version = result.version;
                result.attributes.overview_version = result.version;
                result.attributes.version = result.version;
            }
            return results;
        }
    };
};
Esempio n. 17
0
    var doTermSearch = function (ctx, facetField, paging, authRequired) {
        var terms = [];
        var results;
        var selectedTag;
        var map = new HashMap();
        var mediaType;
        var app = require('rxt').app;
        var asset = require('rxt').asset;
        var searchPage = '/pages/top-assets';
        var rxtManager = ctx.rxtManager;
        if (ctx.assetType) {
            mediaType = rxtManager.getMediaType(ctx.assetType);
            searchPage =  '/assets/'+ctx.assetType+'/list';
        } else {
            var availableTypes = app.getUIActivatedAssets(ctx.tenantId);
            mediaType = '(';
            for (var index in availableTypes) {
                if (availableTypes.hasOwnProperty(index)) {
                    if (index == 0) {
                        mediaType = mediaType + rxtManager.getMediaType(availableTypes[index]);
                    } else {
                        mediaType = mediaType + ' OR ' + rxtManager.getMediaType(availableTypes[index]);
                    }
                }
            }
            mediaType = mediaType + ')';
        }
        log.debug("term search query criteria:facetField " + facetField + " mediaType " + mediaType);

        var q = request.getParameter("q");
        if (q) {
            var options = parse("{" + q + "}");
            /*if (facetField == "tags") {
                map = buildQueryMapTags(ctx, options);
            } else {
                map = buildQueryMap(ctx, options);
            }*/

            if (options.tags) {
                selectedTag = options.tags;
            }
        }

        if (facetField) {
            try {
                buildPaginationContext(paging);
                //results = GovernanceUtils.getTermDataList(map, facetField, mediaType, authRequired);
                var am = getAssetManager(ctx);
                q = q  ? q : (q='');
                q = parse('{' + q + '}' );
                var query = asset.buildQuery(ctx.assetType, rxtManager, app, q);
                results = GovernanceUtils.getTermDataList(query, facetField, mediaType, am.registry.registry);
                var iterator = results.iterator();
                while (iterator.hasNext()) {
                    var current = iterator.next();
                    var term = {};
                    term.value = current.term;
                    term.frequency = current.frequency;
                    term.searchPage = searchPage;
                    if(selectedTag && selectedTag == current.term){
                        term.selected=true;
                    }
                    else{
                        term.selected=false;
                    }
                    terms.push(term);
                }
            } finally {
                destroyPaginationContext();
            }
        }
        return terms;
    };
Esempio n. 18
0
    var doTermSearch = function (ctx, facetField, paging, authRequired) {
        var terms = [];
        var results;
        var categoryField;
        if(ctx.assetType) {
            categoryField = ctx.rxtManager.getCategoryField(ctx.assetType);
        }
        var selectedTag;
        var map = HashMap();
        var mediaType;
        var searchPage = '/pages/top-assets';
        var rxtManager = ctx.rxtManager;
        if (ctx.assetType) {
            mediaType = rxtManager.getMediaType(ctx.assetType);
            searchPage =  '/assets/'+ctx.assetType+'/list';
        } else {
            var availableTypes = app.getUIActivatedAssets(ctx.tenantId);
            mediaType = '(';
            for (var index in availableTypes) {
                if (availableTypes.hasOwnProperty(index)) {
                    if (index == 0) {
                        mediaType = mediaType + rxtManager.getMediaType(availableTypes[index]);
                    } else {
                        mediaType = mediaType + ' OR ' + rxtManager.getMediaType(availableTypes[index]);
                    }
                }
            }
            mediaType = mediaType + ')';
        }
        log.debug("term search query criteria:facetField " + facetField + " mediaType " + mediaType);

        var q = request.getParameter("q");
        if (q) {
            var options = parse("{" + q + "}");
            if (options.category) {
                var list = new ArrayList();
                list.add(options.category);
                if(categoryField) {
                    map.put(categoryField, list);
                }
            }
            if (options.tags) {
                selectedTag = options.tags;
            }
        }

        if (facetField) {
            try {
                buildPaginationContext(paging);
                results = GovernanceUtils.getTermDataList(map, facetField, mediaType, authRequired);
                var iterator = results.iterator();
                while (iterator.hasNext()) {
                    var current = iterator.next();
                    var term = {};
                    term.value = current.term;
                    term.frequency = current.frequency;
                    term.searchPage = searchPage;
                    if(selectedTag && selectedTag == current.term){
                        term.selected=true;
                    }
                    else{
                        term.selected=false;
                    }
                    terms.push(term);
                }
            } finally {
                destroyPaginationContext();
            }
        }
        return terms;
    };