You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2012/03/14 16:46:07 UTC

svn commit: r1300598 [10/10] - in /myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src: main/java/org/apache/myfaces/extensions/scripting/core/api/ main/java/org/apache/myfaces/extensions/scripting/core/common/ main/java/org/apach...

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceLoaderUtils.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,125 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.resources;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class ResourceLoaderUtils {
+
+    public final static String JAVAX_FACES_LIBRARY_NAME = "javax.faces";
+    public final static String JSF_JS_RESOURCE_NAME = "jsf.js";
+
+    public final static String MYFACES_JS_RESOURCE_NAME = "oamSubmit.js";
+    public final static String MYFACES_JS_RESOURCE_NAME_UNCOMPRESSED = "oamSubmit-uncompressed.js";
+
+    public final static String MYFACES_LIBRARY_NAME = "org.apache.myfaces";
+    private final static String RENDERED_MYFACES_JS = "org.apache.myfaces.RENDERED_MYFACES_JS";
+
+    // TODO: In tomcat and jetty it is implemented a Flyweight pattern when converting
+    // date headers. For now it is better keep this stuff simple.
+    private static final String HTTP_RESPONSE_DATE_HEADER =
+            "EEE, dd MMM yyyy HH:mm:ss zzz";
+
+    private static final String[] HTTP_REQUEST_DATE_HEADER = {
+            "EEE, dd MMM yyyy HH:mm:ss zzz", "EEEEEE, dd-MMM-yy HH:mm:ss zzz",
+            "EEE MMMM d HH:mm:ss yyyy"};
+
+    private static TimeZone __GMT = TimeZone.getTimeZone("GMT");
+
+    public static String formatDateHeader(long value) {
+        SimpleDateFormat format = new SimpleDateFormat(
+                HTTP_RESPONSE_DATE_HEADER,
+                Locale.US);
+        format.setTimeZone(__GMT);
+        return format.format(new Date(value));
+    }
+
+    public static Long parseDateHeader(String value) {
+        Date date = null;
+        for (int i = 0; (date == null) && (i < HTTP_REQUEST_DATE_HEADER.length); i++) {
+            try {
+                SimpleDateFormat format = new SimpleDateFormat(
+                        HTTP_REQUEST_DATE_HEADER[i], Locale.US);
+                format.setTimeZone(__GMT);
+                date = format.parse(value);
+            } catch (ParseException e) {
+                ;
+            }
+        }
+        if (date == null) {
+            return null;
+        }
+        return new Long(date.getTime());
+    }
+
+    //Taken from trinidad URLUtils
+    public static long getResourceLastModified(URL url) throws IOException {
+        if ("file".equals(url.getProtocol())) {
+            String externalForm = url.toExternalForm();
+            // Remove the "file:"
+            File file = new File(externalForm.substring(5));
+
+            return file.lastModified();
+        } else {
+            return getResourceLastModified(url.openConnection());
+        }
+    }
+
+    //Taken from trinidad URLUtils
+    public static long getResourceLastModified(URLConnection connection) throws IOException {
+        long modified;
+        if (connection instanceof JarURLConnection) {
+            // The following hack is required to work-around a JDK bug.
+            // getLastModified() on a JAR entry URL delegates to the actual JAR file
+            // rather than the JAR entry.
+            // This opens internally, and does not close, an input stream to the JAR
+            // file.
+            // In turn, you cannot close it by yourself, because it's internal.
+            // The work-around is to get the modification date of the JAR file
+            // manually,
+            // and then close that connection again.
+
+            URL jarFileUrl = ((JarURLConnection) connection).getJarFileURL();
+            URLConnection jarFileConnection = jarFileUrl.openConnection();
+
+            try {
+                modified = jarFileConnection.getLastModified();
+            } finally {
+                try {
+                    jarFileConnection.getInputStream().close();
+                } catch (Exception exception) {
+                    // Ignored
+                }
+            }
+        } else {
+            modified = connection.getLastModified();
+        }
+
+        return modified;
+    }
+}

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMeta.java Wed Mar 14 15:46:00 2012
@@ -1,57 +1,43 @@
-/*
- * 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.myfaces.extensions.scripting.scanningcore.probes;
-
-import org.junit.Ignore;
-
-/**
- * @author Werner Punz (latest modification by $Author$)
- * @version $Revision$ $Date$
- *          <p/>
- *          testprobe for our reflectutils
- */
-
-@Ignore
-public class Probe implements MethodReloadingProbe
-{
-
-    public Probe() {
-    }
-
-    public Probe(String hello, String world) {
-        
-    }
-
-    public void testMethod1() {
-
-    }
-
-    public void testMethod2() {
-        throw new NullPointerException("for test");
-    }
-
-    public boolean testMethod3(String param1) {
-        return true;
-    }
-
-    public static boolean testMethod4(String param1, String param2) {
-        return true;
-    }
-
-}
+/*
+ * 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.myfaces.extensions.scripting.jsf.resources;
+
+/**
+ * Contains the metadata information to reference a resource 
+ * 
+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)
+ * @version $Revision: 946779 $ $Date: 2010-05-20 15:31:42 -0500 (Jue, 20 May 2010) $
+ */
+public abstract class ResourceMeta
+{
+    
+    public abstract String getLibraryName();
+    
+    public abstract String getResourceName();
+
+    public abstract String getLocalePrefix();
+
+    public abstract String getLibraryVersion();
+
+    public abstract String getResourceVersion();
+    
+    public abstract String getResourceIdentifier();
+    
+    public abstract boolean couldResourceContainValueExpressions();
+}

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/ResourceMetaImpl.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,116 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.resources;
+
+/**
+ * Contains the metadata information to reference a resource 
+ * 
+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)
+ * @version $Revision: 700544 $ $Date: 2008-09-30 13:44:02 -0500 (Mar, 30 Sep 2008) $
+ */
+public class ResourceMetaImpl extends ResourceMeta
+{
+
+    private final String _prefix;
+    private final String _libraryName;
+    private final String _libraryVersion;
+    private final String _resourceName;
+    private final String _resourceVersion;
+    
+    public ResourceMetaImpl(String prefix, String libraryName, String libraryVersion,
+            String resourceName, String resourceVersion)
+    {
+        _prefix = prefix;
+        _libraryName = libraryName;
+        _libraryVersion = libraryVersion;
+        _resourceName = resourceName;
+        _resourceVersion = resourceVersion;
+    }
+
+    public String getLibraryName()
+    {
+        return _libraryName;
+    }    
+    
+    public String getResourceName()
+    {
+        return _resourceName;
+    }    
+
+    public String getLocalePrefix()
+    {
+        return _prefix;
+    }
+
+    public String getLibraryVersion()
+    {
+        return _libraryVersion;
+    }
+
+    public String getResourceVersion()
+    {
+        return _resourceVersion;
+    }
+    
+    @Override
+    public String getResourceIdentifier()
+    {
+        StringBuilder builder = new StringBuilder();
+        boolean firstSlashAdded = false;
+        if (_prefix != null && _prefix.length() > 0)
+        {
+            builder.append(_prefix);
+            firstSlashAdded = true;
+        }
+        if (_libraryName != null)
+        {
+            if (firstSlashAdded) builder.append('/');
+            builder.append(_libraryName);
+            firstSlashAdded = true;
+        }
+        if (_libraryVersion != null)
+        {
+            if (firstSlashAdded) builder.append('/');
+            builder.append(_libraryVersion);
+            firstSlashAdded = true;
+        }
+        if (_resourceName != null)
+        {
+            if (firstSlashAdded) builder.append('/');
+            builder.append(_resourceName);
+            firstSlashAdded = true;
+        }
+        if (_resourceVersion != null)
+        {
+            if (firstSlashAdded) builder.append('/');
+            builder.append(_resourceVersion);
+            builder.append(
+                    _resourceName.substring(_resourceName.lastIndexOf('.')));
+            firstSlashAdded = true;
+        }
+
+        return builder.toString();
+    }
+
+    @Override
+    public boolean couldResourceContainValueExpressions()
+    {
+        return false;
+    }
+}

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandler.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,209 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.resources;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.Decorated;
+
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.net.URL;
+
+/**
+ * A simple delegating resource handler
+ * which is supposed to pick up resources from a
+ * given location if the Weaving configuration
+ * has the parameter present
+ */
+public class SourceResourceHandler extends ResourceHandlerImpl implements Decorated
+{
+
+    ResourceHandler _delegate = null;
+    ResourceHandlerSupport _sourceHandlerSupport = null;
+
+    public SourceResourceHandler(ResourceHandler delegate) {
+        _delegate = delegate;
+    }
+
+    public Resource createResource(String resourceName) {
+        Resource retVal = super.createResource(resourceName);
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.createResource(resourceName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName) {
+        Resource retVal = super.createResource(resourceName, libraryName);
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.createResource(resourceName, libraryName);
+    }
+
+    public Resource createResource(String resourceName, String libraryName, String contentType) {
+        Resource retVal = super.createResource(resourceName, libraryName, contentType);
+
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.createResource(resourceName, libraryName, contentType);
+    }
+
+    public String getRendererTypeForResourceName(String resourceName) {
+
+        String retVal = super.getRendererTypeForResourceName(resourceName);
+        if (retVal != null)
+            return retVal;
+
+        return _delegate.getRendererTypeForResourceName(resourceName);
+    }
+
+    public void handleResourceRequest(FacesContext context) throws IOException {
+        super.handleResourceRequest(context);
+    }
+
+    public boolean isResourceRequest(FacesContext context) {
+        return _delegate.isResourceRequest(context);
+    }
+
+    public boolean libraryExists(String libraryName) {
+        return _delegate.libraryExists(libraryName);
+    }
+
+    public ResourceHandler getDelegate() {
+        return _delegate;
+    }
+
+    @Override
+    /**
+     * central override of this class it provides a new handler
+     * support class which allows source pickups after the
+     * JSF2 specified restful algorithms
+     *
+     * @return A support instance which allows also source pickups from resources additionally to the
+     *              default deployment and jar pickups
+     */
+    protected ResourceHandlerSupport getResourceHandlerSupport() {
+        if (_sourceHandlerSupport == null) {
+            _sourceHandlerSupport = new SourceResourceHandlerSupport();
+        }
+        return _sourceHandlerSupport;
+    }
+
+    protected ResourceMeta deriveResourceMeta(ResourceLoader resourceLoader,
+                                              String resourceName, String libraryName) {
+        String localePrefix = getLocalePrefixForLocateResource();
+        String resourceVersion = null;
+        String libraryVersion = null;
+        ResourceMeta resourceId = null;
+
+        //1. Try to locate resource in a localized path
+        if (localePrefix != null) {
+            if (null != libraryName) {
+                String pathToLib = localePrefix + '/' + libraryName;
+                libraryVersion = resourceLoader.getLibraryVersion(pathToLib);
+
+                if (null != libraryVersion) {
+                    String pathToResource = localePrefix + '/'
+                            + libraryName + '/' + libraryVersion + '/'
+                            + resourceName;
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                } else {
+                    String pathToResource = localePrefix + '/'
+                            + libraryName + '/' + resourceName;
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(localePrefix, libraryName,
+                            libraryVersion, resourceName, resourceVersion);
+                }
+            } else {
+                resourceVersion = resourceLoader
+                        .getResourceVersion(localePrefix + '/' + resourceName);
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(localePrefix, null, null,
+                            resourceName, resourceVersion);
+                } else if (resourceVersion == ResourceLoader.VERSION_INVALID) {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            null, resourceName, null);
+                }
+            }
+
+            if (resourceId != null) {
+                URL url = resourceLoader.getResourceURL(resourceId);
+                if (url == null) {
+                    resourceId = null;
+                }
+            }
+        }
+
+        //2. Try to localize resource in a non localized path
+        if (resourceId == null) {
+            if (null != libraryName) {
+                libraryVersion = resourceLoader.getLibraryVersion(libraryName);
+
+                if (null != libraryVersion) {
+                    String pathToResource = (libraryName + '/' + libraryVersion
+                            + '/' + resourceName);
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                } else {
+                    String pathToResource = (libraryName + '/'
+                            + resourceName);
+                    resourceVersion = resourceLoader
+                            .getResourceVersion(pathToResource);
+                }
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            libraryVersion, resourceName, resourceVersion);
+                } else if (resourceVersion == ResourceLoader.VERSION_INVALID) {
+                    resourceId = resourceLoader.createResourceMeta(null, libraryName,
+                            libraryVersion, resourceName, null);
+                }
+            } else {
+                resourceVersion = resourceLoader
+                        .getResourceVersion(resourceName);
+
+                if (!(resourceVersion != null && ResourceLoader.VERSION_INVALID.equals(resourceVersion))) {
+                    resourceId = resourceLoader.createResourceMeta(null, null, null,
+                            resourceName, resourceVersion);
+                } else if (resourceVersion == ResourceLoader.VERSION_INVALID) {
+                    resourceId = resourceLoader.createResourceMeta(null, null,
+                            null, resourceName, null);
+                }
+            }
+
+            if (resourceId != null) {
+                URL url = resourceLoader.getResourceURL(resourceId);
+                if (url == null) {
+                    resourceId = null;
+                }
+            }
+        }
+
+        return resourceId;
+    }
+}

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceHandlerSupport.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,82 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.resources;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * impl specific handler support which attaches
+ * the source resource loader upfront before
+ * checking the other ones
+ * <p/>
+ * a delegate is used to limit the binding between
+ * the "parent" class and the child class
+ * in this case it simply makes sense to avoid any internal sideeffects
+ * between getResourceLoaders and the other methods
+ */
+public class SourceResourceHandlerSupport extends ResourceHandlerSupport {
+
+    private ResourceLoader[] _supportResourceLoaders;
+    private BaseResourceHandlerSupport _defaultSupport = new BaseResourceHandlerSupport();
+
+    @Override
+    /**
+     * Delivers a list of resource loaders in a binding order
+     * of the resource lookup algorithms
+     *
+     * @return a list of resource loaders with following order,
+     *              <ul>
+     *                  <li>source lookup paths if present</li>
+     *                  <li>/resources directory</li>
+     *                  <li>META-INF/resources directory</li>
+     *              </ul>
+     */
+    public ResourceLoader[] getResourceLoaders() {
+        if (_supportResourceLoaders == null) {
+            //The ExternalContextResourceLoader has precedence over
+            //ClassLoaderResourceLoader, so it goes first.
+            _supportResourceLoaders = new ResourceLoader[]{
+                    new SourceResourceLoader("/resources"),
+                    new ExternalContextResourceLoader("/resources"),
+                    new ClassLoaderResourceLoader("META-INF/resources")
+            };
+        }
+        return _supportResourceLoaders;
+    }
+
+    public String calculateResourceBasePath(FacesContext facesContext) {
+        return _defaultSupport.calculateResourceBasePath(facesContext);
+    }
+
+    public boolean isExtensionMapping() {
+        return _defaultSupport.isExtensionMapping();
+    }
+
+    public String getMapping() {
+        return _defaultSupport.getMapping();
+    }
+
+    public long getStartupTime() {
+        return _defaultSupport.getStartupTime();
+    }
+
+    public long getMaxTimeExpires() {
+        return _defaultSupport.getMaxTimeExpires();
+    }
+}

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/resources/SourceResourceLoader.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,104 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.resources;
+
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * internal resource loader to be used with our custom resource handler
+ * the resource loader is added to the list of available loaders
+ * so that the resource gets loaded properly from our source path
+ * instead of the web context if present, the source paths as usual
+ * are picked up by our context params.
+ */
+public class SourceResourceLoader extends ExternalContextResourceLoader {
+
+    public SourceResourceLoader(String prefix) {
+        super(prefix);
+    }
+
+    @Override
+    protected Set<String> getResourcePaths(String path) {
+        List<String> resourceRoots = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+        if (resourceRoots == null || resourceRoots.isEmpty()) {
+            return Collections.EMPTY_SET;
+        }
+        Set<String> retVals = new HashSet<String>(resourceRoots.size());
+        //for (String resourceRoot : resourceRoots) {
+        retVals.add(getPrefix() + "/" + path);
+        //}
+        return retVals;
+    }
+
+    @Override
+    public URL getResourceURL(ResourceMeta resourceMeta) {
+        try {
+            List<String> resourceRoots = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+            if (resourceRoots == null || resourceRoots.isEmpty()) {
+                return super.getResourceURL(resourceMeta);
+            }
+
+            for (String resourceRoot : resourceRoots) {
+                File resourceFile = new File(resourceRoot + getPrefix() + "/" + resourceMeta.getLibraryName() + "/"+ resourceMeta.getResourceName());
+                if (resourceFile.exists()) {
+                    return resourceFile.toURI().toURL();
+                }
+            }
+
+            return super.getResourceURL(resourceMeta);
+        }
+        catch (MalformedURLException e) {
+            return null;
+        }
+    }
+
+    @Override
+    public InputStream getResourceInputStream(ResourceMeta resourceMeta) {
+        try {
+            List<String> resourceRoots = WeavingContext.getInstance().getConfiguration().getResourceDirs();
+            if (resourceRoots == null || resourceRoots.isEmpty()) {
+                return super.getResourceInputStream(resourceMeta);
+            }
+
+            for (String resourceRoot : resourceRoots) {
+                File resourceFile = new File(resourceRoot + getPrefix() + "/" +resourceMeta.getLibraryName() + "/"+ resourceMeta.getResourceName());
+                if (resourceFile.exists()) {
+                    return new FileInputStream(resourceFile);
+                }
+            }
+
+            return super.getResourceInputStream(resourceMeta);
+        }
+        catch (IOException e) {
+            return null;
+        }
+    }
+}

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/RefreshPhaseListener.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,62 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.startup;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import java.util.Map;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ * This phase listener is needed because the annotation scanner
+ * relies on the facesContext to be present, we cannot do without it
+ */
+public class RefreshPhaseListener implements PhaseListener
+{
+
+    @Override
+    public void afterPhase(PhaseEvent event)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    @Override
+    public void beforePhase(PhaseEvent event)
+    {
+        FacesContext context = event.getFacesContext();
+        Map<Object, Object> params = context.getAttributes();
+        if(params.containsKey("ANN_PROCESSED")) return;
+        else params.put("ANN_PROCESSED", Boolean.TRUE);
+        WeavingContext.getInstance().annotationScan();
+        WeavingContext.getInstance().getImplementationSPI().refreshManagedBeans();
+    }
+
+    @Override
+    public PhaseId getPhaseId()
+    {
+        return PhaseId.ANY_PHASE;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+}

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/jsf/startup/StartupServletContextPluginChainLoader.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,96 @@
+/*
+ * 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.myfaces.extensions.scripting.jsf.startup;
+
+import org.apache.myfaces.webapp.StartupListener;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ResourceMonitor;
+import org.apache.myfaces.extensions.scripting.jsf.adapters.MyFacesSPI;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          serves the startup process
+ *          the chainloader hooks itself into the myfaces init process
+ *          and is responsible for startup of the daemon the
+ *          initial scan and compile
+ */
+
+public class StartupServletContextPluginChainLoader implements StartupListener
+{
+    final Logger _log = Logger.getLogger(this.getClass().getName());
+
+    public void preInit(ServletContextEvent servletContextEvent)
+    {
+        ServletContext servletContext = servletContextEvent.getServletContext();
+        try
+        {
+            WeavingContext context = WeavingContext.getInstance();
+            _log.info("[EXT-SCRIPTING] Instantiating StartupServletContextPluginChainLoader");
+            context.initEngines();
+            _log.info("[EXT-SCRIPTING] Loading configuration");
+            context.getConfiguration().init(servletContext);
+            _log.info("[EXT-SCRIPTING] Loading Scripting end");
+            _log.info("[EXT-SCRIPTING] initializing startup daemon");
+            ResourceMonitor.init(servletContext);
+            _log.info("[EXT-SCRIPTING] initializing startup daemon end");
+            _log.info("[EXT-SCRIPTING] Initial Scan and compile");
+            //the initial scan should happen synchronsously
+            ResourceMonitor.getInstance().performMonitoringTask();
+            _log.info("[EXT-SCRIPTING] Starting Change Monitor");
+            ResourceMonitor.getInstance().start();
+            _log.info("[EXT-SCRIPTING] Startup done");
+            _log.info("[EXT-SCRIPTING] init the chain loader for class loading");
+            //TODO make this more generic depending on the implementation
+            MyFacesSPI.getInstance().registerClassloadingExtension(servletContext);
+            _log.info("[EXT-SCRIPTING] registering the JSF Implementation");
+            WeavingContext.getInstance().setImplementation(MyFacesSPI.getInstance());
+        }
+        catch (IOException e)
+        {
+            _log.severe("[EXT-SCRIPTING] Engine startup failed terminating ext-scripting");
+        }
+
+    }
+
+    public void postInit(ServletContextEvent evt)
+    {
+        //tell the system that the startup phase is done
+        WeavingContext.getInstance().markPostInit();
+    }
+
+    public void preDestroy(ServletContextEvent evt)
+    {
+
+    }
+
+    public void postDestroy(ServletContextEvent evt)
+    {
+        //context is destroyed we have to shut down our daemon as well, by giving it
+        //a hint to shutdown
+        ResourceMonitor.getInstance().setRunning(false);
+    }
+}

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/InitialFullScanTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/context/InitialFullScanTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/InitialFullScanTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/InitialFullScanTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/context/InitialFullScanTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/TaintHistoryTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/TaintHistoryTest.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/TaintHistoryTest.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/context/TaintHistoryTest.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,162 @@
+/*
+ * 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.myfaces.extensions.scripting.scanningcore.context;
+
+import org.apache.myfaces.extensions.scripting.core.api.ScriptingConst;
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ClassResource;
+import org.apache.myfaces.extensions.scripting.jsf.components.RendererConst;
+import org.apache.myfaces.extensions.scripting.jsf.components.TaintHistory;
+import org.apache.myfaces.extensions.scripting.jsf.components.TaintHistoryRenderer;
+import org.apache.myfaces.extensions.scripting.scanningcore.support.ContextUtils;
+import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
+import org.apache.myfaces.test.base.AbstractJsfTestCase;
+import org.apache.myfaces.test.mock.MockRenderKitFactory;
+import org.apache.myfaces.test.mock.MockResponseWriter;
+
+import javax.faces.component.html.HtmlForm;
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.StringWriter;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          Taint history test, which is the first JSF related test
+ *          we try to test here a simple mechanism, the taint history under
+ *          JSF Testing conditions.
+ */
+
+public class TaintHistoryTest extends AbstractJsfTestCase
+{
+
+    ServletContext context;
+    private TaintHistory _taintHistory;
+    private TaintHistoryRenderer _taintHistoryRenderer;
+    private HtmlForm _form;
+    private MockResponseWriter _writer;
+    private static final String VAL_FILTER = "bla";
+    private static final String NO_TAINT_HISTORY_FOUND = "no taint history found";
+    private static final String BOOGA_JAVA = "booga.java";
+    private static final String TAINT_HISTORY_FOUND = "taint history found";
+    private static final String ATTR_NO_ENTRIES = "noEntries";
+    private static final String ATTR_FILTER = "filter";
+
+    public TaintHistoryTest(String name)
+    {
+        super(TaintHistoryTest.class.getName());
+    }
+
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        context = ContextUtils.startupSystem();
+        _writer = new MockResponseWriter(new StringWriter(), null, null);
+
+        facesContext.setResponseWriter(_writer);
+        _taintHistory = new TaintHistory();
+        _form = new HtmlForm();
+        _taintHistory.setParent(_form);
+
+        facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
+        facesContext.getRenderKit().addRenderer(
+                _taintHistory.getFamily(),
+                _taintHistory.getRendererType(),
+                new TaintHistoryRenderer());
+        facesContext.getRenderKit().addRenderer(
+                _form.getFamily(),
+                _form.getRendererType(),
+                new HtmlFormRenderer());
+    }
+
+    public void testTaintHistory() throws Exception {
+            ClassResource historyEntry = new ClassResource();
+            historyEntry.setAClass(this.getClass());
+            //historyEntry.getRefreshAttribute().requestRefresh();
+            //historyEntry.getRefreshAttribute().executedRefresh();
+            historyEntry.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+            historyEntry.setFile(new File(BOOGA_JAVA));
+           // historyEntry.getRefreshAttribute().requestRefresh();
+            historyEntry.setTainted(true);
+
+            //WeavingContext.getInstance().addTaintLogEntry(historyEntry);
+            //WeavingContext.getRefreshContext().addTaintLogEntry(historyEntry);
+
+            _taintHistory.encodeAll(facesContext);
+            facesContext.renderResponse();
+            assertFalse(TAINT_HISTORY_FOUND, _writer.getWriter().toString().contains(NO_TAINT_HISTORY_FOUND));
+
+            assertTrue(_writer.getWriter().toString().contains(BOOGA_JAVA));
+        }
+
+        public void testSaveRestore() {
+            _taintHistory.setFilter(VAL_FILTER);
+            _taintHistory.setNoEntries(10);
+            Object state = _taintHistory.saveState(facesContext);
+            _taintHistory.setFilter("");
+            _taintHistory.setNoEntries(0);
+            _taintHistory.restoreState(facesContext, state);
+
+            assertTrue(_taintHistory.getFilter().equals(VAL_FILTER));
+
+            assertTrue(_taintHistory.getNoEntries().equals(10));
+
+        }
+
+        public void testNoEntries() throws Exception {
+            int noEntries = 10;
+            for (int cnt = 0; cnt < 100; cnt++) {
+                ClassResource historyEntry = new ClassResource();
+                historyEntry.setAClass(this.getClass());
+                //historyEntry.getRefreshAttribute().executedRefresh();
+                historyEntry.setScriptingEngine(ScriptingConst.ENGINE_TYPE_JSF_JAVA);
+                if(cnt < 10)
+                    historyEntry.setFile(new File("0"+cnt + "_"+BOOGA_JAVA));
+                else
+                    historyEntry.setFile(new File(cnt + "_"+BOOGA_JAVA));
+                //historyEntry.getRefreshAttribute().requestRefresh();
+                //historyEntry.setTaintedOnce(true);
+                WeavingContext.getInstance().addTaintLogEntry(historyEntry);
+            }
+
+            _taintHistory.setNoEntries(10);
+            _taintHistory.encodeAll(facesContext);
+            facesContext.renderResponse();
+
+            assertTrue(_writer.getWriter().toString().contains("99_"+BOOGA_JAVA));
+            assertFalse(_writer.getWriter().toString().contains("89_"+BOOGA_JAVA));
+            assertFalse(_writer.getWriter().toString().contains("00_"+BOOGA_JAVA));
+        }
+
+        public void testElAttributes() {
+           assertTrue(_taintHistory.getFilter() == null);
+           assertTrue(_taintHistory.getNoEntries().equals(TaintHistory.DEFAULT_NO_ENTRIES));
+           _taintHistory.setNoEntries(null);
+
+           _taintHistory.getAttributes().put(ATTR_NO_ENTRIES, 20);
+           _taintHistory.getAttributes().put(ATTR_FILTER, VAL_FILTER);
+
+           assertTrue(_taintHistory.getNoEntries() == 20);
+           assertTrue(_taintHistory.getFilter().equals(VAL_FILTER));
+        }
+
+
+}

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/EngineFactoryTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/EngineFactoryTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/EngineFactoryTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/EngineFactoryTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/EngineFactoryTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationExceptionTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationExceptionTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationExceptionTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationExceptionTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationExceptionTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationResultTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationResultTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationResultTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationResultTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/CompilationResultTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/GroovyCompilerTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/GroovyCompilerTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/GroovyCompilerTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/GroovyCompilerTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/GroovyCompilerTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/engine/compiler/JavaCompilerTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/MethodReloadingProbe.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/MethodReloadingProbe.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/MethodReloadingProbe.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/MethodReloadingProbe.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/MethodReloadingProbe.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe2.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe2.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe2.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe2.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/probes/Probe2.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/AbstractGeneratorTestCase.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/AbstractGeneratorTestCase.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/AbstractGeneratorTestCase.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/AbstractGeneratorTestCase.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/AbstractGeneratorTestCase.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/Consts.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/Consts.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/Consts.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/Consts.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/Consts.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Added: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/ContextUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/ContextUtils.java?rev=1300598&view=auto
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/ContextUtils.java (added)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/ContextUtils.java Wed Mar 14 15:46:00 2012
@@ -0,0 +1,62 @@
+/*
+ * 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.myfaces.extensions.scripting.scanningcore.support;
+
+import org.apache.myfaces.extensions.scripting.core.api.WeavingContext;
+import org.apache.myfaces.extensions.scripting.core.monitor.ResourceMonitor;
+import org.apache.myfaces.extensions.scripting.scanningcore.support.MockServletContext;
+
+import java.io.IOException;
+
+/**
+ * @author Werner Punz (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+
+public class ContextUtils
+{
+    /**
+         * A startup routine shared by many tests
+         * to do the basic weaving initialization
+         *
+         * @return the mockup servlet context
+         */
+        public static MockServletContext startupSystem() {
+            MockServletContext context = new org.apache.myfaces.extensions.scripting.scanningcore.support.MockServletContext();
+
+            WeavingContext wcontext = WeavingContext.getInstance();
+            try
+            {
+                wcontext.initEngines();
+                wcontext.getConfiguration().init(context);
+                ResourceMonitor.init(context);
+                //TODO ??
+                ResourceMonitor.getInstance().performMonitoringTask();
+            }
+            catch (IOException e)
+            {
+                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            }
+
+
+            //WeavingContextInitializer.initWeavingContext(context);
+            return context;
+        }
+}

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/LoggingHandler.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/LoggingHandler.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/LoggingHandler.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/LoggingHandler.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/LoggingHandler.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/MockServletContext.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/MockServletContext.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/MockServletContext.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/MockServletContext.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/MockServletContext.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/PathUtils.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/PathUtils.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/PathUtils.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/support/PathUtils.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/support/PathUtils.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/FileUtilsTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/FileUtilsTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/FileUtilsTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/FileUtilsTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/FileUtilsTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)

Copied: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/ReflectUtilTest.java (from r1300587, myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/ReflectUtilTest.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/ReflectUtilTest.java?p2=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/ReflectUtilTest.java&p1=myfaces/extensions/scripting/trunk/extscript-core-root/extscript-core/src/test/java/rewrite/org/apache/myfaces/extensions/scripting/scanningcore/utilstest/ReflectUtilTest.java&r1=1300587&r2=1300598&rev=1300598&view=diff
==============================================================================
    (empty)