You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by jw...@apache.org on 2010/04/06 19:00:42 UTC

svn commit: r931223 - in /myfaces/trinidad/branches/1.2.12.3-branch: trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/ trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadi...

Author: jwaldman
Date: Tue Apr  6 17:00:41 2010
New Revision: 931223

URL: http://svn.apache.org/viewvc?rev=931223&view=rev
Log:
TRINIDAD-1746 move InputStreamProvider to be a public API
TRINIDAD-1729 provide a hook for for an external decorator of Skin InputStreamProvider

Added:
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/InputStreamProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/NameResolver.java
Modified:
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/ImageConstants.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/CompositeButtonKey.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/FileSystemImageCache.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/SourceCheckingCacheEntry.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/laf/browser/SourceUtils.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingInputStreamProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingNameResolver.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/DefaultNameResolver.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/FileInputStreamProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/InputStreamProviderProxy.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/xml/XMLUtils.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetEntry.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetNameResolver.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/StyleSheetDocumentUtils.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/parse/StyleSheetDocumentParser.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/Icon.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentIconRequest.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentedLafIconProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/CoreIconRequest.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/FlippedIconRequest.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/IconArrayLafIconProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/IconInputStreamProvider.java
    myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/SimpleButtonUtils.java

Added: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/InputStreamProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/InputStreamProvider.java?rev=931223&view=auto
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/InputStreamProvider.java (added)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/InputStreamProvider.java Tue Apr  6 17:00:41 2010
@@ -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.trinidad.share.io;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * InputStreamProviders encapsulate a single target file. An InputStreamProvider is used to 
+ * get an inputStream, cache results and see if the file has been modified. 
+ * (There's no real requirement that there be a physical file
+ * at the target location).
+ * <p>
+ * @version $Name:  $ ($Revision: adfrt/faces/adf-faces-impl/src/main/java/oracle/adfinternal/view/faces/share/io/InputStreamProvider.java#0 $) $Date: 10-nov-2005.19:00:08 $
+ */
+public interface InputStreamProvider
+{
+  /**
+   * Return an InputStream for the target.  This function
+   * should never return null - if a stream cannot be opened,
+   * throw an IOException.
+   */
+  public InputStream       openInputStream() throws IOException;
+
+  /**
+   * Returns the name of the target location, suitable
+   * for user display.
+   */
+  public String            getDisplayName();
+
+  /**
+   * Returns an identifier object that uniquely
+   * identifies the target location. If two providers
+   * return equal identifiers, that is, given:
+   * <pre>
+   *   Object identifierA = providerA.getIdentifier();
+   *   Object identifierB = providerB.getIdentifier();
+   * </pre>
+   * ... then:
+   * <pre>
+   *   if (identifierA.equals(identifierB)) ...
+   * </pre>
+   * then the two providers must point to the same location.
+   */
+  public Object            getIdentifier();
+
+  /**
+   * Returns true if the underlying target has changed
+   * since the last call to openInputStream()
+   */
+  public boolean           hasSourceChanged();
+
+  /**
+   * Returns the cached result from reading and parsing this
+   * provider.
+   * @see CachingNameResolver
+   */
+  public Object            getCachedResult();
+
+  /**
+   * Stores the cached result of reading and parsing this
+   * provider.
+   * @see CachingNameResolver
+   */
+  public void              setCachedResult(Object value);
+}

Added: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/NameResolver.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/NameResolver.java?rev=931223&view=auto
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/NameResolver.java (added)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-api/src/main/java/org/apache/myfaces/trinidad/share/io/NameResolver.java Tue Apr  6 17:00:41 2010
@@ -0,0 +1,58 @@
+/*
+ *  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.trinidad.share.io;
+
+import java.io.IOException;
+
+
+
+/**
+ * NameResolvers are responsible for converting string names
+ * into InputStreamProviders, which encapsulate a remote file.
+ * Implementations exist that support using URLs, Files, Class
+ * resources, and the Servlet API to locate files, but other APIs
+ * may be substituted.
+ * <p>
+ * In some cases, the resolved target file may have need to
+ * locate support files of its own (like imported css files).  Since those support files should
+ * be looked for relative to the target file, NameResolver supports
+ * creating new relative NameResolvers.
+ * @version $Name:  $ ($Revision: adfrt/faces/adf-faces-impl/src/main/java/oracle/adfinternal/view/faces/share/io/NameResolver.java#0 $) $Date: 10-nov-2005.19:00:09 $
+ */
+public interface NameResolver
+{
+  /**
+   * Given a name, returns an InputStreamProvider.  This
+   * function should never return null - if the target
+   * cannot be resolved, throw an IOException.
+   * @param name the name of the target
+   */
+  public InputStreamProvider getProvider(String name) throws IOException;
+
+  /**
+   * Return the new NameResolver that should be used to resolve
+   * names relative to a given name. For example, if a css file has an @import,
+   * you need to look for the imported file relative to the file. This function should never
+   * return null - if the target cannot be resolved, return a
+   * resolver that can only support absolute names.
+   * @param name the name of the target
+   */
+  public NameResolver        getResolver(String name);
+}
+

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/ImageConstants.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/ImageConstants.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/ImageConstants.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/ImageConstants.java Tue Apr  6 17:00:41 2010
@@ -227,7 +227,7 @@ public interface ImageConstants
    * The InputStreamProvider is used to obtain image data for the
    * source images for global buttons and colorizeds.
    *
-   * @see org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider
+   * @see org.apache.myfaces.trinidad.share.io.InputStreamProvider
    */
   public static final Object SOURCE_INPUT_STREAM_PROVIDER_KEY = "inputStreamProvider";
 

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/CompositeButtonKey.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/CompositeButtonKey.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/CompositeButtonKey.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/CompositeButtonKey.java Tue Apr  6 17:00:41 2010
@@ -24,7 +24,7 @@ import java.awt.Color;
 import java.util.Map;
 import org.apache.myfaces.trinidad.util.ArrayMap;
 
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/FileSystemImageCache.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/FileSystemImageCache.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/FileSystemImageCache.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/FileSystemImageCache.java Tue Apr  6 17:00:41 2010
@@ -44,7 +44,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
-
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 import org.apache.myfaces.trinidad.util.ArrayMap;
 
 import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
@@ -62,7 +62,6 @@ import org.apache.myfaces.trinidadintern
 import org.apache.myfaces.trinidadinternal.image.util.MapArea;
 import org.apache.myfaces.trinidadinternal.image.xml.ImageProviderRequestUtils;
 import org.apache.myfaces.trinidadinternal.share.config.Configuration;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
 import org.apache.myfaces.trinidadinternal.share.xml.XMLProvider;
 import org.apache.myfaces.trinidadinternal.share.xml.XMLUtils;
 import org.apache.myfaces.trinidadinternal.style.util.GraphicsUtils;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/SourceCheckingCacheEntry.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/SourceCheckingCacheEntry.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/SourceCheckingCacheEntry.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/cache/SourceCheckingCacheEntry.java Tue Apr  6 17:00:41 2010
@@ -25,12 +25,13 @@ import java.util.Map;
 
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;
 import org.apache.myfaces.trinidadinternal.image.ImageProviderRequest;
 
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
+
 
 /**
  * Cache entry data structure which checks to see if the source

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/laf/browser/SourceUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/laf/browser/SourceUtils.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/laf/browser/SourceUtils.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/image/laf/browser/SourceUtils.java Tue Apr  6 17:00:41 2010
@@ -26,8 +26,7 @@ import java.util.Map;
 
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
-
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingInputStreamProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingInputStreamProvider.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingInputStreamProvider.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingInputStreamProvider.java Tue Apr  6 17:00:41 2010
@@ -20,6 +20,9 @@ package org.apache.myfaces.trinidadinter
 
 import java.util.Iterator;
 
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+
+
 /**
  * A subinterface of InputStreamProvider that adds support
  * for tracking dependencies.

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingNameResolver.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingNameResolver.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingNameResolver.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/CachingNameResolver.java Tue Apr  6 17:00:41 2010
@@ -24,6 +24,10 @@ import java.util.Map;
 import java.util.Hashtable;
 import java.util.Iterator;
 
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
+
+
 /**
  * NameResolver that adds caching support.  Providers
  * that receive cached results (via setCachedResult) will

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/DefaultNameResolver.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/DefaultNameResolver.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/DefaultNameResolver.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/DefaultNameResolver.java Tue Apr  6 17:00:41 2010
@@ -25,6 +25,10 @@ import java.io.IOException;
 import java.net.URL;
 import java.net.MalformedURLException;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
+
+
 
 /**
  * Default implementation of NameResolver.  This class

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/FileInputStreamProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/FileInputStreamProvider.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/FileInputStreamProvider.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/FileInputStreamProvider.java Tue Apr  6 17:00:41 2010
@@ -24,6 +24,8 @@ import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.IOException;
 
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+
 
 /**
  * An InputStreamProvider for loading files.

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/InputStreamProviderProxy.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/InputStreamProviderProxy.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/InputStreamProviderProxy.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/InputStreamProviderProxy.java Tue Apr  6 17:00:41 2010
@@ -20,6 +20,7 @@ package org.apache.myfaces.trinidadinter
 
 import java.io.InputStream;
 import java.io.IOException;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 
 /**
  * Proxying class for InputStreamProviders.  Subclassers

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/io/URLInputStreamProvider.java Tue Apr  6 17:00:41 2010
@@ -25,8 +25,10 @@ import java.io.IOException;
 import java.net.URL;
 import java.net.URLConnection;
 
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 import org.apache.myfaces.trinidad.util.URLUtils;
 
+
 /**
  * An InputStreamProvider for opening URLs.
  * <p>

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/xml/XMLUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/xml/XMLUtils.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/xml/XMLUtils.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/xml/XMLUtils.java Tue Apr  6 17:00:41 2010
@@ -32,14 +32,14 @@ import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.share.config.Configuration;
 import org.apache.myfaces.trinidadinternal.share.config.ConfigurationImpl;
 
 import org.apache.myfaces.trinidadinternal.share.io.CachingInputStreamProvider;
 import org.apache.myfaces.trinidadinternal.share.io.DefaultNameResolver;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.share.expl.JavaMethod;
 

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinStyleSheetParserUtils.java Tue Apr  6 17:00:41 2010
@@ -34,12 +34,13 @@ import java.util.TreeSet;
 import java.util.regex.Pattern;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
+
 import org.apache.myfaces.trinidad.skin.Icon;
 import org.apache.myfaces.trinidad.util.URLUtils;
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SkinProperties;
 import org.apache.myfaces.trinidadinternal.share.expl.Coercions;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.share.xml.ParseContext;
 import org.apache.myfaces.trinidadinternal.share.xml.XMLUtils;
 import org.apache.myfaces.trinidadinternal.skin.icon.ContextImageIcon;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/SkinUtils.java Tue Apr  6 17:00:41 2010
@@ -43,10 +43,11 @@ import javax.el.ValueExpression;
 import org.apache.myfaces.trinidad.skin.SkinFactory;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 
-
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 import org.apache.myfaces.trinidad.skin.Icon;
 import org.apache.myfaces.trinidad.skin.Skin;
 import org.apache.myfaces.trinidad.skin.SkinAddition;
+
 import org.apache.myfaces.trinidadinternal.config.LazyValueExpression;
 import org.apache.myfaces.trinidadinternal.renderkit.core.skin.MinimalDesktopSkinExtension;
 import org.apache.myfaces.trinidadinternal.renderkit.core.skin.MinimalPdaSkinExtension;
@@ -58,7 +59,6 @@ import org.apache.myfaces.trinidadintern
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.share.xml.ClassParserFactory;
 import org.apache.myfaces.trinidadinternal.share.xml.ParseContextImpl;
 import org.apache.myfaces.trinidadinternal.share.xml.ParserFactory;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetEntry.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetEntry.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetEntry.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetEntry.java Tue Apr  6 17:00:41 2010
@@ -18,14 +18,26 @@
  */
 package org.apache.myfaces.trinidadinternal.skin;
 
+import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 
+import java.net.MalformedURLException;
+import java.net.URL;
+
 import java.util.List;
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 
+import org.apache.myfaces.trinidad.util.ClassLoaderUtils;
 import org.apache.myfaces.trinidadinternal.share.io.CachingNameResolver;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
+import org.apache.myfaces.trinidadinternal.share.io.FileInputStreamProvider;
+import org.apache.myfaces.trinidadinternal.share.io.URLInputStreamProvider;
 import org.apache.myfaces.trinidadinternal.share.xml.JaxpXMLProvider;
 import org.apache.myfaces.trinidadinternal.share.xml.ParseContextImpl;
 import org.apache.myfaces.trinidadinternal.share.xml.XMLProvider;
@@ -37,7 +49,10 @@ import org.apache.myfaces.trinidadintern
 
 /**
  * Package-private utility class used by Skin implementation
- * to manage a single XSS or CSS skin stylesheet source file.
+ * to manage a single XSS or CSS skin stylesheet source file .
+ * This class calls the parsing code which parses either the XSS or CSS file (_createSkinStyleSheet),
+ * and it stores a StyleSheetDocument object, which is a parsed representation of a 
+ * Trinidad style sheet document whether that is in the css or xss format or merged.
  * This class could actually
  * be pushed into an inner class in Skin, but at the moment
  * it is separated out simply to reduce the amount of code in
@@ -48,7 +63,7 @@ import org.apache.myfaces.trinidadintern
 class StyleSheetEntry
 {
   /**
-   * Creates a StyleSheetEntry for the specified context/name.
+   * Creates a StyleSheetEntry for the specified context and styleSheetName.
    * This method will log any errors/exceptions and return
    * null if the style sheet source file could not be found/parsed.
    */
@@ -60,7 +75,7 @@ class StyleSheetEntry
     // In order to create the StyleSheetEntry, we need to locate and
     // parse the style sheet file.  We use a NameResolver to use to
     // find the style sheet.
-    NameResolver resolver = _getNameResolver(context);
+    NameResolver resolver = _getNameResolver(context, styleSheetName);
     if (resolver == null)
       return null;
 
@@ -142,6 +157,68 @@ class StyleSheetEntry
   {
     return false;
   }
+  
+  // Gets a File for the specified name, or returns null if no file exists
+  // Try the local styles directory.
+  public static File resolveLocalFile(File localStylesDir, String name)
+  {
+    // Try the local styles directory
+    File file = new File(localStylesDir, name);
+    if (file.exists())
+      return file;
+
+    return null;
+  }
+
+  // Gets an URL for the specified name using ClassLoaderUtils.getResource
+  public static URL resolveClassLoaderURL(String name)
+  {
+    if (name == null)
+      return null;
+    return ClassLoaderUtils.getResource(name);
+
+  }
+
+  // Gets an URL for the non static urls -- that is, urls that could change after the
+  // server has started.
+  public static URL resolveNonStaticURL(String name)
+  {
+    if (name == null)
+      return null;
+    FacesContext fContext = FacesContext.getCurrentInstance();
+    if (fContext != null)
+    {
+      try
+      {
+        if (name.startsWith("http:") ||
+            name.startsWith("https:") ||
+            name.startsWith("file:") ||
+            name.startsWith("ftp:") ||
+            name.startsWith("jar:"))
+        {
+          URL url = new URL(name);
+          if (url != null)
+            return url;
+        }
+        else
+        {
+          String rootName = _getRootName(name);
+          // Return a URL for the application resource mapped to the specified path,
+          // if it exists; otherwise, return null.
+          URL url = fContext.getExternalContext().getResource(rootName);
+          if (url != null)
+            return url;
+        }
+      }
+      catch (MalformedURLException e)
+      {
+        // Eat the MalformedURLException - maybe the name isn't an URL
+        ;
+      }
+    }
+    return null;
+  }  
+  
 
   // Called by CheckModifiedEntry when the style sheet has changed
   void __setDocument(StyleSheetDocument document)
@@ -165,7 +242,7 @@ class StyleSheetEntry
     {
 
       // Parse the style sheet to create the StyleSheetDocument
-      StyleSheetDocument document = _createStyleSheetDocument(resolver,
+      StyleSheetDocument document = _createStyleSheetDocumentFromXSS(resolver,
                                                               styleSheetName);
       if (document == null)
         skinStyleSheet = null;
@@ -190,7 +267,7 @@ class StyleSheetEntry
   }
 
 
-  // Creates the StyleSheetEntry
+  // Creates the StyleSheetEntry from a skinning file that ends in .css
   private static StyleSheetEntry _createSkinStyleSheetFromCSS(
     NameResolver     resolver,
     String           styleSheetName
@@ -218,8 +295,8 @@ class StyleSheetEntry
       return null;
   }
 
-  // Creates the StyleSheetDocument
-  private static StyleSheetDocument _createStyleSheetDocument(
+  // Creates the StyleSheetDocument from a skinning file that ends in .xss, like base-desktop.xss
+  private static StyleSheetDocument _createStyleSheetDocumentFromXSS(
     NameResolver     resolver,
     String           styleSheetName
     )
@@ -229,6 +306,7 @@ class StyleSheetEntry
 
     try
     {
+      // this will parse the xss file adn return a StyleSheetDocument
       return StyleSheetDocumentUtils.createStyleSheetDocument(xmlProvider,
                                                               resolver,
                                                               styleSheetName);
@@ -245,14 +323,36 @@ class StyleSheetEntry
 
 
 
-  // Returns the NameResolver to use for locating style sheet files
+  // Returns the NameResolver to use for locating and loading style sheet file.
+  // Depending upon what the styleSheetName is, we load the file different way: local file,
+  // url, etc.
   private static NameResolver _getNameResolver(
-    StyleContext context
+    StyleContext context,
+    String       styleSheetName
     )
   {
-    // First, get a NameResolver that we can use to resolve
-    // locate the style sheet file.
-    NameResolver resolver = StyleSheetNameResolver.createResolver(context);
+    // get localStylesDirectory
+    File localStylesDir = _getStylesDir(context);
+
+    // Make sure we have some styles directory
+    if ((localStylesDir == null))
+    {
+      _LOG.warning(_STYLES_DIR_ERROR);
+      return null;
+    }
+    NameResolver resolver = null;
+
+    try
+    {
+      resolver =
+          _getNameResolverForStyleSheetFile(context, localStylesDir, styleSheetName);
+    }
+    catch (IOException e)
+    {
+      if (_LOG.isSevere())
+        _LOG.severe("CANNOT_LOAD_STYLESHEET", styleSheetName);
+        _LOG.severe(e);
+    }
     if (resolver == null)
     {
       // If we can't get a NameResolver, something is seriously wrong.
@@ -264,6 +364,80 @@ class StyleSheetEntry
     // can use to check for updates to imported style sheets
     return new CachingNameResolver(resolver, null, true);
   }
+  
+  /**
+   * <p>
+   * This method tries to find the Skin's stylesheet file (e.g., purple-desktop.css). 
+   * It creates a NameResolver object, and it returns the NameResolver object. 
+   * A NameResolver object contains an
+   * InputStreamProvider (this object loads the file) and a sub- NameResolver 
+   * that finds files that are relative to the base file, like an @import file in a .css file.
+   * </p>
+   * <p>
+   * This method tries to find the stylesheet file, first locally, or using an url, or a static url, 
+   * then we create a StyleSheetNameResolver and we pass in the InputStreamProvider we created that
+   * we know can find the file. If we can't find the file any of these ways, then we check 
+   * META-INF/services for a NameResolver service. This is how a third party can customize
+   * how they can find files, by supplying a META-INF/services NameResolver implementation. 
+   * </p>
+   * @param context
+   * @param localStylesDir File the local styles directory
+   * @param filename the stylesheet name
+   * @return NameResolver - either a StyleSheetNameResolver or the META-INF/services NameResolver
+   * implementation. The META-INF/services NameResolver implementation is the way a third party
+   * can customize the way they find and load files.
+   * @throws IOException when the file could not be found in all of the ways we tried to find it.
+   */
+  private static NameResolver _getNameResolverForStyleSheetFile(
+    StyleContext context, 
+    File         localStylesDir,
+    String       filename) throws IOException
+  {
+    InputStreamProvider provider = null;
+    
+    File file = StyleSheetEntry.resolveLocalFile(localStylesDir, filename);
+    if (file != null)
+      provider = new FileInputStreamProvider(file);
+    
+    if (provider == null)
+    {
+      // Gets an URL for the specified name.
+      // Try a few different means to get the file as an url and then create the appropriate
+      // InputStreamProvider from that URL.
+      URL url = resolveNonStaticURL(filename);
+      if (url != null)
+        provider = new URLInputStreamProvider(url);
+      else
+      {
+        // see if it is an URL that can be loaded by the ClassLoader.
+        // We create a StaticURLInputStreamProvider from the url because we consider the
+        // url static because it can't be changed without restarting the server, so we don't
+        // need to check if the source has changed.
+        url = resolveClassLoaderURL(filename);
+        if (url != null)
+          provider = new StaticURLInputStreamProvider(url);
+      }
+    }
+    // If at this point we have found an InputStreamProvider, then we will create a 
+    // StyleSheetNameResolver. Otherwise, we need to check for a custom NameResolver.
+    if (provider != null)
+      return StyleSheetNameResolver.createResolver(context, localStylesDir, provider);
+
+    // If we still can't locate the file at this point, then look for a custom
+    // NameResolver specified as a META-INF\services.
+    NameResolver servicesNameResolver = _loadNameResolverFromServices(filename);
+    if (servicesNameResolver != null)
+    {
+      if (_LOG.isFine())
+      {
+        _LOG.fine("Using the InputStreamProvider from META-INF\\services");
+      }
+      return servicesNameResolver;
+    }
+
+    // If we couldn't locate the file, throw an IOException
+    throw new FileNotFoundException(_getFileNotFoundMessage(localStylesDir, filename));
+  }
 
 
   // Subclass of StyleSheetEntry which recreates the StyleSheetEntry
@@ -298,10 +472,11 @@ class StyleSheetEntry
         __setDocument(null);
 
         // Get a new NameResolver
-        NameResolver resolver = _getNameResolver(context);
+        String name = getStyleSheetName();
+        NameResolver resolver = _getNameResolver(context, name);
         if (resolver != null)
         {
-          String name = getStyleSheetName();
+          
 
           // Recreate the StyleSheetEntry for the styleSheet using the new NameResolver
           // (e.g., if purpleSkin.css
@@ -355,11 +530,153 @@ class StyleSheetEntry
 
     private InputStreamProvider _provider;
   }
+  
 
-  private String              _name;
-  private StyleSheetDocument  _document;
 
+  // Construct error message for the specified file name
+  private static String _getFileNotFoundMessage(File localStylesDir, String name)
+  {
+    StringBuffer buffer = new StringBuffer();
+    buffer.append("Unable to locate style sheet \"");
+    buffer.append(name);
+    buffer.append("\" in ");
+
+    if (localStylesDir != null)
+    {
+      buffer.append("local styles directory (");
+      buffer.append(localStylesDir.getPath());
+      buffer.append("), ");
+    }
+
+    buffer.append("or on the class path.\n");
+    buffer.append("Please be sure that this style sheet is installed.");
+
+    return buffer.toString();
+  }
+
+  // Returns the File corresponding to the styles directory - either
+  // the local directory or the shared directory - depending on the
+  // shared value
+  private static File _getStylesDir(
+    StyleContext context)
+  {
+    String contextPath = context.getGeneratedFilesPath();
+
+    // We only need to look up the shared styles path if the shared
+    // context path is non-null.  If the shared context path is null,
+    // we don't have a shared styles directory (and calling
+    // Configuration.getPath() may throw a DirectoryUnavailableException).
+    if (contextPath == null)
+      return null;
+
+    String stylesPath = contextPath + "/adf/styles";
+
+    // Convert the path to a File
+    File stylesDir = new File(stylesPath);
+
+    // Make sure the directory actually exists
+    if (stylesDir.exists())
+       return stylesDir;
+
+    return null;
+  }
+
+  // Returns a name which can be resolved relative to the
+  // ServletContext root.
+  private static String _getRootName(String name)
+  {
+    // Tack on a starting "/" if the name doesn't already have one -
+    // seems to be required by ServletContext.getRealPath() and
+    // ServletContext.getResource() - at least on OC4J.
+    return (name.startsWith("/")) ? name : ("/" + name);
+  }
+
+  /**
+   * Returns an instance of NameResolver that was set in META-INF\services.
+   * This is used only if the stylesheet cannot be found any other way.
+   * This way third party users can create their own way to find the file e.g., MDS.
+   *
+   * @return a NameResolver instance that has been defined in META-INF\services\
+   * org.apache.myfaces.trinidad.share.io.NameResolver
+  // In this file they will have a line like "org.mycompany.io.MyNameResolverImpl".
+   * null if no NameResolver is found.
+   */
+  static private NameResolver _loadNameResolverFromServices(String name)
+  {
+    // We don't want to check services every time, so instead store it on the applicationMap.
+    FacesContext context = FacesContext.getCurrentInstance();
+    Map<String, Object> appMap = context.getExternalContext().getApplicationMap();
+
+    // Is it stored on the application map already? If so, use it.
+    NameResolver savedResolver = (NameResolver)appMap.get(_SERVICES_RESOLVER_KEY);
+    if (savedResolver != null)
+      return savedResolver;
+
+    List<NameResolver> resolvers = ClassLoaderUtils.getServices(
+                                      _NAME_RESOLVER_CLASS_NAME);
+
+    for (NameResolver customNameResolver : resolvers)
+    {
+      InputStreamProvider provider = null;
+      try
+      {
+        provider = customNameResolver.getProvider(name);
+      }
+      catch (IOException e)
+      {
+        // Log fine message. Try the next factory to get a provider
+        if (_LOG.isFine())
+          _LOG.fine(_SERVICES_RESOLVER_IOEXCEPTION_MSG);       
+      }
+      // Found a provider. So store it away and return it from the method.
+      if (provider != null)
+      {
+        appMap.put(_SERVICES_RESOLVER_KEY, provider);
+        return customNameResolver;
+      }
+    }
+    
+    return null;
+
+  }
+
+  // A subclass of URLInputStreamProvider which never checks for
+  // modifications
+  private static class StaticURLInputStreamProvider
+    extends URLInputStreamProvider
+  {
+    public StaticURLInputStreamProvider(URL url)
+    {
+      super(url);
+    }
+
+    @Override
+    public boolean hasSourceChanged()
+    {
+      return false;
+    }
+  }
+
+  // for META-INF\services\org.apache.myfaces.trinidad.share.io.NameResolver
+  // In this file they will have a line like "org.mycompany.io.MyNameResolverImpl"
+  static private final String _NAME_RESOLVER_CLASS_NAME =
+    NameResolver.class.getName();
+
+  // Error messages
+  private static final String _STYLES_DIR_ERROR =
+    "Could not locate the Trinidad styles directory."
+    + "Please be sure that the Trinidad installable resources are installed.";
+  
+  private static final String _SERVICES_RESOLVER_IOEXCEPTION_MSG =
+    "IOException when calling the META-INF/services NameResolver's getProvider method. " +
+    "Trying next nameResolver.";
+
+  private static final String _SERVICES_RESOLVER_KEY =
+    "org.apache.myfaces.trinidadinternal.skin.SERVICES_RESOLVER_KEY";  
 
   private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(StyleSheetEntry.class);
+  
+  private String              _name;
+  private StyleSheetDocument  _document;
 
 }

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetNameResolver.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetNameResolver.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetNameResolver.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/StyleSheetNameResolver.java Tue Apr  6 17:00:41 2010
@@ -30,11 +30,11 @@ import javax.faces.context.FacesContext;
 import org.apache.myfaces.trinidad.util.ClassLoaderUtils;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.share.io.DefaultNameResolver;
 import org.apache.myfaces.trinidadinternal.share.io.FileInputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.share.io.URLInputStreamProvider;
 
 import org.apache.myfaces.trinidadinternal.style.StyleContext;
@@ -42,29 +42,30 @@ import org.apache.myfaces.trinidadintern
 
 /**
  * Package-private utility class used by StyleSheetEntry to
- * locate style sheet source files.  We look for style sheets
- * in both the local and the shared "styles" directory.
+ * locate style sheet source files. The NameResolver in the StyleSheetNameResolver looks for
+ * the imported stylesheets relative to the base stylesheet.
  *
  * @version $Name:  $ ($Revision: adfrt/faces/adf-faces-impl/src/main/java/oracle/adfinternal/view/faces/skin/StyleSheetNameResolver.java#0 $) $Date: 10-nov-2005.18:59:02 $
  */
 class StyleSheetNameResolver implements NameResolver
 {
   /**
-   * Creates a NameResolver which can locate style sheets
-   * for the specified StyleContext
+   * Creates a NameResolver which can locate style sheets in the local styles directory. 
+   * This method is called from StyleSheetEntry which loads and parses stylesheets (xss or css).
+   * The localStylesDir has already been checked to be valid before this method is called.
+   * @param context StyleContext
+   * @param localStylesDir File
+   * @param provider InputStreamProvider. This object was created in StyleSheetEntry based on
+   * the best way to load the particular stylesheet file. 
+   * It can be an FileInputStreamProvider, an URLInputStreamProvider, etc.
+   * @return
    */
-  public static NameResolver createResolver(StyleContext context)
-  {
-    File localStylesDir = _getStylesDir(context);
-
-    // Make sure we have some styles directory
-    if ((localStylesDir == null))
-    {
-      _LOG.warning(_STYLES_DIR_ERROR);
-      return null;
-    }
-
-    return new StyleSheetNameResolver(localStylesDir);
+  public static NameResolver createResolver(
+    StyleContext        context, 
+    File                localStylesDir,
+    InputStreamProvider provider)
+  {   
+    return new StyleSheetNameResolver(localStylesDir, provider);
   }
 
   /**
@@ -72,219 +73,68 @@ class StyleSheetNameResolver implements 
    * styles directories.  Note that the constructor is private since
    * StyleSheetEntry always calls createResolver().
    * @param localStylesDirectory The location of the local styles directory
+   * @param provider The InputStreamProvider. e.g., FileInputStreamProvider, URLInputStreamProvider,
+   * etc.
    */
   private StyleSheetNameResolver(
-    File localStylesDirectory
+    File                localStylesDirectory,
+    InputStreamProvider provider
     )
   {
     // We should always have some directory
     assert ((localStylesDirectory != null));
+    
+    // We should always have some provider
+    assert ((provider != null));
+
 
     _localStylesDir = localStylesDirectory;
+    _provider = provider;
 
   }
 
   /**
-   * Implementation of NameResolver.getProvider().
-   * Given the name of the file, create an InputStreamProvider. I
+   * Returns the InputStreamProvider for this StyleSheetNameResolver.
+   * @param name the stylesheet name.
+   * @return the InputStreamProvider. The InputStreamProvider knows how to return an InputStream
+   * of the file, it knows if the source has changed, etc.
+   * @throws IOException
+   * @see InputStreamProvider
    */
   public InputStreamProvider getProvider(String name) throws IOException
   {
-    File file = _resolveLocalFile(name);
-    if (file != null)
-      return new FileInputStreamProvider(file);
-      
-    // Gets an URL for the specified name. 
-    // Try a few different means to get the file as an url and then create the appropriate
-    // InputStreamProvider from that URL.
-    URL url = _resolveNonStaticURL(name);
-    if (url != null)
-      return new URLInputStreamProvider(url);
-    else
-    {
-      // see if it is an URL that can be loaded by the ClassLoader. 
-      // We create a StaticURLInputStreamProvider from the url because we consider the
-      // url static because it can't be changed without restarting the server, so we don't
-      // need to check if the source has changed.
-      url = _resolveClassLoaderURL(name);
-      if (url != null)
-        return new StaticURLInputStreamProvider(url);
-    }
-      
-
-
-    // If we couldn't locate the file, throw an IOException
-    throw new FileNotFoundException(_getFileNotFoundMessage(name));
+    return _provider;
   }
 
   /**
-   * Implementation of NameResolver.getResolver()
+   * Implementation of NameResolver.getResolver(). This gets the file that is relative to
+   * the base file.
+   * @param name  String name of the file that is the imported stylesheet.
+   * @return NameResolver. A resolver that knows how to resolve files relative to a base file.
+   * e.g., DefaultNameResolver
    */
   public NameResolver getResolver(String name)
   {
     URL url = null;
-    File file = _resolveLocalFile(name);
+    File file = StyleSheetEntry.resolveLocalFile(_localStylesDir, name);
     if (file == null)
     {
       // Gets an URL for the specified name. 
       // Try a few different means to get the file as an url: 
       // new URL, ExternalContext's getResource, ClassLoaderUtils getResource
-      
-      url = _resolveNonStaticURL(name);
+
+      url = StyleSheetEntry.resolveNonStaticURL(name);
       if (url == null)
-        url =_resolveClassLoaderURL(name);
+        url =StyleSheetEntry.resolveClassLoaderURL(name);
     }
 
-    // Just use a DefaultNameResolver to resolve relative files
     return new DefaultNameResolver(file, url);
   }
 
-  // Gets a File for the specified name, or returns null if no file exists
-  // Try the local styles directory.
-  private File _resolveLocalFile(String name)
-  {
-    // Try the local styles directory
-    File file = new File(_localStylesDir, name);
-    if (file.exists())
-      return file;
-
-    return null;
-  }
-
-  // Gets an URL for the specified name using ClassLoaderUtils.getResource
-  private URL _resolveClassLoaderURL(String name)
-  {
-    if (name == null)
-      return null;
-    return ClassLoaderUtils.getResource(name);
-    
-  }
-  
-  // Gets an URL for the non static urls -- that is, urls that could change after the 
-  // server has started.
-  private URL _resolveNonStaticURL(String name)
-  {
-    if (name == null)
-      return null;
-    FacesContext fContext = FacesContext.getCurrentInstance();
-    if (fContext != null)
-    {
-      try
-      {
-        if (name.startsWith("http:") ||
-            name.startsWith("https:") ||
-            name.startsWith("file:") ||
-            name.startsWith("ftp:") ||
-            name.startsWith("jar:"))
-        {
-          URL url = new URL(name);
-          if (url != null)
-            return url;
-        }
-        else
-        {
-          String rootName = _getRootName(name);
-          // Return a URL for the application resource mapped to the specified path, 
-          // if it exists; otherwise, return null.
-          URL url = fContext.getExternalContext().getResource(rootName);
-          if (url != null)
-            return url;
-        }
-      }
-      catch (MalformedURLException e)
-      {
-        // Eat the MalformedURLException - maybe the name isn't an URL
-        ;
-      }
-    }
-    return null;
-  }
-
-  // Construct error message for the specified file name
-  private String _getFileNotFoundMessage(String name)
-  {
-    StringBuffer buffer = new StringBuffer();
-    buffer.append("Unable to locate style sheet \"");
-    buffer.append(name);
-    buffer.append("\" in ");
-
-    if (_localStylesDir != null)
-    {
-      buffer.append("local styles directory (");
-      buffer.append(_localStylesDir.getPath());
-      buffer.append("), ");
-    }
-
-    buffer.append("or on the class path.\n");
-    buffer.append("Please be sure that this style sheet is installed.");
-
-    return buffer.toString();
-  }
-
-  // Returns the File corresponding to the styles directory - either
-  // the local directory or the shared directory - depending on the
-  // shared value
-  private static File _getStylesDir(
-    StyleContext context)
-  {
-    String contextPath = context.getGeneratedFilesPath();
-
-    // We only need to look up the shared styles path if the shared
-    // context path is non-null.  If the shared context path is null,
-    // we don't have a shared styles directory (and calling
-    // Configuration.getPath() may throw a DirectoryUnavailableException).
-    if (contextPath == null)
-      return null;
-
-    String stylesPath = contextPath + "/adf/styles";
-
-    // Convert the path to a File
-    File stylesDir = new File(stylesPath);
-
-    // Make sure the directory actually exists
-    if (stylesDir.exists())
-       return stylesDir;
-
-    return null;
-  }
-
-  // Returns a name which can be resolved relative to the
-  // ServletContext root.
-  private static String _getRootName(String name)
-  {
-    // Tack on a starting "/" if the name doesn't already have one -
-    // seems to be required by ServletContext.getRealPath() and
-    // ServletContext.getResource() - at least on OC4J.
-    return (name.startsWith("/")) ? name : ("/" + name);
-  }
-
-
-
-  // A subclass of URLInputStreamProvider which never checks for
-  // modifications
-  private static class StaticURLInputStreamProvider
-    extends URLInputStreamProvider
-  {
-    public StaticURLInputStreamProvider(URL url)
-    {
-      super(url);
-    }
-
-    @Override
-    public boolean hasSourceChanged()
-    {
-      return false;
-    }
-  }
-
-
   private File _localStylesDir;
-
-  // Error messages
-  private static final String _STYLES_DIR_ERROR =
-    "Could not locate the Trinidad styles directory."
-    + "Please be sure that the Trinidad installable resources are installed.";
-
+  private InputStreamProvider _provider;
   private static final TrinidadLogger _LOG = TrinidadLogger.createTrinidadLogger(StyleSheetNameResolver.class);
+  private static final String _SERVICES_PROVIDER_KEY =
+    "org.apache.myfaces.trinidadinternal.skin.SERVICES_PROVIDER_KEY";
 }
 

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/cache/FileSystemStyleCache.java Tue Apr  6 17:00:41 2010
@@ -45,6 +45,8 @@ import org.apache.myfaces.trinidad.conte
 import org.apache.myfaces.trinidad.context.LocaleContext;
 import org.apache.myfaces.trinidad.context.RenderingContext;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 import org.apache.myfaces.trinidad.skin.Icon;
 import org.apache.myfaces.trinidad.skin.Skin;
 import org.apache.myfaces.trinidad.style.Selector;
@@ -56,8 +58,6 @@ import org.apache.myfaces.trinidadintern
 import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SkinSelectors;
 import org.apache.myfaces.trinidadinternal.share.io.CachingNameResolver;
 import org.apache.myfaces.trinidadinternal.share.io.DefaultNameResolver;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.share.xml.JaxpXMLProvider;
 import org.apache.myfaces.trinidadinternal.share.xml.XMLProvider;
 import org.apache.myfaces.trinidadinternal.style.CSSStyle;
@@ -451,7 +451,7 @@ public class FileSystemStyleCache implem
                         entryCache,
                         shortStyleClassMap,
                         namespacePrefixes,
-                        checkModified, 
+                        checkModified,
                         isDirty);
   }
 
@@ -492,7 +492,7 @@ public class FileSystemStyleCache implem
       if (!valid)
       {
         _deleteAll(existing);
-        
+
         // atomically remove the key from the cache if it currently points to the entry
         cache.remove(key, entry);
 
@@ -567,7 +567,7 @@ public class FileSystemStyleCache implem
     // Also, cache the new entry in the entry cache
     DerivationKey derivationKey = _getDerivationKey(context, document);
     entryCache.put(derivationKey, entry);
-    
+
     // just in case, clear the dirty flag.
     RenderingContext arc = RenderingContext.getCurrentInstance();
     Skin skin = arc.getSkin();
@@ -614,7 +614,7 @@ public class FileSystemStyleCache implem
     Iterator<StyleSheetNode> e = document.getStyleSheets(context);
 
     StyleSheetNode[] styleSheets;
-    
+
     if (e.hasNext())
     {
       styleSheets = CollectionUtils.toArray(e, StyleSheetNode.class);
@@ -953,7 +953,7 @@ public class FileSystemStyleCache implem
     }
     catch (IOException e)
     {
-      // This might happen if we couldn't delete the css file that was already there, so we 
+      // This might happen if we couldn't delete the css file that was already there, so we
       // are unable to recreate it.
       if (_LOG.isWarning())
         _LOG.warning("IOEXCEPTION_OPENNING_FILE", file);
@@ -1235,7 +1235,7 @@ public class FileSystemStyleCache implem
       if ((o.hashCode() == hashCode()) &&  (o instanceof Key))
       {
         Key key = (Key)o;
-        
+
         // Check the easy stuff first
         if  ((_short == key._short)             &&
              (_portlet == key._portlet)         &&
@@ -1541,8 +1541,8 @@ public class FileSystemStyleCache implem
         if (name != null && value != null)
           styleProperties.put(name, value);
       }
-      
-      // To save memory, we reuse CSSStyle objects if 
+
+      // To save memory, we reuse CSSStyle objects if
       // they have the same list of style property names and values.
       // StyleKey is the key into the StyleKey, CSSStyle map.
       StyleKey key = new StyleKey(styleProperties);
@@ -1552,14 +1552,14 @@ public class FileSystemStyleCache implem
         // no match is cached yet, so create a new CSSStyle and cache in the map.
         Style style = new CSSStyle(styleProperties);
         _styleNodeToStyleMap.put(key, style);
-        return style;         
+        return style;
       }
       else
       {
         return cachedStyle;
       }
     }
-    
+
     /**
      * A StyleKey object is used as a key into a map so that we can share CSSStyle objects
      * if they are equal and they have the same hashCode.
@@ -1570,7 +1570,7 @@ public class FileSystemStyleCache implem
       {
         _styleProperties = styleProperties;
       }
-      
+
       @Override
       public int hashCode()
       {
@@ -1587,19 +1587,19 @@ public class FileSystemStyleCache implem
         }
         return hash;
       }
-      @Override  
+      @Override
       public boolean equals(Object obj)
       {
         if (this == obj)
           return true;
         if (!(obj instanceof StyleKey))
           return false;
-          
+
         // obj at this point must be a StyleKey
         StyleKey test = (StyleKey)obj;
         return test._styleProperties.equals(this._styleProperties);
       }
-      
+
       Map<String, String> _styleProperties;
 
     }

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/StyleSheetDocumentUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/StyleSheetDocumentUtils.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/StyleSheetDocumentUtils.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/StyleSheetDocumentUtils.java Tue Apr  6 17:00:41 2010
@@ -28,9 +28,8 @@ import java.util.List;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
-
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.share.io.DefaultNameResolver;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.share.xml.ClassParserFactory;
 import org.apache.myfaces.trinidadinternal.share.xml.ParseContextImpl;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/parse/StyleSheetDocumentParser.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/parse/StyleSheetDocumentParser.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/parse/StyleSheetDocumentParser.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/style/xml/parse/StyleSheetDocumentParser.java Tue Apr  6 17:00:41 2010
@@ -36,8 +36,8 @@ import org.xml.sax.SAXParseException;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 import org.apache.myfaces.trinidad.util.URLUtils;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
 import org.apache.myfaces.trinidadinternal.share.xml.BaseNodeParser;
 import org.apache.myfaces.trinidadinternal.share.xml.NodeParser;
 import org.apache.myfaces.trinidadinternal.share.xml.ParseContext;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/Icon.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/Icon.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/Icon.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/Icon.java Tue Apr  6 17:00:41 2010
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.trinidadinternal.ui.laf.base;
 
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.style.CoreStyle;
 import org.apache.myfaces.trinidadinternal.ui.laf.LookAndFeel;

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentIconRequest.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentIconRequest.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentIconRequest.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentIconRequest.java Tue Apr  6 17:00:41 2010
@@ -22,12 +22,13 @@ import java.awt.Color;
 
 import java.util.Map;
 
+import org.apache.myfaces.trinidad.share.io.NameResolver;
+
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;
 
 import org.apache.myfaces.trinidadinternal.image.cache.AccentColorizedIconKey;
 
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.ui.laf.LookAndFeel;
 
 /**

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentedLafIconProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentedLafIconProvider.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentedLafIconProvider.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/AccentedLafIconProvider.java Tue Apr  6 17:00:41 2010
@@ -25,6 +25,8 @@ import java.awt.Color;
 import org.apache.myfaces.trinidadinternal.util.nls.LocaleUtils;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
+
 
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;
@@ -40,8 +42,6 @@ import org.apache.myfaces.trinidadintern
 import org.apache.myfaces.trinidadinternal.ui.laf.base.IconKey;
 import org.apache.myfaces.trinidadinternal.ui.laf.base.Icon;
 
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
-
 /**
  * Abstracts out the retrieval of ImageProviderResponses for
  * dual ramp colorization.

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/CoreIconRequest.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/CoreIconRequest.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/CoreIconRequest.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/CoreIconRequest.java Tue Apr  6 17:00:41 2010
@@ -25,14 +25,14 @@ import java.io.IOException;
 import java.util.Map;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;
 
 import org.apache.myfaces.trinidadinternal.image.cache.CoreColorizedIconKey;
 
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.ui.laf.LookAndFeel;
 
 

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/FlippedIconRequest.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/FlippedIconRequest.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/FlippedIconRequest.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/FlippedIconRequest.java Tue Apr  6 17:00:41 2010
@@ -29,14 +29,14 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletRequest;
 
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.image.ImageConstants;
 import org.apache.myfaces.trinidadinternal.image.ImageContext;
 import org.apache.myfaces.trinidadinternal.image.cache.FlippedIconKey;
 
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
 import org.apache.myfaces.trinidadinternal.share.io.ServletNameResolver;
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 
 import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
 

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/IconArrayLafIconProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/IconArrayLafIconProvider.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/IconArrayLafIconProvider.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/xhtml/IconArrayLafIconProvider.java Tue Apr  6 17:00:41 2010
@@ -20,6 +20,7 @@ package org.apache.myfaces.trinidadinter
 
 import java.awt.Color;
 
+import org.apache.myfaces.trinidad.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.ui.laf.LookAndFeel;
 import org.apache.myfaces.trinidadinternal.ui.laf.base.Icon;
 import org.apache.myfaces.trinidadinternal.ui.laf.base.IconKey;
@@ -27,7 +28,6 @@ import org.apache.myfaces.trinidadintern
 import org.apache.myfaces.trinidadinternal.image.ImageContext;
 import org.apache.myfaces.trinidadinternal.image.ImageProviderRequest;
 
-import org.apache.myfaces.trinidadinternal.share.io.NameResolver;
 import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
 
 /**

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/IconInputStreamProvider.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/IconInputStreamProvider.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/IconInputStreamProvider.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/IconInputStreamProvider.java Tue Apr  6 17:00:41 2010
@@ -24,7 +24,7 @@ import java.io.IOException;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.trinidad.context.RenderingContext;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 import org.apache.myfaces.trinidad.skin.Icon;
 
 /**

Modified: myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/SimpleButtonUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/SimpleButtonUtils.java?rev=931223&r1=931222&r2=931223&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/SimpleButtonUtils.java (original)
+++ myfaces/trinidad/branches/1.2.12.3-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/simple/desktop/SimpleButtonUtils.java Tue Apr  6 17:00:41 2010
@@ -24,7 +24,7 @@ import javax.faces.context.FacesContext;
 import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 
 import org.apache.myfaces.trinidad.context.RenderingContext;
-import org.apache.myfaces.trinidadinternal.share.io.InputStreamProvider;
+import org.apache.myfaces.trinidad.share.io.InputStreamProvider;
 
 import org.apache.myfaces.trinidad.context.LocaleContext;
 import org.apache.myfaces.trinidadinternal.style.util.FontProxy;