You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2007/07/21 02:38:48 UTC
svn commit: r558203 - in /tapestry/tapestry4/trunk:
tapestry-examples/TimeTracker/src/context/WEB-INF/
tapestry-framework/src/descriptor/META-INF/
tapestry-framework/src/java/org/apache/tapestry/asset/
tapestry-framework/src/java/org/apache/tapestry/en...
Author: jkuhnert
Date: Fri Jul 20 17:38:46 2007
New Revision: 558203
URL: http://svn.apache.org/viewvc?view=rev&rev=558203
Log:
Fixes TAPESTRY-1660. Injected script paths weren't checking all the normal classpath: / context: prefixes and such.
Modified:
tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page
tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.enhance.xml
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/asset/AssetFactory.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DefaultScriptSource.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/DispatchToInjectWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectEnhancementWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateFlagWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/xml/RuleDirectedParser.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/asset/TestAssetSource.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/InjectStateFlagWorkerTest.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestDispatchToInjectWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java
tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java
Modified: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Home.page Fri Jul 20 17:38:46 2007
@@ -22,6 +22,6 @@
<page-specification class="org.apache.tapestry.timetracker.page.TaskEntryPage">
<property name="dlHidden" initial-value="true" />
-
+
</page-specification>
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.enhance.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.enhance.xml?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.enhance.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.enhance.xml Fri Jul 20 17:38:46 2007
@@ -323,6 +323,7 @@
<invoke-factory>
<construct class="InjectScriptWorker">
<set-object property="source" value="infrastructure:scriptSource" />
+ <set-service property="assetSource" service-id="tapestry.asset.AssetSource"/>
</construct>
</invoke-factory>
</service-point>
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/asset/AssetFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/asset/AssetFactory.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/asset/AssetFactory.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/asset/AssetFactory.java Fri Jul 20 17:38:46 2007
@@ -61,6 +61,8 @@
* @param location
* the location to be associated with the returned asset, or null to not attempt to
* localize the asset
+ *
+ * @return The created asset.
* @throws org.apache.hivemind.ApplicationRuntimeException
* if no matching asset may be found.
*/
@@ -81,6 +83,13 @@
/**
* Creates a new asset based on a known resource.
+ *
+ * @param resource
+ * The resource the asset will represent.
+ * @param location
+ * Location of the resource. (used for error reporting mostly)
+ *
+ * @return The created asset.
*/
IAsset createAsset(Resource resource, Location location);
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DefaultScriptSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DefaultScriptSource.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DefaultScriptSource.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DefaultScriptSource.java Fri Jul 20 17:38:46 2007
@@ -14,9 +14,7 @@
package org.apache.tapestry.engine;
-import java.util.HashMap;
-import java.util.Map;
-
+import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ClassResolver;
import org.apache.hivemind.Resource;
@@ -30,10 +28,12 @@
import org.apache.tapestry.services.ExpressionEvaluator;
import org.apache.tapestry.util.xml.DocumentParseException;
+import java.util.Map;
+
/**
* Provides basic access to scripts available on the classpath. Scripts are cached in memory once
* parsed.
- *
+ *
* @author Howard Lewis Ship
* @since 1.0.2
*/
@@ -50,21 +50,21 @@
/** @since 4.0 */
private ValueConverter _valueConverter;
- private Map _cache = new HashMap();
+ private Map _cache = new ConcurrentHashMap();
- public synchronized void resetEventDidOccur()
+ public void resetEventDidOccur()
{
_cache.clear();
}
- public synchronized void reportStatus(ReportStatusEvent event)
+ public void reportStatus(ReportStatusEvent event)
{
event.title(_serviceId);
event.property("parsed script count", _cache.size());
event.collection("parsed scripts", _cache.keySet());
}
- public synchronized IScript getScript(Resource resource)
+ public IScript getScript(Resource resource)
{
IScript result = (IScript) _cache.get(resource);
@@ -81,17 +81,15 @@
private IScript parse(Resource resource)
{
ScriptParser parser = new ScriptParser(_classResolver, _expressionEvaluator,
- _valueConverter);
-
+ _valueConverter);
try
{
return parser.parse(resource);
}
catch (DocumentParseException ex)
{
- throw new ApplicationRuntimeException(Tapestry.format(
- "DefaultScriptSource.unable-to-parse-script",
- resource), ex);
+ throw new ApplicationRuntimeException(Tapestry.format("DefaultScriptSource.unable-to-parse-script",
+ resource), ex);
}
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/DispatchToInjectWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/DispatchToInjectWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/DispatchToInjectWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/DispatchToInjectWorker.java Fri Jul 20 17:38:46 2007
@@ -14,13 +14,13 @@
package org.apache.tapestry.enhance;
-import java.util.Iterator;
-import java.util.Map;
-
import org.apache.hivemind.ErrorLog;
import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
+import java.util.Iterator;
+import java.util.Map;
+
/**
* Iterates over the {@link org.apache.tapestry.spec.InjectSpecification}s and locates and
* delegates to a {@link org.apache.tapestry.enhance.InjectEnhancementWorker} for each one.
@@ -42,11 +42,11 @@
{
InjectSpecification is = (InjectSpecification) i.next();
- invokeWorker(op, is);
+ invokeWorker(op, is, spec);
}
}
- private void invokeWorker(EnhancementOperation op, InjectSpecification spec)
+ private void invokeWorker(EnhancementOperation op, InjectSpecification spec, IComponentSpecification componentSpec)
{
try
{
@@ -58,8 +58,7 @@
return;
}
- worker.performEnhancement(op, spec);
-
+ worker.performEnhancement(op, spec, componentSpec);
}
catch (Exception ex)
{
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectEnhancementWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectEnhancementWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectEnhancementWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectEnhancementWorker.java Fri Jul 20 17:38:46 2007
@@ -14,6 +14,7 @@
package org.apache.tapestry.enhance;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
/**
@@ -34,8 +35,14 @@
* Perform the enhancement defined by the
* {@link org.apache.tapestry.spec.InjectSpecification}. Thrown runtime
* exceptions are caught and reported by the invoker.
+ *
+ * @param op
+ * Current enhancement context.
+ * @param spec
+ * The injection specificiation configuration.
+ * @param componentSpec
+ * The component injection is for.
*/
-
- void performEnhancement(EnhancementOperation op, InjectSpecification spec);
+ void performEnhancement(EnhancementOperation op, InjectSpecification spec, IComponentSpecification componentSpec);
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectMetaWorker.java Fri Jul 20 17:38:46 2007
@@ -14,10 +14,6 @@
package org.apache.tapestry.enhance;
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.ClassFabUtils;
@@ -25,8 +21,13 @@
import org.apache.hivemind.util.Defense;
import org.apache.tapestry.coerce.ValueConverter;
import org.apache.tapestry.services.ComponentPropertySource;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Injects meta data obtained via {@link org.apache.tapestry.services.ComponentPropertySource}
* (meaning that meta-data is searched for in the component's specification, then it's namespace
@@ -52,7 +53,7 @@
_primitiveParser.put(float.class, "java.lang.Float.parseFloat");
}
- public void performEnhancement(EnhancementOperation op, InjectSpecification spec)
+ public void performEnhancement(EnhancementOperation op, InjectSpecification spec, IComponentSpecification componentSpec)
{
String propertyName = spec.getProperty();
String metaKey = spec.getObject();
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectObjectWorker.java Fri Jul 20 17:38:46 2007
@@ -19,6 +19,7 @@
import org.apache.hivemind.service.MethodSignature;
import org.apache.hivemind.util.Defense;
import org.apache.tapestry.services.InjectedValueProvider;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
import java.lang.reflect.Modifier;
@@ -36,7 +37,7 @@
private InjectedValueProvider _provider;
public void performEnhancement(EnhancementOperation op,
- InjectSpecification is)
+ InjectSpecification is, IComponentSpecification componentSpec)
{
String name = is.getProperty();
String objectReference = is.getObject();
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectPageWorker.java Fri Jul 20 17:38:46 2007
@@ -14,15 +14,16 @@
package org.apache.tapestry.enhance;
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.MethodSignature;
import org.apache.tapestry.IPage;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
+import java.lang.reflect.Modifier;
+
/**
* Injects code to access a named page within the application.
*
@@ -31,7 +32,7 @@
*/
public class InjectPageWorker implements InjectEnhancementWorker
{
- public void performEnhancement(EnhancementOperation op, InjectSpecification spec)
+ public void performEnhancement(EnhancementOperation op, InjectSpecification spec, IComponentSpecification componentSpec)
{
performEnhancement(op, spec.getObject(), spec.getProperty(), spec.getLocation());
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectScriptWorker.java Fri Jul 20 17:38:46 2007
@@ -14,19 +14,22 @@
package org.apache.tapestry.enhance;
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.Location;
import org.apache.hivemind.Resource;
import org.apache.hivemind.service.MethodSignature;
import org.apache.hivemind.util.Defense;
+import org.apache.tapestry.IAsset;
import org.apache.tapestry.IScript;
+import org.apache.tapestry.asset.AssetSource;
import org.apache.tapestry.engine.IScriptSource;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
+import java.lang.reflect.Modifier;
+
/**
* Injects {@link org.apache.tapestry.IScript} instances directly into pages or components.
- *
+ *
* @author Howard M. Lewis Ship
* @since 4.0
*/
@@ -34,18 +37,20 @@
{
private IScriptSource _source;
- public void performEnhancement(EnhancementOperation op, InjectSpecification spec)
+ private AssetSource _assetSource;
+
+ public void performEnhancement(EnhancementOperation op, InjectSpecification spec, IComponentSpecification componentSpec)
{
String propertyName = spec.getProperty();
String scriptName = spec.getObject();
Location location = spec.getLocation();
- injectScript(op, propertyName, scriptName, location);
+ injectScript(op, propertyName, scriptName, location, componentSpec);
}
/**
- * Injects a compiled script.
- *
+ * Injects a script reference.
+ *
* @param op
* the enhancement operation
* @param propertyName
@@ -55,10 +60,12 @@
* @param location
* the location of the specification; primarily used as the base location for finding
* the script.
+ * @param componentSpec
+ * Component specification.
*/
- public void injectScript(EnhancementOperation op, String propertyName, String scriptName,
- Location location)
+ public void injectScript(EnhancementOperation op, String propertyName,
+ String scriptName, Location location, IComponentSpecification componentSpec)
{
Defense.notNull(op, "op");
Defense.notNull(propertyName, "propertyName");
@@ -75,6 +82,19 @@
Resource resource = location.getResource().getRelativeResource(scriptName);
+ // if can't find resource
+
+ if (resource.getResourceURL() == null)
+ {
+ IAsset scriptAsset = _assetSource.findAsset(location.getResource(), componentSpec,
+ scriptName, null, location);
+
+ if (scriptAsset != null)
+ {
+ resource = scriptAsset.getResourceLocation();
+ }
+ }
+
DeferredScript script = new DeferredScriptImpl(resource, _source, location);
String fieldName = op.addInjectedField("_$script", DeferredScript.class, script);
@@ -87,5 +107,10 @@
public void setSource(IScriptSource source)
{
_source = source;
+ }
+
+ public void setAssetSource(AssetSource assetSource)
+ {
+ _assetSource = assetSource;
}
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateFlagWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateFlagWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateFlagWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateFlagWorker.java Fri Jul 20 17:38:46 2007
@@ -14,16 +14,17 @@
package org.apache.tapestry.enhance;
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.MethodSignature;
import org.apache.hivemind.util.Defense;
import org.apache.tapestry.engine.state.ApplicationStateManager;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
+import java.lang.reflect.Modifier;
+
/**
* Injects a boolean property that indicates if a particular application state object already
* exists. This is useful in situations where you are trying to prevent the creation of the ASO (and
@@ -36,7 +37,7 @@
{
private ApplicationStateManager _applicationStateManager;
- public void performEnhancement(EnhancementOperation op, InjectSpecification spec)
+ public void performEnhancement(EnhancementOperation op, InjectSpecification spec, IComponentSpecification componentSpec)
{
injectStateFlag(op, spec.getObject(), spec.getProperty(), spec.getLocation());
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/InjectStateWorker.java Fri Jul 20 17:38:46 2007
@@ -21,6 +21,7 @@
import org.apache.hivemind.util.Defense;
import org.apache.tapestry.engine.state.ApplicationStateManager;
import org.apache.tapestry.event.PageDetachListener;
+import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
import java.lang.reflect.Modifier;
@@ -43,7 +44,7 @@
private ApplicationStateManager _applicationStateManager;
public void performEnhancement(EnhancementOperation op,
- InjectSpecification spec)
+ InjectSpecification spec, IComponentSpecification componentSpec)
{
injectState(op, spec.getObject(), spec.getProperty(), spec.getLocation());
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/xml/RuleDirectedParser.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/xml/RuleDirectedParser.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/xml/RuleDirectedParser.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/xml/RuleDirectedParser.java Fri Jul 20 17:38:46 2007
@@ -14,18 +14,6 @@
package org.apache.tapestry.util.xml;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hivemind.ApplicationRuntimeException;
@@ -35,13 +23,20 @@
import org.apache.hivemind.impl.LocationImpl;
import org.apache.tapestry.Tapestry;
import org.apache.tapestry.util.RegexpMatcher;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
+import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* A simplified version of org.apache.commons.digester.Digester. This version is without as
* many bells and whistles but has some key features needed when parsing a document (rather than a
@@ -55,7 +50,7 @@
* coding), in that there's a one-to-one relationship between an element and a rule.
* <p>
* Based on SAX2.
- *
+ *
* @author Howard Lewis Ship
* @since 3.0
*/
@@ -65,7 +60,7 @@
private static final Log LOG = LogFactory.getLog(RuleDirectedParser.class);
private static SAXParserFactory _parserFactory;
-
+
private Resource _documentLocation;
private List _ruleStack = new ArrayList();
@@ -122,9 +117,7 @@
URL url = documentLocation.getResourceURL();
if (url == null)
- throw new DocumentParseException(Tapestry.format(
- "RuleDrivenParser.resource-missing",
- documentLocation), documentLocation);
+ throw new DocumentParseException(Tapestry.format("RuleDrivenParser.resource-missing", documentLocation), documentLocation);
return parse(url);
}
@@ -162,8 +155,8 @@
catch (IOException ex)
{
throw new DocumentParseException(Tapestry.format(
- "RuleDrivenParser.unable-to-open-resource",
- url), _documentLocation, ex);
+ "RuleDrivenParser.unable-to-open-resource",
+ url), _documentLocation, ex);
}
InputSource source = new InputSource(stream);
@@ -177,9 +170,9 @@
catch (Exception ex)
{
throw new DocumentParseException(Tapestry.format(
- "RuleDrivenParser.parse-error",
- url,
- ex.getMessage()), getLocation(), ex);
+ "RuleDrivenParser.parse-error",
+ url,
+ ex.getMessage()), getLocation(), ex);
}
if (LOG.isDebugEnabled())
@@ -306,7 +299,7 @@
/**
* Registers a public id and corresponding input source. Generally, the source is a wrapper
* around an input stream to a package resource.
- *
+ *
* @param publicId
* the public identifier to be registerred, generally the publicId of a DTD related
* to the document being parsed
@@ -333,8 +326,8 @@
if (rule == null)
throw new DocumentParseException(Tapestry.format(
- "RuleDrivenParser.no-rule-for-element",
- localName), getLocation());
+ "RuleDrivenParser.no-rule-for-element",
+ localName), getLocation());
return rule;
}
@@ -343,7 +336,7 @@
* Uses the {@link Locator}to track the position in the document as a {@link Location}. This
* is invoked once (before the initial element is parsed) and the Locator is retained and
* queried as to the current file location.
- *
+ *
* @see #getLocation()
*/
public void setDocumentLocator(Locator locator)
@@ -386,7 +379,7 @@
* the rule stack, then invokes {@link IRule#startElement(RuleDirectedParser, Attributes)}.
*/
public void startElement(String uri, String localName, String qName, Attributes attributes)
- throws SAXException
+ throws SAXException
{
fireContentRule();
@@ -482,7 +475,7 @@
if (LOG.isDebugEnabled())
LOG.debug("Attempting to resolve entity; publicId = " + publicId + " systemId = "
- + systemId);
+ + systemId);
if (_entities != null)
entityPath = (String) _entities.get(publicId);
@@ -529,7 +522,7 @@
/**
* Returns the localName for the current element.
- *
+ *
* @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
* java.lang.String, org.xml.sax.Attributes)
*/
@@ -540,7 +533,7 @@
/**
* Returns the qualified name for the current element.
- *
+ *
* @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
* java.lang.String, org.xml.sax.Attributes)
*/
@@ -551,7 +544,7 @@
/**
* Returns the URI for the current element.
- *
+ *
* @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String,
* java.lang.String, org.xml.sax.Attributes)
*/
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/asset/TestAssetSource.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/asset/TestAssetSource.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/asset/TestAssetSource.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/asset/TestAssetSource.java Fri Jul 20 17:38:46 2007
@@ -27,7 +27,7 @@
/**
* Tests for {@link org.apache.tapestry.asset.AssetSourceImpl}.
- *
+ *
*/
@Test
public class TestAssetSource extends BaseComponentTestCase
@@ -49,12 +49,12 @@
private AssetFactory newAssetFactory(Resource base, String path, Locale locale, Location location, IAsset asset)
{
AssetFactory f = newMock(AssetFactory.class);
-
+
expect(f.createAsset(base, null, path, locale, location)).andReturn(asset);
return f;
}
-
+
public void test_Known_Prefix()
{
Location l = newLocation();
@@ -63,11 +63,11 @@
IAsset asset = newAsset();
List contributions = newContributions("known", newAssetFactory(
- r,
- "path/to/asset",
- Locale.ENGLISH,
- l,
- asset));
+ r,
+ "path/to/asset",
+ Locale.ENGLISH,
+ l,
+ asset));
replay();
@@ -126,18 +126,18 @@
verify();
}
-
+
public void test_Known_Prefix_Null_Base()
{
Location l = newLocation();
IAsset asset = newAsset();
List contributions = newContributions("known", newAssetFactory(
- null,
- "path/to/asset",
- Locale.ENGLISH,
- l,
- asset));
+ null,
+ "path/to/asset",
+ Locale.ENGLISH,
+ l,
+ asset));
replay();
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/InjectStateFlagWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/InjectStateFlagWorkerTest.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/InjectStateFlagWorkerTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/InjectStateFlagWorkerTest.java Fri Jul 20 17:38:46 2007
@@ -14,8 +14,6 @@
package org.apache.tapestry.enhance;
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.hivemind.service.MethodSignature;
@@ -24,6 +22,8 @@
import org.apache.tapestry.spec.InjectSpecificationImpl;
import org.testng.annotations.Test;
+import java.lang.reflect.Modifier;
+
/**
* Tests for {@link org.apache.tapestry.enhance.InjectStateFlagWorker}.
*
@@ -70,7 +70,7 @@
worker.setApplicationStateManager(asm);
- worker.performEnhancement(op, is);
+ worker.performEnhancement(op, is, null);
verify();
}
@@ -112,7 +112,7 @@
worker.setApplicationStateManager(asm);
- worker.performEnhancement(op, is);
+ worker.performEnhancement(op, is, null);
verify();
}
@@ -139,7 +139,7 @@
try
{
- worker.performEnhancement(op, is);
+ worker.performEnhancement(op, is, null);
unreachable();
}
catch (ApplicationRuntimeException ex)
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestDispatchToInjectWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestDispatchToInjectWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestDispatchToInjectWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestDispatchToInjectWorker.java Fri Jul 20 17:38:46 2007
@@ -14,12 +14,6 @@
package org.apache.tapestry.enhance;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-
-import java.util.Collections;
-import java.util.Map;
-
import org.apache.hivemind.ErrorLog;
import org.apache.hivemind.Location;
import org.apache.tapestry.BaseComponentTestCase;
@@ -27,11 +21,16 @@
import org.apache.tapestry.spec.IComponentSpecification;
import org.apache.tapestry.spec.InjectSpecification;
import org.apache.tapestry.spec.InjectSpecificationImpl;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
import org.testng.annotations.Test;
+import java.util.Collections;
+import java.util.Map;
+
/**
* Tests for {@link org.apache.tapestry.enhance.DispatchToInjectWorker}.
- *
+ *
* @author Howard M. Lewis Ship
* @since 4.0
*/
@@ -39,13 +38,13 @@
public class TestDispatchToInjectWorker extends BaseComponentTestCase
{
private InjectSpecification newInjectSpecification(String propertyName, String type,
- String object)
+ String object)
{
return newInjectSpecification(propertyName, type, object, null);
}
private InjectSpecification newInjectSpecification(String propertyName, String type,
- String object, Location location)
+ String object, Location location)
{
InjectSpecification result = new InjectSpecificationImpl();
result.setProperty(propertyName);
@@ -70,7 +69,7 @@
return Collections.singletonMap(key, value);
}
- public void testSuccess()
+ public void test_Success()
{
EnhancementOperation op = newOp();
InjectSpecification is = newInjectSpecification("property", "object", "service:Foo");
@@ -78,7 +77,7 @@
Map map = newMap("object", worker);
IComponentSpecification spec = newSpec(is);
- worker.performEnhancement(op, is);
+ worker.performEnhancement(op, is, spec);
replay();
@@ -90,15 +89,15 @@
verify();
}
- public void testUnknownType()
+ public void test_Unknown_Type()
{
Location l = newLocation();
EnhancementOperation op = newOp();
InjectSpecification is = newInjectSpecification(
- "injectedProperty",
- "object",
- "service:Foo",
- l);
+ "injectedProperty",
+ "object",
+ "service:Foo",
+ l);
IComponentSpecification spec = newSpec(is);
ErrorLog log = newErrorLog();
@@ -115,31 +114,30 @@
verify();
}
- public void testFailure()
+ public void test_Failure()
{
Location l = newLocation();
-
+
EnhancementOperation op = newOp();
InjectSpecification is = newInjectSpecification("myProperty", "object", "service:Foo", l);
-
InjectEnhancementWorker worker = newMock(InjectEnhancementWorker.class);
-
+
Map map = newMap("object", worker);
IComponentSpecification spec = newSpec(is);
-
+
Throwable t = new RuntimeException("Simulated failure.");
ErrorLog log = newErrorLog();
- worker.performEnhancement(op, is);
+ worker.performEnhancement(op, is, spec);
expectLastCall().andThrow(t);
expect(op.getBaseClass()).andReturn(BasePage.class);
log
- .error(
- "Error adding property myProperty to class org.apache.tapestry.html.BasePage: Simulated failure.",
- l,
- t);
+ .error(
+ "Error adding property myProperty to class org.apache.tapestry.html.BasePage: Simulated failure.",
+ l,
+ t);
replay();
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectMetaWorker.java Fri Jul 20 17:38:46 2007
@@ -14,10 +14,6 @@
package org.apache.tapestry.enhance;
-import static org.easymock.EasyMock.expect;
-
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.MethodSignature;
@@ -26,8 +22,11 @@
import org.apache.tapestry.services.ComponentPropertySource;
import org.apache.tapestry.spec.InjectSpecification;
import org.apache.tapestry.spec.InjectSpecificationImpl;
+import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.lang.reflect.Modifier;
+
/**
* Tests for {@link org.apache.tapestry.enhance.InjectMetaWorker}.
*
@@ -87,7 +86,7 @@
worker.setSource(source);
- worker.performEnhancement(op, spec);
+ worker.performEnhancement(op, spec, null);
verify();
}
@@ -125,7 +124,7 @@
worker.setSource(source);
- worker.performEnhancement(op, spec);
+ worker.performEnhancement(op, spec, null);
verify();
}
@@ -164,7 +163,7 @@
worker.setSource(source);
- worker.performEnhancement(op, spec);
+ worker.performEnhancement(op, spec, null);
verify();
}
@@ -210,7 +209,7 @@
worker.setSource(source);
worker.setValueConverter(converter);
- worker.performEnhancement(op, spec);
+ worker.performEnhancement(op, spec, null);
verify();
}
@@ -253,7 +252,7 @@
worker.setSource(source);
worker.setValueConverter(converter);
- worker.performEnhancement(op, spec);
+ worker.performEnhancement(op, spec, null);
verify();
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectObjectWorker.java Fri Jul 20 17:38:46 2007
@@ -14,12 +14,6 @@
package org.apache.tapestry.enhance;
-import static org.easymock.EasyMock.expect;
-
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.hivemind.service.MethodSignature;
@@ -29,8 +23,13 @@
import org.apache.tapestry.services.InjectedValueProvider;
import org.apache.tapestry.spec.InjectSpecification;
import org.apache.tapestry.spec.InjectSpecificationImpl;
+import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Tests for {@link org.apache.tapestry.enhance.InjectObjectWorker}.
*
@@ -85,7 +84,7 @@
InjectObjectWorker w = new InjectObjectWorker();
w.setProvider(p);
- w.performEnhancement(op, spec);
+ w.performEnhancement(op, spec, null);
verify();
}
@@ -117,7 +116,7 @@
InjectObjectWorker w = new InjectObjectWorker();
w.setProvider(p);
- w.performEnhancement(op, spec);
+ w.performEnhancement(op, spec, null);
verify();
}
@@ -150,7 +149,7 @@
try
{
- w.performEnhancement(op, spec);
+ w.performEnhancement(op, spec, null);
unreachable();
}
catch (ApplicationRuntimeException ex)
@@ -185,7 +184,7 @@
try
{
- w.performEnhancement(op, spec);
+ w.performEnhancement(op, spec, null);
unreachable();
}
@@ -227,7 +226,7 @@
InjectObjectWorker w = new InjectObjectWorker();
w.setProvider(p);
- w.performEnhancement(op, spec);
+ w.performEnhancement(op, spec, null);
verify();
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectPageWorker.java Fri Jul 20 17:38:46 2007
@@ -14,10 +14,6 @@
package org.apache.tapestry.enhance;
-import static org.easymock.EasyMock.expect;
-
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.Location;
import org.apache.hivemind.service.MethodSignature;
@@ -25,8 +21,11 @@
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.spec.InjectSpecification;
import org.apache.tapestry.spec.InjectSpecificationImpl;
+import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.lang.reflect.Modifier;
+
/**
* Tests for {@link org.apache.tapestry.enhance.InjectPageWorker}.
*
@@ -50,7 +49,7 @@
try
{
- new InjectPageWorker().performEnhancement(op, is);
+ new InjectPageWorker().performEnhancement(op, is, null);
unreachable();
}
catch (ApplicationRuntimeException ex)
@@ -102,7 +101,7 @@
InjectSpecification is = newSpec(l);
- new InjectPageWorker().performEnhancement(op, is);
+ new InjectPageWorker().performEnhancement(op, is, null);
verify();
}
@@ -135,7 +134,7 @@
InjectSpecification is = newSpec(l);
- new InjectPageWorker().performEnhancement(op, is);
+ new InjectPageWorker().performEnhancement(op, is, null);
verify();
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectScriptWorker.java Fri Jul 20 17:38:46 2007
@@ -14,12 +14,6 @@
package org.apache.tapestry.enhance;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-
-import java.lang.reflect.Modifier;
-
import org.apache.hivemind.Location;
import org.apache.hivemind.Resource;
import org.apache.hivemind.service.MethodSignature;
@@ -27,8 +21,11 @@
import org.apache.tapestry.IScript;
import org.apache.tapestry.engine.IScriptSource;
import org.apache.tapestry.spec.InjectSpecificationImpl;
+import static org.easymock.EasyMock.*;
import org.testng.annotations.Test;
+import java.lang.reflect.Modifier;
+
/**
* Tests for {@link org.apache.tapestry.enhance.InjectScriptWorker}.
*
@@ -38,27 +35,23 @@
@Test
public class TestInjectScriptWorker extends BaseComponentTestCase
{
- public void testSuccess()
+ public void test_Simple_Inject()
+ throws Exception
{
EnhancementOperation op = newMock(EnhancementOperation.class);
final Location injectSpecLocation = newLocation();
-
final IScriptSource source = newMock(IScriptSource.class);
-
- // Location componentSpecLocation = newLocation();
Resource scriptResource = newResource();
-
+
op.claimReadonlyProperty("foo");
expect(op.getPropertyType("foo")).andReturn(IScript.class);
-
expect(op.getAccessorMethodName("foo")).andReturn("getFoo");
-
expect(injectSpecLocation.getResource()).andReturn(scriptResource);
expect(scriptResource.getRelativeResource("bar.script")).andReturn(scriptResource);
-
+ expect(scriptResource.getResourceURL()).andReturn(getResource("autowire-single.xml").getResourceURL());
expect(op.addInjectedField(eq("_$script"), eq(DeferredScript.class), anyObject()))
.andReturn("_script");
@@ -76,7 +69,7 @@
InjectScriptWorker worker = new InjectScriptWorker();
worker.setSource(source);
- worker.performEnhancement(op, is);
+ worker.performEnhancement(op, is, null);
verify();
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java?view=diff&rev=558203&r1=558202&r2=558203
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/enhance/TestInjectStateWorker.java Fri Jul 20 17:38:46 2007
@@ -14,11 +14,6 @@
package org.apache.tapestry.enhance;
-import static org.easymock.EasyMock.expect;
-
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
import org.apache.hivemind.Location;
import org.apache.hivemind.service.BodyBuilder;
import org.apache.hivemind.service.MethodSignature;
@@ -27,8 +22,12 @@
import org.apache.tapestry.event.PageDetachListener;
import org.apache.tapestry.spec.InjectSpecification;
import org.apache.tapestry.spec.InjectSpecificationImpl;
+import static org.easymock.EasyMock.expect;
import org.testng.annotations.Test;
+import java.lang.reflect.Modifier;
+import java.util.Map;
+
/**
* Tests for {@link org.apache.tapestry.enhance.InjectStateWorker}.
*
@@ -107,7 +106,7 @@
InjectStateWorker w = new InjectStateWorker();
w.setApplicationStateManager(asm);
- w.performEnhancement(op, spec);
+ w.performEnhancement(op, spec, null);
verify();
}