google-code-export / wro4j

Automatically exported from code.google.com/p/wro4j
1 stars 1 forks source link

cssImport tries to import absolute URLs (http://...) #855

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
I have a file (/lib/css/style.css) that the following import:
@import url(http://fonts.googleapis.com/css?family=Open+Sans:300);

When running wro4j-maven-plugin, it gives the following error:
1428 ERROR PreProcessorExecutor - Cannot ignore missing resource:  
ro.isdc.wro.model.resource.Resource@825cf3[CSS,/lib/css/http://fonts.googleapis.
com/css?family=Open+Sans:300,true]
1429 ERROR ExceptionHandlingProcessorDecorator - Failed to process the 
resource: 
ro.isdc.wro.model.resource.Resource@8d41f2[CSS,/lib/css/style.css,false] using 
processor: 
ro.isdc.wro.model.resource.processor.impl.css.CssImportPreProcessor@e3404f. 
Reason: No valid resource 
'/lib/css/http://fonts.googleapis.com/css?family=Open+Sans:300' found inside 
any of contextFolders: [c:\Users\CSDVIRG\git\spcs/src/main/webapp/]
[ERROR] Exception occured while processing: ro.isdc.wro.WroRuntimeException: 
The processor: 
ro.isdc.wro.model.resource.processor.impl.css.CssImportPreProcessor@e3404f 
failed, class: ro.isdc.wro.WroRuntimeException,caused by: java.io.IOException
ro.isdc.wro.WroRuntimeException: The processor: 
ro.isdc.wro.model.resource.processor.impl.css.CssImportPreProcessor@e3404f 
failed
        at ro.isdc.wro.WroRuntimeException.wrap(WroRuntimeException.java:69)
        at ro.isdc.wro.model.resource.processor.decorator.ExceptionHandlingProcessorDecorator.process(ExceptionHandlingProcessorDecorator.java:67)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
        at ro.isdc.wro.model.resource.processor.decorator.BenchmarkProcessorDecorator.process(BenchmarkProcessorDecorator.java:44)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
        at ro.isdc.wro.model.resource.processor.decorator.DefaultProcessorDecorator.process(DefaultProcessorDecorator.java:42)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor$2.process(PreProcessorExecutor.java:227)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor.applyPreProcessors(PreProcessorExecutor.java:207)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor.processAndMerge(PreProcessorExecutor.java:103)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor.processAndMerge(PreProcessorExecutor.java:77)
        at ro.isdc.wro.model.group.processor.GroupsProcessor.process(GroupsProcessor.java:83)
        at ro.isdc.wro.cache.support.DefaultSynchronizedCacheStrategyDecorator.loadValue(DefaultSynchronizedCacheStrategyDecorator.java:102)
        at ro.isdc.wro.cache.support.DefaultSynchronizedCacheStrategyDecorator.loadValue(DefaultSynchronizedCacheStrategyDecorator.java:35)
        at ro.isdc.wro.cache.support.AbstractSynchronizedCacheStrategyDecorator.get(AbstractSynchronizedCacheStrategyDecorator.java:55)
        at ro.isdc.wro.manager.ResourceBundleProcessor.serveProcessedBundle(ResourceBundleProcessor.java:63)
        at ro.isdc.wro.manager.WroManager.process(WroManager.java:160)
        at ro.isdc.wro.maven.plugin.Wro4jMojo.processGroup(Wro4jMojo.java:266)
        at ro.isdc.wro.maven.plugin.Wro4jMojo.doExecute(Wro4jMojo.java:148)
        at ro.isdc.wro.maven.plugin.AbstractWro4jMojo.execute(AbstractWro4jMojo.java:167)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.io.IOException: No valid resource 
'/lib/css/http://fonts.googleapis.com/css?family=Open+Sans:300' found inside 
any of contextFolders: [c:\Users\CSDVIRG\git\spcs/src/main/webapp/]
        at ro.isdc.wro.model.resource.locator.StandaloneServletContextUriLocator.locate(StandaloneServletContextUriLocator.java:57)
        at ro.isdc.wro.model.resource.locator.factory.AbstractUriLocatorFactory.locate(AbstractUriLocatorFactory.java:40)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor.getResourceContent(PreProcessorExecutor.java:248)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor.applyPreProcessors(PreProcessorExecutor.java:189)
        at ro.isdc.wro.model.group.processor.PreProcessorExecutor.processAndMerge(PreProcessorExecutor.java:103)
        at ro.isdc.wro.model.resource.processor.impl.css.CssImportPreProcessor.doTransform(CssImportPreProcessor.java:51)
        at ro.isdc.wro.model.resource.processor.impl.css.AbstractCssImportPreProcessor.parseCss(AbstractCssImportPreProcessor.java:129)
        at ro.isdc.wro.model.resource.processor.impl.css.AbstractCssImportPreProcessor.process(AbstractCssImportPreProcessor.java:97)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
        at ro.isdc.wro.model.resource.processor.decorator.SupportAwareProcessorDecorator.process(SupportAwareProcessorDecorator.java:39)
        at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
        at ro.isdc.wro.model.resource.processor.decorator.ExceptionHandlingProcessorDecorator.process(ExceptionHandlingProcessorDecorator.java:56)
        ... 38 more
Caused by: java.io.IOException: Invalid folder provided, with path: 
c:\Users\CSDVIRG\git\spcs\src\main\webapp\lib\css\http:\fonts.googleapis.com, 
with fileNameWithWildcard: 
/lib/css/http://fonts.googleapis.com/css?family=Open+Sans:300
        at ro.isdc.wro.model.resource.locator.wildcard.DefaultWildcardStreamLocator.validate(DefaultWildcardStreamLocator.java:168)
        at ro.isdc.wro.model.resource.locator.wildcard.DefaultWildcardStreamLocator.findMatchedFiles(DefaultWildcardStreamLocator.java:138)
        at ro.isdc.wro.model.resource.locator.wildcard.DefaultWildcardStreamLocator.locateStream(DefaultWildcardStreamLocator.java:94)
        at ro.isdc.wro.model.resource.locator.StandaloneServletContextUriLocator.locateStreamWithContextFolder(StandaloneServletContextUriLocator.java:68)
        at ro.isdc.wro.model.resource.locator.StandaloneServletContextUriLocator.locate(StandaloneServletContextUriLocator.java:49)
        ... 51 more

What is the expected output? What do you see instead?
I expect it to leave imports with absolute URLs intact and not try to import 
them.

What version of the product are you using? On what operating system?
wro4j-maven-plugin:1.7.3
Windows 7

Please provide any additional information below.

Original issue reported on code.google.com by img...@gmail.com on 3 Mar 2014 at 6:43

GoogleCodeExporter commented 9 years ago

Original comment by alex.obj...@gmail.com on 3 Mar 2014 at 7:54

GoogleCodeExporter commented 9 years ago
Fixed in branch 1.7.x.

The only drawback of the current implementation is that if the imported url 
cannot retrieve the content on the server-side, it will fail (if the 
ignoreMissingResources=false) or will remove the import (as if it wouldn't 
exist) if the (ignoreMissingResources=true).

Original comment by alex.obj...@gmail.com on 10 Mar 2014 at 4:00