Skip to content

Commit

Permalink
[RESTEASY-2231] Restore addContextResolver() methods previously (#2025)
Browse files Browse the repository at this point in the history
removed from ResteasyProviderFactory.

[RESTEASY-2231] Checkstyle fix.
  • Loading branch information
ronsigal committed May 8, 2019
1 parent 91e08d2 commit 0b0c275
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1503,6 +1503,42 @@ protected void addContextResolver(ContextResolver provider, int priority, Type t
}
}

////////////////////////////////////////////////////////////////////////////
// Restoring five addContextResolver() methods previously replaced by versions with priority parameter.
// See RESTEASY-2231
protected void addContextResolver(Class<? extends ContextResolver> resolver, boolean builtin)
{
ContextResolver writer = createProviderInstance(resolver);
addContextResolver(writer, resolver, builtin);
}

protected void addContextResolver(ContextResolver provider)
{
addContextResolver(provider, false);
}

protected void addContextResolver(ContextResolver provider, boolean builtin)
{
addContextResolver(provider, provider.getClass(), builtin);
}

protected void addContextResolver(ContextResolver provider, Class providerClass, boolean builtin)
{
// RESTEASY-1725
if (providerClass.getName().contains("$$Lambda$")) {
throw new RuntimeException(Messages.MESSAGES.registeringContextResolverAsLambda());
}
Type parameter = Types.getActualTypeArgumentsOfAnInterface(providerClass, ContextResolver.class)[0];
addContextResolver(provider, parameter, providerClass, builtin);
}

protected void addContextResolver(ContextResolver provider, Type typeParameter, Class providerClass, boolean builtin)
{
int priority = getPriority(null, null, ContextResolver.class, providerClass);
addContextResolver(provider, priority, typeParameter, providerClass, builtin);
}
////////////////////////////////////////////////////////////////////////////

protected void addStringConverter(Class<? extends StringConverter> resolver)
{
StringConverter writer = createProviderInstance(resolver);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package org.jboss.resteasy.test.providers;

import java.util.Iterator;
import java.util.List;

import javax.annotation.Priority;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;

import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.junit.Assert;
import org.junit.Test;

public class ContextResolverPriorityTest extends ResteasyProviderFactory {

public static class Foo {}

@Priority(9999)
public static class TestContextResolver9999 implements ContextResolver<Foo>{

@Override
public Foo getContext(Class<?> type) {
return null;
}
}

public static class TestContextResolver5000 implements ContextResolver<Foo>{

@Override
public Foo getContext(Class<?> type) {
return null;
}
}

@Priority(1000)
public static class TestContextResolver1000 implements ContextResolver<Foo>{

@Override
public Foo getContext(Class<?> type) {
return null;
}
}

public static class TestResteasyProviderFactory extends ResteasyProviderFactory {}

@SuppressWarnings("rawtypes")
@Test
public void testOlderAddContextResolverMethodsObject() {
ContextResolverPriorityTest factory = new ContextResolverPriorityTest();
factory.addContextResolver(new TestContextResolver9999());
factory.addContextResolver(new TestContextResolver5000());
factory.addContextResolver(new TestContextResolver1000());
List<ContextResolver> list = factory.getContextResolvers(Foo.class, MediaType.WILDCARD_TYPE);
Assert.assertEquals(3, list.size());
Iterator<ContextResolver> it = list.iterator();
Assert.assertTrue(TestContextResolver1000.class.equals(it.next().getClass()));
Assert.assertTrue(TestContextResolver5000.class.equals(it.next().getClass()));
Assert.assertTrue(TestContextResolver9999.class.equals(it.next().getClass()));
}

@SuppressWarnings("rawtypes")
@Test
public void testOlderAddContextResolverMethodsClass() {
ContextResolverPriorityTest factory = new ContextResolverPriorityTest();
factory.addContextResolver(TestContextResolver9999.class, false);
factory.addContextResolver(TestContextResolver5000.class, false);
factory.addContextResolver(TestContextResolver1000.class, false);
List<ContextResolver> list = factory.getContextResolvers(Foo.class, MediaType.WILDCARD_TYPE);
Assert.assertEquals(3, list.size());
Iterator<ContextResolver> it = list.iterator();
Assert.assertTrue(TestContextResolver1000.class.equals(it.next().getClass()));
Assert.assertTrue(TestContextResolver5000.class.equals(it.next().getClass()));
Assert.assertTrue(TestContextResolver9999.class.equals(it.next().getClass()));
}
}

0 comments on commit 0b0c275

Please sign in to comment.