protected void setResource(HttpServletRequest request, boolean config) throws Exception { try { Subject subject = WebUtility.getSubject(request); Integer resourceTypeId = WebUtility.getOptionalIntRequestParameter( request, ParamConstants.RESOURCE_TYPE_ID_PARAM, -1); int groupId = WebUtility.getOptionalIntRequestParameter(request, AttrConstants.GROUP_ID, -1); int parent = WebUtility.getOptionalIntRequestParameter(request, "parent", -1); String[] r = request.getParameterValues("r"); String[] resourceIds = request.getParameterValues("resourceIds"); // TODO rewrite the selection using WebUtility.getMetricsDisplayMode() if ((resourceTypeId > 0) && (parent > 0)) // autogroup { ResourceTypeManagerLocal resourceTypeManager = LookupUtil.getResourceTypeManager(); ResourceType resourceType = resourceTypeManager.getResourceTypeById(subject, resourceTypeId); request.setAttribute(AttrConstants.RESOURCE_TYPE_ATTR, resourceType); request.setAttribute(AttrConstants.TITLE_PARAM_ATTR, resourceType.getName()); request.setAttribute("parent", parent); request.setAttribute(ParamConstants.RESOURCE_TYPE_ID_PARAM, resourceTypeId); if (log.isDebugEnabled()) { log.debug("Autogroup p=" + parent + ", ct=" + resourceTypeId); } } else if (groupId > 0) // compat (or mixed) group { ResourceGroupManagerLocal resourceGroupManager = LookupUtil.getResourceGroupManager(); ResourceGroup group = resourceGroupManager.getResourceGroupById(subject, groupId, null); request.setAttribute(AttrConstants.GROUP_ID, groupId); request.setAttribute(AttrConstants.TITLE_PARAM_ATTR, group.getName()); // TODO more ? } else if ((resourceTypeId > 0) && (parent == -1)) // MeasurementDefinition { ResourceTypeManagerLocal resourceTypeManager = LookupUtil.getResourceTypeManager(); ResourceType resourceType = resourceTypeManager.getResourceTypeById(subject, resourceTypeId); request.setAttribute(AttrConstants.RESOURCE_TYPE_ATTR, resourceType); request.setAttribute(ParamConstants.RESOURCE_TYPE_ID_PARAM, resourceTypeId); } else if ((r != null) && (r.length > 0)) // multiple scathered resources { log.trace("Multiple resources not handled yet"); // TODO what do we do here? } else if ((resourceIds != null) && (resourceIds.length > 0)) { log.trace("Multiple resources not yet handled"); // TODO what to we do here? } else // single resource { Integer resourceId = WebUtility.getRequiredIntRequestParameter(request, ParamConstants.RESOURCE_ID_PARAM); ResourceManagerLocal resourceManager = LookupUtil.getResourceManager(); Resource resource = resourceManager.getResourceById(subject, resourceId); ResourceUIBean resourceUIBean = new ResourceUIBean(resource, subject); request.setAttribute(AttrConstants.RESOURCE_ATTR, resource); request.setAttribute(AttrConstants.RESOURCE_ID_ATTR, resourceId); request.setAttribute(AttrConstants.TITLE_PARAM_ATTR, resource.getName()); request.setAttribute( AttrConstants.PERFORMANCE_SUPPORTED_ATTR, resourceUIBean.getFacets().isCallTime()); } } catch (ResourceNotFoundException e) { RequestUtils.setError(request, MessageConstants.ERR_RESOURCE_NOT_FOUND); } }
/** Get a list of the individual 'child resources' of that autogroup. */ private List<AutoGroupComposite> getAutoGroupChildren( Subject subject, int parentId, int resourceTypeId) { List<AutoGroupComposite> children = new ArrayList<AutoGroupComposite>(); ResourceManagerLocal resourceManager = LookupUtil.getResourceManager(); ResourceTypeManagerLocal resourceTypeMananger = LookupUtil.getResourceTypeManager(); Resource parentResource = resourceManager.getResourceById(subject, parentId); ResourceType resourceType = null; try { resourceType = resourceTypeMananger.getResourceTypeById(subject, resourceTypeId); } catch (ResourceTypeNotFoundException e) { return children; // empty list if we don't know the child type } if ((resourceType != null) && (parentResource != null)) { // first get the resources in the autogroup List<ResourceWithAvailability> resourcesForAutoGroup = resourceManager.findResourcesByParentAndType(subject, parentResource, resourceType); int i = 0; int[] resourceIds = new int[resourcesForAutoGroup.size()]; for (ResourceWithAvailability resourceInAutoGroup : resourcesForAutoGroup) { int id = resourceInAutoGroup.getResource().getId(); resourceIds[i++] = id; } // And then the composite to return List<AutoGroupComposite> composites = resourceManager.findResourcesAutoGroups(subject, resourceIds); return composites; } return children; // empty }
// @PostConstruct // when AS7-5530 is fixed, uncomment this and remove class // StartupBeanToWorkaroundAS7_5530 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public void init() throws RuntimeException { secureNaming(); initialized = false; log.info("All business tier deployments are complete - finishing the startup..."); // get singletons right now so we load the classes immediately into our classloader AlertConditionCacheCoordinator.getInstance(); SessionManager.getInstance(); AlertSerializer.getSingleton(); AvailabilityReportSerializer.getSingleton(); // load resource facets cache try { resourceTypeManager.reloadResourceFacetsCache(); } catch (Throwable t) { log.error("Could not load ResourceFacets cache.", t); } // Before starting determine the operating mode of this server and // take any necessary initialization action. Must happen before comm startup since listeners // may be added. initializeServer(); // The order here is important!!! // IF YOU WANT TO CHANGE THE ORDER YOU MUST GET THE CHANGE PEER-REVIEWED FIRST BEFORE COMMITTING // IT!!! // // If we start the scheduler before the comm layer, what happens if a stored job needs to send a // message? // But if we start the comm layer before the scheduler, what happens if a message is received // that needs // a job scheduled for it? I think the former is more likely to happen than the latter // (that is, a scheduled job would more likely need to send a message; as opposed to an incoming // message // causing a job to be scheduled), so that explains the ordering of the comm layer and the // scheduler. startHibernateStatistics(); initScheduler(); // make sure this is initialized before starting the plugin deployer startPluginDeployer(); // make sure this is initialized before starting the server plugin // container startServerPluginContainer(); // before comm in case an agent wants to talk to it installJaasModules(); startServerCommunicationServices(); startScheduler(); scheduleJobs(); // startAgentClients(); // this could be expensive if we have large number of agents so skip it // and we'll create them lazily // startEmbeddedAgent(); // this is obsolete - we no longer have an embedded agent registerShutdownListener(); registerPluginDeploymentScannerJob(); logServerStartedMessage(); initialized = true; return; }
private ResourceType loadResourceTypeFully(String typeName, String typePlugin) { ResourceTypeCriteria c = new ResourceTypeCriteria(); c.addFilterName(typeName); c.addFilterPluginName(typePlugin); c.setStrict(true); c.fetchSubCategories(true); c.fetchPluginConfigurationDefinition(true); c.fetchProcessScans(true); c.fetchOperationDefinitions(true); c.fetchMetricDefinitions(true); c.fetchEventDefinitions(true); c.fetchResourceConfigurationDefinition(true); c.fetchDriftDefinitionTemplates(true); c.fetchBundleConfiguration(true); List<ResourceType> t = resourceTypeMgr.findResourceTypesByCriteria(subjectMgr.getOverlord(), c); ResourceType resourceType = t.get(0); return resourceType; }
@BeforeMethod public void setupBeforeMethod() throws Exception { // Plugin service setup prepareScheduler(); pluginService = new TestContentServerPluginService(this); TransactionManager tx = getTransactionManager(); try { tx.begin(); EntityManager entityManager = getEntityManager(); ContentManagerLocal contentManager = LookupUtil.getContentManager(); ContentSourceManagerLocal contentSourceManager = LookupUtil.getContentSourceManager(); RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); ResourceTypeManagerLocal resourceTypeManager = LookupUtil.getResourceTypeManager(); SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); Subject overlord = subjectManager.getOverlord(); // protect if it aleady exists due to a failed run contentSourceType = contentSourceManager.getContentSourceType("testType"); if (null == contentSourceType) { // Create a sample content source type that will be used in this test contentSourceType = new ContentSourceType("testType"); entityManager.persist(contentSourceType); entityManager.flush(); } // protect if it aleady exists due to a failed run ContentSource cs1 = contentSourceManager.getContentSourceByNameAndType( overlord, "contentSource1", "testType"); if (null == cs1) { // A repo sync will query all providers for that repo, so add multiple providers cs1 = new ContentSource("contentSource1", contentSourceType); cs1.setDownloadMode(DownloadMode.DATABASE); cs1 = contentSourceManager.simpleCreateContentSource(overlord, cs1); } ContentSource cs2 = contentSourceManager.getContentSourceByNameAndType( overlord, "contentSource2", "testType"); if (null == cs2) { cs2 = new ContentSource("contentSource2", contentSourceType); cs2.setDownloadMode(DownloadMode.DATABASE); cs2 = contentSourceManager.simpleCreateContentSource(overlord, cs2); } pluginService.associateContentProvider(cs1, contentProvider1); pluginService.associateContentProvider(cs2, contentProvider2); repoContentSources.add(cs1); repoContentSources.add(cs2); // Create the package type packages will be created against resourceType = resourceTypeManager.getResourceTypeByNameAndPlugin( TestContentProvider.RESOURCE_TYPE_NAME, TestContentProvider.RESOURCE_TYPE_PLUGIN_NAME); if (null == resourceType) { resourceType = new ResourceType( TestContentProvider.RESOURCE_TYPE_NAME, TestContentProvider.RESOURCE_TYPE_PLUGIN_NAME, ResourceCategory.PLATFORM, null); entityManager.persist(resourceType); entityManager.flush(); } List<PackageType> packageTypes = contentManager.findPackageTypes( overlord, TestContentProvider.RESOURCE_TYPE_NAME, TestContentProvider.RESOURCE_TYPE_PLUGIN_NAME); if (!packageTypes.isEmpty()) { packageType = packageTypes.get(0); } else { packageType = new PackageType(TestContentProvider.PACKAGE_TYPE_NAME, resourceType); entityManager.persist(packageType); } // Create the repo to be synced List<Repo> repos = repoManager.getRepoByName(TestContentProvider.REPO_WITH_PACKAGES); if (!repos.isEmpty()) { repoToSync = repos.get(0); } else { Repo repo = new Repo(TestContentProvider.REPO_WITH_PACKAGES); repo.addContentSource(cs1); // repo.addContentSource(cs2); Disabled until we implement a second test content // source to return new stuff repoToSync = repoManager.createRepo(overlord, repo); } tx.commit(); } catch (Throwable t) { tx.rollback(); // rethrow because if we swallow the exception then tests proceed to execute when they // probably should not throw new RuntimeException(t); } }