plugins/org.apache.geronimo.st.v21.core/src/main/java/org/apache/geronimo/st/v21/core/operations/GeronimoServerV21PluginManager.java [109:422]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private PluginInstaller getPluginInstaller() {
        Set<AbstractName> set = kernel.listGBeans(new AbstractNameQuery(PluginInstaller.class.getName()));
        for (AbstractName name : set) {
            return (PluginInstaller) kernel.getProxyManager().createProxy(name, PluginInstaller.class);
        }
        throw new IllegalStateException("No plugin installer found");
    }
    
    public List<String> getPluginList () {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.getPluginList");

        String name;
        boolean added;
        if (pluginInstaller != null){
            try {
                data = pluginInstaller.createPluginListForRepositories(null);

                List<PluginType> aList = data.getPlugin();
                pluginList = new ArrayList<String>(aList.size());
                for (int i = 0; i < aList.size(); i++) {
                    name = aList.get(i).getName();
                    added = false;
                    for (int j = 0; j < pluginList.size() && added == false; j++) {
                        if (name.compareTo(pluginList.get(j)) < 0) {
                            pluginList.add(j, name);
                            added = true;
                        }
                    }
                    if (added == false) {
                        pluginList.add(name);
                    }
                }
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.getPluginList", pluginList);
        return pluginList;
    }

    // mimics org.apache.geronimo.console.car.AssemblyViewHandler.actionAfterView
    public void assembleServer (String group, String artifact, String version,
                        String format, String relativeServerPath, int[] selected) {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.assembleServer",
                group, artifact, version, format);

        PluginListType selectedPlugins = new PluginListType();
        String name;
        boolean found;

        for (int i = 0; i < selected.length; i++) {
            name = pluginList.get(selected[i]);
            found = false;
            for (int j = 0 ; j < data.getPlugin().size() && found == false; j++) {
                if (name.equals(data.getPlugin().get(j).getName())) {
                    selectedPlugins.getPlugin().add(data.getPlugin().get(j));
                    found = true;
                }
            }
        }

        try {
            GeronimoConnectionFactory gcFactory = GeronimoConnectionFactory.getInstance();
            RemoteDeploymentManager remoteDM = (RemoteDeploymentManager)gcFactory.getDeploymentManager(server);
            remoteDM.installPluginList("repository", relativeServerPath, selectedPlugins);
            remoteDM.archive(relativeServerPath, "var/temp", new Artifact(group, artifact, (String)version, format));
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.assembleServer");
    }

    // mimics org.apache.geronimo.console.util.KernelManagementHelper.getConfigurations()
    public List<String> getConfigurationList () {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.getConfigurationList");

        ConfigurationManager mgr = getConfigurationManager();
        List<AbstractName> stores = mgr.listStores();
        List<String> results = new ArrayList<String>();
        for (AbstractName storeName : stores) {
            try {
                List<ConfigurationInfo> infos = mgr.listConfigurations(storeName);
                for (ConfigurationInfo info : infos) {
                    if (info.getConfigID().getType().equalsIgnoreCase("car"))
                    {
                       results.add(info.getConfigID().toString());
                    }
                }
            } catch (Exception e) {
                throw new RuntimeException(CommonMessages.badConfigId, e);
            }
        }
        Collections.sort(results);

        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.getConfigurationList", results);
        return results;
    }

    public PluginType getPluginMetadata (String configId) {
        Artifact artifact = Artifact.create(configId);
        PluginType metadata = null;
        if (pluginInstaller != null)
            metadata = pluginInstaller.getPluginMetadata(artifact);
        return metadata;
    }

    // mimics org.apache.geronimo.system.plugin.PluginInstallerGBean.updatePluginMetadata
    // but puts the metadata in our local directory
    public void savePluginXML (String configId, Object pluginMetaData) {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", configId, pluginMetaData);

        PluginType metadata = (PluginType) pluginMetaData;
        
        Artifact artifact = Artifact.create(configId);
        File dir = new File (getArtifactLocation(artifact));

        if (!dir.isDirectory()) { // must be a packed (JAR-formatted) plugin
            try {
                File temp = new File(dir.getParentFile(), dir.getName() + ".temp");
                JarFile input = new JarFile(dir);
                Manifest manifest = input.getManifest();
                JarOutputStream out = manifest == null ? new JarOutputStream(
                        new BufferedOutputStream(new FileOutputStream(temp)))
                        : new JarOutputStream(new BufferedOutputStream(new FileOutputStream(temp)), manifest);
                Enumeration en = input.entries();
                byte[] buf = new byte[4096];
                int count;
                while (en.hasMoreElements()) {
                    JarEntry entry = (JarEntry) en.nextElement();
                    if (entry.getName().equals("META-INF/geronimo-plugin.xml")) {
                        entry = new JarEntry(entry.getName());
                        out.putNextEntry(entry);
                        writePluginMetadata(metadata, out);
                    } else if (entry.getName().equals("META-INF/MANIFEST.MF")) {
                        // do nothing, already passed in a manifest
                    } else {
                        out.putNextEntry(entry);
                        InputStream in = input.getInputStream(entry);
                        while ((count = in.read(buf)) > -1) {
                            out.write(buf, 0, count);
                        }
                        in.close();
                        out.closeEntry();
                    }
                }
                out.flush();
                out.close();
                input.close();
                if (!dir.delete()) {
                    String message = CommonMessages.bind(CommonMessages.errorDeletePlugin, dir.getAbsolutePath());
                    Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                    throw new Exception(message);
                }
                if (!temp.renameTo(dir)) {
                    String message = CommonMessages.bind(CommonMessages.errorMovePlugin, temp.getAbsolutePath(), dir.getAbsolutePath());
                    Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                    throw new Exception(message);
                }
            } catch (Exception e) {
                throw new RuntimeException(CommonMessages.errorUpdateMetadata, e);
            }
        } else {
            File meta = new File(addFilename(dir.getAbsolutePath(), artifact), "META-INF");
            if (!meta.isDirectory() || !meta.canRead()) {
                String message = CommonMessages.bind(CommonMessages.badPlugin, artifact);
                Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                throw new IllegalArgumentException(message);
            }
            File xml = new File(meta, "geronimo-plugin.xml");
            FileOutputStream fos = null;
            try {
                if (!xml.isFile()) {
                    if (!xml.createNewFile()) {
                        String message = CommonMessages.bind(CommonMessages.errorCreateMetadata, artifact);
                        Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                        throw new RuntimeException(message);
                    }
                }
                fos = new FileOutputStream(xml);
                writePluginMetadata(metadata, fos);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (Exception ignored) {
                        ignored.printStackTrace();
                    }
                }
            }
        }

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML");
    }

    // mimics org.apache.geronimo.system.configuration.RepositoryConfigurationStore.exportConfiguration
    public void exportCAR (String localRepoDir, String configId) throws Exception {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.exportCAR", localRepoDir, configId);

        Artifact artifact = Artifact.create(configId);
        String filename = createDirectoryStructure (localRepoDir, artifact);
        File outputDir = new File (filename);

        File serverArtifact = new File(getArtifactLocation (artifact));
        writeToDirectory(serverArtifact, outputDir);

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.exportCAR");
    }

    private void writeToDirectory(File inputDir, File outputDir) throws Exception {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.writeToZip", inputDir);

        outputDir.mkdirs();
        File[] all = inputDir.listFiles();
        for (File file : all) {
            if (file.isDirectory()) {
                String oDir = outputDir.getAbsolutePath() + File.separator + file.getName();
                File temp = new File (oDir);
                writeToDirectory(file, temp);
            } else {
                File entry = new File(outputDir + File.separator + file.getName());
                FileOutputStream out = new FileOutputStream (entry);
                FileInputStream in = new FileInputStream(file);
                byte[] buf = new byte[10240];
                int count;
                try {
                    while ((count = in.read(buf, 0, buf.length)) > -1) {
                        out.write(buf, 0, count);
                    }
                } finally {
                    in.close();
                    out.flush();
                    out.close();
                }
            }
        }
        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.writeToZip");
    }

    public void updatePluginList (String localRepoDir, Object data) throws Exception {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.updatePluginList", localRepoDir, data);

        PluginType metadata = (PluginType) data;
        
        PluginListType pluginList = readPluginList(localRepoDir);
        File listFile = new File (localRepoDir, "geronimo-plugins.xml");

        // if this plugin exists, remove it from the list
        PluginType plugin;
        for (int i = 0; i < pluginList.getPlugin().size(); i++) {
            plugin = pluginList.getPlugin().get(i);
            if (metadata.getName().equals(plugin.getName()) &&
                metadata.getCategory().equals(plugin.getCategory())) {
                pluginList.getPlugin().remove(i);
                break;
            }
        }

        // add the current plugin to the list
        pluginList.getPlugin().add(metadata);

        // write the file
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(listFile);
            writePluginList(pluginList, fos);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (Exception ignored) {
                    ignored.printStackTrace();
                }
            }
        }
        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.updatePluginList");
    }

    public PluginListType readPluginList (String localRepoDir) {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.readPluginList", localRepoDir);

        PluginListType pluginList = null;
        File listFile = new File (localRepoDir, "geronimo-plugins.xml");
        if (listFile.exists() && listFile.exists()) {
            InputStream in = null;
            try {
                in = new FileInputStream(listFile);
                pluginList = loadPluginList(in);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (Exception e) {}
                }
            }
        }
        if (pluginList == null) {
            ObjectFactory factory = new ObjectFactory();
            pluginList = factory.createPluginListType();
        }

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.readPluginList", pluginList);
        return pluginList;
    }

    public PluginListType loadPluginList (InputStream in) {
        try {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



plugins/org.apache.geronimo.st.v22.core/src/main/java/org/apache/geronimo/st/v22/core/operations/GeronimoServerV22PluginManager.java [110:423]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private PluginInstaller getPluginInstaller() {
        Set<AbstractName> set = kernel.listGBeans(new AbstractNameQuery(PluginInstaller.class.getName()));
        for (AbstractName name : set) {
            return (PluginInstaller) kernel.getProxyManager().createProxy(name, PluginInstaller.class);
        }
        throw new IllegalStateException("No plugin installer found");
    }
    
    public List<String> getPluginList () {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.getPluginList");

        String name;
        boolean added;
        if (pluginInstaller != null){
            try {
                data = pluginInstaller.createPluginListForRepositories(null);

                List<PluginType> aList = data.getPlugin();
                pluginList = new ArrayList<String>(aList.size());
                for (int i = 0; i < aList.size(); i++) {
                    name = aList.get(i).getName();
                    added = false;
                    for (int j = 0; j < pluginList.size() && added == false; j++) {
                        if (name.compareTo(pluginList.get(j)) < 0) {
                            pluginList.add(j, name);
                            added = true;
                        }
                    }
                    if (added == false) {
                        pluginList.add(name);
                    }
                }
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.getPluginList", pluginList);
        return pluginList;
    }

    // mimics org.apache.geronimo.console.car.AssemblyViewHandler.actionAfterView
    public void assembleServer (String group, String artifact, String version,
                        String format, String relativeServerPath, int[] selected) {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.assembleServer",
                group, artifact, version, format);

        PluginListType selectedPlugins = new PluginListType();
        String name;
        boolean found;

        for (int i = 0; i < selected.length; i++) {
            name = pluginList.get(selected[i]);
            found = false;
            for (int j = 0 ; j < data.getPlugin().size() && found == false; j++) {
                if (name.equals(data.getPlugin().get(j).getName())) {
                    selectedPlugins.getPlugin().add(data.getPlugin().get(j));
                    found = true;
                }
            }
        }

        try {
            GeronimoConnectionFactory gcFactory = GeronimoConnectionFactory.getInstance();
            RemoteDeploymentManager remoteDM = (RemoteDeploymentManager)gcFactory.getDeploymentManager(server);
            remoteDM.installPluginList("repository", relativeServerPath, selectedPlugins);
            remoteDM.archive(relativeServerPath, "var/temp", new Artifact(group, artifact, (String)version, format));
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.assembleServer");
    }

    // mimics org.apache.geronimo.console.util.KernelManagementHelper.getConfigurations()
    public List<String> getConfigurationList () {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.getConfigurationList");

        ConfigurationManager mgr = getConfigurationManager();
        List<AbstractName> stores = mgr.listStores();
        List<String> results = new ArrayList<String>();
        for (AbstractName storeName : stores) {
            try {
                List<ConfigurationInfo> infos = mgr.listConfigurations(storeName);
                for (ConfigurationInfo info : infos) {
                    if (info.getConfigID().getType().equalsIgnoreCase("car"))
                    {
                       results.add(info.getConfigID().toString());
                    }
                }
            } catch (Exception e) {
                throw new RuntimeException(CommonMessages.badConfigId, e);
            }
        }
        Collections.sort(results);

        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.getConfigurationList", results);
        return results;
    }

    public PluginType getPluginMetadata (String configId) {
        Artifact artifact = Artifact.create(configId);
        PluginType metadata = null;
        if (pluginInstaller != null)
            metadata = pluginInstaller.getPluginMetadata(artifact);
        return metadata;
    }

    // mimics org.apache.geronimo.system.plugin.PluginInstallerGBean.updatePluginMetadata
    // but puts the metadata in our local directory
    public void savePluginXML (String configId, Object pluginMetaData) {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", configId, pluginMetaData);

        PluginType metadata = (PluginType) pluginMetaData;
        
        Artifact artifact = Artifact.create(configId);
        File dir = new File (getArtifactLocation(artifact));

        if (!dir.isDirectory()) { // must be a packed (JAR-formatted) plugin
            try {
                File temp = new File(dir.getParentFile(), dir.getName() + ".temp");
                JarFile input = new JarFile(dir);
                Manifest manifest = input.getManifest();
                JarOutputStream out = manifest == null ? new JarOutputStream(
                        new BufferedOutputStream(new FileOutputStream(temp)))
                        : new JarOutputStream(new BufferedOutputStream(new FileOutputStream(temp)), manifest);
                Enumeration en = input.entries();
                byte[] buf = new byte[4096];
                int count;
                while (en.hasMoreElements()) {
                    JarEntry entry = (JarEntry) en.nextElement();
                    if (entry.getName().equals("META-INF/geronimo-plugin.xml")) {
                        entry = new JarEntry(entry.getName());
                        out.putNextEntry(entry);
                        writePluginMetadata(metadata, out);
                    } else if (entry.getName().equals("META-INF/MANIFEST.MF")) {
                        // do nothing, already passed in a manifest
                    } else {
                        out.putNextEntry(entry);
                        InputStream in = input.getInputStream(entry);
                        while ((count = in.read(buf)) > -1) {
                            out.write(buf, 0, count);
                        }
                        in.close();
                        out.closeEntry();
                    }
                }
                out.flush();
                out.close();
                input.close();
                if (!dir.delete()) {
                    String message = CommonMessages.bind(CommonMessages.errorDeletePlugin, dir.getAbsolutePath());
                    Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                    throw new Exception(message);
                }
                if (!temp.renameTo(dir)) {
                    String message = CommonMessages.bind(CommonMessages.errorMovePlugin, temp.getAbsolutePath(), dir.getAbsolutePath());
                    Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                    throw new Exception(message);
                }
            } catch (Exception e) {
                throw new RuntimeException(CommonMessages.errorUpdateMetadata, e);
            }
        } else {
            File meta = new File(addFilename(dir.getAbsolutePath(), artifact), "META-INF");
            if (!meta.isDirectory() || !meta.canRead()) {
                String message = CommonMessages.bind(CommonMessages.badPlugin, artifact);
                Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                throw new IllegalArgumentException(message);
            }
            File xml = new File(meta, "geronimo-plugin.xml");
            FileOutputStream fos = null;
            try {
                if (!xml.isFile()) {
                    if (!xml.createNewFile()) {
                        String message = CommonMessages.bind(CommonMessages.errorCreateMetadata, artifact);
                        Trace.tracePoint("Throw", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML", message);
                        throw new RuntimeException(message);
                    }
                }
                fos = new FileOutputStream(xml);
                writePluginMetadata(metadata, fos);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (Exception ignored) {
                        ignored.printStackTrace();
                    }
                }
            }
        }

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.savePluginXML");
    }

    // mimics org.apache.geronimo.system.configuration.RepositoryConfigurationStore.exportConfiguration
    public void exportCAR (String localRepoDir, String configId) throws Exception {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.exportCAR", localRepoDir, configId);

        Artifact artifact = Artifact.create(configId);
        String filename = createDirectoryStructure (localRepoDir, artifact);
        File outputDir = new File (filename);

        File serverArtifact = new File(getArtifactLocation (artifact));
        writeToDirectory(serverArtifact, outputDir);

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.exportCAR");
    }

    private void writeToDirectory(File inputDir, File outputDir) throws Exception {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.writeToZip", inputDir);

        outputDir.mkdirs();
        File[] all = inputDir.listFiles();
        for (File file : all) {
            if (file.isDirectory()) {
                String oDir = outputDir.getAbsolutePath() + File.separator + file.getName();
                File temp = new File (oDir);
                writeToDirectory(file, temp);
            } else {
                File entry = new File(outputDir + File.separator + file.getName());
                FileOutputStream out = new FileOutputStream (entry);
                FileInputStream in = new FileInputStream(file);
                byte[] buf = new byte[10240];
                int count;
                try {
                    while ((count = in.read(buf, 0, buf.length)) > -1) {
                        out.write(buf, 0, count);
                    }
                } finally {
                    in.close();
                    out.flush();
                    out.close();
                }
            }
        }
        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.writeToZip");
    }

    public void updatePluginList (String localRepoDir, Object data) throws Exception {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.updatePluginList", localRepoDir, data);

        PluginType metadata = (PluginType) data;
        
        PluginListType pluginList = readPluginList(localRepoDir);
        File listFile = new File (localRepoDir, "geronimo-plugins.xml");

        // if this plugin exists, remove it from the list
        PluginType plugin;
        for (int i = 0; i < pluginList.getPlugin().size(); i++) {
            plugin = pluginList.getPlugin().get(i);
            if (metadata.getName().equals(plugin.getName()) &&
                metadata.getCategory().equals(plugin.getCategory())) {
                pluginList.getPlugin().remove(i);
                break;
            }
        }

        // add the current plugin to the list
        pluginList.getPlugin().add(metadata);

        // write the file
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(listFile);
            writePluginList(pluginList, fos);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (Exception ignored) {
                    ignored.printStackTrace();
                }
            }
        }
        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.updatePluginList");
    }

    public PluginListType readPluginList (String localRepoDir) {
        Trace.tracePoint("Entry", Activator.traceOperations, "GeronimoServerPluginManager.readPluginList", localRepoDir);

        PluginListType pluginList = null;
        File listFile = new File (localRepoDir, "geronimo-plugins.xml");
        if (listFile.exists() && listFile.exists()) {
            InputStream in = null;
            try {
                in = new FileInputStream(listFile);
                pluginList = loadPluginList(in);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (Exception e) {}
                }
            }
        }
        if (pluginList == null) {
            ObjectFactory factory = new ObjectFactory();
            pluginList = factory.createPluginListType();
        }

        Trace.tracePoint("Exit", Activator.traceOperations, "GeronimoServerPluginManager.readPluginList", pluginList);
        return pluginList;
    }

    public PluginListType loadPluginList (InputStream in) {
        try {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



