Author: drobiazko
Date: Sun Sep 6 17:35:12 2009
New Revision: 811842
URL: http://svn.apache.org/viewvc?rev=811842&view=rev
Log:
TAP5-678: Allow blackbird to be disabled in production mode
Added:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java
(with props)
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java?rev=811842&r1=811841&r2=811842&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
Sun Sep 6 17:35:12 2009
@@ -180,4 +180,11 @@
*/
public static final String COMBINE_SCRIPTS = "tapestry.combine-scripts";
+ /**
+ * If "true" then Blackbird JavaScript console is enabled.
+ *
+ * @since 5.2.0.0
+ */
+ public static final String BLACKBIRD_ENABLED =
"tapestry.blackbird-enabled";
+
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java?rev=811842&r1=811841&r2=811842&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java
Sun Sep 6 17:35:12 2009
@@ -15,6 +15,8 @@
package org.apache.tapestry5.internal.services;
import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.services.SymbolSource;
import org.apache.tapestry5.ioc.services.ThreadLocale;
@@ -38,7 +40,9 @@
private final ThreadLocale threadLocale;
- private final List<Asset> javascriptStack, stylesheetStack;
+ private final List<Asset> javascriptStack, stylesheetStack,
javascriptStackTestMode, stylesheetStackTestMode;
+
+ private final boolean isBlackbirdEnabled;
private static final String[] CORE_JAVASCRIPT = new String[]
{
@@ -50,24 +54,46 @@
// Uses functions defined by the prior three
- "org/apache/tapestry5/tapestry.js",
+ "org/apache/tapestry5/tapestry.js"
+ };
+
+ private static final String[] CORE_JAVASCRIPT_TEST_MODE = new String[]
+ {
+ // Only available in test mode
+
"${tapestry.blackbird}/blackbird.js"
};
+
private static final String[] CORE_STYLESHEET = new String[]
{
- "${tapestry.default-stylesheet}",
+ "${tapestry.default-stylesheet}"
+ };
+
+
+ private static final String[] CORE_STYLESHEET_TEST_MODE = new String[]
+ {
+ // Only available in test mode
+
"${tapestry.blackbird}/blackbird.css"
};
- public ClientInfrastructureImpl(SymbolSource symbolSource, AssetSource
assetSource, ThreadLocale threadLocale)
+ public ClientInfrastructureImpl(SymbolSource symbolSource,
+ AssetSource assetSource,
+ ThreadLocale threadLocale,
+ @Symbol(SymbolConstants.BLACKBIRD_ENABLED)
+ boolean isBlackbirdEnabled)
{
this.symbolSource = symbolSource;
this.assetSource = assetSource;
this.threadLocale = threadLocale;
+ this.isBlackbirdEnabled = isBlackbirdEnabled;
javascriptStack = convertToAssets(CORE_JAVASCRIPT);
stylesheetStack = convertToAssets(CORE_STYLESHEET);
+
+ javascriptStackTestMode = convertToAssets(CORE_JAVASCRIPT_TEST_MODE);
+ stylesheetStackTestMode = convertToAssets(CORE_STYLESHEET_TEST_MODE);
}
private List<Asset> convertToAssets(String[] paths)
@@ -91,7 +117,7 @@
public List<Asset> getJavascriptStack()
{
- List<Asset> result = CollectionFactory.newList(javascriptStack);
+ List<Asset> result = createStack(javascriptStack,
javascriptStackTestMode);
Asset messages = assetSource.getAsset(null,
"org/apache/tapestry5/tapestry-messages.js",
threadLocale.getLocale());
@@ -102,7 +128,19 @@
}
public List<Asset> getStylesheetStack()
+ {
+ return createStack(stylesheetStack, stylesheetStackTestMode);
+ }
+
+ private List<Asset> createStack(List<Asset> stack, List<Asset>
optionalStack)
{
- return stylesheetStack;
+ List<Asset> result = CollectionFactory.newList(stack);
+
+ if(isBlackbirdEnabled)
+ {
+ result.addAll(optionalStack);
+ }
+
+ return result;
}
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=811842&r1=811841&r2=811842&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
Sun Sep 6 17:35:12 2009
@@ -2100,6 +2100,8 @@
configuration.add(SymbolConstants.COMBINE_SCRIPTS,
matchProductionMode);
configuration.add(SymbolConstants.ENCODE_LOCALE_INTO_PATH, "true");
+
+ configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "false");
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java?rev=811842&r1=811841&r2=811842&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
Sun Sep 6 17:35:12 2009
@@ -127,6 +127,8 @@
configuration.add(SymbolConstants.SECURE_ENABLED, "true");
configuration.add("app.injected-symbol", "Symbol contributed to
ApplicationDefaults");
+
+ configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
}
public static void contributeIgnoredPathsFilter(Configuration<String>
configuration)
Added:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java?rev=811842&view=auto
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java
(added)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java
Sun Sep 6 17:35:12 2009
@@ -0,0 +1,89 @@
+// Copyright 2009 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.internal.services;
+
+import static org.easymock.EasyMock.isA;
+
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.internal.test.InternalBaseTestCase;
+import org.apache.tapestry5.ioc.services.SymbolSource;
+import org.apache.tapestry5.ioc.services.ThreadLocale;
+import org.apache.tapestry5.services.AssetSource;
+import org.testng.annotations.Test;
+
+public class ClientInfrastructureImplTest extends InternalBaseTestCase
+{
+ @Test
+ public void production_mode() throws Exception
+ {
+ SymbolSource symbolSource = mockSymbolSource();
+ AssetSource assetSource = mockAssetSource();
+ ThreadLocale threadLocale = mockThreadLocale();
+
+ train_constructor(symbolSource, assetSource, threadLocale);
+
+ replay();
+
+ ClientInfrastructureImpl infrastructure = new
ClientInfrastructureImpl(symbolSource, assetSource, threadLocale, false);
+
+ List<Asset> stack = infrastructure.getJavascriptStack();
+
+ List<Asset> stylesheetStack = infrastructure.getStylesheetStack();
+
+ verify();
+
+ //blackbird is the only one asset to be excluded in production mode
+ //for now it is ok to check only sizes of stacks
+ assertEquals(stack.size(), 5);
+
+ assertEquals(stylesheetStack.size(), 1);
+ }
+
+ @Test
+ public void test_mode() throws Exception
+ {
+ SymbolSource symbolSource = mockSymbolSource();
+ AssetSource assetSource = mockAssetSource();
+ ThreadLocale threadLocale = mockThreadLocale();
+
+ train_constructor(symbolSource, assetSource, threadLocale);
+
+ replay();
+
+ ClientInfrastructureImpl infrastructure = new
ClientInfrastructureImpl(symbolSource, assetSource, threadLocale, true);
+
+ List<Asset> javascriptStack = infrastructure.getJavascriptStack();
+
+ List<Asset> stylesheetStack = infrastructure.getStylesheetStack();
+
+ verify();
+
+ //blackbird is the only one asset to be excluded in production mode
+ //for now it is ok to check only sizes of stacks
+ assertEquals(javascriptStack.size(), 6);
+
+ assertEquals(stylesheetStack.size(), 2);
+ }
+
+ private void train_constructor(SymbolSource symbolSource, AssetSource
assetSource, ThreadLocale threadLocale)
+ {
+
expect(symbolSource.expandSymbols(isA(String.class))).andReturn("expanded").anyTimes();
+ expect(assetSource.getAsset(null,
"expanded",null)).andReturn(mockAsset()).anyTimes();
+ train_getLocale(threadLocale, Locale.ENGLISH);
+ expect(assetSource.getAsset(null,
"org/apache/tapestry5/tapestry-messages.js",Locale.ENGLISH)).andReturn(mockAsset());
+ }
+}
Propchange:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientInfrastructureImplTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain