### Question:
ShiroDeploymentContributor extends ProviderDeploymentContributorBase { @Override public String getName() { return "ShiroProvider"; }  @Override String getRole(); @Override String getName(); @Override void contributeProvider( DeploymentContext context, Provider provider ); @Override void contributeFilter( DeploymentContext context, Provider provider,
      Service service, ResourceDescriptor resource, List<FilterParamDescriptor> params );  }### Answer:
@Test public void testServiceLoader() throws Exception { ServiceLoader loader = ServiceLoader.load( ProviderDeploymentContributor.class ); Iterator iterator = loader.iterator(); assertThat( "Service iterator empty.", iterator.hasNext() ); while( iterator.hasNext() ) { Object object = iterator.next(); if( object instanceof ShiroDeploymentContributor ) { return; } } fail( "Failed to find " + ShiroDeploymentContributor.class.getName() + " via service loader." ); }