Skip to content

Commit

Permalink
[SHRINKRES-52] Remove "CombinedFilter", instead use arrays to represe…
Browse files Browse the repository at this point in the history
…nt Filter chains. "CombinedStrategy" is still useful, however.
  • Loading branch information
ALRubinger committed Sep 18, 2012
1 parent c529d95 commit 9776b80
Show file tree
Hide file tree
Showing 15 changed files with 164 additions and 171 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@
package org.jboss.shrinkwrap.resolver.api.maven.strategy;

import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
import org.jboss.shrinkwrap.resolver.api.maven.filter.AcceptAllFilter;
import org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter;

/**
* {@link MavenResolutionStrategy} implementation where all {@link MavenDependency}s are accepted.
* {@link MavenResolutionStrategy} implementation where all {@link MavenDependency}s are accepted
*
* @author <a href="mailto:kpiwko@redhat.com">Karel Piwko</a>
* @author <a href="mailto:alr@jboss.org">Andrew Lee Rubinger</a>
Expand All @@ -32,20 +31,20 @@ public enum AcceptAllStrategy implements MavenResolutionStrategy {
/**
* Returns a {@link MavenResolutionFilter} chain allowing all {@link MavenDependency}s to pass-through.
*
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getPreResolutionFilter()
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getPreResolutionFilters()
*/
@Override
public MavenResolutionFilter getPreResolutionFilter() {
return AcceptAllFilter.INSTANCE;
public MavenResolutionFilter[] getPreResolutionFilters() {
return MavenResolutionFilterUtil.getEmptyChain();
}

/**
* Returns a {@link MavenResolutionFilter} chain allowing all {@link MavenDependency}s to pass-through.
*
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getResolutionFilter()
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getResolutionFilters()
*/
@Override
public MavenResolutionFilter getResolutionFilter() {
return AcceptAllFilter.INSTANCE;
public MavenResolutionFilter[] getResolutionFilters() {
return MavenResolutionFilterUtil.getEmptyChain();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,11 @@
package org.jboss.shrinkwrap.resolver.api.maven.strategy;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import org.jboss.shrinkwrap.resolver.api.maven.ScopeType;
import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
import org.jboss.shrinkwrap.resolver.api.maven.filter.AcceptAllFilter;
import org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter;
import org.jboss.shrinkwrap.resolver.api.maven.filter.ScopeFilter;

Expand All @@ -36,11 +34,11 @@
*/
public final class AcceptScopesStrategy implements MavenResolutionStrategy {

private final Set<ScopeType> allowedScopes;
private final MavenResolutionFilter[] resolutionFilters;

/**
* Creates a new instance allowing only the specified {@link ScopeType}s to pass through the
* {@link AcceptScopesStrategy#getResolutionFilter()}
* {@link AcceptScopesStrategy#getResolutionFilters()}
*
* @param scopes
*
Expand All @@ -54,17 +52,17 @@ public AcceptScopesStrategy(final ScopeType... scopes) throws IllegalArgumentExc
}
final Set<ScopeType> allowedScopes = new HashSet<ScopeType>(scopes.length);
allowedScopes.addAll(Arrays.asList(scopes));
this.allowedScopes = Collections.unmodifiableSet(allowedScopes);
this.resolutionFilters = new MavenResolutionFilter[] { new ScopeFilter(allowedScopes.toArray(new ScopeType[] {})) };
}

/**
* Returns a {@link MavenResolutionFilter} chain allowing all {@link MavenDependency}s to pass-through.
*
* @see org.jboss.shrinkwrap.r .api.maven.strategy.MavenResolutionStrategy#getPreResolutionFilter()
* @see org.jboss.shrinkwrap.r .api.maven.strategy.MavenResolutionStrategy#getPreResolutionFilters()
*/
@Override
public MavenResolutionFilter getPreResolutionFilter() {
return AcceptAllFilter.INSTANCE;
public MavenResolutionFilter[] getPreResolutionFilters() {
return MavenResolutionFilterUtil.getEmptyChain();
}

/**
Expand All @@ -74,7 +72,7 @@ public MavenResolutionFilter getPreResolutionFilter() {
* @see org.jboss.shrinkwrap.re api.maven.strategy.MavenResolutionStrategy#getResolutionFilter()
*/
@Override
public MavenResolutionFilter getResolutionFilter() {
return new ScopeFilter(allowedScopes.toArray(new ScopeType[0]));
public MavenResolutionFilter[] getResolutionFilters() {
return resolutionFilters;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,54 +17,58 @@
package org.jboss.shrinkwrap.resolver.api.maven.strategy;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
import org.jboss.shrinkwrap.resolver.api.maven.filter.CombinedFilter;
import org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter;

/**
* {@link MavenResolutionStrategy} implementation where only {@link MavenDependency}s passing a series of other
* {@link MavenResolutionStrategy}s are accepted
*
* @author <a href="mailto:kpiwko@redhat.com">Karel Piwko</a>
* @author <a href="mailto:alr@jboss.org">Andrew Lee Rubinger</a>
*/
@Deprecated
// SHRINKRES-52
public class CombinedStrategy implements MavenResolutionStrategy {

private final Set<MavenResolutionStrategy> strategies;
private static final MavenResolutionFilter[][] EMPTY_CHAIN_ARRAY = new MavenResolutionFilter[][] {};
private static final MavenResolutionFilter[] EMPTY_FILTER_ARRAY = new MavenResolutionFilter[] {};

private final MavenResolutionFilter[] EMPTY_ARRAY = new MavenResolutionFilter[] {};
private final MavenResolutionFilter[] preResolutionFilters;
private final MavenResolutionFilter[] resolutionFilters;

public CombinedStrategy(MavenResolutionStrategy... strategies) {
public CombinedStrategy(final MavenResolutionStrategy... strategies) {
if (strategies.length == 0) {
throw new IllegalArgumentException("There must be at least one strategy for a combined strategy.");
}
this.strategies = new HashSet<MavenResolutionStrategy>(Arrays.asList(strategies));
final List<MavenResolutionFilter[]> preResolutionFilterChains = new ArrayList<MavenResolutionFilter[]>();
final List<MavenResolutionFilter[]> resolutionFilterChains = new ArrayList<MavenResolutionFilter[]>();
for (final MavenResolutionStrategy strategy : strategies) {
preResolutionFilterChains.add(strategy.getPreResolutionFilters());
resolutionFilterChains.add(strategy.getResolutionFilters());
}
preResolutionFilters = this.combine(preResolutionFilterChains.toArray(EMPTY_CHAIN_ARRAY));
resolutionFilters = this.combine(resolutionFilterChains.toArray(EMPTY_CHAIN_ARRAY));
}

@Override
public MavenResolutionFilter getPreResolutionFilter() {
final List<MavenResolutionFilter> filters = new ArrayList<MavenResolutionFilter>(strategies.size());
for (MavenResolutionStrategy s : strategies) {
filters.add(s.getPreResolutionFilter());
}

return new CombinedFilter(filters.toArray(EMPTY_ARRAY));
public MavenResolutionFilter[] getPreResolutionFilters() {
return preResolutionFilters;
}

@Override
public MavenResolutionFilter getResolutionFilter() {
final List<MavenResolutionFilter> filters = new ArrayList<MavenResolutionFilter>(strategies.size());
for (MavenResolutionStrategy s : strategies) {
filters.add(s.getResolutionFilter());
}
public MavenResolutionFilter[] getResolutionFilters() {
return resolutionFilters;
}

return new CombinedFilter(filters.toArray(EMPTY_ARRAY));
private MavenResolutionFilter[] combine(final MavenResolutionFilter[]... inputFilterChains) {
final List<MavenResolutionFilter> combinedFilters = new ArrayList<MavenResolutionFilter>();
for (final MavenResolutionFilter[] filterChain : inputFilterChains) {
for (int i = 0; i < filterChain.length; i++) {
combinedFilters.add(filterChain[i]);
}
}
return combinedFilters.toArray(EMPTY_FILTER_ARRAY);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2012, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Licensed 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.jboss.shrinkwrap.resolver.api.maven.strategy;

import org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter;

/**
* Encapsulation of operations needed by the {@link MavenResolutionStrategy} implementations
*
* @author <a href="mailto:alr@jboss.org">Andrew Lee Rubinger</a>
*/
class MavenResolutionFilterUtil {
private static final MavenResolutionFilter[] EMPTY_CHAIN = new MavenResolutionFilter[] {};

private MavenResolutionFilterUtil() {
throw new UnsupportedOperationException("No instances");
}

/**
* Returns an empty {@link MavenResolutionFilter} chain
*
* @return
*/
static MavenResolutionFilter[] getEmptyChain() {
return EMPTY_CHAIN;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,23 @@ public interface MavenResolutionStrategy extends
ResolutionStrategy<MavenDependency, MavenResolutionFilter, MavenResolutionStrategy> {
/**
* Obtains the {@link MavenResolutionFilter} chain to be used in filtering a {@link MavenDependency} {@link List}
* before the request is executed.
* before the request is executed. If any filters in the chain return <code>false</code> when
* {@link MavenResolutionFilter#accepts(MavenDependency, List)} is invoked, <code>false</code> must be the result of
* the chain's invocation. In other words, the chain acts as a logical <code>AND</code> for all
* {@link MavenResolutionFilter}s.
*
* @return
*/
MavenResolutionFilter getPreResolutionFilter();
MavenResolutionFilter[] getPreResolutionFilters();

/**
* Obtains the {@link MavenResolutionFilter} chain to be used in filtering a {@link MavenDependency} {@link List}
* during request processing (filtering is done by the backend).
* during request processing (filtering is done by the backend). If any filters in the chain return
* <code>false</code> when {@link MavenResolutionFilter#accepts(MavenDependency, List)} is invoked,
* <code>false</code> must be the result of the chain's invocation. In other words, the chain acts as a logical
* <code>AND</code> for all {@link MavenResolutionFilter}s.
*
* @return
*/
MavenResolutionFilter getResolutionFilter();
MavenResolutionFilter[] getResolutionFilters();
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package org.jboss.shrinkwrap.resolver.api.maven.strategy;

import org.jboss.shrinkwrap.resolver.api.maven.coordinate.MavenDependency;
import org.jboss.shrinkwrap.resolver.api.maven.filter.AcceptAllFilter;
import org.jboss.shrinkwrap.resolver.api.maven.filter.MavenResolutionFilter;
import org.jboss.shrinkwrap.resolver.api.maven.filter.NonTransitiveFilter;

Expand All @@ -29,24 +28,31 @@
*/
public enum NonTransitiveStrategy implements MavenResolutionStrategy {
INSTANCE;

private final MavenResolutionFilter[] resolutionFilters;

NonTransitiveStrategy() {
resolutionFilters = new MavenResolutionFilter[] { NonTransitiveFilter.INSTANCE };
}

/**
* Returns a {@link MavenResolutionFilter} chain allowing all {@link MavenDependency}s to pass-through.
*
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getPreResolutionFilter()
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getPreResolutionFilters()
*/
@Override
public MavenResolutionFilter getPreResolutionFilter() {
return AcceptAllFilter.INSTANCE;
public MavenResolutionFilter[] getPreResolutionFilters() {
return MavenResolutionFilterUtil.getEmptyChain();
}

/**
* Returns a {@link MavenResolutionFilter} chain allowing only explicitly-defined {@link MavenDependency}s to
* pass-through; dependencies brought in transitively will be excluded.
*
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getResolutionFilter()
* @see org.jboss.shrinkwrap.resolver.api.maven.strategy.MavenResolutionStrategy#getResolutionFilters()
*/
@Override
public MavenResolutionFilter getResolutionFilter() {
return NonTransitiveFilter.INSTANCE;
public MavenResolutionFilter[] getResolutionFilters() {
return resolutionFilters;
}
}
Loading

0 comments on commit 9776b80

Please sign in to comment.