[jboss-svn-commits] JBL Code SVN: r33631 - labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 24 12:48:13 EDT 2010
Author: Rikkola
Date: 2010-06-24 12:48:12 -0400 (Thu, 24 Jun 2010)
New Revision: 33631
Modified:
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java
Log:
Bug in PackageDeploymentURIHelper
-Always assumed that the URI contains a source file.
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java 2010-06-24 16:42:54 UTC (rev 33630)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/PackageDeploymentURIHelper.java 2010-06-24 16:48:12 UTC (rev 33631)
@@ -33,46 +33,18 @@
*/
public class PackageDeploymentURIHelper {
- private String version;
- private String packageName;
- private String assetName = null;
- private boolean source = true;
- private boolean documentation;
+ private String version;
+ private String packageName;
+ private String assetName = null;
- public PackageDeploymentURIHelper(String uri) throws UnsupportedEncodingException {
+ private enum FileType {
+ UNKNOWN, SOURCE, DOCUMENTATION
+ }
- String url = URLDecoder.decode( uri,
- "UTF-8" );
+ private FileType fileType = FileType.UNKNOWN;
- if ( url.endsWith( ".drl" ) || url.endsWith( ".bpmn" ) || url.endsWith( ".pdf" ) ) {
- int subs = 0;
- if ( url.endsWith( ".drl" ) ) {
- source = true;
- subs = 4;
- } else if ( url.endsWith( ".bpmn" ) ) {
- source = true;
- subs = 5;
- } else if ( url.endsWith( ".pdf" ) ) {
- documentation = true;
- subs = 4;
- }
-
- url = url.substring( 0,
- url.length() - subs );
-
- }
-
- Pattern pattern = Pattern.compile( ".*/(package|asset)/(.*)" );
- Matcher m = pattern.matcher( url );
- if ( m.matches() ) {
- String result = m.group( 2 );
- String[] mtoks = result.split( "/" );
- this.version = mtoks[1];
- this.packageName = mtoks[0];
- if ( mtoks.length == 3 ) {
- this.assetName = mtoks[2];
- }
- }
+ public PackageDeploymentURIHelper(String uri) throws UnsupportedEncodingException {
+ new URIProcessor().parseUri( uri );
}
public String getPackageName() {
@@ -88,21 +60,84 @@
}
public boolean isSource() {
-
- return source;
+ return fileType == FileType.SOURCE;
}
public boolean isDocumentation() {
-
- return documentation;
+ return fileType == FileType.DOCUMENTATION;
}
public String getAssetName() {
return this.assetName;
-
}
public boolean isAsset() {
return assetName != null;
}
+
+ class URIProcessor {
+
+ private static final String PDF = ".pdf";
+ private static final String BPMN = ".bpmn";
+ private static final String DRL = ".drl";
+
+ private String url;
+
+ public void parseUri(String uri) throws UnsupportedEncodingException {
+ url = URLDecoder.decode( uri,
+ "UTF-8" );
+
+ String extension = getFileExtensionIfAny();
+ setFileTypeIfAny( extension );
+ stripFileExtensionIfAny( extension );
+ setPackageOrAssetData();
+ }
+
+ private void setPackageOrAssetData() {
+ Pattern pattern = Pattern.compile( ".*/(package|asset)/(.*)" );
+ Matcher matcher = pattern.matcher( url );
+ if ( matcher.matches() ) {
+ String result = matcher.group( 2 );
+ String[] tokens = result.split( "/" );
+ version = tokens[1];
+ packageName = tokens[0];
+ if ( tokens.length == 3 ) {
+ assetName = tokens[2];
+ }
+ }
+ }
+
+ private void setFileTypeIfAny(String extension) {
+ if ( extension.equals( DRL ) || extension.equals( BPMN ) ) {
+ fileType = FileType.SOURCE;
+ } else if ( extension.equals( PDF ) ) {
+ fileType = FileType.DOCUMENTATION;
+ }
+ }
+
+ private void stripFileExtensionIfAny(String extension) {
+ if ( extension.length() > 0 ) {
+ url = url.substring( 0,
+ url.length() - extension.length() );
+ }
+ }
+
+ private String getFileExtensionIfAny() {
+
+ if ( isFileType( DRL ) ) {
+ return DRL;
+ } else if ( isFileType( BPMN ) ) {
+ return BPMN;
+ } else if ( isFileType( PDF ) ) {
+ return PDF;
+ }
+
+ return "";
+ }
+
+ private boolean isFileType(String extension) {
+ return url.endsWith( extension );
+ }
+
+ }
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list