# HG changeset patch # User Alexander Simon # Date 1318512312 -14400 # Node ID 2ddde04801341cbc45989931562543affac12ece # Parent aae3f2d098c7d3a1e6c1e0fffe6f60c236483ebf fixing Bug #203507 Can't create project in Samba Remote mode (WindowsXP->Solaris) diff --git a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/MakeProjectGeneratorImpl.java b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/MakeProjectGeneratorImpl.java --- a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/MakeProjectGeneratorImpl.java +++ b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/MakeProjectGeneratorImpl.java @@ -80,6 +80,7 @@ import org.w3c.dom.Element; import org.netbeans.modules.cnd.makeproject.api.ProjectGenerator.ProjectParameters; import org.netbeans.modules.cnd.makeproject.api.ProjectSupport; +import org.netbeans.modules.cnd.makeproject.ui.wizards.MakeSampleProjectGenerator; import org.netbeans.modules.cnd.spi.remote.RemoteSyncFactory; import org.netbeans.modules.cnd.utils.CndPathUtilitities; import org.netbeans.modules.cnd.utils.CndUtils; @@ -108,7 +109,11 @@ public static String getDefaultProjectFolder(ExecutionEnvironment env) { try { - return HostInfoUtils.getHostInfo(env).getUserDir() + '/' + ProjectChooser.getProjectsFolder().getName(); //NOI18N + if (env.isLocal()) { + return getDefaultProjectFolder(); + } else { + return HostInfoUtils.getHostInfo(env).getUserDir() + '/' + ProjectChooser.getProjectsFolder().getName(); //NOI18N + } } catch (IOException ex) { ex.printStackTrace(System.err); // it doesn't make sense to disturb user } catch (CancellationException ex) { @@ -345,7 +350,9 @@ } private static FileObject createProjectDir(ProjectParameters prjParams) throws IOException { - FileObject dirFO = FileUtil.createFolder(prjParams.getSourceFileSystem().getRoot(), prjParams.getProjectFolderPath()); + String projectFolderPath = prjParams.getProjectFolderPath(); + MakeSampleProjectGenerator.workAroundBug203507(projectFolderPath); + FileObject dirFO = FileUtil.createFolder(prjParams.getSourceFileSystem().getRoot(), projectFolderPath); //File dir = prjParams.getProjectFolder(); //if (!dir.exists()) { // //Refresh before mkdir not to depend on window focus diff --git a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/ProjectActionSupport.java b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/ProjectActionSupport.java --- a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/ProjectActionSupport.java +++ b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/ProjectActionSupport.java @@ -714,7 +714,11 @@ runDir = runDir.trim(); if (runDir.startsWith("~/") || runDir.startsWith("~\\") || runDir.equals("~")) { // NOI18N try { - runDir = HostInfoUtils.getHostInfo(pae.getConfiguration().getDevelopmentHost().getExecutionEnvironment()).getUserDir() + runDir.substring(1); + if (pae.getConfiguration().getDevelopmentHost().getExecutionEnvironment().isLocal()) { + runDir = HostInfoUtils.getHostInfo(pae.getConfiguration().getDevelopmentHost().getExecutionEnvironment()).getUserDirFile().getAbsolutePath() + runDir.substring(1); + } else { + runDir = HostInfoUtils.getHostInfo(pae.getConfiguration().getDevelopmentHost().getExecutionEnvironment()).getUserDir() + runDir.substring(1); + } } catch (IOException ex) { Logger.getLogger(ProjectActionSupport.class.getName()).log(Level.INFO, "", ex); // NOI18N } catch (CancellationException ex) { diff --git a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/runprofiles/RunProfile.java b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/runprofiles/RunProfile.java --- a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/runprofiles/RunProfile.java +++ b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/api/runprofiles/RunProfile.java @@ -539,7 +539,11 @@ runDir2 = runDir2.trim(); if (makeConfiguration != null && (runDir2.startsWith("~/") || runDir2.startsWith("~\\") || runDir2.equals("~"))) { // NOI18N try { - runDir2 = HostInfoUtils.getHostInfo(makeConfiguration.getDevelopmentHost().getExecutionEnvironment()).getUserDir() + runDir2.substring(1); + if (makeConfiguration.getDevelopmentHost().getExecutionEnvironment().isLocal()) { + runDir2 = HostInfoUtils.getHostInfo(makeConfiguration.getDevelopmentHost().getExecutionEnvironment()).getUserDirFile().getAbsolutePath() + runDir2.substring(1); + } else { + runDir2 = HostInfoUtils.getHostInfo(makeConfiguration.getDevelopmentHost().getExecutionEnvironment()).getUserDir() + runDir2.substring(1); + } } catch (IOException ex) { Logger.getLogger(RunProfile.class.getName()).log(Level.INFO, "", ex); // NOI18N } catch (CancellationException ex) { diff --git a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/ui/wizards/MakeSampleProjectGenerator.java b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/ui/wizards/MakeSampleProjectGenerator.java --- a/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/ui/wizards/MakeSampleProjectGenerator.java +++ b/cnd.makeproject/src/org/netbeans/modules/cnd/makeproject/ui/wizards/MakeSampleProjectGenerator.java @@ -45,11 +45,13 @@ import java.io.BufferedReader; import java.io.BufferedWriter; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -80,6 +82,7 @@ import org.openide.filesystems.FileLock; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; +import org.openide.filesystems.URLMapper; import org.openide.loaders.DataObject; import org.openide.util.Lookup; import org.openide.xml.XMLUtil; @@ -117,7 +120,9 @@ prjParams.setPostCreationClassName(postCreationClassName); } if (mainProject != null) { - FileObject parentFolderLocation = FileUtil.createFolder(prjParams.getSourceFileSystem().getRoot(), prjParams.getProjectFolderPath()); + final String projectFolderPath = prjParams.getProjectFolderPath(); + workAroundBug203507(projectFolderPath); + FileObject parentFolderLocation = FileUtil.createFolder(prjParams.getSourceFileSystem().getRoot(), projectFolderPath); FileObject mainProjectLocation; if (mainProject.equals(".")) { // NOI18N mainProjectLocation = parentFolderLocation; @@ -343,8 +348,23 @@ "APPLICATION", flavor, family, host, platform, "SAMPLE_PROJECT"); //NOI18N } + public static void workAroundBug203507(String projectFolderPath) { + if (projectFolderPath.length()>1 && projectFolderPath.charAt(1) == ':') { + // This is ugly work around Bug #203507 + try { + File driver = new File(projectFolderPath.substring(0,2)); + URL url = driver.toURI().toURL(); + /*FileObject driverFO =*/ URLMapper.findFileObject(url); + } catch (Throwable e) { + } + } + + } + public static Set createProjectFromTemplate(InputStream inputStream, ProjectGenerator.ProjectParameters prjParams) throws IOException { - FileObject prjLoc = FileUtil.createFolder(prjParams.getSourceFileSystem().getRoot(), prjParams.getProjectFolderPath()); + String projectFolderPath = prjParams.getProjectFolderPath(); + workAroundBug203507(projectFolderPath); + FileObject prjLoc = FileUtil.createFolder(prjParams.getSourceFileSystem().getRoot(), projectFolderPath); unzip(inputStream, prjLoc); postProcessProject(prjLoc, prjParams.getProjectName(), prjParams); customPostProcessProject(prjLoc, prjParams.getProjectName(), prjParams); diff --git a/cnd.remote/src/org/netbeans/modules/remote/ui/OpenTerminalAction.java b/cnd.remote/src/org/netbeans/modules/remote/ui/OpenTerminalAction.java --- a/cnd.remote/src/org/netbeans/modules/remote/ui/OpenTerminalAction.java +++ b/cnd.remote/src/org/netbeans/modules/remote/ui/OpenTerminalAction.java @@ -233,7 +233,12 @@ try { HostInfo hostInfo = HostInfoUtils.getHostInfo(env); if (hostInfo != null) { - String userDir = hostInfo.getUserDir(); + String userDir; + if (env.isLocal()) { + userDir = hostInfo.getUserDirFile().getAbsolutePath(); + } else { + userDir = hostInfo.getUserDir(); + } return userDir; } } catch (IOException ex) {