/** * The same as {@link org.infinispan.commons.configuration.ConfigurationUtils#builderFor(Object)} except that it won't * throw an exception if no builder class is found. Instead null will be returned. * @param built The instance to find the builder for * @param <B> The type of builder * @return The builder for this instance or null if there isn't one */ @SuppressWarnings("unchecked") public static <B> Class<? extends Builder<B>> builderForNonStrict(B built) { BuiltBy builtBy = built.getClass().getAnnotation(BuiltBy.class); if (builtBy == null) { return null; } return (Class<? extends Builder<B>>) builtBy.value(); } }
/** * Returns the builder that was used to build this class. This is determined by the instance having a class that * has a {@link org.infinispan.commons.configuration.BuiltBy} annotation present on it. If one is not present * a {@link org.infinispan.commons.CacheConfigurationException} is thrown * @param built The instance to find the builder for * @param <B> The type of builder * @return The builder for this instance * @throws CacheConfigurationException thrown if the instance class can't provide the builder */ @SuppressWarnings("unchecked") public static <B> Class<? extends Builder<B>> builderFor(B built) throws CacheConfigurationException { BuiltBy builtBy = built.getClass().getAnnotation(BuiltBy.class); if (builtBy == null) { throw new CacheConfigurationException("Missing BuiltBy annotation for configuration bean " + built.getClass().getName()); } return (Class<? extends Builder<B>>) builtBy.value(); }
private void initializeConfigurationData() { ConfiguredBy configuredBy = loaderWriterRawInstance.getClass().getAnnotation(ConfiguredBy.class); if (configuredBy != null) { if (configuredBy.value() == null) { throw new IllegalArgumentException("Cache Store's configuration class is incorrect"); } this.storeConfigurationClass = (Class<? extends StoreConfiguration>) configuredBy.value(); BuiltBy builtBy = storeConfigurationClass.getAnnotation(BuiltBy.class); if (builtBy != null) { if (builtBy.value() == null) { throw new IllegalArgumentException("Cache Store's configuration builder class is incorrect"); } this.storeBuilderClass = builtBy.value().asSubclass(StoreConfigurationBuilder.class); } else { this.storeBuilderClass = CustomStoreConfigurationBuilder.class; } } else { this.storeConfigurationClass = CustomStoreConfiguration.class; this.storeBuilderClass = CustomStoreConfigurationBuilder.class; } }
private StoreConfigurationBuilder<?, ?> createStoreConfigurationFromLocalClassloader(String className, PersistenceConfigurationBuilder persistenceBuilder) throws ClassNotFoundException { Class<?> storeImplClass = CacheLoader.class.getClassLoader().loadClass(className); ConfiguredBy annotation = storeImplClass.getAnnotation(ConfiguredBy.class); Class<? extends StoreConfigurationBuilder> builderClass = null; if (annotation != null) { Class<?> configuredBy = annotation.value(); if (configuredBy != null) { BuiltBy builtBy = configuredBy.getAnnotation(BuiltBy.class); builderClass = builtBy.value().asSubclass(StoreConfigurationBuilder.class); } } if (builderClass == null) { return persistenceBuilder.addStore(CustomStoreConfigurationBuilder.class).customStoreClass(storeImplClass); } return persistenceBuilder.addStore(builderClass); }