Skip to content

Commit

Permalink
fix issue524 for configuration of hashStrategy and NamingStrategy. Al…
Browse files Browse the repository at this point in the history
…so fix issue518 by generating the missing directories for generated resources by maven plugin
  • Loading branch information
alexo committed Aug 15, 2012
1 parent cf84c06 commit 451a441
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 18 deletions.
Expand Up @@ -147,7 +147,6 @@ protected Properties newProperties() {
final Properties props = new Properties();
updatePropertiesWithConfiguration(props, ConfigurableHashStrategy.KEY);
return props;

}
};
}
Expand Down
Expand Up @@ -4,7 +4,10 @@
import java.io.InputStream;
import java.util.Map;

import ro.isdc.wro.model.group.Inject;
import ro.isdc.wro.model.group.processor.Injector;
import ro.isdc.wro.model.resource.support.AbstractConfigurableSingleStrategy;
import ro.isdc.wro.model.resource.support.naming.NamingStrategy;


/**
Expand All @@ -21,13 +24,17 @@ public class ConfigurableHashStrategy
* Property name to specify alias.
*/
public static final String KEY = "hashStrategy";
@Inject
private Injector injector;

/**
* {@inheritDoc}
*/
public String getHash(final InputStream inputStream)
throws IOException {
return getConfiguredStrategy().getHash(inputStream);
final HashStrategy hashStrategy = getConfiguredStrategy();
injector.inject(hashStrategy);
return hashStrategy.getHash(inputStream);
}

/**
Expand Down
Expand Up @@ -4,6 +4,8 @@
import java.io.InputStream;
import java.util.Map;

import ro.isdc.wro.model.group.Inject;
import ro.isdc.wro.model.group.processor.Injector;
import ro.isdc.wro.model.resource.support.AbstractConfigurableSingleStrategy;


Expand All @@ -21,13 +23,16 @@ public class ConfigurableNamingStrategy
* Property name to specify namingStrategy alias.
*/
public static final String KEY = "namingStrategy";

@Inject
private Injector injector;
/**
* {@inheritDoc}
*/
public String rename(String originalName, InputStream inputStream)
throws IOException {
return getConfiguredStrategy().rename(originalName, inputStream);
final NamingStrategy namingStrategy = getConfiguredStrategy();
injector.inject(namingStrategy);
return namingStrategy.rename(originalName, inputStream);
}

/**
Expand Down
Expand Up @@ -12,6 +12,8 @@
import org.mockito.MockitoAnnotations;

import ro.isdc.wro.WroRuntimeException;
import ro.isdc.wro.config.Context;
import ro.isdc.wro.util.WroTestUtils;

/**
* @author Alex Objelean
Expand All @@ -27,6 +29,8 @@ public class TestConfigurableHashStrategy {
public void setUp() {
MockitoAnnotations.initMocks(this);
victim = new ConfigurableHashStrategy();
Context.set(Context.standaloneContext());
WroTestUtils.createInjector().inject(victim);
}

@Test(expected = NullPointerException.class)
Expand Down
Expand Up @@ -11,6 +11,8 @@
import org.mockito.MockitoAnnotations;

import ro.isdc.wro.WroRuntimeException;
import ro.isdc.wro.config.Context;
import ro.isdc.wro.util.WroTestUtils;


/**
Expand All @@ -25,6 +27,8 @@ public class TestConfigurableNamingStrategy {
public void setUp() {
MockitoAnnotations.initMocks(this);
victim = new ConfigurableNamingStrategy();
Context.set(Context.standaloneContext());
WroTestUtils.createInjector().inject(victim);
}

@Test(expected = NullPointerException.class)
Expand Down
Expand Up @@ -213,6 +213,11 @@ private void processGroup(final String group, final File parentFoder)
// encode version & write result to file
resultInputStream = new UnclosableBufferedInputStream(resultOutputStream.toByteArray());
final File destinationFile = new File(parentFoder, rename(group, resultInputStream));
final File parentFolder = destinationFile.getParentFile();
if (!parentFolder.exists()) {
//make directories if required
parentFolder.mkdirs();
}
destinationFile.createNewFile();
// allow the same stream to be read again
resultInputStream.reset();
Expand Down
@@ -1,12 +1,12 @@
/*
* Copyright (C) 2011.
* All rights reserved.
* Copyright (C) 2011. All rights reserved.
*/
package ro.isdc.wro.maven.plugin.manager.factory;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;

