plugins/org.apache.geronimo.st.v20.core/src/main/java/org/apache/geronimo/st/v20/core/GeronimoV20ServerInfo.java [77:394]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        return instance;
    }

    public ArrayList<Pattern> getDeployedEjbs() {
        return deployedEJBs;
    }

    public ArrayList<String> getSecurityRealms() {
        return securityRealms;
    }

    public ArrayList<Pattern> getJmsConnectionFactories() {
        return jmsConnectionFactories;
    }

    public ArrayList<Pattern> getJmsDestinations() {
        return jmsDestinations;
    }

    public ArrayList<Pattern> getJdbcConnectionPools() {
        return jdbcConnectionPools;
    }

    public ArrayList<Pattern> getJavaMailSessions() {
        return javaMailResources;
    }

    public ArrayList<org.apache.geronimo.jee.deployment.Pattern> getDeployedCredentialStores() {
        return credentialStores;
    }
    
    public HashMap<org.apache.geronimo.jee.deployment.Pattern,HashMap<String,ArrayList<String>>> getDeployedCredentialStoreAttributes() {
        return credentialStoreAttributes;
    }

    public ArrayList<Dependency> getCommonLibs() {
        return commonLibs;
    }

    public void updateInfo() {
        Job job = new Job("Getting Dynamic Information from Server"){
            protected IStatus run(IProgressMonitor arg0) {
                updateKernels();
                updateDeployedEJBs();
                updateSecurityRealms();
                updateJmsConnectionFactories();
                updateJmsDestinations();
                updateJdbcConnectionPools();
                updateJavaMailSessions();
                updateDeployedCredentialStores();
                updateCommonLibs();
                return Status.OK_STATUS;
            }
        };
        job.setPriority(Job.SHORT);
        job.schedule();
    }

    private void updateKernels() {
        kernels = new ArrayList<Kernel>();
        IServer[] servers = ServerCore.getServers();
        for (int i = 0; i < servers.length; i++) {
            if (servers[i].getServerState() == IServer.STATE_STARTED) {
                try {
                    GeronimoServerBehaviourDelegate delegate = (GeronimoServerBehaviourDelegate) servers[i]
                            .getAdapter(GeronimoServerBehaviourDelegate.class);
                    if (delegate != null) {
                        MBeanServerConnection connection = delegate
                                .getServerConnection();
                        if (connection != null) {
                            kernels.add(new KernelDelegate(connection));
                        }
                    }
                } catch (SecurityException e) {
                } catch (Exception e) {
                    Trace.trace(Trace.WARNING, "Kernel connection failed. "
                            + e.getMessage(), Activator.logCore);
                }
            }
        }
    }

    private void updateDeployedEJBs() {
        deployedEJBs = new ArrayList<Pattern>();
        ArrayList<Pattern> statelessSessionBeans = getByType("StatelessSessionBean");
        ArrayList<Pattern> statefulSessionBeans = getByType("StatefulSessionBean");
        ArrayList<Pattern> messageDrivenBeans = getByType("MessageDrivenBean");
        ArrayList<Pattern> entityBeans = getByType("EntityBean");
        deployedEJBs.addAll(statelessSessionBeans);
        deployedEJBs.addAll(statefulSessionBeans);
        deployedEJBs.addAll(messageDrivenBeans);
        deployedEJBs.addAll(entityBeans);
    }

    private void updateSecurityRealms() {
        securityRealms = new ArrayList<String>();
        Map map = Collections.singletonMap("j2eeType", "SecurityRealm");
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                String name = (String) abstractName.getName().get("name");
                if (!securityRealms.contains(name)) {
                    securityRealms.add(name);
                }
            }
        }
    }

    private void updateJmsConnectionFactories() {
        String[] requiredInterfaces = new String[] {
                "javax.jms.ConnectionFactory",
                "javax.jms.QueueConnectionFactory",
                "javax.jms.TopicConnectionFactory", };
        String attribute = "implementedInterfaces";
        jmsConnectionFactories = getByTypeAttributeValues(
                "JCAManagedConnectionFactory", attribute, requiredInterfaces);
    }

    private void updateJmsDestinations() {
        String[] requiredInterfaces = new String[] { "javax.jms.Queue",
                "javax.jms.Topic" };
        String attribute = "adminObjectInterface";
        jmsDestinations = getByTypeAttributeValues("JCAAdminObject", attribute,
                requiredInterfaces);
    }

    private void updateJdbcConnectionPools() {
        String[] acceptedValues = new String[] { "javax.sql.DataSource" };
        String attribute = "connectionFactoryInterface";
        jdbcConnectionPools = getByTypeAttributeValues(
                "JCAManagedConnectionFactory", attribute, acceptedValues);

    }

    private void updateJavaMailSessions() {
        javaMailResources = getByType("JavaMailResource");
    }

    private void updateDeployedCredentialStores() {
        credentialStores = new ArrayList<org.apache.geronimo.jee.deployment.Pattern>();
        credentialStoreAttributes = new HashMap<org.apache.geronimo.jee.deployment.Pattern,HashMap<String,ArrayList<String>>> ();
        Map map = Collections.singletonMap("j2eeType", "GBean");
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
        	Kernel kernel = (Kernel)kernels.get(i);
            Set beans = kernel.listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                try {
                    GBeanInfo info = kernel.getGBeanInfo(abstractName);
                    GAttributeInfo attribInfo = info
                            .getAttribute("credentialStore");
                    if (attribInfo != null) {
                        Artifact artifact = abstractName.getArtifact();
                        Object name = abstractName.getName().get("name");
                        org.apache.geronimo.jee.deployment.Pattern pattern = new org.apache.geronimo.jee.deployment.Pattern();
                        pattern.setArtifactId(artifact.getArtifactId());
                        pattern.setGroupId(artifact.getGroupId());
                        pattern.setType(artifact.getType());
                        pattern.setVersion(artifact.getVersion().toString());
                        pattern.setCustomFoo((String) name);
                        if (!credentialStores.contains(pattern)) {
                            credentialStores.add(pattern);
                        }
                        
                      //update attributes of credentialStore
                    	Map attributeMap = (Map)kernel.getAttribute(abstractName, "credentialStore");
                    	if (attributeMap!=null){
                    		HashMap<String,ArrayList<String>> realmMap = new HashMap<String,ArrayList<String>>();
                    		for (Object obj:attributeMap.keySet()){
                    			String realmName = (String)obj;
                    			Map idMap = (Map)attributeMap.get(obj);
                    			ArrayList<String> idList = new ArrayList<String>();
                    			idList.addAll(idMap.keySet());                    			
                    			
                    			realmMap.put(realmName, idList);
                    		}               		
                    		credentialStoreAttributes.put(pattern, realmMap);
                    	}
                    }
                } catch (GBeanNotFoundException e) {
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    private void updateCommonLibs() {
        List<Object> artifacts = null;
        commonLibs = new ArrayList<Dependency>();
        Map map = Collections.singletonMap("j2eeType", "Repository");
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                try {
                    GBeanInfo info = kernels.get(i).getGBeanInfo(abstractName);
                    Object value = kernels.get(i).invoke(abstractName, "list");
                    if (value instanceof TreeSet) {
                        artifacts = Arrays.asList(((TreeSet) value).toArray());
                    }
                } catch (GBeanNotFoundException e) {
                    Trace.trace(Trace.WARNING, "GBean Not Found. "
                            + e.getMessage(), Activator.logCore);
                } catch (NoSuchOperationException e) {
                    Trace.trace(Trace.WARNING, "The operation cant invoked. "
                            + e.getMessage(), Activator.logCore);
                } catch (InternalKernelException e) {
                    throw e;
                } catch (Exception e) {
                    Trace.trace(Trace.WARNING, "Kernel connection failed.  "
                            + e.getMessage(), Activator.logCore);
                }

            }
        }
        if (artifacts != null) {
            for (int i = 0; i < artifacts.size(); i++) {
                Dependency dependency = new Dependency();
                dependency.setArtifactId(((Artifact) artifacts.get(i))
                        .getArtifactId());
                dependency.setGroupId(((Artifact) artifacts.get(i))
                        .getGroupId());
                dependency.setVersion(((Artifact) artifacts.get(i))
                        .getVersion().toString());
                dependency.setType(((Artifact) artifacts.get(i)).getType());
                if (!commonLibs.contains(dependency)) {
                    commonLibs.add(dependency);
                }
            }
        }
    }

    private ArrayList<Pattern> getByTypeAttributeValues(String type,
            String attribute, String[] acceptedValues) {
        ArrayList<Pattern> result = new ArrayList<Pattern>();
        Map map = Collections.singletonMap("j2eeType", type);
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                try {
                    Object value = kernels.get(i).getAttribute(abstractName,
                            attribute);
                    if (value != null) {
                        if (value instanceof String[]) {
                            List<String> interfaces = Arrays
                                    .asList((String[]) value);
                            for (int j = 0; j < acceptedValues.length; j++) {
                                if (interfaces.contains(acceptedValues[j])) {
                                    Pattern pattern = new Pattern();
                                    Artifact artifact = abstractName
                                            .getArtifact();
                                    pattern.setArtifactId(artifact
                                            .getArtifactId());
                                    pattern.setGroupId(artifact.getGroupId());
                                    pattern.setVersion(artifact.getVersion()
                                            .toString());
                                    pattern.setName((String) abstractName
                                            .getName().get("name"));
                                    if (!result.contains(pattern)) {
                                        result.add(pattern);
                                    }
                                    break;
                                }
                            }
                        }
                        if (value instanceof String) {
                            String interfaces = (String) value;
                            for (int j = 0; j < acceptedValues.length; j++) {
                                if (interfaces.contains(acceptedValues[j])) {
                                    Pattern pattern = new Pattern();
                                    Artifact artifact = abstractName
                                            .getArtifact();
                                    pattern.setArtifactId(artifact
                                            .getArtifactId());
                                    pattern.setGroupId(artifact.getGroupId());
                                    pattern.setVersion(artifact.getVersion()
                                            .toString());
                                    pattern.setName((String) abstractName
                                            .getName().get("name"));
                                    if (!result.contains(pattern)) {
                                        result.add(pattern);
                                    }
                                    break;
                                }
                            }
                        }
                    }
                } catch (GBeanNotFoundException e) {
                } catch (NoSuchAttributeException e) {
                } catch (Exception e) {
                    Trace.trace(Trace.WARNING, "Kernel connection failed. "
                            + e.getMessage(), Activator.logCore);
                }
            }
        }
        return result;
    }

    private ArrayList<Pattern> getByType(String type) {
        ArrayList<Pattern> result = new ArrayList<Pattern>();
        Map map = Collections.singletonMap("j2eeType", type);
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerInfo.java [77:394]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        return instance;
    }

    public ArrayList<Pattern> getDeployedEjbs() {
        return deployedEJBs;
    }

    public ArrayList<String> getSecurityRealms() {
        return securityRealms;
    }

    public ArrayList<Pattern> getJmsConnectionFactories() {
        return jmsConnectionFactories;
    }

    public ArrayList<Pattern> getJmsDestinations() {
        return jmsDestinations;
    }

    public ArrayList<Pattern> getJdbcConnectionPools() {
        return jdbcConnectionPools;
    }

    public ArrayList<Pattern> getJavaMailSessions() {
        return javaMailResources;
    }

    public ArrayList<org.apache.geronimo.jee.deployment.Pattern> getDeployedCredentialStores() {
        return credentialStores;
    }
    
    public HashMap<org.apache.geronimo.jee.deployment.Pattern,HashMap<String,ArrayList<String>>> getDeployedCredentialStoreAttributes() {
        return credentialStoreAttributes;
    }

    public ArrayList<Dependency> getCommonLibs() {
        return commonLibs;
    }

    public void updateInfo() {
        Job job = new Job("Getting Dynamic Information from Server"){
            protected IStatus run(IProgressMonitor arg0) {
                updateKernels();
                updateDeployedEJBs();
                updateSecurityRealms();
                updateJmsConnectionFactories();
                updateJmsDestinations();
                updateJdbcConnectionPools();
                updateJavaMailSessions();
                updateDeployedCredentialStores();
                updateCommonLibs();
                return Status.OK_STATUS;
            }
        };
        job.setPriority(Job.SHORT);
        job.schedule();
    }

    private void updateKernels() {
        kernels = new ArrayList<Kernel>();
        IServer[] servers = ServerCore.getServers();
        for (int i = 0; i < servers.length; i++) {
            if (servers[i].getServerState() == IServer.STATE_STARTED) {
                try {
                    GeronimoServerBehaviourDelegate delegate = (GeronimoServerBehaviourDelegate) servers[i]
                            .getAdapter(GeronimoServerBehaviourDelegate.class);
                    if (delegate != null) {
                        MBeanServerConnection connection = delegate
                                .getServerConnection();
                        if (connection != null) {
                            kernels.add(new KernelDelegate(connection));
                        }
                    }
                } catch (SecurityException e) {
                } catch (Exception e) {
                    Trace.trace(Trace.WARNING, "Kernel connection failed. "
                            + e.getMessage(), Activator.logCore);
                }
            }
        }
    }

    private void updateDeployedEJBs() {
        deployedEJBs = new ArrayList<Pattern>();
        ArrayList<Pattern> statelessSessionBeans = getByType("StatelessSessionBean");
        ArrayList<Pattern> statefulSessionBeans = getByType("StatefulSessionBean");
        ArrayList<Pattern> messageDrivenBeans = getByType("MessageDrivenBean");
        ArrayList<Pattern> entityBeans = getByType("EntityBean");
        deployedEJBs.addAll(statelessSessionBeans);
        deployedEJBs.addAll(statefulSessionBeans);
        deployedEJBs.addAll(messageDrivenBeans);
        deployedEJBs.addAll(entityBeans);
    }

    private void updateSecurityRealms() {
        securityRealms = new ArrayList<String>();
        Map map = Collections.singletonMap("j2eeType", "SecurityRealm");
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                String name = (String) abstractName.getName().get("name");
                if (!securityRealms.contains(name)) {
                    securityRealms.add(name);
                }
            }
        }
    }

    private void updateJmsConnectionFactories() {
        String[] requiredInterfaces = new String[] {
                "javax.jms.ConnectionFactory",
                "javax.jms.QueueConnectionFactory",
                "javax.jms.TopicConnectionFactory", };
        String attribute = "implementedInterfaces";
        jmsConnectionFactories = getByTypeAttributeValues(
                "JCAManagedConnectionFactory", attribute, requiredInterfaces);
    }

    private void updateJmsDestinations() {
        String[] requiredInterfaces = new String[] { "javax.jms.Queue",
                "javax.jms.Topic" };
        String attribute = "adminObjectInterface";
        jmsDestinations = getByTypeAttributeValues("JCAAdminObject", attribute,
                requiredInterfaces);
    }

    private void updateJdbcConnectionPools() {
        String[] acceptedValues = new String[] { "javax.sql.DataSource" };
        String attribute = "connectionFactoryInterface";
        jdbcConnectionPools = getByTypeAttributeValues(
                "JCAManagedConnectionFactory", attribute, acceptedValues);

    }

    private void updateJavaMailSessions() {
        javaMailResources = getByType("JavaMailResource");
    }

    private void updateDeployedCredentialStores() {
        credentialStores = new ArrayList<org.apache.geronimo.jee.deployment.Pattern>();
        credentialStoreAttributes = new HashMap<org.apache.geronimo.jee.deployment.Pattern,HashMap<String,ArrayList<String>>> ();
        Map map = Collections.singletonMap("j2eeType", "GBean");
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
        	Kernel kernel = (Kernel)kernels.get(i);
            Set beans = kernel.listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                try {
                    GBeanInfo info = kernel.getGBeanInfo(abstractName);
                    GAttributeInfo attribInfo = info
                            .getAttribute("credentialStore");
                    if (attribInfo != null) {
                        Artifact artifact = abstractName.getArtifact();
                        Object name = abstractName.getName().get("name");
                        org.apache.geronimo.jee.deployment.Pattern pattern = new org.apache.geronimo.jee.deployment.Pattern();
                        pattern.setArtifactId(artifact.getArtifactId());
                        pattern.setGroupId(artifact.getGroupId());
                        pattern.setType(artifact.getType());
                        pattern.setVersion(artifact.getVersion().toString());
                        pattern.setCustomFoo((String) name);
                        if (!credentialStores.contains(pattern)) {
                            credentialStores.add(pattern);
                        }
                        
                      //update attributes of credentialStore
                    	Map attributeMap = (Map)kernel.getAttribute(abstractName, "credentialStore");
                    	if (attributeMap!=null){
                    		HashMap<String,ArrayList<String>> realmMap = new HashMap<String,ArrayList<String>>();
                    		for (Object obj:attributeMap.keySet()){
                    			String realmName = (String)obj;
                    			Map idMap = (Map)attributeMap.get(obj);
                    			ArrayList<String> idList = new ArrayList<String>();
                    			idList.addAll(idMap.keySet());                    			
                    			
                    			realmMap.put(realmName, idList);
                    		}               		
                    		credentialStoreAttributes.put(pattern, realmMap);
                    	}
                    }
                } catch (GBeanNotFoundException e) {
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    private void updateCommonLibs() {
        List<Object> artifacts = null;
        commonLibs = new ArrayList<Dependency>();
        Map map = Collections.singletonMap("j2eeType", "Repository");
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                try {
                    GBeanInfo info = kernels.get(i).getGBeanInfo(abstractName);
                    Object value = kernels.get(i).invoke(abstractName, "list");
                    if (value instanceof TreeSet) {
                        artifacts = Arrays.asList(((TreeSet) value).toArray());
                    }
                } catch (GBeanNotFoundException e) {
                    Trace.trace(Trace.WARNING, "GBean Not Found. "
                            + e.getMessage(), Activator.logCore);
                } catch (NoSuchOperationException e) {
                    Trace.trace(Trace.WARNING, "The operation cant invoked. "
                            + e.getMessage(), Activator.logCore);
                } catch (InternalKernelException e) {
                    throw e;
                } catch (Exception e) {
                    Trace.trace(Trace.WARNING, "Kernel connection failed.  "
                            + e.getMessage(), Activator.logCore);
                }

            }
        }
        if (artifacts != null) {
            for (int i = 0; i < artifacts.size(); i++) {
                Dependency dependency = new Dependency();
                dependency.setArtifactId(((Artifact) artifacts.get(i))
                        .getArtifactId());
                dependency.setGroupId(((Artifact) artifacts.get(i))
                        .getGroupId());
                dependency.setVersion(((Artifact) artifacts.get(i))
                        .getVersion().toString());
                dependency.setType(((Artifact) artifacts.get(i)).getType());
                if (!commonLibs.contains(dependency)) {
                    commonLibs.add(dependency);
                }
            }
        }
    }

    private ArrayList<Pattern> getByTypeAttributeValues(String type,
            String attribute, String[] acceptedValues) {
        ArrayList<Pattern> result = new ArrayList<Pattern>();
        Map map = Collections.singletonMap("j2eeType", type);
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
                AbstractName abstractName = (AbstractName) it.next();
                try {
                    Object value = kernels.get(i).getAttribute(abstractName,
                            attribute);
                    if (value != null) {
                        if (value instanceof String[]) {
                            List<String> interfaces = Arrays
                                    .asList((String[]) value);
                            for (int j = 0; j < acceptedValues.length; j++) {
                                if (interfaces.contains(acceptedValues[j])) {
                                    Pattern pattern = new Pattern();
                                    Artifact artifact = abstractName
                                            .getArtifact();
                                    pattern.setArtifactId(artifact
                                            .getArtifactId());
                                    pattern.setGroupId(artifact.getGroupId());
                                    pattern.setVersion(artifact.getVersion()
                                            .toString());
                                    pattern.setName((String) abstractName
                                            .getName().get("name"));
                                    if (!result.contains(pattern)) {
                                        result.add(pattern);
                                    }
                                    break;
                                }
                            }
                        }
                        if (value instanceof String) {
                            String interfaces = (String) value;
                            for (int j = 0; j < acceptedValues.length; j++) {
                                if (interfaces.contains(acceptedValues[j])) {
                                    Pattern pattern = new Pattern();
                                    Artifact artifact = abstractName
                                            .getArtifact();
                                    pattern.setArtifactId(artifact
                                            .getArtifactId());
                                    pattern.setGroupId(artifact.getGroupId());
                                    pattern.setVersion(artifact.getVersion()
                                            .toString());
                                    pattern.setName((String) abstractName
                                            .getName().get("name"));
                                    if (!result.contains(pattern)) {
                                        result.add(pattern);
                                    }
                                    break;
                                }
                            }
                        }
                    }
                } catch (GBeanNotFoundException e) {
                } catch (NoSuchAttributeException e) {
                } catch (Exception e) {
                    Trace.trace(Trace.WARNING, "Kernel connection failed. "
                            + e.getMessage(), Activator.logCore);
                }
            }
        }
        return result;
    }

    private ArrayList<Pattern> getByType(String type) {
        ArrayList<Pattern> result = new ArrayList<Pattern>();
        Map map = Collections.singletonMap("j2eeType", type);
        AbstractNameQuery query = new AbstractNameQuery(null, map,
                Collections.EMPTY_SET);
        for (int i = 0; i < kernels.size(); i++) {
            Set beans = kernels.get(i).listGBeans(query);
            for (Iterator it = beans.iterator(); it.hasNext();) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



