private void createMemberState(MemberStateImpl memberState) {
   final Node node = factory.node;
   memberState.setAddress(node.getThisAddress());
   memberState.getMemberHealthStats().setOutOfMemory(node.isOutOfMemory());
   memberState.getMemberHealthStats().setActive(node.isActive());
   memberState
       .getMemberHealthStats()
       .setServiceThreadStats(node.getCpuUtilization().serviceThread);
   memberState.getMemberHealthStats().setOutThreadStats(node.getCpuUtilization().outThread);
   memberState.getMemberHealthStats().setInThreadStats(node.getCpuUtilization().inThread);
   PartitionService partitionService = factory.getPartitionService();
   Set<Partition> partitions = partitionService.getPartitions();
   memberState.clearPartitions();
   for (Partition partition : partitions) {
     if (partition.getOwner() != null && partition.getOwner().localMember()) {
       memberState.addPartition(partition.getPartitionId());
     }
   }
   Collection<HazelcastInstanceAwareInstance> proxyObjects =
       new ArrayList<HazelcastInstanceAwareInstance>(factory.getProxies());
   createMemState(memberState, proxyObjects.iterator(), InstanceType.MAP);
   createMemState(memberState, proxyObjects.iterator(), InstanceType.QUEUE);
   createMemState(memberState, proxyObjects.iterator(), InstanceType.TOPIC);
   createRuntimeProps(memberState);
   // uncomment when client changes are made
   // createMemState(memberState, proxyObjects.iterator(), InstanceType.ATOMIC_LONG);
   // createMemState(memberState, proxyObjects.iterator(), InstanceType.COUNT_DOWN_LATCH);
   // createMemState(memberState, proxyObjects.iterator(), InstanceType.SEMAPHORE);
 }
 public byte[] changeWebServerUrlOverCluster(String groupName, String groupPass, String newUrl) {
   try {
     GroupConfig groupConfig = factory.getConfig().getGroupConfig();
     if (!(groupConfig.getName().equals(groupName) && groupConfig.getPassword().equals(groupPass)))
       return HttpCommand.RES_403;
     ManagementCenterConfigCallable callable = new ManagementCenterConfigCallable(newUrl);
     callable.setHazelcastInstance(factory);
     Set<Member> members = factory.getCluster().getMembers();
     MultiTask<Void> task = new MultiTask<Void>(callable, members);
     ExecutorService executorService = factory.getExecutorService();
     executorService.execute(task);
   } catch (Throwable throwable) {
     logger.log(Level.WARNING, "New web server url cannot be assigned.", throwable);
     return HttpCommand.RES_500;
   }
   return HttpCommand.RES_204;
 }
 Collection callOnMembers(Set<Address> addresses, Callable callable) {
   Set<Member> allMembers = factory.getCluster().getMembers();
   Set<Member> selectedMembers = new HashSet<Member>(addresses.size());
   for (Member member : allMembers) {
     if (addresses.contains(((MemberImpl) member).getAddress())) {
       selectedMembers.add(member);
     }
   }
   return callOnMembers0(selectedMembers, callable);
 }
 Object call(Address address, Callable callable) {
   Set<Member> members = factory.getCluster().getMembers();
   for (Member member : members) {
     if (address.equals(((MemberImpl) member).getAddress())) {
       DistributedTask task = new DistributedTask(callable, member);
       return executeTaskAndGet(task);
     }
   }
   return null;
 }
 public TimedMemberState getTimedMemberState() {
   if (running.get()) {
     final MemberStateImpl memberState = new MemberStateImpl();
     createMemberState(memberState);
     GroupConfig groupConfig = factory.getConfig().getGroupConfig();
     TimedMemberState timedMemberState = new TimedMemberState();
     timedMemberState.setMaster(factory.node.isMaster());
     if (timedMemberState.getMaster()) {
       timedMemberState.setMemberList(new ArrayList<String>());
       Set<Member> memberSet = factory.getCluster().getMembers();
       for (Member member : memberSet) {
         MemberImpl memberImpl = (MemberImpl) member;
         Address address = memberImpl.getAddress();
         timedMemberState.getMemberList().add(address.getHost() + ":" + address.getPort());
       }
     }
     timedMemberState.setMemberState(memberState);
     timedMemberState.setClusterName(groupConfig.getName());
     timedMemberState.setInstanceNames(getLongInstanceNames());
     return timedMemberState;
   }
   return null;
 }
 private Set<String> getLongInstanceNames() {
   Set<String> setLongInstanceNames = new HashSet<String>(maxVisibleInstanceCount);
   Collection<HazelcastInstanceAwareInstance> proxyObjects =
       new ArrayList<HazelcastInstanceAwareInstance>(factory.getProxies());
   collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.MAP);
   collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.QUEUE);
   collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.TOPIC);
   // uncomment when client changes are made
   // collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(),
   // InstanceType.ATOMIC_NUMBER);
   // collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(),
   // InstanceType.COUNT_DOWN_LATCH);
   // collectInstanceNames(setLongInstanceNames, proxyObjects.iterator(), InstanceType.SEMAPHORE);
   return setLongInstanceNames;
 }
 private Object executeTaskAndGet(final DistributedTask task) {
   try {
     factory.getExecutorService().execute(task);
     try {
       return task.get(3, TimeUnit.SECONDS);
     } catch (Throwable e) {
       logger.log(Level.FINEST, e.getMessage(), e);
       return null;
     }
   } catch (Throwable e) {
     if (running.get() && factory.node.isActive()) {
       logger.log(Level.WARNING, e.getMessage(), e);
     }
     return null;
   }
 }
  public ManagementCenterService(FactoryImpl factoryImpl) {
    this.factory = factoryImpl;
    logger = factory.node.getLogger(ManagementCenterService.class.getName());
    managementCenterConfig = factory.node.config.getManagementCenterConfig();
    if (managementCenterConfig == null) {
      throw new IllegalStateException("ManagementCenterConfig should not be null!");
    }
    factory.getLifecycleService().addLifecycleListener(this);
    this.instanceFilterMap =
        new StatsInstanceFilter(factoryImpl.node.getGroupProperties().MC_MAP_EXCLUDES.getString());
    this.instanceFilterQueue =
        new StatsInstanceFilter(
            factoryImpl.node.getGroupProperties().MC_QUEUE_EXCLUDES.getString());
    this.instanceFilterTopic =
        new StatsInstanceFilter(
            factoryImpl.node.getGroupProperties().MC_TOPIC_EXCLUDES.getString());
    this.instanceFilterAtomicNumber =
        new StatsInstanceFilter(
            factoryImpl.node.getGroupProperties().MC_ATOMIC_NUMBER_EXCLUDES.getString());
    this.instanceFilterCountDownLatch =
        new StatsInstanceFilter(
            factoryImpl.node.getGroupProperties().MC_COUNT_DOWN_LATCH_EXCLUDES.getString());
    this.instanceFilterSemaphore =
        new StatsInstanceFilter(
            factoryImpl.node.getGroupProperties().MC_SEMAPHORE_EXCLUDES.getString());
    maxVisibleInstanceCount = factory.node.groupProperties.MC_MAX_INSTANCE_COUNT.getInteger();
    commandHandler = new ConsoleCommandHandler(factory);

    String tmpWebServerUrl =
        managementCenterConfig != null ? managementCenterConfig.getUrl() : null;
    webServerUrl =
        tmpWebServerUrl != null
            ? (!tmpWebServerUrl.endsWith("/") ? tmpWebServerUrl + '/' : tmpWebServerUrl)
            : tmpWebServerUrl;
    updateIntervalMs =
        (managementCenterConfig != null && managementCenterConfig.getUpdateInterval() > 0)
            ? managementCenterConfig.getUpdateInterval() * 1000
            : 5000;

    taskPoller = new TaskPoller();
    stateSender = new StateSender();
  }
 Collection callOnAllMembers(Callable callable) {
   Set<Member> members = factory.getCluster().getMembers();
   return callOnMembers0(members, callable);
 }