private void removeRemoteIndexingInterceptorFromConfig(Configuration cfg) { ConfigurationBuilder builder = new ConfigurationBuilder(); CustomInterceptorsConfigurationBuilder customInterceptorsBuilder = builder.customInterceptors(); for (InterceptorConfiguration interceptorConfig : cfg.customInterceptors().interceptors()) { if (!(interceptorConfig.asyncInterceptor() instanceof RemoteValueWrapperInterceptor)) { customInterceptorsBuilder.addInterceptor().read(interceptorConfig); } } cfg.customInterceptors().interceptors(builder.build().customInterceptors().interceptors()); }
private void removeQueryInterceptorFromConfiguration(Configuration cfg) { ConfigurationBuilder builder = new ConfigurationBuilder(); CustomInterceptorsConfigurationBuilder customInterceptorsBuilder = builder.customInterceptors(); for (InterceptorConfiguration interceptorConfig : cfg.customInterceptors().interceptors()) { if (!(interceptorConfig.interceptor() instanceof QueryInterceptor)) { customInterceptorsBuilder.addInterceptor().read(interceptorConfig); } } cfg.customInterceptors().interceptors(builder.build().customInterceptors().interceptors()); }
private void createRemoteValueWrapperInterceptor(ComponentRegistry cr, Configuration cfg) { RemoteValueWrapperInterceptor wrapperInterceptor = cr.getComponent(RemoteValueWrapperInterceptor.class); if (wrapperInterceptor == null) { wrapperInterceptor = new RemoteValueWrapperInterceptor(); // Interceptor registration not needed, core configuration handling // already does it for all custom interceptors - UNLESS the InterceptorChain already exists in // the component registry! AsyncInterceptorChain ic = cr.getComponent(AsyncInterceptorChain.class); ConfigurationBuilder builder = new ConfigurationBuilder().read(cfg); InterceptorConfigurationBuilder interceptorBuilder = builder.customInterceptors().addInterceptor(); interceptorBuilder.interceptor(wrapperInterceptor); if (cfg.invocationBatching().enabled()) { if (ic != null) ic.addInterceptorAfter(wrapperInterceptor, BatchingInterceptor.class); interceptorBuilder.after(BatchingInterceptor.class); } else { if (ic != null) ic.addInterceptorAfter(wrapperInterceptor, InvocationContextInterceptor.class); interceptorBuilder.after(InvocationContextInterceptor.class); } if (ic != null) { cr.registerComponent(wrapperInterceptor, RemoteValueWrapperInterceptor.class); } cfg.customInterceptors().interceptors(builder.build().customInterceptors().interceptors()); } }
private void writeCustomInterceptors(XMLExtendedStreamWriter writer, Configuration configuration) throws XMLStreamException { CustomInterceptorsConfiguration customInterceptors = configuration.customInterceptors(); if (customInterceptors.interceptors().size() > 0) { writer.writeStartElement(Element.CUSTOM_INTERCEPTORS); for (InterceptorConfiguration interceptor : customInterceptors.interceptors()) { AttributeSet attributes = interceptor.attributes(); writer.writeStartElement(Element.INTERCEPTOR); attributes.write(writer, InterceptorConfiguration.INTERCEPTOR_CLASS, Attribute.CLASS); attributes.write(writer, InterceptorConfiguration.AFTER, Attribute.AFTER); attributes.write(writer, InterceptorConfiguration.BEFORE, Attribute.BEFORE); attributes.write(writer, InterceptorConfiguration.INDEX, Attribute.INDEX); attributes.write(writer, InterceptorConfiguration.POSITION, Attribute.POSITION); writeTypedProperties(writer, interceptor.properties()); writer.writeEndElement(); } writer.writeEndElement(); } }
private void createQueryInterceptorIfNeeded( ComponentRegistry cr, Configuration cfg, SearchFactoryIntegrator searchFactory) { QueryInterceptor queryInterceptor = cr.getComponent(QueryInterceptor.class); if (queryInterceptor == null) { queryInterceptor = buildQueryInterceptor(cfg, searchFactory); // Interceptor registration not needed, core configuration handling // already does it for all custom interceptors - UNLESS the InterceptorChain already exists in // the component registry! InterceptorChain ic = cr.getComponent(InterceptorChain.class); ConfigurationBuilder builder = new ConfigurationBuilder().read(cfg); InterceptorConfigurationBuilder interceptorBuilder = builder.customInterceptors().addInterceptor(); interceptorBuilder.interceptor(queryInterceptor); if (!cfg.transaction().transactionMode().isTransactional()) { if (ic != null) ic.addInterceptorAfter(queryInterceptor, NonTransactionalLockingInterceptor.class); interceptorBuilder.after(NonTransactionalLockingInterceptor.class); } else if (cfg.transaction().lockingMode() == LockingMode.OPTIMISTIC) { if (ic != null) ic.addInterceptorAfter(queryInterceptor, OptimisticLockingInterceptor.class); interceptorBuilder.after(OptimisticLockingInterceptor.class); } else { if (ic != null) ic.addInterceptorAfter(queryInterceptor, PessimisticLockingInterceptor.class); interceptorBuilder.after(PessimisticLockingInterceptor.class); } if (ic != null) { cr.registerComponent(queryInterceptor, QueryInterceptor.class); cr.registerComponent(queryInterceptor, queryInterceptor.getClass().getName(), true); } cfg.customInterceptors().interceptors(builder.build().customInterceptors().interceptors()); } }
private void assertNamedCacheFile(EmbeddedCacheManager cm) { final GlobalConfiguration gc = cm.getCacheManagerConfiguration(); assert gc.asyncListenerExecutor().factory() instanceof DefaultExecutorFactory; assert gc.asyncListenerExecutor().properties().getProperty("maxThreads").equals("5"); assert gc.asyncListenerExecutor() .properties() .getProperty("threadNamePrefix") .equals("AsyncListenerThread"); assert gc.asyncTransportExecutor().factory() instanceof DefaultExecutorFactory; assert gc.asyncTransportExecutor().properties().getProperty("maxThreads").equals("25"); assert gc.asyncTransportExecutor() .properties() .getProperty("threadNamePrefix") .equals("AsyncSerializationThread"); assert gc.evictionScheduledExecutor().factory() instanceof DefaultScheduledExecutorFactory; assert gc.evictionScheduledExecutor() .properties() .getProperty("threadNamePrefix") .equals("EvictionThread"); assert gc.replicationQueueScheduledExecutor().factory() instanceof DefaultScheduledExecutorFactory; assert gc.replicationQueueScheduledExecutor() .properties() .getProperty("threadNamePrefix") .equals("ReplicationQueueThread"); assert gc.transport().transport() instanceof JGroupsTransport; assert gc.transport().clusterName().equals("infinispan-cluster"); assert gc.transport().nodeName().equals("Jalapeno"); assert gc.transport().distributedSyncTimeout() == 50000; assert gc.shutdown().hookBehavior().equals(ShutdownHookBehavior.REGISTER); assert gc.serialization().marshaller() instanceof VersionAwareMarshaller; assert gc.serialization().version() == Version.getVersionShort("1.0"); final Map<Integer, AdvancedExternalizer<?>> externalizers = gc.serialization().advancedExternalizers(); assert externalizers.size() == 3; assert externalizers.get(1234) instanceof AdvancedExternalizerTest.IdViaConfigObj.Externalizer; assert externalizers.get(5678) instanceof AdvancedExternalizerTest.IdViaAnnotationObj.Externalizer; assert externalizers.get(3456) instanceof AdvancedExternalizerTest.IdViaBothObj.Externalizer; Configuration defaultCfg = cm.getDefaultCacheConfiguration(); assert defaultCfg.locking().lockAcquisitionTimeout() == 1000; assert defaultCfg.locking().concurrencyLevel() == 100; assert defaultCfg.locking().isolationLevel() == IsolationLevel.READ_COMMITTED; Configuration c = cm.getCacheConfiguration("transactional"); assert !c.clustering().cacheMode().isClustered(); assert c.transaction().transactionManagerLookup() instanceof GenericTransactionManagerLookup; assert c.transaction().useEagerLocking(); assert c.transaction().eagerLockingSingleNode(); assert !c.transaction().syncRollbackPhase(); c = cm.getCacheConfiguration("transactional2"); assert c.transaction().transactionManagerLookup() instanceof Lookup; assert c.transaction().cacheStopTimeout() == 10000; assert c.transaction().lockingMode().equals(LockingMode.PESSIMISTIC); assert !c.transaction().autoCommit(); c = cm.getCacheConfiguration("syncRepl"); assert c.clustering().cacheMode() == CacheMode.REPL_SYNC; assert !c.clustering().stateRetrieval().fetchInMemoryState(); assert c.clustering().sync().replTimeout() == 15000; c = cm.getCacheConfiguration("asyncRepl"); assert c.clustering().cacheMode() == CacheMode.REPL_ASYNC; assert !c.clustering().async().useReplQueue(); assert !c.clustering().async().asyncMarshalling(); assert !c.clustering().stateRetrieval().fetchInMemoryState(); c = cm.getCacheConfiguration("asyncReplQueue"); assert c.clustering().cacheMode() == CacheMode.REPL_ASYNC; assert c.clustering().async().useReplQueue(); assert !c.clustering().async().asyncMarshalling(); assert !c.clustering().stateRetrieval().fetchInMemoryState(); c = cm.getCacheConfiguration("txSyncRepl"); assert c.transaction().transactionManagerLookup() instanceof GenericTransactionManagerLookup; assert c.clustering().cacheMode() == CacheMode.REPL_SYNC; assert !c.clustering().stateRetrieval().fetchInMemoryState(); assert c.clustering().sync().replTimeout() == 15000; c = cm.getCacheConfiguration("overriding"); assert c.clustering().cacheMode() == CacheMode.LOCAL; assert c.locking().lockAcquisitionTimeout() == 20000; assert c.locking().concurrencyLevel() == 1000; assert c.locking().isolationLevel() == IsolationLevel.REPEATABLE_READ; assert !c.storeAsBinary().enabled(); c = cm.getCacheConfiguration("storeAsBinary"); assert c.storeAsBinary().enabled(); c = cm.getCacheConfiguration("withLoader"); assert c.loaders().preload(); assert !c.loaders().passivation(); assert !c.loaders().shared(); assert c.loaders().cacheLoaders().size() == 1; FileCacheStoreConfiguration loaderCfg = (FileCacheStoreConfiguration) c.loaders().cacheLoaders().get(0); assert loaderCfg.fetchPersistentState(); assert loaderCfg.ignoreModifications(); assert loaderCfg.purgeOnStartup(); assert loaderCfg.location().equals("/tmp/FileCacheStore-Location"); assert loaderCfg.fsyncMode() == FileCacheStoreConfigurationBuilder.FsyncMode.PERIODIC; assert loaderCfg.fsyncInterval() == 2000; assert loaderCfg.singletonStore().pushStateTimeout() == 20000; assert loaderCfg.singletonStore().pushStateWhenCoordinator(); assert loaderCfg.async().threadPoolSize() == 5; assert loaderCfg.async().flushLockTimeout() == 15000; assert loaderCfg.async().enabled(); assert loaderCfg.async().modificationQueueSize() == 700; c = cm.getCacheConfiguration("withLoaderDefaults"); loaderCfg = (FileCacheStoreConfiguration) c.loaders().cacheLoaders().get(0); assert loaderCfg.location().equals("/tmp/Another-FileCacheStore-Location"); assert loaderCfg.fsyncMode() == FileCacheStoreConfigurationBuilder.FsyncMode.DEFAULT; c = cm.getCacheConfiguration("withouthJmxEnabled"); assert !c.jmxStatistics().enabled(); assert gc.globalJmxStatistics().enabled(); assert gc.globalJmxStatistics().allowDuplicateDomains(); assert gc.globalJmxStatistics().domain().equals("funky_domain"); assert gc.globalJmxStatistics().mbeanServerLookup() instanceof PerThreadMBeanServerLookup; c = cm.getCacheConfiguration("dist"); assert c.clustering().cacheMode() == CacheMode.DIST_SYNC; assert c.clustering().l1().lifespan() == 600000; assert c.clustering().hash().rehashRpcTimeout() == 120000; assert c.clustering().stateTransfer().timeout() == 120000; assert c.clustering().hash().consistentHash() instanceof TopologyAwareConsistentHash; assert c.clustering().hash().numOwners() == 3; assert c.clustering().l1().enabled(); c = cm.getCacheConfiguration("groups"); assert c.clustering().hash().groups().enabled(); assert c.clustering().hash().groups().groupers().size() == 1; assert c.clustering().hash().groups().groupers().get(0).getKeyType().equals(String.class); c = cm.getCacheConfiguration("chunkSize"); assert c.clustering().stateTransfer().fetchInMemoryState(); assert c.clustering().stateTransfer().timeout() == 120000; assert c.clustering().stateTransfer().chunkSize() == 1000; c = cm.getCacheConfiguration("cacheWithCustomInterceptors"); assert !c.customInterceptors().interceptors().isEmpty(); assert c.customInterceptors().interceptors().size() == 5; c = cm.getCacheConfiguration("evictionCache"); assert c.eviction().maxEntries() == 5000; assert c.eviction().strategy().equals(EvictionStrategy.FIFO); assert c.expiration().lifespan() == 60000; assert c.expiration().maxIdle() == 1000; assert c.eviction().threadPolicy() == EvictionThreadPolicy.PIGGYBACK; assert c.expiration().wakeUpInterval() == 500; c = cm.getCacheConfiguration("withDeadlockDetection"); assert c.deadlockDetection().enabled(); assert c.deadlockDetection().spinDuration() == 1221; assert c.clustering().cacheMode() == CacheMode.DIST_SYNC; c = cm.getCacheConfiguration("storeKeyValueBinary"); assert c.storeAsBinary().enabled(); assert c.storeAsBinary().storeKeysAsBinary(); assert !c.storeAsBinary().storeValuesAsBinary(); }