import ro.isdc.wro.WroRuntimeException;
Expand All @@ -15,18 +15,29 @@
import ro.isdc.wro.manager.factory.standalone.StandaloneContext;
import ro.isdc.wro.maven.plugin.support.ExtraConfigFileAware;
import ro.isdc.wro.model.factory.WroModelFactory;
import ro.isdc.wro.model.resource.locator.UriLocator;
import ro.isdc.wro.model.resource.locator.factory.ConfigurableLocatorFactory;
import ro.isdc.wro.model.resource.locator.factory.UriLocatorFactory;
import ro.isdc.wro.model.resource.locator.support.LocatorProvider;
import ro.isdc.wro.model.resource.support.hash.ConfigurableHashStrategy;
import ro.isdc.wro.model.resource.support.hash.HashStrategy;
import ro.isdc.wro.model.resource.support.naming.ConfigurableNamingStrategy;
import ro.isdc.wro.model.resource.support.naming.NamingStrategy;


/**
* Default implementaiton which use a property file to read the pre & post processors to be used during processing.
*
*
* @author Alex Objelean
* @created 2 Aug 2011
* @since 1.4.0
*/
public class ConfigurableWroManagerFactory
extends ConfigurableStandaloneContextAwareManagerFactory implements ExtraConfigFileAware {
extends ConfigurableStandaloneContextAwareManagerFactory
implements ExtraConfigFileAware {
private StandaloneContext standaloneContext;
private File configProperties;

/**
* {@inheritDoc}
*/
Expand All @@ -35,14 +46,41 @@ public void initialize(final StandaloneContext standaloneContext) {
super.initialize(standaloneContext);
this.standaloneContext = standaloneContext;
}

/**
* {@inheritDoc}
*/
@Override
protected WroModelFactory newModelFactory() {
return SmartWroModelFactory.createFromStandaloneContext(standaloneContext);
}

/**
* {@inheritDoc}
*/
@Override
protected NamingStrategy newNamingStrategy() {
return new ConfigurableNamingStrategy() {
@Override
protected Properties newProperties() {
return createProperties();
}
};
}

/**
* {@inheritDoc}
*/
@Override
protected HashStrategy newHashStrategy() {
return new ConfigurableHashStrategy() {
@Override
protected Properties newProperties() {
return createProperties();
}
};
}

/**
* {@inheritDoc}
*/
Expand All @@ -53,11 +91,11 @@ protected Properties createProperties() {
properties.load(new FileInputStream(configProperties));
return properties;
} catch (final IOException e) {
throw new WroRuntimeException(
"Exception while loading properties file from " + configProperties.getAbsolutePath(), e);
throw new WroRuntimeException("Exception while loading properties file from "
+ configProperties.getAbsolutePath(), e);
}
}

/**
* {@inheritDoc}
*/
Expand Down
Expand Up @@ -5,8 +5,11 @@

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
import java.io.Writer;
import java.net.URISyntaxException;
Expand Down Expand Up @@ -34,6 +37,8 @@
import ro.isdc.wro.model.resource.processor.factory.ProcessorsFactory;
import ro.isdc.wro.model.resource.processor.factory.SimpleProcessorsFactory;
import ro.isdc.wro.model.resource.processor.impl.css.CssUrlRewritingProcessor;
import ro.isdc.wro.model.resource.support.naming.ConfigurableNamingStrategy;
import ro.isdc.wro.model.resource.support.naming.FolderHashEncoderNamingStrategy;
import ro.isdc.wro.model.resource.support.naming.NamingStrategy;


Expand Down Expand Up @@ -314,16 +319,26 @@ public void shouldGenerateGroupMappingUsingCustomNamingStrategy()
FileUtils.deleteQuietly(groupNameMappingFile);
}

@After
public void tearDown()
@Test
public void shouldUseConfiguredNamingStrategy()
throws Exception {
FileUtils.deleteDirectory(destinationFolder);
FileUtils.deleteDirectory(cssDestinationFolder);
FileUtils.deleteDirectory(jsDestinationFolder);
setWroWithValidResources();

final File extraConfigFile = new File(FileUtils.getTempDirectory(), "groupMapping-" + new Date().getTime());

Properties props = new Properties();
//TODO create a properties builder
props.setProperty(ConfigurableNamingStrategy.KEY, FolderHashEncoderNamingStrategy.ALIAS);
props.list(new PrintStream(extraConfigFile));

mojo.setWroManagerFactory(ConfigurableWroManagerFactory.class.getName());
mojo.setExtraConfigFile(extraConfigFile);
mojo.setIgnoreMissingResources(true);
mojo.execute();

FileUtils.deleteQuietly(extraConfigFile);
}


public static final class ExceptionThrowingWroManagerFactory extends DefaultStandaloneContextAwareManagerFactory {
@Override
protected ProcessorsFactory newProcessorsFactory() {
Expand Down Expand Up @@ -366,4 +381,14 @@ protected ProcessorsFactory newProcessorsFactory() {
return factory;
}
}


@After
public void tearDown()
throws Exception {
FileUtils.deleteDirectory(destinationFolder);
FileUtils.deleteDirectory(cssDestinationFolder);
FileUtils.deleteDirectory(jsDestinationFolder);
FileUtils.deleteQuietly(extraConfigFile);
}
}

0 comments on commit 451a441

Please sign in to comment.