24
24
import org .springframework .context .annotation .Configuration ;
25
25
import org .springframework .core .convert .converter .Converter ;
26
26
import org .springframework .core .io .ByteArrayResource ;
27
+ import org .springframework .data .cassandra .CassandraManagedTypes ;
27
28
import org .springframework .data .cassandra .SessionFactory ;
28
29
import org .springframework .data .cassandra .core .CassandraAdminTemplate ;
29
30
import org .springframework .data .cassandra .core .convert .CassandraConverter ;
36
37
import org .springframework .data .cassandra .core .mapping .Table ;
37
38
import org .springframework .data .cassandra .core .mapping .UserTypeResolver ;
38
39
import org .springframework .data .convert .CustomConversions ;
40
+ import org .springframework .data .domain .ManagedTypes ;
39
41
import org .springframework .data .mapping .context .MappingContext ;
40
42
import org .springframework .lang .Nullable ;
41
43
@@ -58,9 +60,8 @@ public abstract class AbstractCassandraConfiguration extends AbstractSessionConf
58
60
private @ Nullable ClassLoader beanClassLoader ;
59
61
60
62
/**
61
- * Creates a {@link CassandraConverter} using the configured {@link #cassandraMapping()}.
62
- *
63
- * Will apply all specified {@link #customConversions()}.
63
+ * Creates a {@link CassandraConverter} using the configured {@link #cassandraMapping()}. Will apply all specified
64
+ * {@link #customConversions()}.
64
65
*
65
66
* @return {@link CassandraConverter} used to convert Java and Cassandra value types during the mapping process.
66
67
* @see #cassandraMapping()
@@ -71,11 +72,11 @@ public CassandraConverter cassandraConverter() {
71
72
72
73
CqlSession cqlSession = getRequiredSession ();
73
74
74
- UserTypeResolver userTypeResolver =
75
- new SimpleUserTypeResolver ( cqlSession , CqlIdentifier .fromCql (getKeyspaceName ()));
75
+ UserTypeResolver userTypeResolver = new SimpleUserTypeResolver ( cqlSession ,
76
+ CqlIdentifier .fromCql (getKeyspaceName ()));
76
77
77
- MappingCassandraConverter converter =
78
- new MappingCassandraConverter ( requireBeanOfType (CassandraMappingContext .class ));
78
+ MappingCassandraConverter converter = new MappingCassandraConverter (
79
+ requireBeanOfType (CassandraMappingContext .class ));
79
80
80
81
converter .setCodecRegistry (cqlSession .getContext ().getCodecRegistry ());
81
82
converter .setUserTypeResolver (userTypeResolver );
@@ -84,31 +85,52 @@ public CassandraConverter cassandraConverter() {
84
85
return converter ;
85
86
}
86
87
88
+ /**
89
+ * Returns the a {@link CassandraManagedTypes} object holding the initial entity set.
90
+ *
91
+ * @return new instance of {@link CassandraManagedTypes}.
92
+ * @throws ClassNotFoundException
93
+ * @since 4.0
94
+ */
95
+ @ Bean
96
+ public CassandraManagedTypes cassandraManagedTypes () throws ClassNotFoundException {
97
+ return CassandraManagedTypes .fromIterable (getInitialEntitySet ());
98
+ }
99
+
87
100
/**
88
101
* Return the {@link MappingContext} instance to map Entities to {@link Object Java Objects}.
89
102
*
90
- * @throws ClassNotFoundException if the Cassandra Entity class type identified by name
91
- * cannot be found during the scan.
92
103
* @see org.springframework.data.cassandra.core.mapping.CassandraMappingContext
104
+ * @deprecated since 4.0, use {@link #cassandraMappingContext(ManagedTypes)} instead.
93
105
*/
94
- @ Bean
106
+ @ Deprecated ( since = "4.0" , forRemoval = true )
95
107
public CassandraMappingContext cassandraMapping () throws ClassNotFoundException {
108
+ return cassandraMappingContext (cassandraManagedTypes ());
109
+ }
110
+
111
+ /**
112
+ * Return the {@link MappingContext} instance to map Entities to {@link Object Java Objects}.
113
+ *
114
+ * @see org.springframework.data.cassandra.core.mapping.CassandraMappingContext
115
+ */
116
+ @ Bean
117
+ public CassandraMappingContext cassandraMappingContext (CassandraManagedTypes cassandraManagedTypes ) {
96
118
97
119
CqlSession cqlSession = getRequiredSession ();
98
120
99
- UserTypeResolver userTypeResolver =
100
- new SimpleUserTypeResolver ( cqlSession , CqlIdentifier .fromCql (getKeyspaceName ()));
121
+ UserTypeResolver userTypeResolver = new SimpleUserTypeResolver ( cqlSession ,
122
+ CqlIdentifier .fromCql (getKeyspaceName ()));
101
123
102
- CassandraMappingContext mappingContext =
103
- new CassandraMappingContext ( userTypeResolver , SimpleTupleTypeFactory .DEFAULT );
124
+ CassandraMappingContext mappingContext = new CassandraMappingContext ( userTypeResolver ,
125
+ SimpleTupleTypeFactory .DEFAULT );
104
126
105
127
CustomConversions customConversions = requireBeanOfType (CassandraCustomConversions .class );
106
128
107
129
getBeanClassLoader ().ifPresent (mappingContext ::setBeanClassLoader );
108
130
109
131
mappingContext .setCodecRegistry (cqlSession .getContext ().getCodecRegistry ());
110
132
mappingContext .setCustomConversions (customConversions );
111
- mappingContext .setInitialEntitySet ( getInitialEntitySet () );
133
+ mappingContext .setManagedTypes ( cassandraManagedTypes );
112
134
mappingContext .setSimpleTypeHolder (customConversions .getSimpleTypeHolder ());
113
135
114
136
return mappingContext ;
0 commit comments