Author: dmaliarevich
Date: 2009-12-30 07:58:50 -0500 (Wed, 30 Dec 2009)
New Revision: 19616
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSFLinkHyperlink.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/pv/JSFPromptingProvider.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/CompoundPattern.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/JSFUrlPattern.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PostfixUrlPattern.java
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PrefixUrlPattern.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5577, Resolving JSF mappings was corrected, both
jsp and xhtml files will be accepted.
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/pv/JSFPromptingProvider.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/pv/JSFPromptingProvider.java 2009-12-30
12:28:51 UTC (rev 19615)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/model/pv/JSFPromptingProvider.java 2009-12-30
12:58:50 UTC (rev 19616)
@@ -469,16 +469,31 @@
//JSF_GET_PATH
List<Object> getPathAsList(XModel model, String url) {
- String s = getPath(model, url);
- if(s == null) return EMPTY_LIST;
- List<Object> l = new ArrayList<Object>();
- l.add(s);
- return l;
+ /*
+ * Fixes
https://jira.jboss.org/jira/browse/JBIDE-5577
+ * List will return all possible paths for url.
+ */
+ List<Object> pathsList = new ArrayList<Object>();
+ JSFWebProject p = JSFWebProject.getInstance(model);
+ if(p == null) {
+ pathsList.add(url);
+ } else {
+ JSFUrlPattern pattern = p.getUrlPattern();
+ if (pattern != null) {
+ pathsList.addAll(pattern.getJSFPaths(url));
+ } else {
+ pathsList.add(url);
+ }
+ }
+ return pathsList;
+
}
String getPath(XModel model, String url) {
JSFWebProject p = JSFWebProject.getInstance(model);
- if(p == null) return url;
+ if(p == null) {
+ return url;
+ }
JSFUrlPattern pattern = p.getUrlPattern();
return (pattern == null) ? url : pattern.getJSFPath(url);
}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/CompoundPattern.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/CompoundPattern.java 2009-12-30
12:28:51 UTC (rev 19615)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/CompoundPattern.java 2009-12-30
12:58:50 UTC (rev 19616)
@@ -10,6 +10,9 @@
******************************************************************************/
package org.jboss.tools.jsf.web.pattern;
+import java.util.ArrayList;
+import java.util.List;
+
public class CompoundPattern implements JSFUrlPattern {
JSFUrlPattern[] patterns = PatternLoader.DEFAULT_PATTERNS;
@@ -48,5 +51,13 @@
}
return patterns[0].getJSFUrl(path);
}
+
+ /**
+ * Stub implementation
+ * @see org.jboss.tools.jsf.web.pattern.JSFUrlPattern#getJSFPaths(java.lang.String)
+ */
+ public List<String> getJSFPaths(String url) {
+ return new ArrayList<String>();
+ }
}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/JSFUrlPattern.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/JSFUrlPattern.java 2009-12-30
12:28:51 UTC (rev 19615)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/JSFUrlPattern.java 2009-12-30
12:58:50 UTC (rev 19616)
@@ -10,9 +10,20 @@
******************************************************************************/
package org.jboss.tools.jsf.web.pattern;
+import java.util.List;
+
public interface JSFUrlPattern {
- public boolean matches(String path);
- public boolean isJSFUrl(String path);
- public String getJSFPath(String url);
- public String getJSFUrl(String path);
+ boolean matches(String path);
+ boolean isJSFUrl(String path);
+ String getJSFPath(String url);
+ String getJSFUrl(String path);
+ /**
+ * Fixes
https://jira.jboss.org/jira/browse/JBIDE-5577
+ * <p>
+ * Searches files that could have been mapped to jsf servlet.
+ *
+ * @param url the jsf mapping path
+ * @return the list of possible jsf files
+ */
+ List<String> getJSFPaths(String url);
}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PostfixUrlPattern.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PostfixUrlPattern.java 2009-12-30
12:28:51 UTC (rev 19615)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PostfixUrlPattern.java 2009-12-30
12:58:50 UTC (rev 19616)
@@ -10,10 +10,19 @@
******************************************************************************/
package org.jboss.tools.jsf.web.pattern;
+import java.util.ArrayList;
+import java.util.List;
+
public class PostfixUrlPattern implements JSFUrlPattern {
protected String postfix = ".jsf";
protected String fileSuffix = ".jsp";
-
+ /*
+ * Fixes
https://jira.jboss.org/jira/browse/JBIDE-5577
+ * JSF files could be mapped to xhtml files also.
+ * All of this extensions should be checked.
+ */
+ protected String[] fileExtensions = {".jsp", ".xhtml"};
+
public void setPostfix(String postfix) {
this.postfix = postfix;
}
@@ -22,6 +31,10 @@
fileSuffix = s;
}
+ public void setFileExtentions(String[] fileExtentions) {
+ this.fileExtensions = fileExtentions;
+ }
+
public boolean matches(String path) {
return path.endsWith(postfix);
}
@@ -35,6 +48,20 @@
return (url.endsWith(postfix)) ? url.substring(0, url.length() - postfix.length()) +
fileSuffix : url;
}
+ public List<String> getJSFPaths(String url) {
+ List<String> jsfPathsList = new ArrayList<String>();
+ if((url != null) && (url.length() > 0)) {
+ if (url.endsWith(postfix)) {
+ for (String extension : fileExtensions) {
+ jsfPathsList.add(url.substring(0, url.length() - postfix.length()) + extension);
+ }
+ } else {
+ jsfPathsList.add(url);
+ }
+ }
+ return jsfPathsList;
+ }
+
public String getJSFUrl(String path) {
if(path == null || path.length() == 0) return path;
if(!path.endsWith(postfix)) {
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PrefixUrlPattern.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PrefixUrlPattern.java 2009-12-30
12:28:51 UTC (rev 19615)
+++
trunk/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/web/pattern/PrefixUrlPattern.java 2009-12-30
12:58:50 UTC (rev 19616)
@@ -10,6 +10,9 @@
******************************************************************************/
package org.jboss.tools.jsf.web.pattern;
+import java.util.ArrayList;
+import java.util.List;
+
public class PrefixUrlPattern implements JSFUrlPattern {
protected String prefix = "/faces/";
@@ -37,6 +40,14 @@
return path;
}
+ /**
+ * Stub implementation
+ * @see org.jboss.tools.jsf.web.pattern.JSFUrlPattern#getJSFPaths(java.lang.String)
+ */
+ public List<String> getJSFPaths(String url) {
+ return new ArrayList<String>();
+ }
+
public String toString() {
return "PrefixUrlPattern:" + prefix;
}
Modified:
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSFLinkHyperlink.java
===================================================================
---
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSFLinkHyperlink.java 2009-12-30
12:28:51 UTC (rev 19615)
+++
trunk/jsf/plugins/org.jboss.tools.jsf.text.ext/src/org/jboss/tools/jsf/text/ext/hyperlink/JSFLinkHyperlink.java 2009-12-30
12:58:50 UTC (rev 19616)
@@ -31,7 +31,6 @@
protected String updateFilenameForModel(String filename, IProject project) {
// Begin of Slava's magic
WebPromptingProvider provider = WebPromptingProvider.getInstance();
-
IModelNature n = EclipseResourceUtil.getModelNature(project);
XModel xModel = n == null ? null : n.getModel();
@@ -50,11 +49,35 @@
}
protected IFile getFileFromProject(String fileName) {
+ IFile fileFromProject = null;
IFile documentFile = getFile();
- if(documentFile == null) return null;
+ if(documentFile == null) {
+ return null;
+ }
+ IProject project = documentFile.getProject();
+ /*
+ * Fixes
https://jira.jboss.org/jira/browse/JBIDE-5577
+ * Get existed file from the project.
+ * There could be several files, the first one will be returned.
+ */
+ WebPromptingProvider provider = WebPromptingProvider.getInstance();
+ IModelNature n = EclipseResourceUtil.getModelNature(project);
+ XModel xModel = n == null ? null : n.getModel();
+ if (xModel != null) {
+ List<Object> list = provider.getList(xModel, WebPromptingProvider.JSF_GET_PATH,
fileName, null);
+ if ((list != null) && (list.size() > 0)) {
+ for (Object realFileName : list) {
+ if (realFileName instanceof String) {
+ fileFromProject = super.getFileFromProject((String)realFileName);
+ if (fileFromProject != null) {
+ break;
+ }
+ }
+ }
+ }
+ }
- IProject project = documentFile.getProject();
- return super.getFileFromProject(updateFilenameForModel(fileName, project));
+ return fileFromProject;
}
}
\ No newline at end of file