protected void modifyEclipseClasspath( ServiceExtensionDescriptionType desc, ServiceInformation info) throws CodegenExtensionException { // get the eclipse classpath document File classpathFile = new File(info.getBaseDirectory(), ".classpath"); if (classpathFile.exists()) { logger.info("Modifying eclipse .classpath file"); Set<File> libs = new HashSet<File>(); ExtensionTypeExtensionData data = ExtensionTools.getExtensionData(desc, info); AdditionalLibraries additionalLibs = null; try { additionalLibs = ExtensionDataUtils.getExtensionData(data).getAdditionalLibraries(); } catch (Exception ex) { throw new CodegenExtensionException("Error retrieving extension data"); } if (additionalLibs != null && additionalLibs.getJarName() != null) { for (int i = 0; i < additionalLibs.getJarName().length; i++) { String jarFilename = additionalLibs.getJarName(i); libs.add(new File(info.getBaseDirectory(), "lib" + File.separator + jarFilename)); } } File[] libFiles = new File[libs.size()]; libs.toArray(libFiles); try { logger.info("Adding libraries to classpath file:"); for (int i = 0; i < libFiles.length; i++) { logger.info("\t" + libFiles[i].getAbsolutePath()); } ExtensionUtilities.syncEclipseClasspath(classpathFile, libFiles); } catch (Exception ex) { throw new CodegenExtensionException( "Error modifying Eclipse .classpath file: " + ex.getMessage(), ex); } } else { logger.warn("Eclipse .classpath file " + classpathFile.getAbsolutePath() + " not found!"); } }
private void updateDataLibraries() throws UpgradeException { FileFilter oldDataLibFilter = new FileFilter() { public boolean accept(File pathname) { String name = pathname.getName(); return name.endsWith(".jar") && (name.startsWith("caGrid-data-") || name.startsWith("caGrid-core-") || name.startsWith("caGrid-CQL-") || name.startsWith("caGrid-caDSR-") || name.startsWith("caGrid-metadata-")); } }; FileFilter newDataLibFilter = new FileFilter() { public boolean accept(File pathname) { String name = pathname.getName(); return name.endsWith(".jar") && (name.startsWith("caGrid-data-") || name.startsWith("caGrid-core-") || name.startsWith("caGrid-CQL-") || name.startsWith("caGrid-caDSR-") || name.startsWith("caGrid-metadata-") || name.startsWith("caGrid-mms-") || name.startsWith("castor-1.0.2")); } }; // locate the old data service libs in the service File serviceLibDir = new File(getServicePath() + File.separator + "lib"); File[] serviceDataLibs = serviceLibDir.listFiles(oldDataLibFilter); // delete the old libraries for (File oldLib : serviceDataLibs) { oldLib.delete(); getStatus().addDescriptionLine("caGrid 1.5 library " + oldLib.getName() + " removed"); } // copy new libraries in File extLibDir = new File(ExtensionsLoader.EXTENSIONS_DIRECTORY + File.separator + "lib"); File[] dataLibs = extLibDir.listFiles(newDataLibFilter); List<File> outLibs = new ArrayList<File>(dataLibs.length); for (File newLib : dataLibs) { File out = new File(serviceLibDir.getAbsolutePath() + File.separator + newLib.getName()); try { Utils.copyFile(newLib, out); getStatus() .addDescriptionLine( "caGrid " + UpgraderConstants.DATA_CURRENT_VERSION + " library " + newLib.getName() + " added"); } catch (IOException ex) { throw new UpgradeException( "Error copying new data service library: " + ex.getMessage(), ex); } outLibs.add(out); } // update the Eclipse .classpath file File classpathFile = new File(getServicePath() + File.separator + ".classpath"); File[] outLibArray = new File[dataLibs.length]; outLibs.toArray(outLibArray); try { ExtensionUtilities.syncEclipseClasspath(classpathFile, outLibArray); getStatus().addDescriptionLine("Eclipse .classpath file updated"); } catch (Exception ex) { throw new UpgradeException("Error updating Eclipse .classpath file: " + ex.getMessage(), ex); } }