@Override public void init() { registerBeanDefinitionParser("cluster", new CassandraClusterParser()); registerBeanDefinitionParser("session", new CassandraSessionParser()); registerBeanDefinitionParser("template", new CassandraTemplateParser()); registerBeanDefinitionParser("converter", new CassandraMappingConverterParser()); registerBeanDefinitionParser("mapping", new CassandraMappingContextParser()); } }
@Override public void init() { registerBeanDefinitionParser("cluster", new CassandraCqlClusterParser()); registerBeanDefinitionParser("session", new CassandraCqlSessionParser()); registerBeanDefinitionParser("template", new CassandraCqlTemplateParser()); } }
@Override protected void setDefaultProperties(BeanDefinitionBuilder builder) { super.setDefaultProperties(builder); addRequiredPropertyValue(builder, "schemaAction", SchemaAction.NONE.name()); addRequiredPropertyReference(builder, "converter", DefaultBeanNames.CONVERTER); } }
PoolingOptions configure(PoolingOptions poolingOptions) { // order is important here; max properties must be set first setMaxConnectionsPerHost(poolingOptions); setCoreConnectionsPerHost(poolingOptions); setMaxRequestsPerConnection(poolingOptions); setNewConnectionThreshold(poolingOptions); return poolingOptions; } }
/** * Configures the {@link HostDistance#LOCAL} connection settings on the given {@link PoolingOptions}. * * @param poolingOptions the {@link PoolingOptions} to configure. * @return the given {@link PoolingOptions}. * @see com.datastax.driver.core.HostDistance#LOCAL * @see com.datastax.driver.core.PoolingOptions * @see #newLocalHostDistancePoolingOptions() */ protected PoolingOptions configureLocalHostDistancePoolingOptions(PoolingOptions poolingOptions) { return newLocalHostDistancePoolingOptions().configure(poolingOptions); }
@Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { super.doParse(element, parserContext, builder); CassandraMappingXmlBeanFactoryPostProcessorRegistrar.ensureRegistration(element, parserContext); }
@Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { CassandraMappingXmlBeanFactoryPostProcessorRegistrar.ensureRegistration(element, parserContext); parseMapping(element, builder); }
@Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { CassandraMappingXmlBeanFactoryPostProcessorRegistrar.ensureRegistration(element, parserContext); return super.parseInternal(element, parserContext); } }
/** * Configures the {@link HostDistance#REMOTE} connection settings on the given {@link PoolingOptions}. * * @param poolingOptions the {@link PoolingOptions} to configure. * @return the given {@link PoolingOptions}. * @see com.datastax.driver.core.HostDistance#REMOTE * @see com.datastax.driver.core.PoolingOptions * @see #newRemoteHostDistancePoolingOptions() */ protected PoolingOptions configureRemoteHostDistancePoolingOptions(PoolingOptions poolingOptions) { return newRemoteHostDistancePoolingOptions().configure(poolingOptions); }
/** * Return the {@link Set} of initial entity classes. Scans by default the class path using * {@link #getEntityBasePackages()}. Can be overriden by subclasses to skip class path scanning and return a fixed set * of entity classes. * * @return {@link Set} of initial entity classes. * @throws ClassNotFoundException if the entity scan fails. * @see #getEntityBasePackages() * @see CassandraEntityClassScanner * @since 2.0 */ protected Set<Class<?>> getInitialEntitySet() throws ClassNotFoundException { return CassandraEntityClassScanner.scan(getEntityBasePackages()); }
/** * Scan one or more base packages for entity classes. Classes are loaded using the current class loader. * * @param entityBasePackages must not be {@literal null}. * @return {@link Set} containing all discovered entity classes. * @throws ClassNotFoundException */ public static Set<Class<?>> scan(String... entityBasePackages) throws ClassNotFoundException { return new CassandraEntityClassScanner(entityBasePackages).scanForEntityClasses(); }
/** * Creates a new {@link CassandraEntityClassScanner} given {@code entityBasePackages} and * {@code entityBasePackageClasses}. * * @param entityBasePackages must not be {@literal null}. * @param entityBasePackageClasses must not be {@literal null}. */ public CassandraEntityClassScanner(Collection<String> entityBasePackages, Collection<Class<?>> entityBasePackageClasses) { setEntityBasePackages(entityBasePackages); setEntityBasePackageClasses(entityBasePackageClasses); }
/** * Convenience method delegating to * {@link #addProperty(BeanDefinitionBuilder, String, String, String, boolean, boolean)}. */ public static void addRequiredPropertyReference(BeanDefinitionBuilder builder, String propertyName, String value) { addProperty(builder, propertyName, value, null, true, true); }
/** * Parses local pooling options. * * @param element {@link Element} to parse. * @param builder {@link BeanDefinitionBuilder} used to build a {@link PoolingOptions} {@link BeanDefinition}. */ void parseLocalPoolingOptions(Element element, BeanDefinitionBuilder builder) { addOptionalPropertyValue(builder, "localCoreConnections", element, "core-connections", null); addOptionalPropertyValue(builder, "localMaxConnections", element, "max-connections", null); addOptionalPropertyValue(builder, "localMaxSimultaneousRequests", element, "max-simultaneous-requests", null); addOptionalPropertyValue(builder, "localMinSimultaneousRequests", element, "min-simultaneous-requests", null); }
/** * Ensures that {@link BeanDefinition}s for a {@link CassandraMappingContext} and a {@link CassandraConverter} exist. */ @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException { if (!(factory instanceof BeanDefinitionRegistry)) { return; } registerMissingDefaultableBeanDefinitions((BeanDefinitionRegistry) factory, factory); }
/** * Creates a new {@link CassandraEntityClassScanner} given {@code entityBasePackages}. * * @param entityBasePackages must not be {@literal null}. */ public CassandraEntityClassScanner(Collection<String> entityBasePackages) { setEntityBasePackages(entityBasePackages); }
/** * Perform schema actions. * * @param drop {@literal true} to drop types/tables. * @param dropUnused {@literal true} to drop unused types/tables (i.e. types/tables not know to be used by * {@link CassandraMappingContext}). * @param ifNotExists {@literal true} to perform creations fail-safe by adding {@code IF NOT EXISTS} to each creation * statement. */ protected void createTables(boolean drop, boolean dropUnused, boolean ifNotExists) { performSchemaActions(drop, dropUnused, ifNotExists); }
/** * Configure simple replication scheme for the keyspace action factory. * * @param replicationFactor the replication factor. * @return this. */ KeyspaceActionSpecificationFactoryBuilder simpleReplication(int replicationFactor) { this.replicationFactor = replicationFactor; return replicationStrategy(ReplicationStrategy.SIMPLE_STRATEGY); }
/** * Convenience method delegating to * {@link #addProperty(BeanDefinitionBuilder, String, String, String, boolean, boolean)}. */ public static void addRequiredPropertyValue(BeanDefinitionBuilder builder, String propertyName, String value) { addProperty(builder, propertyName, value, null, true, false); }
/** * Parses remote pooling options. * * @param element {@link Element} to parse. * @param builder {@link BeanDefinitionBuilder} used to build a {@link PoolingOptions} {@link BeanDefinition}. */ void parseRemotePoolingOptions(Element element, BeanDefinitionBuilder builder) { addOptionalPropertyValue(builder, "remoteCoreConnections", element, "core-connections", null); addOptionalPropertyValue(builder, "remoteMaxConnections", element, "max-connections", null); addOptionalPropertyValue(builder, "remoteMaxSimultaneousRequests", element, "max-simultaneous-requests", null); addOptionalPropertyValue(builder, "remoteMinSimultaneousRequests", element, "min-simultaneous-requests", null); }