Lines 48-53
Link Here
|
48 |
import java.beans.PropertyChangeSupport; |
48 |
import java.beans.PropertyChangeSupport; |
49 |
import java.io.File; |
49 |
import java.io.File; |
50 |
import java.io.IOException; |
50 |
import java.io.IOException; |
|
|
51 |
import java.net.MalformedURLException; |
52 |
import java.net.URL; |
51 |
import java.util.ArrayList; |
53 |
import java.util.ArrayList; |
52 |
import java.util.Arrays; |
54 |
import java.util.Arrays; |
53 |
import java.util.Collections; |
55 |
import java.util.Collections; |
Lines 84-89
Link Here
|
84 |
import org.netbeans.modules.php.project.copysupport.CopySupport; |
86 |
import org.netbeans.modules.php.project.copysupport.CopySupport; |
85 |
import org.netbeans.modules.php.project.internalserver.InternalWebServer; |
87 |
import org.netbeans.modules.php.project.internalserver.InternalWebServer; |
86 |
import org.netbeans.modules.php.project.problems.ProjectPropertiesProblemProvider; |
88 |
import org.netbeans.modules.php.project.problems.ProjectPropertiesProblemProvider; |
|
|
89 |
import org.netbeans.modules.php.project.ui.actions.support.CommandUtils; |
87 |
import org.netbeans.modules.php.project.ui.actions.support.ConfigAction; |
90 |
import org.netbeans.modules.php.project.ui.actions.support.ConfigAction; |
88 |
import org.netbeans.modules.php.project.ui.codecoverage.PhpCoverageProvider; |
91 |
import org.netbeans.modules.php.project.ui.codecoverage.PhpCoverageProvider; |
89 |
import org.netbeans.modules.php.project.ui.customizer.CustomizerProviderImpl; |
92 |
import org.netbeans.modules.php.project.ui.customizer.CustomizerProviderImpl; |
Lines 94-99
Link Here
|
94 |
import org.netbeans.modules.php.spi.framework.PhpFrameworkProvider; |
97 |
import org.netbeans.modules.php.spi.framework.PhpFrameworkProvider; |
95 |
import org.netbeans.modules.php.spi.framework.PhpModuleIgnoredFilesExtender; |
98 |
import org.netbeans.modules.php.spi.framework.PhpModuleIgnoredFilesExtender; |
96 |
import org.netbeans.modules.web.common.spi.ProjectWebRootProvider; |
99 |
import org.netbeans.modules.web.common.spi.ProjectWebRootProvider; |
|
|
100 |
import org.netbeans.modules.web.common.spi.ServerURLMappingImplementation; |
97 |
import org.netbeans.spi.project.AuxiliaryConfiguration; |
101 |
import org.netbeans.spi.project.AuxiliaryConfiguration; |
98 |
import org.netbeans.spi.project.support.ant.AntBasedProjectRegistration; |
102 |
import org.netbeans.spi.project.support.ant.AntBasedProjectRegistration; |
99 |
import org.netbeans.spi.project.support.ant.AntProjectEvent; |
103 |
import org.netbeans.spi.project.support.ant.AntProjectEvent; |
Lines 606-612
Link Here
|
606 |
InternalWebServer.createForProject(this), |
610 |
InternalWebServer.createForProject(this), |
607 |
ProjectPropertiesProblemProvider.createForProject(this), |
611 |
ProjectPropertiesProblemProvider.createForProject(this), |
608 |
UILookupMergerSupport.createProjectProblemsProviderMerger(), |
612 |
UILookupMergerSupport.createProjectProblemsProviderMerger(), |
609 |
new ProjectWebRootProviderImpl() |
613 |
new ProjectWebRootProviderImpl(), |
|
|
614 |
ServerMapping.create(this), |
610 |
// ?? getRefHelper() |
615 |
// ?? getRefHelper() |
611 |
}); |
616 |
}); |
612 |
} |
617 |
} |
Lines 1015-1018
Link Here
|
1015 |
return Collections.unmodifiableList(list); |
1020 |
return Collections.unmodifiableList(list); |
1016 |
} |
1021 |
} |
1017 |
} |
1022 |
} |
1018 |
} |
1023 |
|
|
|
1024 |
private static final class ServerMapping implements ServerURLMappingImplementation, PropertyChangeListener { |
1025 |
|
1026 |
private final PhpProject project; |
1027 |
|
1028 |
private volatile String projectRootUrl; |
1029 |
|
1030 |
|
1031 |
private ServerMapping(PhpProject project) { |
1032 |
assert project != null; |
1033 |
this.project = project; |
1034 |
} |
1035 |
|
1036 |
public static ServerMapping create(PhpProject project) { |
1037 |
ServerMapping serverMapping = new ServerMapping(project); |
1038 |
ProjectPropertiesSupport.addWeakPropertyEvaluatorListener(project, serverMapping); |
1039 |
return serverMapping; |
1040 |
} |
1041 |
|
1042 |
@Override |
1043 |
public URL toServer(int projectContext, FileObject projectFile) { |
1044 |
init(); |
1045 |
if (projectRootUrl == null) { |
1046 |
return null; |
1047 |
} |
1048 |
FileObject webRoot = project.getWebRootDirectory(); |
1049 |
if (webRoot == null) { |
1050 |
return null; |
1051 |
} |
1052 |
String relPath = FileUtil.getRelativePath(webRoot, projectFile); |
1053 |
if (relPath == null) { |
1054 |
return null; |
1055 |
} |
1056 |
try { |
1057 |
return new URL(projectRootUrl + relPath); |
1058 |
} catch (MalformedURLException ex) { |
1059 |
return null; |
1060 |
} |
1061 |
} |
1062 |
|
1063 |
@Override |
1064 |
public FileObject fromServer(int projectContext, URL serverURL) { |
1065 |
init(); |
1066 |
if (projectRootUrl == null) { |
1067 |
return null; |
1068 |
} |
1069 |
FileObject webRoot = project.getWebRootDirectory(); |
1070 |
if (webRoot == null) { |
1071 |
return null; |
1072 |
} |
1073 |
String url = CommandUtils.urlToString(serverURL, true); |
1074 |
if (url.startsWith(projectRootUrl)) { |
1075 |
return webRoot.getFileObject(url.substring(projectRootUrl.length())); |
1076 |
} |
1077 |
return null; |
1078 |
} |
1079 |
|
1080 |
private void init() { |
1081 |
if (projectRootUrl == null) { |
1082 |
projectRootUrl = getProjectRootUrl(); |
1083 |
} |
1084 |
} |
1085 |
|
1086 |
private String getProjectRootUrl() { |
1087 |
try { |
1088 |
String url = CommandUtils.urlToString(CommandUtils.getBaseURL(project, true), true); |
1089 |
if (!url.endsWith("/")) { // NOI18N |
1090 |
url += "/"; // NOI18N |
1091 |
} |
1092 |
return url; |
1093 |
} catch (MalformedURLException ex) { |
1094 |
return null; |
1095 |
} |
1096 |
} |
1097 |
|
1098 |
@Override |
1099 |
public void propertyChange(PropertyChangeEvent evt) { |
1100 |
if (PhpProjectProperties.URL.equals(evt.getPropertyName())) { |
1101 |
projectRootUrl = null; |
1102 |
} |
1103 |
} |
1104 |
|
1105 |
} |
1106 |
|
1107 |
} |