You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2010/04/19 15:50:39 UTC
svn commit: r935569 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/
main/java/org/apache/tapestry5/services/
test/java/org/apache/tapestry5/internal/services/
test/java/org/apache/tapestry5/services/
Author: hlship
Date: Mon Apr 19 13:50:39 2010
New Revision: 935569
URL: http://svn.apache.org/viewvc?rev=935569&view=rev
Log:
Forbid slashes from library mapping virtual folders or classpath asset alias folders (now, approximately, the same thing)
Added:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java (with props)
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java?rev=935569&r1=935568&r2=935569&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java Mon Apr 19 13:50:39 2010
@@ -46,9 +46,6 @@ public class ClasspathAssetAliasManagerI
/**
* Configuration is a map of aliases (short names) to complete names. Keys and values should end with a slash, but
* one will be provided as necessary, so don't both.
- *
- * @param assetPathConstructor
- * TODO
*/
public ClasspathAssetAliasManagerImpl(AssetPathConstructor assetPathConstructor,
@@ -59,6 +56,12 @@ public class ClasspathAssetAliasManagerI
for (Map.Entry<String, String> e : configuration.entrySet())
{
String alias = withOutSlash(e.getKey());
+
+ if (alias.contains("/"))
+ throw new RuntimeException(String.format(
+ "Virtual folder names (for component libraries) may no longer contain slashes as of Tapestry 5.2. "
+ + "You must change the ComponentClassAsssetAliasManager contribution for '%s'.", alias));
+
String path = withOutSlash(e.getValue());
aliasToPathPrefix.put(alias, path);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java?rev=935569&r1=935568&r2=935569&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java Mon Apr 19 13:50:39 2010
@@ -14,11 +14,12 @@
package org.apache.tapestry5.services;
+import org.apache.tapestry5.ioc.internal.util.Defense;
+
/**
* Used to configure the {@link ComponentClassResolver}, to allow it to map prefixes to library root packages (the
- * application namespace is a special case of this). In each case, a prefix on the path is mapped to a package. Prefixes
- * should start and end with characters, such as "corelib". It is allowed for a prefix to contain a slash, though it is not
- * recommended.
+ * application namespace is a special case of this). In each case, a prefix on the path is mapped to a package. Starting
+ * with Tapestry 5.2, the path prefix may not contain a slash character.
* <p/>
* The root package name should have a number of sub-packages:
* <dl>
@@ -40,6 +41,13 @@ public final class LibraryMapping
public LibraryMapping(String pathPrefix, String rootPackage)
{
+ Defense.notBlank(pathPrefix, "pathPrefix");
+ Defense.notBlank(rootPackage, "rootPackage");
+
+ if (pathPrefix.contains("/"))
+ throw new RuntimeException(
+ "LibraryMapping path prefixes may no longer contain slashes (as of Tapestry 5.2).");
+
this.pathPrefix = pathPrefix;
this.rootPackage = rootPackage;
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java?rev=935569&r1=935568&r2=935569&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java Mon Apr 19 13:50:39 2010
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
+// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -34,14 +34,32 @@ public class ClasspathAssetAliasManagerI
{
Map<String, String> configuration = CollectionFactory.newMap();
- configuration.put("tapestry/4.0", "org/apache/tapestry5/");
- configuration.put("tapestry-internal/3.0", "org/apache/tapestry5/internal/");
- configuration.put("mylib/2.0/", "com/example/mylib/");
+ configuration.put("tapestry", "org/apache/tapestry5/");
+ configuration.put("tapestry-internal", "org/apache/tapestry5/internal/");
+ configuration.put("mylib/", "com/example/mylib/");
return configuration;
}
@Test
+ public void slash_not_allowed_as_alias()
+ {
+ Map<String, String> configuration = CollectionFactory.newMap();
+
+ configuration.put("old/style", "com/myco/old/style/library");
+
+ try
+ {
+ new ClasspathAssetAliasManagerImpl(null, configuration);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertMessageContains(ex, "change the ComponentClassAsssetAliasManager contribution for 'old/style'.");
+ }
+ }
+
+ @Test
public void get_mappings()
{
// Notice how all the trailing slashes (which are tolerated but not wanted)
@@ -49,9 +67,9 @@ public class ClasspathAssetAliasManagerI
Map<String, String> expected = CollectionFactory.newCaseInsensitiveMap();
- expected.put("tapestry/4.0", "org/apache/tapestry5");
- expected.put("tapestry-internal/3.0", "org/apache/tapestry5/internal");
- expected.put("mylib/2.0", "com/example/mylib");
+ expected.put("tapestry", "org/apache/tapestry5");
+ expected.put("tapestry-internal", "org/apache/tapestry5/internal");
+ expected.put("mylib", "com/example/mylib");
ClasspathAssetAliasManager manager = new ClasspathAssetAliasManagerImpl(null, configuration());
@@ -100,10 +118,10 @@ public class ClasspathAssetAliasManagerI
{
return new Object[][]
{
- { "com/example/mylib/Foo.bar", "mylib/2.0/Foo.bar" },
- { "com/example/mylib/nested/Foo.bar", "mylib/2.0/nested/Foo.bar" },
- { "org/apache/tapestry5/internal/Foo.bar", "tapestry-internal/3.0/Foo.bar" },
- { "org/apache/tapestry5/Foo.bar", "tapestry/4.0/Foo.bar" }, };
+ { "com/example/mylib/Foo.bar", "mylib/Foo.bar" },
+ { "com/example/mylib/nested/Foo.bar", "mylib/nested/Foo.bar" },
+ { "org/apache/tapestry5/internal/Foo.bar", "tapestry-internal/Foo.bar" },
+ { "org/apache/tapestry5/Foo.bar", "tapestry/Foo.bar" }, };
}
@Test(dataProvider = "to_resource_path_data")
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java?rev=935569&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java Mon Apr 19 13:50:39 2010
@@ -0,0 +1,46 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.services;
+
+import org.apache.tapestry5.ioc.test.TestBase;
+import org.testng.annotations.Test;
+
+public class LibraryMappingTest extends TestBase
+{
+ @Test
+ public void valid_mapping()
+ {
+ LibraryMapping lm = new LibraryMapping("folder", "root.package");
+
+ assertEquals(lm.getPathPrefix(), "folder");
+ assertEquals(lm.getRootPackage(), "root.package");
+
+ assertEquals(lm.toString(), "LibraryMapping[folder, root.package]");
+ }
+
+ @Test
+ public void invalid_mapping()
+ {
+ try
+ {
+ new LibraryMapping("lib/1.0", "root.package");
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertMessageContains(ex, "may no longer contain slashes");
+ }
+ }
+}
Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java
------------------------------------------------------------------------------
svn:eol-style = native