// Only do once, because components are stored statically within various classes, // which causes problems with changing genetics mocks @BeforeClass @SuppressWarnings("unchecked") public static void setupComponents() throws ComponentLookupException, CacheException { ComponentManager componentManager = mock(ComponentManager.class); Provider<ComponentManager> mockProvider = mock(Provider.class); // This is a bit fragile, let's hope the field name doesn't change ReflectionUtils.setFieldValue(new ComponentManagerRegistry(), "cmProvider", mockProvider); when(mockProvider.get()).thenReturn(componentManager); CacheManager cacheManager = mock(CacheManager.class); when(componentManager.getInstance(CacheManager.class)).thenReturn(cacheManager); CacheFactory cacheFactory = mock(CacheFactory.class); when(cacheManager.getLocalCacheFactory()).thenReturn(cacheFactory); Cache<Exome> cache = mock(Cache.class); doReturn(cache).when(cacheFactory).newCache(Matchers.any(CacheConfiguration.class)); doReturn(null).when(cache).get(Matchers.anyString()); // Wire up mocked genetics exomeManager = mock(ExomeManager.class); when(componentManager.getInstance(ExomeManager.class, "exomiser")).thenReturn(exomeManager); // Use a real GenotypeManager PatientGenotypeManager genotypeManager = new DefaultPatientGenotypeManager(); when(componentManager.getInstance(PatientGenotypeManager.class)).thenReturn(genotypeManager); }
/** * Allow to retrieve the total count of items for the given query instead of the actual results. * This method will only work for queries selecting document full names, see {@link CountFilter} * for more information. * * @return the total number of results for this query. */ public long count() { long result = -1; try { // Create a copy of the wrapped query. QueryManager queryManager = (QueryManager) componentManager.getInstance(QueryManager.class); Query countQuery = queryManager.createQuery(getStatement(), getLanguage()); countQuery.setWiki(getWiki()); for (Map.Entry<Integer, Object> entry : getPositionalParameters().entrySet()) { countQuery.bindValue(entry.getKey(), entry.getValue()); } for (Map.Entry<String, Object> entry : getNamedParameters().entrySet()) { countQuery.bindValue(entry.getKey(), entry.getValue()); } for (QueryFilter filter : getFilters()) { countQuery.addFilter(filter); } // Add the count filter to it. countQuery.addFilter(componentManager.<QueryFilter>getInstance(QueryFilter.class, "count")); // Execute and retrieve the count result. List<Long> results = countQuery.execute(); result = results.get(0); } catch (Exception e) { LOGGER.warn("Failed to create count query for query [{}]", getStatement()); e.printStackTrace(); } return result; }
@Override public boolean authenticate(String username, Object password) throws Exception { boolean isAuthenticated = false; ComponentManager componentManager = (ComponentManager) getContext().getAttributes().get("componentManager"); try { CrashConfiguration configuration = componentManager.getInstance(CrashConfiguration.class); CrashAuthentication authentication = componentManager.getInstance( CrashAuthentication.class, configuration.getAuthentication()); isAuthenticated = authentication.authenticate(username, (String) password, getContext()); } catch (Exception e) { // Nothing to do, isAuthenticated is false by default } return isAuthenticated; }
/** * {@inheritDoc} * * @throws ComponentLookupException * @see org.xwiki.contrib.mail.IMailComponent#getMailReader(java.lang.String, int, * java.lang.String, java.lang.String, java.lang.String, java.util.Properties) */ @Override public IMailReader getMailReader( final String hostname, final int port, final String protocol, final String username, final String password, final Properties additionalProperties, final Boolean isAutoTrustSslCertificates) throws ComponentLookupException { final IMailReader reader = componentManager.getInstance(IMailReader.class); final ServerAccountSource source = new ServerAccountSource( hostname, port, protocol, username, password, additionalProperties, isAutoTrustSslCertificates); reader.setMailSource(source); return reader; }
/** * An Event Listener Component has been dynamically registered in the system, add it to our cache. * * @param event event object containing the new component descriptor * @param componentManager the {@link ComponentManager} where the descriptor is registered * @param descriptor the component descriptor removed from component manager */ private void onEventListenerComponentAdded( ComponentDescriptorAddedEvent event, ComponentManager componentManager, ComponentDescriptor<EventListener> descriptor) { try { EventListener eventListener = componentManager.getInstance(EventListener.class, event.getRoleHint()); if (getListener(eventListener.getName()) != eventListener) { addListener(eventListener); } else { this.logger.warn( "An Event Listener named [{}] already exists, ignoring the [{}] component", eventListener.getName(), descriptor.getImplementation().getName()); } } catch (ComponentLookupException e) { this.logger.error( "Failed to lookup the Event Listener [{}] corresponding to the Component registration " + "event for [{}]. Ignoring the event", new Object[] {event.getRoleHint(), descriptor.getImplementation().getName(), e}); } }
/** * {@inheritDoc} * * @see * org.xwiki.contrib.mail.IMailComponent#getMailReader(org.xwiki.contrib.mail.internal.source.ServerAccountSource) */ @Override public IMailReader getMailReader(ServerAccountSource source) throws ComponentLookupException { final IMailReader reader = componentManager.getInstance(IMailReader.class); reader.setMailSource(source); return reader; }