Index: src/org/eclipse/pde/internal/build/IPDEBuildConstants.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IPDEBuildConstants.java,v retrieving revision 1.38 diff -u -r1.38 IPDEBuildConstants.java --- src/org/eclipse/pde/internal/build/IPDEBuildConstants.java 8 May 2006 15:18:35 -0000 1.38 +++ src/org/eclipse/pde/internal/build/IPDEBuildConstants.java 22 Mar 2007 04:03:23 -0000 @@ -41,6 +41,7 @@ public final static String GENERIC_VERSION_NUMBER = "0.0.0"; //$NON-NLS-1$ public final static String ANY_STRING = "ANY"; //$NON-NLS-1$ public final static String DEFAULT_ASSEMBLE_NAME = "assemble"; //$NON-NLS-1$ + public final static String DEFAULT_PACKAGE_NAME = "package"; //$NON-NLS-1$ public final static String DEFAULT_ASSEMBLE_ALL = "all.xml"; //$NON-NLS-1$ public final static String DEFAULT_CUSTOM_TARGETS = "customTargets"; //$NON-NLS-1$ public final static String DEFAULT_RETRIEVE_FILENAME_DESCRIPTOR = "retrieve.xml"; //$NON-NLS-1$ Index: src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java,v retrieving revision 1.21 diff -u -r1.21 AssembleScriptGenerator.java --- src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java 8 May 2006 15:18:35 -0000 1.21 +++ src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java 22 Mar 2007 04:03:22 -0000 @@ -68,7 +68,7 @@ features.addAll(configInfo[2]); rootFiles.addAll(configInfo[3]); } - basicGenerateAssembleConfigFileTargetCall(new Config("group","group","group") , allPlugins, allFeatures, features, rootFiles); + basicGenerateAssembleConfigFileTargetCall(new Config("group","group","group") , allPlugins, allFeatures, features, rootFiles); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } else { for (Iterator allConfigs = getConfigInfos().iterator(); allConfigs.hasNext();) { Config current = (Config) allConfigs.next(); @@ -83,6 +83,23 @@ return new Collection[] { assemblageInformation.getCompiledPlugins(aConfig), assemblageInformation.getCompiledFeatures(aConfig), assemblageInformation.getFeatures(aConfig), assemblageInformation.getRootFileProviders(aConfig) }; } + /** + * TODO: Rename this to something more understandable. Suggest + * generateAssembleConfigFileTargetCall. + * + * @param aConfig + * Configurationd details. + * @param binaryPlugins + * all binary plugins. + * @param binaryFeatures + * all binary features. + * @param allFeatures + * all features. + * @param rootFiles + * all root files + * @throws CoreException + * failures. + */ protected void basicGenerateAssembleConfigFileTargetCall(Config aConfig, Collection binaryPlugins, Collection binaryFeatures, Collection allFeatures, Collection rootFiles) throws CoreException { // generate the script for a configuration configScriptGenerator.initialize(directory, featureId, aConfig, binaryPlugins, binaryFeatures, allFeatures, rootFiles); @@ -91,11 +108,39 @@ configScriptGenerator.setGroupConfigs(groupConfigs); configScriptGenerator.generate(); - Map params = new HashMap(1); - params.put("assembleScriptName", configScriptGenerator.getTargetName() + ".xml"); //$NON-NLS-1$ //$NON-NLS-2$ - script.printAntTask(Utils.getPropertyFormat(DEFAULT_CUSTOM_TARGETS), null, configScriptGenerator.getTargetName(), null, null, params); - } - + Map params = new HashMap(2); + String targetName = getTargetScriptName(aConfig); + String assembleScriptName = getAssembleScriptName(); + params.put("assembleScriptName", assembleScriptName + ".xml"); //$NON-NLS-1$ //$NON-NLS-2$ + script.printAntTask(Utils.getPropertyFormat(DEFAULT_CUSTOM_TARGETS), null, targetName, null, null, params); + } + + /** + * Returns the name of the Ant target to invoke. + * + * This is a Template Method (325) from GOF for + * {@link #basicGenerateAssembleConfigFileTargetCall(Config, Collection, Collection, Collection, Collection)}. + * + * @param aConfig + * configuration available, if needed to genereate result. + * @return the name of the Ant target to invoke + */ + protected String getTargetScriptName(Config aConfig) { + return configScriptGenerator.getTargetName(); + } + + /** + * Return the value of the assembleScriptName parameter in the ant task. + * + * This is a Template Method (325) from GOF for + * {@link #basicGenerateAssembleConfigFileTargetCall(Config, Collection, Collection, Collection, Collection)}. + * + * @return the value of the assembleScriptName parameter in the ant task + */ + protected String getAssembleScriptName() { + return configScriptGenerator.getTargetName(); + } + public void setSignJars(boolean value) { configScriptGenerator.setSignJars(value); } Index: src/org/eclipse/pde/internal/build/BuildScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BuildScriptGenerator.java,v retrieving revision 1.60 diff -u -r1.60 BuildScriptGenerator.java --- src/org/eclipse/pde/internal/build/BuildScriptGenerator.java 3 May 2006 21:04:14 -0000 1.60 +++ src/org/eclipse/pde/internal/build/BuildScriptGenerator.java 22 Mar 2007 04:03:23 -0000 @@ -173,30 +173,139 @@ generator.generate(); } - if (generator != null && generateAssembleScript == true) { - String[] featureInfo = null; - if (features.size() == 1) - featureInfo = getNameAndVersion((String) features.get(0)); - else - featureInfo = new String[] {"all"}; //$NON-NLS-1$ - - generateAssembleScripts(assemblageInformation, featureInfo, generator.siteFactory); - - if (features.size() == 1) - featureInfo = getNameAndVersion((String) features.get(0)); - else - featureInfo = new String[] {""}; //$NON-NLS-1$ - - generatePackageScripts(assemblageInformation, featureInfo, generator.siteFactory); - } - if (generateVersionsList) - generateVersionsLists(assemblageInformation); - } finally { - if (generator != null) - generator.getSite(false).getRegistry().cleanupOriginalState(); - } - } - + if (generator != null && generateAssembleScript == true) { + String featureIdForAssemble = "all"; //$NON-NLS-1$ + String featureIdForPackage = ""; //$NON-NLS-1$ + if (features.size() == 1) { + featureIdForAssemble = getNameAndVersion((String) features.get(0))[0]; + featureIdForPackage = featureIdForAssemble; + } + + generateAssembleScripts(assemblageInformation, featureIdForAssemble, generator.siteFactory); + generatePackageScripts(assemblageInformation, featureIdForPackage, generator.siteFactory); + } + if (generateVersionsList) + generateVersionsLists(assemblageInformation); + } finally { + if (generator != null) + generator.getSite(false).getRegistry().cleanupOriginalState(); + } + } + + /** + * Generate the Assembly Scripts for the specified feature. + * + * @param assemblageInformation + * assemblageInformation . + * @param featureInfo + * the feature to generate scripts for. + * @param factory + * BuildTimeSiteFactory. + * @throws CoreException + * failures. + */ + private void generateAssembleScripts(AssemblyInformation assemblageInformation, String featureInfo, BuildTimeSiteFactory factory) throws CoreException { + AssembleScriptGenerator assembler = createAssembleScriptGenerator(workingDirectory, assemblageInformation, featureInfo); + initialiseAssembleScriptGenerator(assembler, factory); + assembler.generate(); + } + + /** + * Create an AssembleScriptGenerator for generating an Assemble + * Script. + * + * This is a Template Method (325) from GOF for + * {@link #generateAssembleScripts(AssemblyInformation, String, BuildTimeSiteFactory)}. + * + * @param directory + * see AssembleScriptGenerator + * @param assemblageInformation + * see AssembleScriptGenerator + * @param featureId + * see AssembleScriptGenerator + * @return an AssembleScriptGenerator + * @see AssembleScriptGenerator + */ + protected AssembleScriptGenerator createAssembleScriptGenerator(String directory, AssemblyInformation assemblageInformation, String featureId) { + return new AssembleScriptGenerator(directory, assemblageInformation, featureId); + } + + /** + * Initialise the AssembleScriptGenerator used for generating + * an Assemble Script. + * + * This is a Template Method (325) from GOF for + * {@link #generateAssembleScripts(AssemblyInformation, String, BuildTimeSiteFactory)}. + * + * @param generator + * AssembleScriptGenerator to be initialised. + * @param factory + * BuildTimeSiteFactory used in generating scripts. + */ + protected void initialiseAssembleScriptGenerator(AssembleScriptGenerator generator, BuildTimeSiteFactory factory) { + generator.setSignJars(signJars); + generator.setGenerateJnlp(generateJnlp); + generator.setArchivesFormat(getArchivesFormat()); + generator.setProduct(product); + generator.setGroupConfigs(groupConfigs); + generator.setBuildSiteFactory(factory); + } + + /** + * Generate the Package Scripts for the specified feature. + * + * @param assemblageInformation + * assemblageInformation. + * @param featureInfothe + * feature to generate scripts for. + * @param factory + * BuildTimeSiteFactory. + * @throws CoreException + * failures. + */ + private void generatePackageScripts(AssemblyInformation assemblageInformation, String featureInfo, BuildTimeSiteFactory factory) throws CoreException { + PackageScriptGenerator assembler = createPackageScriptGenerator(workingDirectory, assemblageInformation, featureInfo); + initialisePackageScriptGenerator(assembler, factory); + + assembler.generate(); + } + + /** + * Create the PackageScriptGenerator for generating a Package + * Script. + * + * This is a Template Method (325) from GOF for + * {@link #generatePackageScripts(AssemblyInformation, String, BuildTimeSiteFactory)} + * + * @param directory + * see PackageScriptGenerator + * @param assemblageInformation + * see PackageScriptGenerator + * @param featureId + * see PackageScriptGenerator + * @return a PackageScriptGenerator + * @see PackageScriptGenerator + */ + protected PackageScriptGenerator createPackageScriptGenerator(String directory, AssemblyInformation assemblageInformation, String featureId) { + return new PackageScriptGenerator(directory, assemblageInformation, featureId); + } + + /** + * Initialise the PackageScriptGenerator used for generating a + * Package Script. + * + * This ia a Template Method (325) from GOF for + * {@link #generatePackageScripts(AssemblyInformation, String, BuildTimeSiteFactory)}. + * + * @param generator + * PackageScriptGenerator to be initialised. + * @param factory + * BuildTimeSiteFactory used in generating scripts. + */ + protected void initialisePackageScriptGenerator(PackageScriptGenerator generator, BuildTimeSiteFactory factory) { + initialiseAssembleScriptGenerator(generator, factory); + } + protected void generateVersionsLists(AssemblyInformation assemblageInformation) throws CoreException { if (assemblageInformation == null) return; @@ -306,29 +415,6 @@ } } - protected void generatePackageScripts(AssemblyInformation assemblageInformation, String[] featureInfo, BuildTimeSiteFactory factory) throws CoreException { - PackageScriptGenerator assembler = null; - assembler = new PackageScriptGenerator(workingDirectory, assemblageInformation, featureInfo[0]); - assembler.setSignJars(signJars); - assembler.setGenerateJnlp(generateJnlp); - assembler.setArchivesFormat(getArchivesFormat()); - assembler.setProduct(product); - assembler.setBuildSiteFactory(factory); - assembler.setGroupConfigs(groupConfigs); - assembler.generate(); - } - - private void generateAssembleScripts(AssemblyInformation assemblageInformation, String[] featureInfo, BuildTimeSiteFactory factory) throws CoreException { - AssembleScriptGenerator assembler = new AssembleScriptGenerator(workingDirectory, assemblageInformation, featureInfo[0]); - assembler.setSignJars(signJars); - assembler.setGenerateJnlp(generateJnlp); - assembler.setArchivesFormat(getArchivesFormat()); - assembler.setProduct(product); - assembler.setBuildSiteFactory(factory); - assembler.setGroupConfigs(groupConfigs); - assembler.generate(); - } - public void setGenerateArchive(boolean generateArchive) { this.generateArchive = generateArchive; } Index: src/org/eclipse/pde/internal/build/BundleHelper.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/BundleHelper.java,v retrieving revision 1.10 diff -u -r1.10 BundleHelper.java --- src/org/eclipse/pde/internal/build/BundleHelper.java 8 May 2006 15:18:35 -0000 1.10 +++ src/org/eclipse/pde/internal/build/BundleHelper.java 22 Mar 2007 04:03:23 -0000 @@ -111,4 +111,13 @@ log = null; } } + + public void log(String msg, Throwable t) { + Platform.getLog(bundle).log(new Status(IStatus.INFO, bundle.getSymbolicName(), IStatus.OK, msg, t)); + } + + public void log(String msg) { + log(msg, null); + } + } Index: src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java,v retrieving revision 1.71 diff -u -r1.71 AssembleConfigScriptGenerator.java --- src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java 8 May 2006 15:18:35 -0000 1.71 +++ src/org/eclipse/pde/internal/build/AssembleConfigScriptGenerator.java 22 Mar 2007 04:03:22 -0000 @@ -37,6 +37,8 @@ protected Properties featuresPostProcessingSteps; protected ArrayList addedByPermissions = new ArrayList(); //contains the list of files and folders that have been added to an archive by permission management + private static final int MAX_ZIP_EXEC_COMMAND_PARAMETERS = 15; + private static final String PROPERTY_SOURCE = "source"; //$NON-NLS-1$ private static final String PROPERTY_ELEMENT_NAME = "elementName"; //$NON-NLS-1$ @@ -131,8 +133,8 @@ if (embeddedSource) generateGatherSourceCalls(); generatePostProcessingSteps(); - generateBrandingCalls(); - generateArchivingSteps(); + generateBrandingCalls(); // BAE: TODO: PACKAGE ONLY??? + generateArchivingSteps(); // BAE: TODO: PACKAGE ONLY??? generateEpilogue(); } @@ -466,56 +468,47 @@ } private void generateZipTarget() { - final int parameterSize = 15; - List parameters = new ArrayList(parameterSize + 1); - for (int i = 0; i < plugins.length; i++) { - parameters.add(Utils.getPropertyFormat(PROPERTY_PLUGIN_ARCHIVE_PREFIX) + '/' + (String) getFinalShape(plugins[i])[0]); - if (i % parameterSize == 0) { - createZipExecCommand(parameters); - parameters.clear(); - } - } - if (!parameters.isEmpty()) { - createZipExecCommand(parameters); - parameters.clear(); - } - - if (!parameters.isEmpty()) { - createZipExecCommand(parameters); - parameters.clear(); - } - - for (int i = 0; i < features.length; i++) { - parameters.add(Utils.getPropertyFormat(PROPERTY_FEATURE_ARCHIVE_PREFIX) + '/' + (String) getFinalShape(features[i])[0]); - if (i % parameterSize == 0) { - createZipExecCommand(parameters); - parameters.clear(); - } - } - if (!parameters.isEmpty()) { - createZipExecCommand(parameters); - parameters.clear(); - } - - createZipRootFileCommand(); - } - - /** - * Zip the root files - */ - private void createZipRootFileCommand() { - if (rootFileProviders.size() == 0) - return; - - List parameters = new ArrayList(1); - parameters.add("-r -q ${zipargs} '" + Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH) + "' . "); //$NON-NLS-1$ //$NON-NLS-2$ - script.printExecTask("zip", Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + configInfo.toStringReplacingAny(".", ANY_STRING), parameters, null); //$NON-NLS-1$ //$NON-NLS-2$ - } - - private void createZipExecCommand(List parameters) { - parameters.add(0, "-r -q " + Utils.getPropertyFormat(PROPERTY_ZIP_ARGS) + " '" + Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH) + '\''); //$NON-NLS-1$ //$NON-NLS-2$ - script.printExecTask("zip", Utils.getPropertyFormat(PROPERTY_ASSEMBLY_TMP), parameters, null); //$NON-NLS-1$ - } + List parameters = new ArrayList(plugins.length + features.length + 1); + for (int i = 0; i < plugins.length; i++) { + parameters.add(Utils.getPropertyFormat(PROPERTY_PLUGIN_ARCHIVE_PREFIX) + '/' + (String) getFinalShape(plugins[i])[0]); + } + for (int i = 0; i < features.length; i++) { + parameters.add(Utils.getPropertyFormat(PROPERTY_FEATURE_ARCHIVE_PREFIX) + '/' + (String) getFinalShape(features[i])[0]); + } + createZipExecCommand(Utils.getPropertyFormat(PROPERTY_ASSEMBLY_TMP), parameters); + + if (!rootFileProviders.isEmpty()) { + parameters.clear(); + parameters.add("."); //$NON-NLS-1$ + createZipExecCommand(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + configInfo.toStringReplacingAny(".", ANY_STRING), parameters); //$NON-NLS-1$ + } + } + + /** + * Create a zip command for the specified parameters. This will chunk the zip + * command into a command of no more that MAX_ZIP_EXEC_COMMAND_PARAMETERS. + * + * @param dir + * the root directory to zip from. + * @param lineArgs + * the list of parameters to the zip command. + */ + private void createZipExecCommand(String dir, List lineArgs) { + String zipArguments = "-r -q " + Utils.getPropertyFormat(PROPERTY_ZIP_ARGS) + " '" + Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH) + '\''; //$NON-NLS-1$ //$NON-NLS-2$ + List zipLineArgs = new ArrayList(MAX_ZIP_EXEC_COMMAND_PARAMETERS + 1); + for (Iterator iter = lineArgs.iterator(); iter.hasNext();) { + zipLineArgs.add(iter.next()); + if (zipLineArgs.size() == MAX_ZIP_EXEC_COMMAND_PARAMETERS) { + zipLineArgs.add(0, zipArguments); + script.printExecTask("zip", dir, zipLineArgs, null); //$NON-NLS-1$ + zipLineArgs.clear(); + } + } + if (!zipLineArgs.isEmpty()) { + zipLineArgs.add(0, zipArguments); + script.printExecTask("zip", dir, zipLineArgs, null); //$NON-NLS-1$ + } + } protected String computeArchiveName() { String extension = (FORMAT_TAR.equalsIgnoreCase(archiveFormat) || FORMAT_ANTTAR.equalsIgnoreCase(archiveFormat)) ? ".tar.gz" : ".zip"; //$NON-NLS-1$ //$NON-NLS-2$ @@ -547,46 +540,64 @@ script.printExecTask("rm", null, args, null); //$NON-NLS-1$ } - //TODO this code andn the generateAntTarTarget() should be refactored using a factory or something like that. - protected void generateAntZipTarget() { - FileSet[] filesPlugins = new FileSet[plugins.length]; - for (int i = 0; i < plugins.length; i++) { - Object[] shape = getFinalShape(plugins[i]); - filesPlugins[i] = new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + DEFAULT_PLUGIN_LOCATION + '/' + (String) shape[0], shape[1] == FILE, null, null, null, null, null, Utils.getPropertyFormat(PROPERTY_PLUGIN_ARCHIVE_PREFIX) + '/' + (String) shape[0], null, null); - } - if (plugins.length != 0) - script.printZipTask(Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH), null, false, true, filesPlugins); - - FileSet[] filesFeatures = new FileSet[features.length]; - for (int i = 0; i < features.length; i++) { - Object[] shape = getFinalShape(features[i]); - filesFeatures[i] = new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + DEFAULT_FEATURE_LOCATION + '/' + (String) shape[0], shape[1] == FILE, null, null, null, null, null, Utils.getPropertyFormat(PROPERTY_FEATURE_ARCHIVE_PREFIX) + '/' + (String) shape[0], null, null); - } - if (features.length != 0) - script.printZipTask(Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH), null, false, true, filesFeatures); - - if (rootFileProviders.size() == 0) - return; - - if (groupConfigs) { - List allConfigs = getConfigInfos(); - FileSet[] rootFiles = new FileSet[allConfigs.size()]; - int i = 0; - for (Iterator iter = allConfigs.iterator(); iter.hasNext();) { - Config elt = (Config) iter.next(); - rootFiles[i++] = new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + elt.toStringReplacingAny(".", ANY_STRING), false, null, "**/**", null, null, null, elt.toStringReplacingAny(".", ANY_STRING), null, null); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ - } - script.printZipTask(Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH), null, false, true, rootFiles); - } else { - FileSet[] permissionSets = generatePermissions(true); - FileSet[] rootFiles = new FileSet[permissionSets.length + 1]; - String toExcludeFromArchive = Utils.getStringFromCollection(this.addedByPermissions, ","); //$NON-NLS-1$ - System.arraycopy(permissionSets, 0, rootFiles, 1, permissionSets.length); - rootFiles[0] = new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + configInfo.toStringReplacingAny(".", ANY_STRING) + '/' + Utils.getPropertyFormat(PROPERTY_COLLECTING_FOLDER), false, null, "**/**", null, toExcludeFromArchive, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX), null, null); //$NON-NLS-1$//$NON-NLS-2$ - script.printZipTask(Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH), null, false, true, rootFiles); - } - } - + // TODO this code andn the generateAntTarTarget() should be refactored using a + // factory or something like that. + protected void generateAntZipTarget() { + List fileSets = new ArrayList(); + FileSet[] pluginsFileSets = getPluginsFileSets(); + if (pluginsFileSets.length != 0) { + fileSets.addAll(Arrays.asList(pluginsFileSets)); + } + FileSet[] featuresFileSets = getFeaturesFileSets(); + if (featuresFileSets.length != 0) { + fileSets.addAll(Arrays.asList(featuresFileSets)); + } + if (!rootFileProviders.isEmpty()) { + if (groupConfigs) { + List allConfigs = getConfigInfos(); + for (Iterator iter = allConfigs.iterator(); iter.hasNext();) { + Config elt = (Config) iter.next(); + fileSets.add(new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + elt.toStringReplacingAny(".", ANY_STRING), false, null, "**/**", null, null, null, elt.toStringReplacingAny(".", ANY_STRING), null, null)); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ + } + } else { + FileSet[] permissionSets = generatePermissions(true); + String toExcludeFromArchive = Utils.getStringFromCollection(this.addedByPermissions, ","); //$NON-NLS-1$ + fileSets.add(new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + configInfo.toStringReplacingAny(".", ANY_STRING) + '/' + Utils.getPropertyFormat(PROPERTY_COLLECTING_FOLDER), false, null, "**/**", null, toExcludeFromArchive, null, Utils.getPropertyFormat(PROPERTY_ARCHIVE_PREFIX), null, null)); //$NON-NLS-1$//$NON-NLS-2$ + if (permissionSets.length != 0) { + fileSets.addAll(Arrays.asList(permissionSets)); + } + } + } + if (!fileSets.isEmpty()) { + FileSet[] filesSetsToAdd = (FileSet[]) fileSets.toArray(new FileSet[fileSets.size()]); + script.printZipTask(Utils.getPropertyFormat(PROPERTY_ARCHIVE_FULLPATH), null, false, true, filesSetsToAdd); + } + } + + /** + * @return the file sets for all defined features. + */ + private FileSet[] getFeaturesFileSets() { + FileSet[] filesFeatures = new FileSet[features.length]; + for (int i = 0; i < features.length; i++) { + Object[] shape = getFinalShape(features[i]); + filesFeatures[i] = new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + DEFAULT_FEATURE_LOCATION + '/' + (String) shape[0], shape[1] == FILE, null, null, null, null, null, Utils.getPropertyFormat(PROPERTY_FEATURE_ARCHIVE_PREFIX) + '/' + (String) shape[0], null, null); + } + return filesFeatures; + } + + /** + * @return the file sets for all defined plugins. + */ + private FileSet[] getPluginsFileSets() { + FileSet[] filesPlugins = new FileSet[plugins.length]; + for (int i = 0; i < plugins.length; i++) { + Object[] shape = getFinalShape(plugins[i]); + filesPlugins[i] = new ZipFileSet(Utils.getPropertyFormat(PROPERTY_ECLIPSE_BASE) + '/' + DEFAULT_PLUGIN_LOCATION + '/' + (String) shape[0], shape[1] == FILE, null, null, null, null, null, Utils.getPropertyFormat(PROPERTY_PLUGIN_ARCHIVE_PREFIX) + '/' + (String) shape[0], null, null); + } + return filesPlugins; + } + protected FileSet[] generatePermissions(boolean zip) { String configInfix = configInfo.toString("."); //$NON-NLS-1$ String prefixPermissions = ROOT_PREFIX + configInfix + '.' + PERMISSIONS + '.'; @@ -631,7 +642,7 @@ return (FileSet[]) fileSets.toArray(new FileSet[fileSets.size()]); } - //TODO this code andn the generateAntZipTarget() should be refactored using a factory or something like that. + //TODO this code and the generateAntZipTarget() should be refactored using a factory or something like that. private void generateAntTarTarget() { FileSet[] filesPlugins = new FileSet[plugins.length]; for (int i = 0; i < plugins.length; i++) { Index: src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java,v retrieving revision 1.87 diff -u -r1.87 ModelBuildScriptGenerator.java --- src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java 8 May 2006 15:18:35 -0000 1.87 +++ src/org/eclipse/pde/internal/build/builder/ModelBuildScriptGenerator.java 22 Mar 2007 04:03:25 -0000 @@ -609,7 +609,7 @@ private void generateRefreshTarget() { script.println(); script.printTargetDeclaration(TARGET_REFRESH, TARGET_INIT, PROPERTY_ECLIPSE_RUNNING, null, Messages.build_plugin_refresh); - script.printConvertPathTask(new Path(getLocation(model)).removeLastSegments(0).toOSString().replace('\\', '/'), PROPERTY_RESOURCE_PATH, false); + script.printConvertPathTask(Utils.getPropertyFormat(PROPERTY_BASEDIR), PROPERTY_RESOURCE_PATH, false); script.printRefreshLocalTask(Utils.getPropertyFormat(PROPERTY_RESOURCE_PATH), "infinite"); //$NON-NLS-1$ script.printTargetEnd(); } Index: src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java,v retrieving revision 1.86 diff -u -r1.86 FeatureBuildScriptGenerator.java --- src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java 8 May 2006 15:18:35 -0000 1.86 +++ src/org/eclipse/pde/internal/build/builder/FeatureBuildScriptGenerator.java 22 Mar 2007 04:03:24 -0000 @@ -1067,7 +1067,7 @@ private void generateRefreshTarget() { script.println(); script.printTargetDeclaration(TARGET_REFRESH, TARGET_INIT, PROPERTY_ECLIPSE_RUNNING, null, NLS.bind(Messages.build_feature_refresh, featureIdentifier)); - script.printConvertPathTask(new Path(featureRootLocation).removeLastSegments(0).toOSString().replace('\\', '/'), PROPERTY_RESOURCE_PATH, false); + script.printConvertPathTask(Utils.getPropertyFormat(PROPERTY_BASEDIR), PROPERTY_RESOURCE_PATH, false); script.printRefreshLocalTask(Utils.getPropertyFormat(PROPERTY_RESOURCE_PATH), "infinite"); //$NON-NLS-1$ Map params = new HashMap(2); params.put(PROPERTY_TARGET, TARGET_REFRESH); Index: src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java,v retrieving revision 1.11 diff -u -r1.11 PackageScriptGenerator.java --- src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java 8 May 2006 15:18:35 -0000 1.11 +++ src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java 22 Mar 2007 04:03:25 -0000 @@ -32,8 +32,8 @@ protected String getScriptName() { if (backwardCompatibleName) - return "package" + '.' + DEFAULT_ASSEMBLE_ALL; - return "package" + '.' + (featureId.equals("") ? "" : featureId + '.') + DEFAULT_ASSEMBLE_ALL; + return DEFAULT_PACKAGE_NAME + '.' + DEFAULT_ASSEMBLE_ALL; + return DEFAULT_PACKAGE_NAME + '.' + (featureId.equals("") ? "" : featureId + '.') + DEFAULT_ASSEMBLE_ALL; //$NON-NLS-1$ //$NON-NLS-2$ } public void setPropertyFile(String propertyFile) { @@ -44,20 +44,23 @@ return new Collection[] {assemblageInformation.getBinaryPlugins(aConfig), assemblageInformation.getBinaryFeatures(aConfig), assemblageInformation.getFeatures(aConfig), new HashSet(0) }; } - protected void basicGenerateAssembleConfigFileTargetCall(Config aConfig, Collection binaryPlugins, Collection binaryFeatures, Collection allFeatures, Collection rootFiles) throws CoreException { - configScriptGenerator.initialize(directory, featureId, aConfig, binaryPlugins, binaryFeatures, allFeatures, rootFiles); - ((PackageConfigScriptGenerator) configScriptGenerator).setPackagingPropertiesLocation(packagingPropertiesLocation); - configScriptGenerator.setArchiveFormat((String) archivesFormat.get(aConfig)); - configScriptGenerator.setGroupConfigs(groupConfigs); - setForceUpdateJar(forceUpdateJarFormat); - configScriptGenerator.setBuildSiteFactory(siteFactory); - configScriptGenerator.generate(); + /** + * {@inheritDoc} + */ + protected void basicGenerateAssembleConfigFileTargetCall(Config aConfig, Collection binaryPlugins, Collection binaryFeatures, Collection allFeatures, Collection rootFiles) throws CoreException { + ((PackageConfigScriptGenerator) configScriptGenerator).setPackagingPropertiesLocation(packagingPropertiesLocation); + setForceUpdateJar(forceUpdateJarFormat); - Map params = new HashMap(1); - params.put("assembleScriptName", configScriptGenerator.getTargetName() + ".xml"); - script.printAntTask(Utils.getPropertyFormat(DEFAULT_CUSTOM_TARGETS), null, computeBackwardCompatibleName(aConfig), null, null, params); - } + super.basicGenerateAssembleConfigFileTargetCall(aConfig, binaryPlugins, binaryFeatures, allFeatures, rootFiles); + } + /** + * {@inheritDoc} + */ + protected String getTargetScriptName(Config aConfig) { + return computeBackwardCompatibleName(aConfig); + } + public void setBackwardCompatibleName(boolean value) { backwardCompatibleName = value; } Index: src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java,v retrieving revision 1.5 diff -u -r1.5 PackagerGenerator.java --- src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java 12 May 2005 15:55:17 -0000 1.5 +++ src/org/eclipse/pde/internal/build/packager/PackagerGenerator.java 22 Mar 2007 04:03:25 -0000 @@ -11,8 +11,8 @@ package org.eclipse.pde.internal.build.packager; import java.util.List; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.pde.internal.build.*; + +import org.eclipse.pde.internal.build.AssemblyInformation; import org.eclipse.pde.internal.build.BuildScriptGenerator; import org.eclipse.pde.internal.build.Utils; import org.eclipse.pde.internal.build.site.BuildTimeSiteFactory; @@ -39,21 +39,27 @@ } } - protected void generatePackageScripts(AssemblyInformation assemblageInformation, String[] featureInfo, BuildTimeSiteFactory factory) throws CoreException { - PackageScriptGenerator assembler = null; - if (groupConfigs) - assembler = new DeltaPackScriptGenerator(workingDirectory, assemblageInformation, featureInfo[0]); - else - assembler = new PackageScriptGenerator(workingDirectory, assemblageInformation, featureInfo[0]); - - assembler.setSignJars(signJars); - assembler.setGenerateJnlp(generateJnlp); - assembler.setArchivesFormat(getArchivesFormat()); - assembler.setPropertyFile(propertyFile); - assembler.setBackwardCompatibleName(true); - assembler.setBuildSiteFactory(factory); - assembler.generate(); - } + /** + * {@inheritDoc} + */ + protected PackageScriptGenerator createPackageScriptGenerator(String directory, AssemblyInformation assemblageInformation, String featureId) { + if (groupConfigs) { + return new DeltaPackScriptGenerator(workingDirectory, assemblageInformation, featureId); + } + return new PackageScriptGenerator(workingDirectory, assemblageInformation, featureId); + } + + /** + * {@inheritDoc} + */ + protected void initialisePackageScriptGenerator(PackageScriptGenerator generator, BuildTimeSiteFactory factory) { + generator.setSignJars(signJars); + generator.setGenerateJnlp(generateJnlp); + generator.setArchivesFormat(getArchivesFormat()); + generator.setPropertyFile(propertyFile); + generator.setBackwardCompatibleName(true); + generator.setBuildSiteFactory(factory); + } public void setPropertyFile(String propertyFile) { this.propertyFile = propertyFile; Index: src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java,v retrieving revision 1.4 diff -u -r1.4 DeltaPackScriptGenerator.java --- src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java 8 May 2006 15:18:35 -0000 1.4 +++ src/org/eclipse/pde/internal/build/packager/DeltaPackScriptGenerator.java 22 Mar 2007 04:03:25 -0000 @@ -18,12 +18,12 @@ import org.eclipse.pde.internal.build.Config; public class DeltaPackScriptGenerator extends PackageScriptGenerator { - public DeltaPackScriptGenerator(String directory, AssemblyInformation assemblageInformation, String featureId) throws CoreException { + public DeltaPackScriptGenerator(String directory, AssemblyInformation assemblageInformation, String featureId) { super(directory, assemblageInformation, featureId); groupConfigs = true; } protected void basicGenerateAssembleConfigFileTargetCall(Config aConfig, Collection binaryPlugins, Collection binaryFeatures, Collection allFeatures, Collection rootFiles) throws CoreException { - super.basicGenerateAssembleConfigFileTargetCall(new Config("delta", "delta", "delta"), binaryPlugins, binaryFeatures, allFeatures, rootFiles); + super.basicGenerateAssembleConfigFileTargetCall(new Config("delta", "delta", "delta"), binaryPlugins, binaryFeatures, allFeatures, rootFiles); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } } Index: META-INF/MANIFEST.MF =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/META-INF/MANIFEST.MF,v retrieving revision 1.17.2.1 diff -u -r1.17.2.1 MANIFEST.MF --- META-INF/MANIFEST.MF 7 Jul 2006 19:23:06 -0000 1.17.2.1 +++ META-INF/MANIFEST.MF 22 Mar 2007 04:03:21 -0000 @@ -13,13 +13,13 @@ org.eclipse.core.runtime.compatibility;bundle-version="[3.1.100,4.0.0)";resolution:=optional Export-Package: org.eclipse.pde.build, - org.eclipse.pde.internal.build;x-friends:="org.eclipse.pde.core,org.eclipse.pde.ui", - org.eclipse.pde.internal.build.ant;x-internal:=true, - org.eclipse.pde.internal.build.builder;x-internal:=true, - org.eclipse.pde.internal.build.fetch;x-internal:=true, - org.eclipse.pde.internal.build.packager;x-internal:=true, - org.eclipse.pde.internal.build.properties;x-internal:=true, - org.eclipse.pde.internal.build.site;x-internal:=true + org.eclipse.pde.internal.build;x-friends:="org.eclipse.pde.core,org.eclipse.pde.ui,org.eclipse.pde.build.test", + org.eclipse.pde.internal.build.ant;x-friends:="org.eclipse.pde.build.test", + org.eclipse.pde.internal.build.builder;x-friends:="org.eclipse.pde.build.test", + org.eclipse.pde.internal.build.fetch;x-friends:="org.eclipse.pde.build.test", + org.eclipse.pde.internal.build.packager;x-friends:="org.eclipse.pde.build.test", + org.eclipse.pde.internal.build.properties;x-friends:="org.eclipse.pde.build.test", + org.eclipse.pde.internal.build.site;x-friends:="org.eclipse.pde.build.test" Import-Package: com.ibm.icu.util Bundle-Localization: plugin Eclipse-LazyStart: true Index: scripts/productBuild/productBuild.xml =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.build/scripts/productBuild/productBuild.xml,v retrieving revision 1.4 diff -u -r1.4 productBuild.xml --- scripts/productBuild/productBuild.xml 5 May 2006 14:18:27 -0000 1.4 +++ scripts/productBuild/productBuild.xml 22 Mar 2007 04:03:21 -0000 @@ -42,6 +42,8 @@ verify="${verify}" pluginPath="${pluginPath}" configInfo="${configs}" + pluginList="${pluginList}" + featureList="${featureList}" />