You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/10/27 02:00:24 UTC
svn commit: r1027778 - in /shindig/trunk:
features/src/main/javascript/features/rpc/
java/common/src/main/java/org/apache/shindig/config/
java/common/src/test/java/org/apache/shindig/auth/
java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caj...
Author: johnh
Date: Wed Oct 27 00:00:23 2010
New Revision: 1027778
URL: http://svn.apache.org/viewvc?rev=1027778&view=rev
Log:
Optimization of runtime-mutable ContainerConfig base implementation, using significantly less locking/synchronization than before.
Patch provided by Jacobo Tarrio.
Modified:
shindig/trunk/features/src/main/javascript/features/rpc/nix.transport.js
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/AbstractContainerConfig.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java
shindig/trunk/java/common/src/main/java/org/apache/shindig/config/ExpressionContainerConfig.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java
shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentTypeCharsetRemoverRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTestBase.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ImageAttributeRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java
Modified: shindig/trunk/features/src/main/javascript/features/rpc/nix.transport.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/rpc/nix.transport.js?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/rpc/nix.transport.js (original)
+++ shindig/trunk/features/src/main/javascript/features/rpc/nix.transport.js Wed Oct 27 00:00:23 2010
@@ -70,9 +70,11 @@ if (!gadgets.rpctx.nix) { // make lib r
// so we need to make these names quite unique, as
// they will go into the global namespace.
var NIX_WRAPPER = 'GRPC____NIXVBS_wrapper';
- var NIX_GET_WRAPPER = 'GRPC____NIXVBS_get_wrapper';
+ var NIX_GET_INITIALIZER = 'GRPC____NIXVBS_get_init';
var NIX_HANDLE_MESSAGE = 'GRPC____NIXVBS_handle_message';
var NIX_CREATE_CHANNEL = 'GRPC____NIXVBS_create_channel';
+ var NIX_CHALLENGE_RESPOND = 'GRPC____NIXVBS_challenge_resp';
+ var NIX_GET_CHALLENGER = 'GRPC____NIXVBS_challenger';
var MAX_NIX_SEARCHES = 10;
var NIX_SEARCH_PERIOD = 500;
@@ -104,34 +106,22 @@ if (!gadgets.rpctx.nix) { // make lib r
}
// If the gadget has yet to retrieve a reference to
- // the NIX handler, try to do so now. We don't do a
+ // the NIX handler, start the challenge process. We don't do a
// typeof(window.opener.GetAuthToken) check here
// because it means accessing that field on the COM object, which,
// being an internal function reference, is not allowed.
// "in" works because it merely checks for the prescence of
// the key, rather than actually accessing the object's property.
// This is just a sanity check, not a validity check.
- if (!handler && window.opener && 'GetAuthToken' in window.opener) {
+ if (!handler && window.opener && 'Initialize' in window.opener) {
handler = window.opener;
+ window.opener = null;
- // Create the channel to the parent/container.
- // First verify that it knows our auth token to ensure it's not
- // an impostor.
- if (handler.GetAuthToken() == gadgets.rpc.getAuthToken('..')) {
- // Auth match - pass it back along with our wrapper to finish.
- // own wrapper and our authentication token for co-verification.
- var token = gadgets.rpc.getAuthToken('..');
- handler.CreateChannel(window[NIX_GET_WRAPPER]('..', token),
- token);
- // Set channel handler
- nix_channels['..'] = handler;
- window.opener = null;
-
- // Signal success and readiness to send to parent.
- // Container-to-gadget bit flipped in CreateChannel.
- ready('..', true);
- return;
- }
+ // Send a challenge to the parent to re-ask for the auth token,
+ // to ensure the parent is not being wrapped by an attacker.
+ // A proper parent will respond to the challenge by passing
+ // the token along with a wrapper object used to communicate.
+ handler.Initialize(window[NIX_GET_CHALLENGER]());
}
// Try again.
@@ -204,20 +194,36 @@ if (!gadgets.rpctx.nix) { // make lib r
// checked via the typeof operator in IE. Fortunately
// for us, this only applies to COM objects, so we
// won't see this for a real Javascript object.
- if (typeof window[NIX_GET_WRAPPER] !== 'unknown') {
+ if (typeof window[NIX_GET_INITIALIZER] !== 'unknown') {
window[NIX_HANDLE_MESSAGE] = function(data) {
window.setTimeout(
function() { processFn(gadgets.json.parse(data)); }, 0);
};
window[NIX_CREATE_CHANNEL] = function(name, channel, token) {
- // Verify the authentication token of the gadget trying
- // to create a channel for us.
- if (gadgets.rpc.getAuthToken(name) === token) {
+ if (gadgets.rpc.getAuthToken(name) == token) {
+ // Re-verify the token for the child claiming to be the gadget,
+ // to ensure no navigation attack has occurred.
nix_channels[name] = channel;
ready(name, true);
}
};
+
+ window[NIX_CHALLENGE_RESPOND] = function(auth, wrapper) {
+ var token = gadgets.rpc.getAuthToken('..');
+ if (auth == token) {
+ // Auth match - pass it back along with our wrapper to finish.
+ // own wrapper and our authentication token for co-verification.
+ wrapper.CreateChannel(window[NIX_GET_INITIALIZER]('..', token));
+
+ // Set channel handler
+ nix_channels['..'] = wrapper;
+
+ // Signal success and readiness to send to parent.
+ // Container-to-gadget bit flipped in CreateChannel.
+ ready('..', true);
+ }
+ };
// Inject the VBScript code needed.
var vbscript =
@@ -233,13 +239,6 @@ if (!gadgets.rpctx.nix) { // make lib r
// used (although it is set to "..")
+ 'Private m_Intended\n'
- // Stores the auth token used to communicate with
- // the gadget. The GetChannelCreator method returns
- // an object that returns this auth token. Upon matching
- // that with its own, the gadget uses the object
- // to actually establish the communication channel.
- + 'Private m_Auth\n'
-
// Method for internally setting the value
// of the m_Intended property.
+ 'Public Sub SetIntendedName(name)\n '
@@ -247,26 +246,26 @@ if (!gadgets.rpctx.nix) { // make lib r
+ 'm_Intended = name\n'
+ 'End If\n'
+ 'End Sub\n'
-
- // Method for internally setting the value of the m_Auth property.
- + 'Public Sub SetAuth(auth)\n '
- + 'If isEmpty(m_Auth) Then\n'
+
+ // Store auth token in the wrapper as well, but do NOT
+ // expose it in a Get method, which could be used by
+ // an attacker wrapping a parent context to steal context.
+ // This is used by the parent to validate that the child
+ // calling this method is the child it created, and wasn't
+ // navigated away in the meantime.
+ + 'Private m_Auth\n'
+ + 'Public Sub SetAuth(auth)\n'
+ + 'If (isEmpty(m_Auth)) Then\n'
+ 'm_Auth = auth\n'
+ 'End If\n'
- + 'End Sub\n'
-
+ + 'End Sub'
+
// A wrapper method which actually causes a
// message to be sent to the other context.
+ 'Public Sub SendMessage(data)\n '
+ NIX_HANDLE_MESSAGE + '(data)\n'
+ 'End Sub\n'
- // Returns the auth token to the gadget, so it can
- // confirm a match before initiating the connection
- + 'Public Function GetAuthToken()\n '
- + 'GetAuthToken = m_Auth\n'
- + 'End Function\n'
-
// Method for setting up the container->gadget
// channel. Not strictly needed in the gadget's
// wrapper, but no reason to get rid of it. Note here
@@ -274,18 +273,75 @@ if (!gadgets.rpctx.nix) { // make lib r
// method so that it can save the channel in the proper place
// *and* verify the channel via the authentication token passed
// here.
- + 'Public Sub CreateChannel(channel, auth)\n '
- + 'Call ' + NIX_CREATE_CHANNEL + '(m_Intended, channel, auth)\n'
+ + 'Public Sub CreateChannel(channel)\n '
+ + 'Call ' + NIX_CREATE_CHANNEL + '(m_Intended, channel, m_Auth)\n'
+ 'End Sub\n'
+ 'End Class\n'
+
+ // To start up a NIX connection, parent first sets Initializer
+ // on window.opener, to be read by the child. The child
+ // cannot completely trust it, however, until the parent
+ // proves that it knows the rpctoken it set when creating
+ // the child. The window.opener wrapper can't simply have
+ // a GetAuthToken() method on it, since this in turn could
+ // be intercepted by a "super-parent" ie. parent.parent, which
+ // can wrap the parent and replace the opener method with its
+ // own. Thus the Initializer is called by the child, passing
+ // its own Challenger object (below).
+ 'Class NixInitializer\n'
+
+ // Stores the actual wrapper object passed to the child along
+ // with the auth token as answer to the child's challenge.
+ // Each setter is single-use only, so cannot be co-opted by
+ // a wrapping context.
+ + 'Private m_Wrapper\n'
+ + 'Public Sub SetWrapper(wrapper)\n '
+ + 'If isEmpty(m_Wrapper) Then\n'
+ + 'm_Wrapper = wrapper\n'
+ + 'End If'
+ + 'End Sub'
+
+ // Auth setter.
+ + 'Private m_Auth\n'
+ + 'Public Sub SetAuth(auth)\n '
+ + 'If isEmpty(m_Auth) Then\n'
+ + 'm_Auth = auth\n'
+ + 'End If\n'
+ + 'End Sub\n'
+
+ // Initialization method to which the Challenger is passed
+ + 'Public Sub Initialize(challenger)\n'
+ + 'challenger.Respond m_Auth, m_Wrapper\n'
+ + 'End Sub'
+ + 'End Class'
+
+ // The child's Challenger object simply passes through to
+ // JS that ensures that the parent really is the parent, by
+ // checking that the passed-in Auth token is correct. If so,
+ // communication channel creation occurs through CreateChannel,
+ // on the passed NIX wrapper object.
+ + 'Public Class Challenger\n'
+ + 'Public Sub Respond(auth, wrapper)\n '
+ + 'Call ' + NIX_CHALLENGE_RESPOND + '(auth, wrapper)\n'
+ + 'End Sub'
+ + 'End Class'
- // Function to get a reference to the wrapper.
- + 'Function ' + NIX_GET_WRAPPER + '(name, auth)\n'
+ // Function to get a reference to the initializer, by the parent.
+ + 'Function ' + NIX_GET_INITIALIZER + '(name, auth)\n'
+ 'Dim wrap\n'
+ 'Set wrap = New ' + NIX_WRAPPER + '\n'
+ 'wrap.SetIntendedName name\n'
+ 'wrap.SetAuth auth\n'
- + 'Set ' + NIX_GET_WRAPPER + ' = wrap\n'
+ + 'Dim init\n'
+ + 'Set init = New NixInitializer\n'
+ + 'init.SetAuth auth\n'
+ + 'init.SetWrapper wrapper\n'
+ + 'Set ' + NIX_GET_INITIALIZER + ' = init\n'
+ + 'End Function'
+
+ // Create challenger wrapper object to prevent context leak.
+ + 'Function ' + NIX_GET_CHALLENGER + '()\n'
+ + 'Set ' + NIX_GET_CHALLENGER + ' = new Challenger\n'
+ 'End Function';
try {
@@ -309,8 +365,8 @@ if (!gadgets.rpctx.nix) { // make lib r
}
try {
var frame = document.getElementById(receiverId);
- var wrapper = window[NIX_GET_WRAPPER](receiverId, token);
- frame.contentWindow.opener = wrapper;
+ var initializer = window[NIX_GET_INITIALIZER](receiverId, token);
+ frame.contentWindow.opener = initializer;
} catch (e) {
return false;
}
Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/config/AbstractContainerConfig.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/AbstractContainerConfig.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/config/AbstractContainerConfig.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/config/AbstractContainerConfig.java Wed Oct 27 00:00:23 2010
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.shindig.config;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Base class for fake objects in tests involving container configurations.
- *
- * @deprecated Please create and populate {@link BasicContainerConfig} or
- * {@link ExpressionContainerConfig} objects instead of subclassing
- * {@link AbstractContainerConfig}.
- */
-public abstract class AbstractContainerConfig implements ContainerConfig {
- public String getString(String container, String property) {
- Object value = getProperty(container, property);
- if (value == null) {
- return null;
- }
- return value.toString();
- }
-
- public int getInt(String container, String property) {
- Object value = getProperty(container, property);
- if (value instanceof Number) {
- return ((Number) value).intValue();
- }
- return 0;
- }
-
- public boolean getBool(String container, String property) {
- Object value = getProperty(container, property);
- if (value instanceof Boolean) {
- return ((Boolean) value).booleanValue();
- }
- return false;
- }
-
- @SuppressWarnings("unchecked")
- public <T> List<T> getList(String container, String property) {
- Object value = getProperty(container, property);
- if (value instanceof List) {
- return (List<T>) value;
- }
- return Collections.emptyList();
- }
-
- @SuppressWarnings("unchecked")
- public <T> Map<String, T> getMap(String container, String property) {
- Object value = getProperty(container, property);
- if (value instanceof Map) {
- return (Map<String, T>) value;
- }
- return Collections.emptyMap();
- }
-
- public Transaction newTransaction() {
- throw new UnsupportedOperationException();
- }
-
- public Collection<String> getContainers() {
- throw new UnsupportedOperationException();
- }
-
- public Map<String, Object> getProperties(String container) {
- throw new UnsupportedOperationException();
- }
-
- public abstract Object getProperty(String container, String name);
-}
Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/config/BasicContainerConfig.java Wed Oct 27 00:00:23 2010
@@ -19,6 +19,7 @@
package org.apache.shindig.config;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -28,13 +29,12 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* Basic container configuration class, without expression support.
- *
+ *
* We use a cascading model, so you only have to specify attributes in
* your config that you actually want to change.
*
@@ -43,34 +43,22 @@ import java.util.concurrent.locks.Reentr
*/
public class BasicContainerConfig implements ContainerConfig {
- protected final ReadWriteLock lock = new ReentrantReadWriteLock();
- protected final Map<String, Map<String, Object>> config = Maps.newHashMap();
-
- public final Collection<String> getContainers() {
- lock.readLock().lock();
- try {
- return doGetContainers();
- } finally {
- lock.readLock().unlock();
- }
+ protected Map<String, Map<String, Object>> config = Maps.newHashMap();
+
+ public Collection<String> getContainers() {
+ return Collections.unmodifiableSet(config.keySet());
}
- public final Map<String, Object> getProperties(String container) {
- lock.readLock().lock();
- try {
- return doGetProperties(container);
- } finally {
- lock.readLock().unlock();
- }
+ public Map<String, Object> getProperties(String container) {
+ return config.get(container);
}
- public final Object getProperty(String container, String name) {
- lock.readLock().lock();
- try {
- return doGetProperty(container, name);
- } finally {
- lock.readLock().unlock();
+ public Object getProperty(String container, String name) {
+ Map<String, Object> containerData = config.get(container);
+ if (containerData == null) {
+ return null;
}
+ return containerData.get(name);
}
public String getString(String container, String property) {
@@ -121,33 +109,12 @@ public class BasicContainerConfig implem
return new BasicTransaction();
}
- protected Collection<String> doGetContainers() {
- return Collections.unmodifiableSet(config.keySet());
- }
-
- protected Map<String, Object> doGetProperties(String container) {
- return config.get(container);
- }
-
- protected Object doGetProperty(String container, String name) {
- Map<String, Object> containerData = config.get(container);
- if (containerData == null) {
- return null;
- }
- return containerData.get(name);
- }
-
@Override
public String toString() {
- lock.readLock().lock();
- try {
- return JsonSerializer.serialize(config);
- } finally {
- lock.readLock().unlock();
- }
+ return JsonSerializer.serialize(config);
}
-
- protected class BasicTransaction implements Transaction {
+
+ protected class BasicTransaction implements Transaction {
protected boolean clear = false;
protected Map<String, Map<String, Object>> setContainers = Maps.newHashMap();
protected Set<String> removeContainers = Sets.newHashSet();
@@ -179,20 +146,17 @@ public class BasicContainerConfig implem
}
public void commit() throws ContainerConfigException {
- Set<String> removed = Sets.newHashSet();
- Set<String> changed = Sets.newHashSet();
- if (throwException != null) {
- throw throwException;
- }
- lock.writeLock().lock();
- try {
+ synchronized (BasicContainerConfig.this) {
+ Set<String> removed = Sets.newHashSet();
+ Set<String> changed = Sets.newHashSet();
+ if (throwException != null) {
+ throw throwException;
+ }
BasicContainerConfig tmpConfig = getTemporaryConfig(!clear);
changeContainersInConfig(tmpConfig, setContainers, removeContainers);
// This point will not be reached if an exception was thrown.
diffConfiguration(tmpConfig, changed, removed);
setNewConfig(tmpConfig);
- } finally {
- lock.writeLock().unlock();
}
}
@@ -210,7 +174,7 @@ public class BasicContainerConfig implem
protected BasicContainerConfig getTemporaryConfig(boolean copyValues) {
BasicContainerConfig tmp = new BasicContainerConfig();
if (copyValues) {
- tmp.config.putAll(config);
+ tmp.config = deepCopyConfig(config);
}
return tmp;
}
@@ -243,8 +207,7 @@ public class BasicContainerConfig implem
* @param newConfig The map that contains the new configuration.
*/
protected void setNewConfig(BasicContainerConfig newConfig) {
- config.clear();
- config.putAll(newConfig.config);
+ config = newConfig.config;
}
/**
@@ -259,8 +222,8 @@ public class BasicContainerConfig implem
* 'user': 'anne',
* 'colour': 'green',
* 'map': { 'longitude': 130 } }
- *
- * It would in a merged "new" container that looks like this:
+ *
+ * It would result in a merged "new" container that looks like this:
* { 'gadgets.container': ['new'],
* 'base': '/gadgets/foo',
* 'user': 'anne',
@@ -315,7 +278,7 @@ public class BasicContainerConfig implem
}
return clone;
}
-
+
/**
* Calculates the difference between the current and new configurations.
*
@@ -334,5 +297,37 @@ public class BasicContainerConfig implem
}
}
}
+
+ /**
+ * Returns a deep copy of a configuration object.
+ *
+ * @param config The configuration object to copy.
+ * @return A copy of the configuration object.
+ */
+ @SuppressWarnings("unchecked")
+ protected Map<String, Map<String, Object>> deepCopyConfig(
+ Map<String, Map<String, Object>> config) {
+ return (Map<String, Map<String, Object>>) deepCopyObject(config);
+ }
+
+ private Object deepCopyObject(Object obj) {
+ if (obj instanceof Map<?, ?>) {
+ Map<?, ?> objMap = (Map<?, ?>) obj;
+ Map<Object, Object> map = Maps.newHashMap();
+ for (Entry<?, ?> entry : objMap.entrySet()) {
+ map.put(entry.getKey(), deepCopyObject(entry.getValue()));
+ }
+ return map;
+ } else if (obj instanceof List<?>) {
+ List<?> objList = (List<?>) obj;
+ List<Object> list = Lists.newArrayList();
+ for (Object elem : objList) {
+ list.add(deepCopyObject(elem));
+ }
+ return list;
+ } else {
+ return obj;
+ }
+ }
}
}
Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/config/ExpressionContainerConfig.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/ExpressionContainerConfig.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/config/ExpressionContainerConfig.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/config/ExpressionContainerConfig.java Wed Oct 27 00:00:23 2010
@@ -46,7 +46,7 @@ import javax.el.ValueExpression;
@Singleton
public class ExpressionContainerConfig extends BasicContainerConfig {
- protected final Map<String, Map<String, Object>> rawConfig;
+ protected Map<String, Map<String, Object>> rawConfig;
private final Expressions expressions;
public ExpressionContainerConfig(Expressions expressions) {
@@ -65,7 +65,7 @@ public class ExpressionContainerConfig e
}
@Override
- public Object doGetProperty(String container, String property) {
+ public Object getProperty(String container, String property) {
if (property.startsWith("${")) {
// An expression!
try {
@@ -76,7 +76,7 @@ public class ExpressionContainerConfig e
}
}
- return super.doGetProperty(container, property);
+ return super.getProperty(container, property);
}
protected Expressions getExpressions() {
@@ -93,8 +93,8 @@ public class ExpressionContainerConfig e
protected BasicContainerConfig getTemporaryConfig(boolean copyValues) {
ExpressionContainerConfig tmp = new ExpressionContainerConfig(getExpressions());
if (copyValues) {
- tmp.rawConfig.putAll(rawConfig);
- tmp.config.putAll(config);
+ tmp.rawConfig = deepCopyConfig(rawConfig);
+ tmp.config = deepCopyConfig(config);
}
return tmp;
}
@@ -126,10 +126,8 @@ public class ExpressionContainerConfig e
@Override
protected void setNewConfig(BasicContainerConfig newConfig) {
ExpressionContainerConfig tmp = (ExpressionContainerConfig) newConfig;
- rawConfig.clear();
- rawConfig.putAll(tmp.rawConfig);
- config.clear();
- config.putAll(tmp.config);
+ rawConfig = tmp.rawConfig;
+ config = tmp.config;
}
private Object parseAll(Object value, ELContext context) {
Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java Wed Oct 27 00:00:23 2010
@@ -19,7 +19,6 @@
package org.apache.shindig.auth;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -27,11 +26,11 @@ import org.apache.shindig.common.crypto.
import org.apache.shindig.common.crypto.BlobCrypter;
import org.apache.shindig.common.util.CharsetUtil;
import org.apache.shindig.common.util.FakeTimeSource;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.config.ContainerConfig;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
import junit.framework.Assert;
@@ -40,7 +39,6 @@ import org.junit.Test;
import java.io.File;
import java.io.IOException;
-import java.util.Collection;
import java.util.Map;
/**
@@ -53,26 +51,25 @@ public class BlobCrypterSecurityTokenCod
@Before
public void setUp() throws Exception {
- ContainerConfig config = new AbstractContainerConfig() {
- @Override
- public Object getProperty(String container, String name) {
- if (BlobCrypterSecurityTokenCodec.SECURITY_TOKEN_KEY_FILE.equals(name)) {
- return getContainerKey(container);
- }
- if (BlobCrypterSecurityTokenCodec.SIGNED_FETCH_DOMAIN.equals(name)) {
- return container + ".com";
- }
- throw new RuntimeException("Mock not smart enough, unknown name " + name);
- }
-
- @Override
- public Collection<String> getContainers() {
- return Lists.newArrayList("container", "example");
- }
- };
+ ContainerConfig config = new BasicContainerConfig();
+ config
+ .newTransaction()
+ .addContainer(makeContainer("default"))
+ .addContainer(makeContainer("container"))
+ .addContainer(makeContainer("example"))
+ .commit();
codec = new CodecWithLoadStubbedOut(config);
}
-
+
+ protected Map<String, Object> makeContainer(String container) {
+ return ImmutableMap.<String, Object>of(ContainerConfig.CONTAINER_KEY,
+ ImmutableList.of(container),
+ BlobCrypterSecurityTokenCodec.SECURITY_TOKEN_KEY_FILE,
+ getContainerKey(container),
+ BlobCrypterSecurityTokenCodec.SIGNED_FETCH_DOMAIN,
+ container + ".com");
+ }
+
protected String getContainerKey(String container) {
return "KEY FOR CONTAINER " + container;
}
@@ -210,23 +207,14 @@ public class BlobCrypterSecurityTokenCod
@Test
public void testLoadFailure() throws Exception {
- ContainerConfig config = new AbstractContainerConfig() {
- @Override
- public Object getProperty(String container, String name) {
- if (BlobCrypterSecurityTokenCodec.SECURITY_TOKEN_KEY_FILE.equals(name)) {
- return getContainerKey(container);
- }
- if (BlobCrypterSecurityTokenCodec.SIGNED_FETCH_DOMAIN.equals(name)) {
- return container + ".com";
- }
- throw new RuntimeException("Mock not smart enough, unknown name " + name);
- }
-
- @Override
- public Collection<String> getContainers() {
- return Lists.newArrayList("container", "example", "failure");
- }
- };
+ ContainerConfig config = new BasicContainerConfig();
+ config
+ .newTransaction()
+ .addContainer(makeContainer("default"))
+ .addContainer(makeContainer("container"))
+ .addContainer(makeContainer("example"))
+ .addContainer(makeContainer("failure"))
+ .commit();
try {
new CodecWithLoadStubbedOut(config);
Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java Wed Oct 27 00:00:23 2010
@@ -23,7 +23,7 @@ import static org.junit.Assert.assertNul
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import com.google.common.collect.Lists;
@@ -38,7 +38,7 @@ import java.util.Map;
*/
public class DefaultSecurityTokenCodecTest {
- private static class FakeContainerConfig extends AbstractContainerConfig {
+ private static class FakeContainerConfig extends BasicContainerConfig {
private final String tokenType;
public FakeContainerConfig(String tokenType) {
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java Wed Oct 27 00:00:23 2010
@@ -18,11 +18,12 @@
package org.apache.shindig.gadgets.parse.caja;
import com.google.caja.parser.css.CssTree;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.apache.shindig.common.EasyMockTestCase;
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.render.SanitizingProxyUriManager;
@@ -31,9 +32,6 @@ import org.apache.shindig.gadgets.uri.Pr
import org.junit.Before;
import org.junit.Test;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* Tests for CajaCssSanitizer.
*/
@@ -45,39 +43,25 @@ public class CajaCssSanitizerTest extend
private SanitizingProxyUriManager imageRewriter;
private GadgetContext gadgetContext;
public static final String MOCK_CONTAINER = "mockContainer";
-
- private static class FakeContainerConfig extends AbstractContainerConfig {
- private final Map<String, Map<String, Object>> containers =
- new HashMap<String, Map<String, Object>>();
-
- private FakeContainerConfig() {
- containers.put(ContainerConfig.DEFAULT_CONTAINER, ImmutableMap.<String, Object>builder()
- .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.test.com")
- .put(DefaultProxyUriManager.PROXY_PATH_PARAM, "/dir/proxy")
- .build());
- containers.put(MOCK_CONTAINER, ImmutableMap.<String, Object>builder()
- .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
- .build());
- }
-
- @Override
- public Object getProperty(String container, String name) {
- Map<String, Object> data = containers.get(container);
-
- // Inherit from default if there is no value for this key.
- if (!data.containsKey(name)) {
- data = containers.get(ContainerConfig.DEFAULT_CONTAINER);
- }
- return data.get(name);
- }
- }
+ private static final ImmutableMap<String, Object> DEFAULT_CONTAINER_CONFIG = ImmutableMap
+ .<String, Object>builder()
+ .put(ContainerConfig.CONTAINER_KEY, ImmutableList.of("default"))
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.test.com")
+ .put(DefaultProxyUriManager.PROXY_PATH_PARAM, "/dir/proxy")
+ .build();
+ private static final ImmutableMap<String, Object> MOCK_CONTAINER_CONFIG = ImmutableMap
+ .<String, Object>builder()
+ .put(ContainerConfig.CONTAINER_KEY, ImmutableList.of(MOCK_CONTAINER))
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
+ .build();
@Before
public void setUp() throws Exception {
parser = new CajaCssParser();
sanitizer = new CajaCssSanitizer(parser);
- ContainerConfig config = new FakeContainerConfig();
+ ContainerConfig config = new BasicContainerConfig();
+ config.newTransaction().addContainer(DEFAULT_CONTAINER_CONFIG).addContainer(MOCK_CONTAINER_CONFIG).commit();
ProxyUriManager proxyUriManager = new DefaultProxyUriManager(config, null);
importRewriter = new SanitizingProxyUriManager(proxyUriManager, "text/css");
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java Wed Oct 27 00:00:23 2010
@@ -23,7 +23,7 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertTrue;
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetException;
@@ -170,7 +170,7 @@ public class RendererTest {
assertEquals(RenderingResults.Status.ERROR, results.getStatus());
}
- private static class FakeContainerConfig extends AbstractContainerConfig {
+ private static class FakeContainerConfig extends BasicContainerConfig {
protected final Map<String, Object> data = Maps.newHashMap();
@Override
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java Wed Oct 27 00:00:23 2010
@@ -38,7 +38,7 @@ import org.apache.shindig.common.JsonAss
import org.apache.shindig.common.PropertiesModule;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.xml.XmlUtil;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetException;
@@ -989,7 +989,7 @@ public class RenderingGadgetRewriterTest
}
}
- private static class FakeContainerConfig extends AbstractContainerConfig {
+ private static class FakeContainerConfig extends BasicContainerConfig {
protected final Map<String, Object> data = Maps.newHashMap();
@Override
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java Wed Oct 27 00:00:23 2010
@@ -105,7 +105,7 @@ public class ConcatVisitorTest extends D
@Override
@Before
- public void setUp() {
+ public void setUp() throws Exception {
super.setUp();
js1 = elem("script", "src", JS1_URL_STR);
js2 = elem("script", "src", JS2_URL_STR);
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentTypeCharsetRemoverRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentTypeCharsetRemoverRewriterTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentTypeCharsetRemoverRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentTypeCharsetRemoverRewriterTest.java Wed Oct 27 00:00:23 2010
@@ -34,8 +34,9 @@ import static org.junit.Assert.assertEqu
public class ContentTypeCharsetRemoverRewriterTest extends DomWalkerTestBase {
private CajaHtmlParser htmlParser;
+ @Override
@Before
- public void setUp() {
+ public void setUp() throws Exception {
super.setUp();
ParseModule.DOMImplementationProvider domImpl =
new ParseModule.DOMImplementationProvider();
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java Wed Oct 27 00:00:23 2010
@@ -17,12 +17,13 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.http.HttpRequest;
@@ -36,9 +37,7 @@ import org.junit.Test;
import java.io.StringReader;
import java.io.StringWriter;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import static org.junit.Assert.assertEquals;
@@ -46,32 +45,17 @@ import static org.junit.Assert.assertEqu
* Tests for CssResponseRewriter.
*/
public class CssResponseRewriterTest extends RewriterTestBase {
- private static class FakeContainerConfig extends AbstractContainerConfig {
- private Map<String, Map<String, Object>> containers = new HashMap<String, Map<String, Object>>();
-
- private FakeContainerConfig() {
- containers.put(ContainerConfig.DEFAULT_CONTAINER, ImmutableMap.<String, Object>builder()
- .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.test.com")
- .put(DefaultProxyUriManager.PROXY_PATH_PARAM, "/dir/proxy")
- .build());
-
- containers.put(MOCK_CONTAINER, ImmutableMap.<String, Object>builder()
- .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
- .build());
- }
-
- @Override
- public Object getProperty(String container, String name) {
- Map<String, Object> data = containers.get(container);
-
- //if there is no value by this key inherit from default
- if (!data.containsKey(name)) {
- data = containers.get(ContainerConfig.DEFAULT_CONTAINER);
- }
-
- return data.get(name);
- }
- }
+ private static final ImmutableMap<String, Object> DEFAULT_CONTAINER_CONFIG = ImmutableMap
+ .<String, Object>builder()
+ .put(ContainerConfig.CONTAINER_KEY, ImmutableList.of("default"))
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.test.com")
+ .put(DefaultProxyUriManager.PROXY_PATH_PARAM, "/dir/proxy")
+ .build();
+ private static final ImmutableMap<String, Object> MOCK_CONTAINER_CONFIG = ImmutableMap
+ .<String, Object>builder()
+ .put(ContainerConfig.CONTAINER_KEY, ImmutableList.of(MOCK_CONTAINER))
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
+ .build();
private CssResponseRewriter rewriter;
private CssResponseRewriter rewriterNoOverrideExpires;
@@ -93,7 +77,12 @@ public class CssResponseRewriterTest ext
return overrideFeatureNoOverrideExpires;
}
};
- ContainerConfig config = new FakeContainerConfig();
+ ContainerConfig config = new BasicContainerConfig();
+ config
+ .newTransaction()
+ .addContainer(DEFAULT_CONTAINER_CONFIG)
+ .addContainer(MOCK_CONTAINER_CONFIG)
+ .commit();
proxyUriManager = new DefaultProxyUriManager(config, null);
rewriterNoOverrideExpires = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factoryNoOverrideExpires);
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTest.java Wed Oct 27 00:00:23 2010
@@ -19,6 +19,7 @@
package org.apache.shindig.gadgets.rewrite;
import com.google.common.collect.Lists;
+
import org.apache.shindig.gadgets.Gadget;
import org.junit.Before;
import org.junit.Test;
@@ -41,7 +42,7 @@ public class DomWalkerTest extends DomWa
@Override
@Before
- public void setUp() {
+ public void setUp() throws Exception {
super.setUp();
// Create a base document with structure:
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTestBase.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTestBase.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTestBase.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DomWalkerTestBase.java Wed Oct 27 00:00:23 2010
@@ -49,7 +49,7 @@ public class DomWalkerTestBase {
protected Document doc;
@Before
- public void setUp() {
+ public void setUp() throws Exception {
Injector injector = Guice.createInjector(Modules.override(new ParseModule())
.with(new AbstractModule() {
@Override
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ImageAttributeRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ImageAttributeRewriterTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ImageAttributeRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ImageAttributeRewriterTest.java Wed Oct 27 00:00:23 2010
@@ -54,7 +54,8 @@ public class ImageAttributeRewriterTest
private static final String IMG_JPG_LARGE_URL =
"org/apache/shindig/gadgets/rewrite/image/large.jpg";
- public void setUp() {
+ @Override
+ public void setUp() throws Exception {
super.setUp();
control = EasyMock.createControl();
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java Wed Oct 27 00:00:23 2010
@@ -52,8 +52,9 @@ import java.util.List;
public class StyleTagExtractorVisitorTest extends DomWalkerTestBase {
private ProxyUriManager proxyUriManager;
+ @Override
@Before
- public void setUp() {
+ public void setUp() throws Exception {
super.setUp();
proxyUriManager = new PassthruManager();
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java Wed Oct 27 00:00:23 2010
@@ -25,7 +25,6 @@ import com.google.inject.Injector;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.PropertiesModule;
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.config.AbstractContainerConfig;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.DefaultGuiceModule;
import org.apache.shindig.gadgets.Gadget;
@@ -42,9 +41,6 @@ import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
-import java.util.HashMap;
-import java.util.Map;
-
import static org.junit.Assert.assertEquals;
/**
@@ -52,39 +48,20 @@ import static org.junit.Assert.assertEqu
*/
public class StyleTagProxyEmbeddedUrlsVisitorTest extends DomWalkerTestBase {
protected static final String MOCK_CONTAINER = "mock";
-
- private static class FakeContainerConfig extends AbstractContainerConfig {
- private Map<String, Map<String, Object>> containers = new HashMap<String, Map<String, Object>>();
-
- private FakeContainerConfig(ContainerConfig defaultContainerConfig) {
- containers.put(ContainerConfig.DEFAULT_CONTAINER,
- defaultContainerConfig.getProperties(ContainerConfig.DEFAULT_CONTAINER));
-
- containers.put(MOCK_CONTAINER, ImmutableMap.<String, Object>builder()
- .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
- .build());
- }
-
- @Override
- public Object getProperty(String container, String name) {
- Map<String, Object> data = containers.get(container);
-
- //if there is no value by this key inherit from default
- if (!data.containsKey(name)) {
- data = containers.get(ContainerConfig.DEFAULT_CONTAINER);
- }
-
- return data.get(name);
- }
- }
+ private static final ImmutableMap<String, Object> MOCK_CONTAINER_CONFIG = ImmutableMap
+ .<String, Object>builder()
+ .put(ContainerConfig.CONTAINER_KEY, ImmutableList.of("mock"))
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
+ .build();
private Injector injector;
private CajaHtmlParser htmlParser;
private CajaHtmlSerializer serializer;
private ProxyUriManager proxyUriManager;
+ @Override
@Before
- public void setUp() {
+ public void setUp() throws Exception {
super.setUp();
injector = Guice.createInjector(
new PropertiesModule(), new DefaultGuiceModule(), new OAuthModule());
@@ -92,7 +69,8 @@ public class StyleTagProxyEmbeddedUrlsVi
new ParseModule.DOMImplementationProvider();
htmlParser = new CajaHtmlParser(domImpl.get());
serializer = new CajaHtmlSerializer();
- ContainerConfig config = new FakeContainerConfig(injector.getInstance(ContainerConfig.class));
+ ContainerConfig config = injector.getInstance(ContainerConfig.class);
+ config.newTransaction().addContainer(MOCK_CONTAINER_CONFIG).commit();
proxyUriManager = new DefaultProxyUriManager(config, null);
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/TemplateRewriterTest.java Wed Oct 27 00:00:23 2010
@@ -20,7 +20,7 @@ package org.apache.shindig.gadgets.rewri
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.xml.XmlUtil;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.expressions.Expressions;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
@@ -65,7 +65,7 @@ public class TemplateRewriterTest {
private Gadget gadget;
private MutableContent content;
private TemplateRewriter rewriter;
- private final Map<String, Object> config = Maps.newHashMap();
+ private final Map<String, Object> data = Maps.newHashMap();
private static final Uri GADGET_URI = Uri.parse("http://example.org/gadget.php");
@@ -219,7 +219,7 @@ public class TemplateRewriterTest {
// inline tags: tag1 inline1 tag2 inline2 tag3 inline3
// External tags: tag1 external1 tag2 external2 tag3 external3 tag4 external4
- config.put("${Cur['gadgets.features'].osml.library}",
+ data.put("${Cur['gadgets.features'].osml.library}",
"org/apache/shindig/gadgets/rewrite/OSML_test.xml");
setupGadget(getGadgetXmlWithLibrary(CONTENT_TESTING_PRECEDENCE_RULES));
@@ -237,7 +237,7 @@ public class TemplateRewriterTest {
// Default handlers: tag1 default1
// OSML: tag1 osml1 tag2 osml2
- config.put("${Cur['gadgets.features'].osml.library}",
+ data.put("${Cur['gadgets.features'].osml.library}",
"org/apache/shindig/gadgets/rewrite/OSML_test.xml");
setupGadget(getGadgetXmlWithLibrary(CONTENT_TESTING_PRECEDENCE_RULES, "osml"));
@@ -257,7 +257,7 @@ public class TemplateRewriterTest {
// External tags: tag1 external1 tag2 external2 tag3 external3 tag4 external4
// Explicitly don't support OSML
- config.put("${Cur['gadgets.features'].osml.library}", "");
+ data.put("${Cur['gadgets.features'].osml.library}", "");
setupGadget(getGadgetXmlWithLibrary(CONTENT_TESTING_PRECEDENCE_RULES));
rewriter.rewrite(gadget, content);
@@ -386,10 +386,10 @@ public class TemplateRewriterTest {
}
}
- private class FakeContainerConfig extends AbstractContainerConfig {
+ private class FakeContainerConfig extends BasicContainerConfig {
@Override
public Object getProperty(String container, String name) {
- return config.get(name);
+ return data.get(name);
}
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java Wed Oct 27 00:00:23 2010
@@ -21,7 +21,7 @@ package org.apache.shindig.gadgets.servl
import com.google.common.collect.ImmutableMap;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
@@ -49,7 +49,7 @@ import static org.easymock.EasyMock.expe
public class HtmlAccelServletTest extends ServletTestFixture {
- private static class FakeContainerConfig extends AbstractContainerConfig {
+ private static class FakeContainerConfig extends BasicContainerConfig {
protected final Map<String, Object> data = ImmutableMap.<String, Object>builder()
.put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
.put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/accel")
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java?rev=1027778&r1=1027777&r2=1027778&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java Wed Oct 27 00:00:23 2010
@@ -20,7 +20,7 @@ package org.apache.shindig.gadgets.uri;
import com.google.common.collect.ImmutableMap;
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.BasicContainerConfig;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.junit.Before;
@@ -34,33 +34,25 @@ import static org.junit.Assert.*;
* Tests for DefaultAccelUriManager.
*/
public class DefaultAccelUriManagerTest {
- private static class FakeContainerConfig extends AbstractContainerConfig {
- protected final Map<String, Object> defaultConfig = ImmutableMap.<String, Object>builder()
- .put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
- .put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/proxy")
- .build();
- protected final Map<String, Object> accelConfig = ImmutableMap.<String, Object>builder()
+ DefaultAccelUriManager uriManager;
+
+ private Map<String, Object> makeConfig(String name, String path) {
+ return ImmutableMap
+ .<String, Object>builder()
+ .put(ContainerConfig.CONTAINER_KEY, name)
.put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
- .put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/accel")
+ .put(AccelUriManager.PROXY_PATH_PARAM, path)
.build();
-
- protected final Map<String, Map<String, Object>> data =
- ImmutableMap.<String, Map<String, Object>>builder()
- .put("default", defaultConfig)
- .put("accel", accelConfig)
- .build();
-
- @Override
- public Object getProperty(String container, String name) {
- return data.get(container) != null ? data.get(container).get(name) : null;
- }
}
-
- DefaultAccelUriManager uriManager;
-
+
@Before
public void setUp() throws Exception {
- ContainerConfig config = new FakeContainerConfig();
+ ContainerConfig config = new BasicContainerConfig();
+ config
+ .newTransaction()
+ .addContainer(makeConfig("default", "/gadgets/proxy"))
+ .addContainer(makeConfig("accel", "/gadgets/accel"))
+ .commit();
uriManager = new DefaultAccelUriManager(config, new DefaultProxyUriManager(
config, null));
}