@Override protected IStatus performJob() { IStatus result = doClone(); if (result.isOK()) { return result; } else { try { if (project != null) GitCloneHandlerV1.removeProject(user, project); else FileUtils.delete(URIUtil.toFile(clone.getContentLocation()), FileUtils.RECURSIVE); } catch (IOException e) { String msg = "An error occured when cleaning up after a clone failure"; result = new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, msg, e); } return result; } }
/** * Creates a URL describing the location of a included schema. First looks up the plug-in in the * schema registry, then tries additional source locations, then looks for a co-located plug-in, * then looks in the additional search path locations. * * @param pluginID ID of the plug-in owning the schema * @param path the path to the schema inside the plug-in * @param parentURL url of the parent schema file * @param additionalSearchPath list of additional locations to search; only used with the <code> * pde.convertSchemaToHTML</code> Ant task * @return a url location of the included schema or <code>null</code> */ private static URL getPluginRelativePath( String pluginID, IPath path, URL parentURL, List<IPath> additionalSearchPath) { // Start by looking in the schema registry URL url = SchemaRegistry.getSchemaURL(pluginID, path.toString()); // Next search source locations if (url == null) { IPluginModelBase model = PluginRegistry.findModel(pluginID); if (model != null) url = SchemaRegistry.getSchemaFromSourceExtension(model.getPluginBase(), path); } File parentFile = null; if (url == null && parentURL != null) { try { parentFile = URIUtil.toFile(URIUtil.toURI(parentURL)); } catch (URISyntaxException e) { } } // If we are running the ant task, see if another project co-located with the parent contains // the schema file // The project folder must have the plug-in ID as its file name if (url == null && parentFile != null) { try { // assuming schemas are located in: pluginId/schema/schemaFile.exsd (need to go up to parent // of plug-in directory) File pluginFile = new File(parentFile + "/../../../" + pluginID); // $NON-NLS-1$ if (pluginFile.isDirectory()) { File schemaFile = new File(pluginFile, path.toOSString()); if (schemaFile.exists()) { url = schemaFile.toURL(); } // This is how we would extract the schema from a jar, but in practice this will never be // the case // because when a bundle is built, the schema files are moved to the source bundle, not // the bundle we are checking // } else if (CoreUtility.jarContainsResource(pluginFile, path.toPortableString(), // false)) { // url = new URL("jar:file:" + pluginFile.getAbsolutePath() + "!/" + path); // //$NON-NLS-1$ //$NON-NLS-2$ } } catch (MalformedURLException e) { } } // If we are running the ant task, additional search locations may be provided // The project folder must have the plug-in ID as its file name if (url == null && additionalSearchPath != null) { for (IPath searchPath : additionalSearchPath) { File pluginFile = null; if (searchPath.isAbsolute()) { // Append plug-in id directly to absolute paths pluginFile = new File(searchPath.toFile(), pluginID); } else if (parentFile != null) { // Append relative path to parent file location File file = new File(parentFile, searchPath.toOSString()); pluginFile = new File(file, pluginID); } if (pluginFile != null && pluginFile.isDirectory()) { try { File schemaFile = new File(pluginFile, path.toOSString()); if (schemaFile.exists()) { url = schemaFile.toURL(); break; } } catch (MalformedURLException e) { } } } } return url; }