diff --git a/cpo-cassandra/pom.xml b/cpo-cassandra/pom.xml
index 979ffdac8..cdfb8a93c 100644
--- a/cpo-cassandra/pom.xml
+++ b/cpo-cassandra/pom.xml
@@ -126,14 +126,9 @@
${logbackVersion}
test
-
- org.apache.logging.log4j
- log4j-to-slf4j
-
-
- org.apache.xmlbeans
- xmlbeans
+ jakarta.xml.bind
+ jakarta.xml.bind-api
com.datastax.cassandra
diff --git a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/ClusterDataSourceInfo.java b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/ClusterDataSourceInfo.java
index 4a8228783..2b2aff1e9 100644
--- a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/ClusterDataSourceInfo.java
+++ b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/ClusterDataSourceInfo.java
@@ -25,6 +25,7 @@
import com.datastax.driver.core.*;
import com.datastax.driver.core.policies.*;
import java.util.Collection;
+import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.synchronoss.cpo.AbstractDataSourceInfo;
@@ -37,7 +38,7 @@
*/
public class ClusterDataSourceInfo extends AbstractDataSourceInfo {
private static final Logger logger = LoggerFactory.getLogger(ClusterDataSourceInfo.class);
- private String[] contactPoints;
+ private List contactPoints;
private String keySpace;
private String clusterName;
private Integer maxSchemaAgreementWaitSeconds;
@@ -71,7 +72,11 @@ public class ClusterDataSourceInfo extends AbstractDataSourceInfo contactPoints,
+ int fetchSize,
+ int batchSize) {
super(buildDataSourceName(clusterName, keySpace, contactPoints), fetchSize, batchSize);
this.keySpace = keySpace;
this.clusterName = clusterName;
@@ -576,7 +581,7 @@ protected ClusterDataSource createDataSource() throws CpoException {
}
private static String buildDataSourceName(
- String clusterName, String keySpace, String[] contactPoints) {
+ String clusterName, String keySpace, List contactPoints) {
StringBuilder sb = new StringBuilder();
sb.append(clusterName);
sb.append(keySpace);
diff --git a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/config/CassandraCpoConfigProcessor.java b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/config/CassandraCpoConfigProcessor.java
index f545e940d..7da252c0b 100644
--- a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/config/CassandraCpoConfigProcessor.java
+++ b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/config/CassandraCpoConfigProcessor.java
@@ -32,10 +32,9 @@
import org.synchronoss.cpo.cassandra.CassandraCpoAdapter;
import org.synchronoss.cpo.cassandra.CassandraCpoAdapterFactory;
import org.synchronoss.cpo.cassandra.ClusterDataSourceInfo;
-import org.synchronoss.cpo.cassandra.cpoCassandraConfig.*;
import org.synchronoss.cpo.cassandra.meta.CassandraCpoMetaDescriptor;
import org.synchronoss.cpo.config.CpoConfigProcessor;
-import org.synchronoss.cpo.core.cpoCoreConfig.CtDataSourceConfig;
+import org.synchronoss.cpo.cpoconfig.*;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
/**
@@ -66,7 +65,7 @@ public CpoAdapterFactory processCpoConfig(CtDataSourceConfig cpoConfig) throws C
CpoMetaDescriptor.getInstance(cassandraConfig.getMetaDescriptorName());
// build the cluster information
- if (cassandraConfig.isSetReadWriteConfig()) {
+ if (cassandraConfig.getReadWriteConfig() != null) {
ClusterDataSourceInfo clusterInfo =
buildDataSourceInfo(
cassandraConfig.getName(),
@@ -118,113 +117,120 @@ private ClusterDataSourceInfo buildDataSourceInfo(
new ClusterDataSourceInfo(
dataConfigName,
readWriteConfig.getKeySpace(),
- readWriteConfig.getContactPointArray(),
+ readWriteConfig.getContactPoint(),
fetchSize,
batchSize);
// add clusterName
- if (readWriteConfig.isSetClusterName())
- clusterInfo.setClusterName(readWriteConfig.getClusterName());
+ clusterInfo.setClusterName(readWriteConfig.getClusterName());
// add maxSchemaAgreementWaitSeconds
- if (readWriteConfig.isSetMaxSchemaAgreementWaitSeconds())
- clusterInfo.setMaxSchemaAgreementWaitSeconds(
- readWriteConfig.getMaxSchemaAgreementWaitSeconds());
+ clusterInfo.setMaxSchemaAgreementWaitSeconds(
+ readWriteConfig.getMaxSchemaAgreementWaitSeconds());
// add port
- if (readWriteConfig.isSetPort()) clusterInfo.setPort(readWriteConfig.getPort());
+ if (readWriteConfig.getPort() != null) clusterInfo.setPort(readWriteConfig.getPort());
// add loadBalancing
- if (readWriteConfig.isSetLoadBalancingPolicy()) {
+ if (readWriteConfig.getLoadBalancingPolicy() != null
+ && !readWriteConfig.getLoadBalancingPolicy().isBlank()) {
clusterInfo.setLoadBalancingPolicy(
new ConfigInstantiator()
.instantiate(readWriteConfig.getLoadBalancingPolicy()));
}
// add reconnectionPolicy
- if (readWriteConfig.isSetReconnectionPolicy())
+ if (readWriteConfig.getReconnectionPolicy() != null
+ && !readWriteConfig.getReconnectionPolicy().isBlank())
clusterInfo.setReconnectionPolicy(
new ConfigInstantiator()
.instantiate(readWriteConfig.getReconnectionPolicy()));
// add retryPolicy
- if (readWriteConfig.isSetRetryPolicy())
+ if (readWriteConfig.getRetryPolicy() != null && !readWriteConfig.getRetryPolicy().isBlank())
clusterInfo.setRetryPolicy(
new ConfigInstantiator().instantiate(readWriteConfig.getRetryPolicy()));
// add credentials
- if (readWriteConfig.isSetCredentials()) {
+ if (readWriteConfig.getCredentials() != null) {
clusterInfo.setHasCredentials(true);
clusterInfo.setUserName(readWriteConfig.getCredentials().getUser());
clusterInfo.setPassword(readWriteConfig.getCredentials().getUser());
}
// add addressTranslater
- if (readWriteConfig.isSetAddressTranslater())
+ if (readWriteConfig.getAddressTranslater() != null
+ && !readWriteConfig.getAddressTranslater().isBlank())
clusterInfo.setAddressTranslater(
new ConfigInstantiator()
.instantiate(readWriteConfig.getAddressTranslater()));
// add AuthProvider
- if (readWriteConfig.isSetAuthProvider())
+ if (readWriteConfig.getAuthProvider() != null && !readWriteConfig.getAuthProvider().isBlank())
clusterInfo.setAuthProvider(
new ConfigInstantiator().instantiate(readWriteConfig.getAuthProvider()));
// add Compression
- if (readWriteConfig.isSetCompression())
+ if (readWriteConfig.getCompression() != null)
clusterInfo.setCompressionType(
ProtocolOptions.Compression.valueOf(readWriteConfig.getCompression().toString()));
// add NettyOptions
- if (readWriteConfig.isSetNettyOptions())
+ if (readWriteConfig.getNettyOptions() != null && !readWriteConfig.getNettyOptions().isBlank())
clusterInfo.setNettyOptions(
new ConfigInstantiator().instantiate(readWriteConfig.getNettyOptions()));
// add Metrics
- if (readWriteConfig.isSetMetrics()) clusterInfo.setUseMetrics(readWriteConfig.getMetrics());
+ if (readWriteConfig.isMetrics() != null) clusterInfo.setUseMetrics(readWriteConfig.isMetrics());
// add SSL
- if (readWriteConfig.isSetSslOptions() && !readWriteConfig.isNilSslOptions()) {
+ if (readWriteConfig.getSslOptions() != null
+ && readWriteConfig.getSslOptions().getValue() != null
+ && !readWriteConfig.getSslOptions().getValue().isBlank()) {
clusterInfo.setSslOptions(
- new ConfigInstantiator().instantiate(readWriteConfig.getSslOptions()));
+ new ConfigInstantiator()
+ .instantiate(readWriteConfig.getSslOptions().getValue()));
}
// add Listeners
- if (readWriteConfig.isSetInitialListeners()) {
+ if (readWriteConfig.getInitialListeners() != null
+ && !readWriteConfig.getInitialListeners().isBlank()) {
clusterInfo.setListeners(
new ConfigInstantiator>()
.instantiate(readWriteConfig.getInitialListeners()));
}
// add JMX Reporting
- if (readWriteConfig.isSetJmxReporting())
- clusterInfo.setUseJmxReporting(readWriteConfig.getJmxReporting());
+ if (readWriteConfig.isJmxReporting() != null)
+ clusterInfo.setUseJmxReporting(readWriteConfig.isJmxReporting());
// add protocolVersion
- if (readWriteConfig.isSetProtocolVersion())
+ if (readWriteConfig.getProtocolVersion() != null)
clusterInfo.setProtocolVersion(
ProtocolVersion.valueOf(readWriteConfig.getProtocolVersion().toString()));
// add pooling options
- if (readWriteConfig.isSetPoolingOptions())
+ if (readWriteConfig.getPoolingOptions() != null)
clusterInfo.setPoolingOptions(buildPoolingOptions(readWriteConfig.getPoolingOptions()));
// add socket options
- if (readWriteConfig.isSetSocketOptions())
+ if (readWriteConfig.getSocketOptions() != null)
clusterInfo.setSocketOptions(buildSocketOptions(readWriteConfig.getSocketOptions()));
// add query Options
- if (readWriteConfig.isSetQueryOptions())
+ if (readWriteConfig.getQueryOptions() != null)
clusterInfo.setQueryOptions(buildQueryOptions(readWriteConfig.getQueryOptions()));
// add speculativeExecutionPolicy
- if (readWriteConfig.isSetSpeculativeExecutionPolicy())
+ if (readWriteConfig.getSpeculativeExecutionPolicy() != null
+ && !readWriteConfig.getSpeculativeExecutionPolicy().isBlank())
clusterInfo.setSpeculativeExecutionPolicy(
new ConfigInstantiator()
.instantiate(readWriteConfig.getSpeculativeExecutionPolicy()));
// add TimestampGenerator
- if (readWriteConfig.isSetTimestampGenerator())
+ if (readWriteConfig.getTimestampGenerator() != null
+ && !readWriteConfig.getTimestampGenerator().isBlank())
clusterInfo.setTimestampGenerator(
new ConfigInstantiator()
.instantiate(readWriteConfig.getTimestampGenerator()));
@@ -236,45 +242,45 @@ private ClusterDataSourceInfo buildDataSourceInfo(
private PoolingOptions buildPoolingOptions(CtPoolingOptions ctPoolingOptions) {
PoolingOptions poolingOptions = new PoolingOptions();
- if (ctPoolingOptions.isSetConnectionsPerHost()) {
+ if (ctPoolingOptions.getConnectionsPerHost() != null) {
CtConnectionsPerHost cph = ctPoolingOptions.getConnectionsPerHost();
poolingOptions.setConnectionsPerHost(
HostDistance.valueOf(cph.getDistance().toString()), cph.getCore(), cph.getMax());
}
- if (ctPoolingOptions.isSetCoreConnectionsPerHost()) {
+ if (ctPoolingOptions.getCoreConnectionsPerHost() != null) {
CtHostDistanceAndThreshold hdt = ctPoolingOptions.getCoreConnectionsPerHost();
poolingOptions.setCoreConnectionsPerHost(
HostDistance.valueOf(hdt.getDistance().toString()), hdt.getThreshold());
}
- if (ctPoolingOptions.isSetHeartbeatIntervalSeconds()) {
+ if (ctPoolingOptions.getHeartbeatIntervalSeconds() != null) {
poolingOptions.setHeartbeatIntervalSeconds(ctPoolingOptions.getHeartbeatIntervalSeconds());
}
- if (ctPoolingOptions.isSetIdleTimeoutSeconds()) {
+ if (ctPoolingOptions.getIdleTimeoutSeconds() != null) {
poolingOptions.setIdleTimeoutSeconds(ctPoolingOptions.getIdleTimeoutSeconds());
}
- if (ctPoolingOptions.isSetMaxConnectionsPerHost()) {
+ if (ctPoolingOptions.getMaxConnectionsPerHost() != null) {
CtHostDistanceAndThreshold hdt = ctPoolingOptions.getMaxConnectionsPerHost();
poolingOptions.setMaxConnectionsPerHost(
HostDistance.valueOf(hdt.getDistance().toString()), hdt.getThreshold());
}
- if (ctPoolingOptions.isSetMaxRequestsPerConnection()) {
+ if (ctPoolingOptions.getMaxRequestsPerConnection() != null) {
CtHostDistanceAndThreshold hdt = ctPoolingOptions.getMaxRequestsPerConnection();
poolingOptions.setMaxRequestsPerConnection(
HostDistance.valueOf(hdt.getDistance().toString()), hdt.getThreshold());
}
- if (ctPoolingOptions.isSetNewConnectionThreshold()) {
+ if (ctPoolingOptions.getNewConnectionThreshold() != null) {
CtHostDistanceAndThreshold hdt = ctPoolingOptions.getNewConnectionThreshold();
poolingOptions.setNewConnectionThreshold(
HostDistance.valueOf(hdt.getDistance().toString()), hdt.getThreshold());
}
- if (ctPoolingOptions.isSetPoolTimeoutMillis()) {
+ if (ctPoolingOptions.getPoolTimeoutMillis() != null) {
poolingOptions.setPoolTimeoutMillis(ctPoolingOptions.getPoolTimeoutMillis());
}
@@ -284,16 +290,17 @@ private PoolingOptions buildPoolingOptions(CtPoolingOptions ctPoolingOptions) {
private QueryOptions buildQueryOptions(CtQueryOptions ctQueryOptions) {
QueryOptions queryOptions = new QueryOptions();
- if (ctQueryOptions.isSetConsistencyLevel())
+ if (ctQueryOptions.getConsistencyLevel() != null)
queryOptions.setConsistencyLevel(
ConsistencyLevel.valueOf(ctQueryOptions.getConsistencyLevel().toString()));
- if (ctQueryOptions.isSetDefaultIdempotence())
- queryOptions.setDefaultIdempotence(ctQueryOptions.getDefaultIdempotence());
+ if (ctQueryOptions.isDefaultIdempotence() != null)
+ queryOptions.setDefaultIdempotence(ctQueryOptions.isDefaultIdempotence());
- if (ctQueryOptions.isSetFetchSize()) queryOptions.setFetchSize(ctQueryOptions.getFetchSize());
+ if (ctQueryOptions.getFetchSize() != null)
+ queryOptions.setFetchSize(ctQueryOptions.getFetchSize());
- if (ctQueryOptions.isSetSerialConsistencyLevel())
+ if (ctQueryOptions.getSerialConsistencyLevel() != null)
queryOptions.setSerialConsistencyLevel(
ConsistencyLevel.valueOf(ctQueryOptions.getSerialConsistencyLevel().toString()));
@@ -303,28 +310,29 @@ private QueryOptions buildQueryOptions(CtQueryOptions ctQueryOptions) {
private SocketOptions buildSocketOptions(CtSocketOptions ctSocketOptions) {
SocketOptions socketOptions = new SocketOptions();
- if (ctSocketOptions.isSetConnectionTimeoutMillis())
+ if (ctSocketOptions.getConnectionTimeoutMillis() != null)
socketOptions.setConnectTimeoutMillis(ctSocketOptions.getConnectionTimeoutMillis());
- if (ctSocketOptions.isSetKeepAlive())
- socketOptions.setKeepAlive(ctSocketOptions.getKeepAlive());
+ if (ctSocketOptions.isKeepAlive() != null)
+ socketOptions.setKeepAlive(ctSocketOptions.isKeepAlive());
- if (ctSocketOptions.isSetReadTimeoutMillis())
+ if (ctSocketOptions.getReadTimeoutMillis() != null)
socketOptions.setReadTimeoutMillis(ctSocketOptions.getReadTimeoutMillis());
- if (ctSocketOptions.isSetReceiveBufferSize())
+ if (ctSocketOptions.getReceiveBufferSize() != null)
socketOptions.setReceiveBufferSize(ctSocketOptions.getReceiveBufferSize());
- if (ctSocketOptions.isSetReuseAddress())
- socketOptions.setReuseAddress(ctSocketOptions.getReuseAddress());
+ if (ctSocketOptions.isReuseAddress() != null)
+ socketOptions.setReuseAddress(ctSocketOptions.isReuseAddress());
- if (ctSocketOptions.isSetSendBufferSize())
+ if (ctSocketOptions.getSendBufferSize() != null)
socketOptions.setSendBufferSize(ctSocketOptions.getSendBufferSize());
- if (ctSocketOptions.isSetSoLinger()) socketOptions.setSoLinger(ctSocketOptions.getSoLinger());
+ if (ctSocketOptions.getSoLinger() != null)
+ socketOptions.setSoLinger(ctSocketOptions.getSoLinger());
- if (ctSocketOptions.isSetTcpNoDelay())
- socketOptions.setTcpNoDelay(ctSocketOptions.getTcpNoDelay());
+ if (ctSocketOptions.isTcpNoDelay() != null)
+ socketOptions.setTcpNoDelay(ctSocketOptions.isTcpNoDelay());
return socketOptions;
}
diff --git a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/exporter/CassandraMetaXmlObjectExporter.java b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/exporter/CassandraMetaXmlObjectExporter.java
index 187c53ca4..238eff32b 100644
--- a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/exporter/CassandraMetaXmlObjectExporter.java
+++ b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/exporter/CassandraMetaXmlObjectExporter.java
@@ -22,11 +22,10 @@
* ]]
*/
-import org.synchronoss.cpo.cassandra.cpoCassandraMeta.CtCassandraArgument;
-import org.synchronoss.cpo.cassandra.cpoCassandraMeta.CtCassandraAttribute;
import org.synchronoss.cpo.cassandra.meta.CassandraCpoAttribute;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtArgument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtAttribute;
+import org.synchronoss.cpo.cpometa.CtCassandraArgument;
+import org.synchronoss.cpo.cpometa.CtCassandraAttribute;
+import org.synchronoss.cpo.cpometa.ObjectFactory;
import org.synchronoss.cpo.exporter.CoreMetaXmlObjectExporter;
import org.synchronoss.cpo.exporter.MetaXmlObjectExporter;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
@@ -40,6 +39,9 @@
*/
public class CassandraMetaXmlObjectExporter extends CoreMetaXmlObjectExporter
implements MetaXmlObjectExporter {
+
+ private final ObjectFactory objectFactory = new ObjectFactory();
+
/**
* Constructs the CassandraMetaXmlObjectExporter
*
@@ -64,7 +66,7 @@ public void visit(CpoAttribute cpoAttribute) {
// CtClass.addNewCpoAttribute() can't be used here because it returns a CtAttribute, not a
// CtJdbcAttribute
- CtCassandraAttribute ctCassandraAttribute = CtCassandraAttribute.Factory.newInstance();
+ CtCassandraAttribute ctCassandraAttribute = new CtCassandraAttribute();
ctCassandraAttribute.setJavaName(cassAttribute.getJavaName());
ctCassandraAttribute.setJavaType(cassAttribute.getJavaType());
@@ -72,11 +74,11 @@ public void visit(CpoAttribute cpoAttribute) {
ctCassandraAttribute.setDataType(cassAttribute.getDataType());
if (cassAttribute.getTransformClassName() != null
- && cassAttribute.getTransformClassName().length() > 0) {
+ && !cassAttribute.getTransformClassName().isEmpty()) {
ctCassandraAttribute.setTransformClass(cassAttribute.getTransformClassName());
}
- if (cassAttribute.getDescription() != null && cassAttribute.getDescription().length() > 0) {
+ if (cassAttribute.getDescription() != null && !cassAttribute.getDescription().isEmpty()) {
ctCassandraAttribute.setDescription(cassAttribute.getDescription());
}
@@ -89,8 +91,9 @@ public void visit(CpoAttribute cpoAttribute) {
}
// add it to the class
- CtAttribute ctAttribute = currentCtClass.addNewCpoAttribute();
- ctAttribute.set(ctCassandraAttribute);
+ currentCtClass
+ .getCpoAttribute()
+ .add(objectFactory.createCassandraAttribute(ctCassandraAttribute));
}
}
@@ -101,16 +104,17 @@ public void visit(CpoArgument cpoArgument) {
// CtFunction.addNewCpoArgument() can't be used here because it returns a CtArgument, not a
// ctCassandraArgument
- CtCassandraArgument ctCassandraArgument = CtCassandraArgument.Factory.newInstance();
+ CtCassandraArgument ctCassandraArgument = new CtCassandraArgument();
ctCassandraArgument.setAttributeName(cpoArgument.getName());
- if (cpoArgument.getDescription() != null && cpoArgument.getDescription().length() > 0) {
+ if (cpoArgument.getDescription() != null && !cpoArgument.getDescription().isEmpty()) {
ctCassandraArgument.setDescription(cpoArgument.getDescription());
}
- CtArgument ctArgument = currentCtFunction.addNewCpoArgument();
- ctArgument.set(ctCassandraArgument);
+ currentCtFunction
+ .getCpoArgument()
+ .add(objectFactory.createCassandraArgument(ctCassandraArgument));
}
}
}
diff --git a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/meta/CassandraCpoMetaAdapter.java b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/meta/CassandraCpoMetaAdapter.java
index d53a19807..62b5fb3b8 100644
--- a/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/meta/CassandraCpoMetaAdapter.java
+++ b/cpo-cassandra/src/main/java/org/synchronoss/cpo/cassandra/meta/CassandraCpoMetaAdapter.java
@@ -34,8 +34,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.synchronoss.cpo.CpoException;
-import org.synchronoss.cpo.cassandra.cpoCassandraMeta.CtCassandraAttribute;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtAttribute;
+import org.synchronoss.cpo.cpometa.CtAttribute;
+import org.synchronoss.cpo.cpometa.CtCassandraAttribute;
import org.synchronoss.cpo.meta.AbstractCpoMetaAdapter;
import org.synchronoss.cpo.meta.DataTypeMapEntry;
import org.synchronoss.cpo.meta.DataTypeMapper;
diff --git a/cpo-cassandra/src/test/java/org/synchronoss/cpo/cassandra/XmlValidationTest.java b/cpo-cassandra/src/test/java/org/synchronoss/cpo/cassandra/XmlValidationTest.java
index ed4e8211b..2b63e4e5e 100644
--- a/cpo-cassandra/src/test/java/org/synchronoss/cpo/cassandra/XmlValidationTest.java
+++ b/cpo-cassandra/src/test/java/org/synchronoss/cpo/cassandra/XmlValidationTest.java
@@ -22,16 +22,11 @@
* ]]
*/
-import static org.testng.Assert.fail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import org.apache.xmlbeans.XmlException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.synchronoss.cpo.core.cpoCoreConfig.CpoConfigDocument;
-import org.synchronoss.cpo.helper.CpoClassLoader;
-import org.synchronoss.cpo.helper.XmlBeansHelper;
+import org.synchronoss.cpo.cpoconfig.CtCpoConfig;
+import org.synchronoss.cpo.helper.XmlHelper;
+import org.testng.Assert;
import org.testng.annotations.Test;
/**
@@ -45,37 +40,23 @@ public class XmlValidationTest {
@Test
public void testBadXml() {
- InputStream is = CpoClassLoader.getResourceAsStream(BAD_CPO_CONFIG_XML);
+ var errBuilder = new StringBuilder();
- try {
- CpoConfigDocument configDoc = CpoConfigDocument.Factory.parse(is);
- String errMsg = XmlBeansHelper.validateXml(configDoc);
- if (errMsg == null) {
- fail("Should have received an error message");
- } else {
- logger.debug(errMsg);
- }
- } catch (IOException ioe) {
- fail("Could not read config xml");
- } catch (XmlException xe) {
- fail("Config xml was not well formed");
- }
+ CtCpoConfig cpoConfig =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_CONFIG_XSD, BAD_CPO_CONFIG_XML, CtCpoConfig.class, errBuilder);
+ Assert.assertFalse(errBuilder.isEmpty(), "Should have received an error message");
}
@Test
public void testGoodXml() {
- InputStream is = CpoClassLoader.getResourceAsStream(CPO_CONFIG_XML);
-
- try {
- CpoConfigDocument configDoc = CpoConfigDocument.Factory.parse(is);
- String errMsg = XmlBeansHelper.validateXml(configDoc);
- if (errMsg != null) {
- fail("Should have received an error message:" + errMsg);
- }
- } catch (IOException ioe) {
- fail("Could not read config xml");
- } catch (XmlException xe) {
- fail("Config xml was not well formed");
- }
+ var errBuilder = new StringBuilder();
+
+ CtCpoConfig cpoConfig =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_CONFIG_XSD, CPO_CONFIG_XML, CtCpoConfig.class, errBuilder);
+ Assert.assertTrue(
+ errBuilder.isEmpty(),
+ "Should not have received an error message: " + errBuilder.toString());
}
}
diff --git a/cpo-cassandra/src/test/resources/badConfig.xml b/cpo-cassandra/src/test/resources/badConfig.xml
index 21720824b..2aa2e312c 100644
--- a/cpo-cassandra/src/test/resources/badConfig.xml
+++ b/cpo-cassandra/src/test/resources/badConfig.xml
@@ -21,22 +21,20 @@
]]
-->
-
-
- /cassandraMetaData.xml
-
+
+ /cassandraMetaData.xml
+
-
- cassandraMeta
- org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
-
- ${cpo.cassandra.contactPoint}
-
-
-
+
+ cassandraMeta
+ org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
+
+ ${cpo.cassandra.contactPoint}
+
+
+
diff --git a/cpo-cassandra/src/test/resources/cassandraMetaData.xml b/cpo-cassandra/src/test/resources/cassandraMetaData.xml
index 08b7d4b99..727306887 100644
--- a/cpo-cassandra/src/test/resources/cassandraMetaData.xml
+++ b/cpo-cassandra/src/test/resources/cassandraMetaData.xml
@@ -22,137 +22,136 @@
-->
-
+
id
int
id
INT
-
+
attrAscii
java.lang.String
attr_ascii
ASCII
-
+
attrBigInt
long
attr_bigint
BIGINT
-
+
attrBlob
java.nio.ByteBuffer
attr_blob
BLOB
-
+
attrBlob2
java.nio.ByteBuffer
attr_blob2
BLOB
-
+
attrBool
boolean
attr_bool
BOOLEAN
-
+
attrCounter
long
attr_counter
COUNTER
-
+
attrDecimal
java.math.BigDecimal
attr_decimal
DECIMAL
-
+
attrDouble
double
attr_double
DOUBLE
-
+
attrFloat
float
attr_float
FLOAT
-
+
attrInet
java.net.InetAddress
attr_inet
INET
-
+
attrInt
int
attr_int
INT
org.synchronoss.cpo.cassandra.transform.TransformNoOp
-
+
attrList
java.util.List
attr_list
LIST
- java.lang.String
+ java.lang.String
-
+
attrMap
java.util.Map
attr_map
MAP
- java.lang.String
- java.lang.String
+ java.lang.String
+ java.lang.String
-
+
attrSet
java.util.Set
attr_set
SET
- java.lang.String
+ java.lang.String
-
+
attrText
java.lang.String
attr_text
TEXT
-
+
attrTimeUUID
java.util.UUID
attr_timeuuid
TIMEUUID
-
+
attrTimestamp
java.util.Date
attr_timestamp
TIMESTAMP
-
+
attrUUID
java.util.UUID
attr_uuid
UUID
-
+
attrVarChar
java.lang.String
attr_varchar
VARCHAR
-
+
attrVarInt
java.math.BigInteger
attr_varint
@@ -161,61 +160,61 @@
insert into value_object(id, attr_ascii, attr_bigint, attr_blob, attr_bool, attr_decimal, attr_double, attr_float, attr_inet, attr_int, attr_text, attr_timestamp, attr_timeuuid, attr_uuid, attr_varchar, attr_varint, attr_list, attr_set, attr_map) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
-
+
id
-
+
attrAscii
-
+
attrBigInt
-
+
attrBlob
-
+
attrBool
-
+
attrDecimal
-
+
attrDouble
-
+
attrFloat
-
+
attrInet
-
+
attrInt
-
+
attrText
-
+
attrTimestamp
-
+
attrTimeUUID
-
+
attrUUID
-
+
attrVarChar
-
+
attrVarInt
-
+
attrList
-
+
attrSet
-
+
attrMap
@@ -223,13 +222,13 @@
insert into value_object (id,attr_varchar,attr_int) values (?,?,?)
-
+
id
-
+
attrVarChar
-
+
attrInt
@@ -237,7 +236,7 @@
delete from value_object where id = ?
-
+
id
@@ -245,7 +244,7 @@
delete from value_object where id = ?
-
+
id
@@ -253,7 +252,7 @@
select count(1) from value_object where id = ?
-
+
id
@@ -266,10 +265,10 @@
select * from value_object where attr_varchar=? __CPO_WHERE__ and attr_int=?
-
+
attrVarChar
-
+
attrInt
@@ -287,7 +286,7 @@
select * from value_object where id = ?
-
+
id
@@ -295,7 +294,7 @@
Select * from value_object where id = ?
-
+
id
@@ -303,7 +302,7 @@
update value_object set attr_int=?
-
+
attrInt
@@ -311,13 +310,13 @@
insert into value_object (id, attr_blob, attr_blob2) values (?,?,?)
-
+
id
-
+
attrBlob
-
+
attrBlob2
@@ -325,7 +324,7 @@
delete from value_object where id = ?
-
+
id
@@ -333,7 +332,7 @@
select * from value_object where id = ?
-
+
id
@@ -341,13 +340,13 @@
update value_object set attr_blob=?, attr_blob2=? where id = ?
-
+
attrBlob
-
+
attrBlob2
-
+
id
diff --git a/cpo-cassandra/src/test/resources/cpoConfig.xml b/cpo-cassandra/src/test/resources/cpoConfig.xml
index 1c7ef8d90..19af15406 100644
--- a/cpo-cassandra/src/test/resources/cpoConfig.xml
+++ b/cpo-cassandra/src/test/resources/cpoConfig.xml
@@ -21,51 +21,49 @@
]]
-->
-
-
- ${cassandra.metaXml}
-
-
- ${cassandra.metaXml}
-
-
- ${cassandra.metaXml}
-
+
+ ${cassandra.metaXml}
+
+
+ ${cassandra.metaXml}
+
+
+ ${cassandra.metaXml}
+
-
- cassandraMeta
- org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
-
- ${cassandra.keyspace}
- ${cassandra.contactPoint}
- ${cassandra.nativeport}
-
-
-
-
-
-
- caseSensitive
- org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
-
- ${cassandra.keyspace}
- ${cassandra.contactPoint}
- ${cassandra.nativeport}
-
-
-
- caseInsensitive
- org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
-
- ${cassandra.keyspace}
- ${cassandra.contactPoint}
- ${cassandra.nativeport}
-
-
-
+
+ cassandraMeta
+ org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
+
+ ${cassandra.keyspace}
+ ${cassandra.contactPoint}
+ ${cassandra.nativeport}
+
+
+
+
+
+
+ caseSensitive
+ org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
+
+ ${cassandra.keyspace}
+ ${cassandra.contactPoint}
+ ${cassandra.nativeport}
+
+
+
+ caseInsensitive
+ org.synchronoss.cpo.cassandra.config.CassandraCpoConfigProcessor
+
+ ${cassandra.keyspace}
+ ${cassandra.contactPoint}
+ ${cassandra.nativeport}
+
+
+
diff --git a/cpo-cassandra/src/test/resources/hotDeployMetaData.xml b/cpo-cassandra/src/test/resources/hotDeployMetaData.xml
index 642c13006..64c27bab4 100644
--- a/cpo-cassandra/src/test/resources/hotDeployMetaData.xml
+++ b/cpo-cassandra/src/test/resources/hotDeployMetaData.xml
@@ -21,8 +21,8 @@
]]
-->
-
+
diff --git a/cpo-core/pom.xml b/cpo-core/pom.xml
index 1283fe79a..b33e16760 100644
--- a/cpo-core/pom.xml
+++ b/cpo-core/pom.xml
@@ -49,11 +49,6 @@
javax.servlet
javax.servlet-api
-
-
- org.apache.logging.log4j
- log4j-to-slf4j
-
ch.qos.logback
@@ -67,23 +62,37 @@
${logbackVersion}
test
-
- org.apache.xmlbeans
- xmlbeans
-
+
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ runtime
+
-
- org.apache.xmlbeans
- xmlbeans
-
- ${project.basedir}/src/main/xsd
- ${project.build.directory}/generated-sources/xmlbeans
- ${project.groupId}.${project.name}.metadata
- ${project.name}
-
-
+
+ org.codehaus.mojo
+ jaxb2-maven-plugin
+ 4.0.0
+
+
+ xjc-schema1
+
+ xjc
+
+
+
+
+ src/main/resources/xsd
+
+
+
+
+
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/CpoAdapterFactoryManager.java b/cpo-core/src/main/java/org/synchronoss/cpo/CpoAdapterFactoryManager.java
index 1c88837de..e19b5d0fc 100644
--- a/cpo-core/src/main/java/org/synchronoss/cpo/CpoAdapterFactoryManager.java
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/CpoAdapterFactoryManager.java
@@ -22,22 +22,18 @@
* ]]
*/
-import java.io.IOException;
-import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.locks.ReentrantLock;
-import org.apache.xmlbeans.XmlException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.synchronoss.cpo.cache.CpoAdapterFactoryCache;
import org.synchronoss.cpo.config.CpoConfigProcessor;
-import org.synchronoss.cpo.core.cpoCoreConfig.CpoConfigDocument;
-import org.synchronoss.cpo.core.cpoCoreConfig.CtCpoConfig;
-import org.synchronoss.cpo.core.cpoCoreConfig.CtDataSourceConfig;
-import org.synchronoss.cpo.core.cpoCoreConfig.CtMetaDescriptor;
+import org.synchronoss.cpo.cpoconfig.CtCpoConfig;
+import org.synchronoss.cpo.cpoconfig.CtDataSourceConfig;
+import org.synchronoss.cpo.cpoconfig.CtMetaDescriptor;
import org.synchronoss.cpo.helper.CpoClassLoader;
import org.synchronoss.cpo.helper.ExceptionHelper;
-import org.synchronoss.cpo.helper.XmlBeansHelper;
+import org.synchronoss.cpo.helper.XmlHelper;
import org.synchronoss.cpo.jta.CpoXaResource;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
@@ -115,68 +111,47 @@ private static void loadAdapters(String cpoConfig) {
lock.lock();
try {
var errBuilder = new StringBuilder();
- try (InputStream is = XmlBeansHelper.loadXmlStream(cpoConfig, errBuilder)) {
- CpoConfigDocument configDoc;
- if (is == null) {
- // See if the config is sent in as a string
- try {
- configDoc = CpoConfigDocument.Factory.parse(cpoConfig);
- } catch (XmlException e) {
- throw new CpoException(errBuilder.toString(), e);
- }
- } else {
- configDoc = CpoConfigDocument.Factory.parse(is);
- }
+ CtCpoConfig ctCpoConfig =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_CONFIG_XSD, cpoConfig, CtCpoConfig.class, errBuilder);
+ if (!errBuilder.isEmpty()) {
+ throw new RuntimeException("Error parsing CPO config XML: " + errBuilder.toString());
+ }
+ logger.info("Processing Config File: " + cpoConfig);
+ // Moving the clear to here to make sure we get a good file before we just blow away all
+ // the
+ // adapters.
+ // We are doing a load clear all the caches first, in case the load gets called more than
+ // once.
+ CpoMetaDescriptor.clearAllInstances();
+ clearCpoAdapterFactoryCache();
+
+ // Set the default context.
+ defaultContext = ctCpoConfig.getDefaultConfig();
+ if (defaultContext == null) {
+ // make the first listed config the default.
+ defaultContext = ctCpoConfig.getDataConfig().getFirst().getValue().getName();
+ }
+
+ for (CtMetaDescriptor metaDescriptor : ctCpoConfig.getMetaConfig()) {
+ boolean caseSensitive = true;
+ caseSensitive = metaDescriptor.isCaseSensitive();
+
+ // this will create and cache, so we don't need the return
+ CpoMetaDescriptor.getInstance(
+ metaDescriptor.getName(), metaDescriptor.getMetaXml(), caseSensitive);
+ }
- String errMsg = XmlBeansHelper.validateXml(configDoc);
- if (errMsg != null) {
- logger.error("Invalid CPO Config file: " + cpoConfig + ":" + errMsg);
- } else {
- logger.info("Processing Config File: " + cpoConfig);
- // Moving the clear to here to make sure we get a good file before we just blow away all
- // the
- // adapters.
- // We are doing a load clear all the caches first, in case the load gets called more than
- // once.
- CpoMetaDescriptor.clearAllInstances();
- clearCpoAdapterFactoryCache();
-
- CtCpoConfig ctCpoConfig = configDoc.getCpoConfig();
-
- // Set the default context.
- if (ctCpoConfig.isSetDefaultConfig()) {
- defaultContext = ctCpoConfig.getDefaultConfig();
- } else {
- // make the first listed config the default.
- defaultContext = ctCpoConfig.getDataConfigArray(0).getName();
- }
-
- for (CtMetaDescriptor metaDescriptor : ctCpoConfig.getMetaConfigArray()) {
- boolean caseSensitive = true;
- if (metaDescriptor.isSetCaseSensitive()) {
- caseSensitive = metaDescriptor.getCaseSensitive();
- }
-
- // this will create and cache, so we don't need the return
- CpoMetaDescriptor.getInstance(
- metaDescriptor.getName(), metaDescriptor.getMetaXmlArray(), caseSensitive);
- }
-
- // now lets loop through all the adapters and get them cached.
- for (CtDataSourceConfig dataSourceConfig : ctCpoConfig.getDataConfigArray()) {
- CpoAdapterFactory cpoAdapterFactory = makeCpoAdapterFactory(dataSourceConfig);
- if (cpoAdapterFactory != null) {
- addCpoAdapterFactory(dataSourceConfig.getName(), cpoAdapterFactory);
- }
- }
+ // now lets loop through all the adapters and get them cached.
+ for (var jaxbElement : ctCpoConfig.getDataConfig()) {
+ CtDataSourceConfig dataSourceConfig = jaxbElement.getValue();
+ CpoAdapterFactory cpoAdapterFactory = makeCpoAdapterFactory(dataSourceConfig);
+ if (cpoAdapterFactory != null) {
+ addCpoAdapterFactory(dataSourceConfig.getName(), cpoAdapterFactory);
}
- } catch (IOException ioe) {
- logger.error("Error reading " + cpoConfig + ": ", ioe);
- } catch (XmlException xe) {
- logger.error("Error processing " + cpoConfig + ": Invalid XML", xe);
- } catch (CpoException ce) {
- logger.error("Error processing " + cpoConfig + ": ", ce);
}
+ } catch (Exception e) {
+ logger.error("Error unmarshalling XML " + cpoConfig + ": ", e);
} finally {
lock.unlock();
}
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/config/CpoConfigProcessor.java b/cpo-core/src/main/java/org/synchronoss/cpo/config/CpoConfigProcessor.java
index 33bb68ea7..9da8ffc5a 100644
--- a/cpo-core/src/main/java/org/synchronoss/cpo/config/CpoConfigProcessor.java
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/config/CpoConfigProcessor.java
@@ -24,7 +24,7 @@
import org.synchronoss.cpo.CpoAdapterFactory;
import org.synchronoss.cpo.CpoException;
-import org.synchronoss.cpo.core.cpoCoreConfig.CtDataSourceConfig;
+import org.synchronoss.cpo.cpoconfig.CtDataSourceConfig;
/**
* @author dberry
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/exporter/CoreMetaXmlObjectExporter.java b/cpo-core/src/main/java/org/synchronoss/cpo/exporter/CoreMetaXmlObjectExporter.java
index 895a4f12e..b5919a873 100644
--- a/cpo-core/src/main/java/org/synchronoss/cpo/exporter/CoreMetaXmlObjectExporter.java
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/exporter/CoreMetaXmlObjectExporter.java
@@ -23,20 +23,9 @@
*/
import org.synchronoss.cpo.MetaVisitor;
-import org.synchronoss.cpo.core.cpoCoreMeta.CpoMetaDataDocument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtArgument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtAttribute;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtClass;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtCpoMetaData;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtFunction;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtFunctionGroup;
-import org.synchronoss.cpo.core.cpoCoreMeta.StFunctionGroupType;
+import org.synchronoss.cpo.cpometa.*;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
-import org.synchronoss.cpo.meta.domain.CpoArgument;
-import org.synchronoss.cpo.meta.domain.CpoAttribute;
-import org.synchronoss.cpo.meta.domain.CpoClass;
-import org.synchronoss.cpo.meta.domain.CpoFunction;
-import org.synchronoss.cpo.meta.domain.CpoFunctionGroup;
+import org.synchronoss.cpo.meta.domain.*;
/**
* XmlObject exporter for meta objects
@@ -46,29 +35,31 @@
*/
public class CoreMetaXmlObjectExporter implements MetaXmlObjectExporter, MetaVisitor {
- protected CpoMetaDataDocument cpoMetaDataDocument = null;
+ protected CtCpoMetaData ctCpoMetaData = null;
protected CtClass currentCtClass;
protected CtFunctionGroup currentCtFunctionGroup;
protected CtFunction currentCtFunction;
+ protected ObjectFactory objectFactory = new ObjectFactory();
public CoreMetaXmlObjectExporter(CpoMetaDescriptor metaDescriptor) {
- cpoMetaDataDocument = CpoMetaDataDocument.Factory.newInstance();
- CtCpoMetaData ctCpoMetaData = cpoMetaDataDocument.addNewCpoMetaData();
+ ctCpoMetaData = new CtCpoMetaData();
ctCpoMetaData.setMetaDescriptor(metaDescriptor.getClass().getName());
ctCpoMetaData.setDefaultPackageName(metaDescriptor.getDefaultPackageName());
}
@Override
- public CpoMetaDataDocument getCpoMetaDataDocument() {
- return cpoMetaDataDocument;
+ public CtCpoMetaData getCpoMetaData() {
+ return ctCpoMetaData;
}
@Override
public void visit(CpoClass cpoClass) {
- CtClass ctClass = cpoMetaDataDocument.getCpoMetaData().addNewCpoClass();
+ CtClass ctClass = new CtClass();
+ ctCpoMetaData.getCpoClass().add(ctClass);
+
ctClass.setName(cpoClass.getName());
- if (cpoClass.getDescription() != null && cpoClass.getDescription().length() > 0) {
+ if (cpoClass.getDescription() != null && !cpoClass.getDescription().isEmpty()) {
ctClass.setDescription(cpoClass.getDescription());
}
@@ -79,7 +70,9 @@ public void visit(CpoClass cpoClass) {
@Override
public void visit(CpoAttribute cpoAttribute) {
if (currentCtClass != null) {
- CtAttribute ctAttribute = currentCtClass.addNewCpoAttribute();
+ CtAttribute ctAttribute = new CtAttribute();
+ var jaxbElement = objectFactory.createCpoAttribute(ctAttribute);
+ currentCtClass.getCpoAttribute().add(jaxbElement);
ctAttribute.setJavaName(cpoAttribute.getJavaName());
ctAttribute.setJavaType(cpoAttribute.getJavaType());
@@ -87,11 +80,11 @@ public void visit(CpoAttribute cpoAttribute) {
ctAttribute.setDataType(cpoAttribute.getDataType());
if (cpoAttribute.getTransformClassName() != null
- && cpoAttribute.getTransformClassName().length() > 0) {
+ && !cpoAttribute.getTransformClassName().isEmpty()) {
ctAttribute.setTransformClass(cpoAttribute.getTransformClassName());
}
- if (cpoAttribute.getDescription() != null && cpoAttribute.getDescription().length() > 0) {
+ if (cpoAttribute.getDescription() != null && !cpoAttribute.getDescription().isEmpty()) {
ctAttribute.setDescription(cpoAttribute.getDescription());
}
}
@@ -100,16 +93,17 @@ public void visit(CpoAttribute cpoAttribute) {
@Override
public void visit(CpoFunctionGroup cpoFunctionGroup) {
if (currentCtClass != null) {
- CtFunctionGroup ctFunctionGroup = currentCtClass.addNewCpoFunctionGroup();
+ CtFunctionGroup ctFunctionGroup = new CtFunctionGroup();
+ currentCtClass.getCpoFunctionGroup().add(ctFunctionGroup);
- if (cpoFunctionGroup.getName() != null && cpoFunctionGroup.getName().length() > 0) {
+ if (cpoFunctionGroup.getName() != null && !cpoFunctionGroup.getName().isEmpty()) {
ctFunctionGroup.setName(cpoFunctionGroup.getName());
}
- ctFunctionGroup.setType(StFunctionGroupType.Enum.forString(cpoFunctionGroup.getType()));
+ ctFunctionGroup.setType(StFunctionGroupType.fromValue(cpoFunctionGroup.getType()));
if (cpoFunctionGroup.getDescription() != null
- && cpoFunctionGroup.getDescription().length() > 0) {
+ && !cpoFunctionGroup.getDescription().isEmpty()) {
ctFunctionGroup.setDescription(cpoFunctionGroup.getDescription());
}
@@ -121,12 +115,13 @@ public void visit(CpoFunctionGroup cpoFunctionGroup) {
@Override
public void visit(CpoFunction cpoFunction) {
if (currentCtFunctionGroup != null) {
- CtFunction ctFunction = currentCtFunctionGroup.addNewCpoFunction();
+ CtFunction ctFunction = new CtFunction();
+ currentCtFunctionGroup.getCpoFunction().add(ctFunction);
ctFunction.setName(cpoFunction.getName());
ctFunction.setExpression(cpoFunction.getExpression());
- if (cpoFunction.getDescription() != null && cpoFunction.getDescription().length() > 0) {
+ if (cpoFunction.getDescription() != null && !cpoFunction.getDescription().isEmpty()) {
ctFunction.setDescription(cpoFunction.getDescription());
}
@@ -138,11 +133,13 @@ public void visit(CpoFunction cpoFunction) {
@Override
public void visit(CpoArgument cpoArgument) {
if (currentCtFunction != null) {
- CtArgument ctArgument = currentCtFunction.addNewCpoArgument();
+ CtArgument ctArgument = new CtArgument();
+ var jaxbElement = objectFactory.createCpoArgument(ctArgument);
+ currentCtFunction.getCpoArgument().add(jaxbElement);
ctArgument.setAttributeName(cpoArgument.getAttribute().getJavaName());
- if (cpoArgument.getDescription() != null && cpoArgument.getDescription().length() > 0) {
+ if (cpoArgument.getDescription() != null && !cpoArgument.getDescription().isEmpty()) {
ctArgument.setDescription(cpoArgument.getDescription());
}
}
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/exporter/MetaXmlObjectExporter.java b/cpo-core/src/main/java/org/synchronoss/cpo/exporter/MetaXmlObjectExporter.java
index bd69ec025..3b1c26d95 100644
--- a/cpo-core/src/main/java/org/synchronoss/cpo/exporter/MetaXmlObjectExporter.java
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/exporter/MetaXmlObjectExporter.java
@@ -23,7 +23,7 @@
*/
import org.synchronoss.cpo.MetaVisitor;
-import org.synchronoss.cpo.core.cpoCoreMeta.CpoMetaDataDocument;
+import org.synchronoss.cpo.cpometa.CtCpoMetaData;
/**
* XmlObject exporter for meta objects
@@ -33,5 +33,5 @@
*/
public interface MetaXmlObjectExporter extends MetaVisitor {
- CpoMetaDataDocument getCpoMetaDataDocument();
+ CtCpoMetaData getCpoMetaData();
}
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/helper/XmlBeansHelper.java b/cpo-core/src/main/java/org/synchronoss/cpo/helper/XmlBeansHelper.java
deleted file mode 100644
index 597685049..000000000
--- a/cpo-core/src/main/java/org/synchronoss/cpo/helper/XmlBeansHelper.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.synchronoss.cpo.helper;
-
-/*-
- * [[
- * core
- * ==
- * Copyright (C) 2003 - 2025 David E. Berry
- * ==
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * .
- * ]]
- */
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import org.apache.xmlbeans.XmlError;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.XmlOptions;
-
-/**
- * @author dberry
- */
-public class XmlBeansHelper {
- public static String validateXml(XmlObject xmlObj) {
- StringBuilder sb = new StringBuilder();
- String errMsg = null;
- ArrayList validationErrors = new ArrayList<>();
- XmlOptions validationOptions = new XmlOptions();
- validationOptions.setErrorListener(validationErrors);
- boolean isValid =
- xmlObj.validate(validationOptions); // to display error we should pass options.
- if (!isValid) {
- for (XmlError es : validationErrors) {
- sb.append(es.getMessage());
- }
- if (sb.length() > 0) errMsg = sb.toString();
- }
- return errMsg;
- }
-
- public static XmlOptions getXmlOptions() {
- XmlOptions xo = new XmlOptions();
- xo.setCharacterEncoding("utf-8");
- xo.setSaveAggressiveNamespaces();
- xo.setSaveNamespacesFirst();
- xo.setSavePrettyPrint();
- xo.setUseDefaultNamespace();
- return xo;
- }
-
- public static InputStream loadXmlStream(String xmlStr, StringBuilder errorBuilder) {
- InputStream is = null;
- // See if the file is a uri
- try {
- URL cpoConfigUrl = new URL(xmlStr);
- is = cpoConfigUrl.openStream();
- } catch (IOException e) {
- errorBuilder.append("Uri Not Found: ").append(xmlStr).append("\n");
- }
-
- // See if the file is a resource in the jar
- if (is == null) is = CpoClassLoader.getResourceAsStream(xmlStr);
-
- if (is == null) {
- errorBuilder.append("Resource Not Found: ").append(xmlStr).append("\n");
- try {
- // See if the file is a local file on the server
- is = new FileInputStream(xmlStr);
- } catch (FileNotFoundException fnfe) {
- errorBuilder.append("File Not Found: ").append(xmlStr).append("\n");
- is = null;
- }
- }
-
- return is;
- }
-}
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/helper/XmlHelper.java b/cpo-core/src/main/java/org/synchronoss/cpo/helper/XmlHelper.java
new file mode 100644
index 000000000..29dea4266
--- /dev/null
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/helper/XmlHelper.java
@@ -0,0 +1,116 @@
+package org.synchronoss.cpo.helper;
+
+/*-
+ * [[
+ * core
+ * ==
+ * Copyright (C) 2003 - 2025 David E. Berry
+ * ==
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * .
+ * ]]
+ */
+
+import jakarta.xml.bind.*;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import javax.xml.XMLConstants;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+
+/**
+ * @author dberry
+ */
+public class XmlHelper {
+ public static final String CPO_META_XSD = "xsd/CpoMeta.xsd";
+ public static final String CPO_CONFIG_XSD = "xsd/CpoConfig.xsd";
+
+ public static InputStream loadXmlStream(String xmlStr, StringBuilder errorBuilder) {
+ InputStream is = null;
+ int errBuilderLen = errorBuilder.length();
+
+ // See if the file is a uri
+ try {
+ URL cpoConfigUrl = new URL(xmlStr);
+ is = cpoConfigUrl.openStream();
+ } catch (IOException e) {
+ errorBuilder.append("Uri Not Found: ").append(xmlStr).append("\n");
+ }
+
+ // See if the file is a resource in the jar
+ if (is == null) is = CpoClassLoader.getResourceAsStream(xmlStr);
+
+ if (is == null) {
+ errorBuilder.append("Resource Not Found: ").append(xmlStr).append("\n");
+ try {
+ // See if the file is a local file on the server
+ is = new FileInputStream(xmlStr);
+ } catch (FileNotFoundException fnfe) {
+ errorBuilder.append("File Not Found: ").append(xmlStr).append("\n");
+ is = null;
+ }
+ }
+ if (is != null) errorBuilder.setLength(errBuilderLen);
+
+ return is;
+ }
+
+ public static void setMarshallerProperties(Marshaller marshaller) throws PropertyException {
+ marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ }
+
+ public static T unmarshalXmlObject(
+ String xsd, String xml, Class objClass, StringBuilder errorBuilder) {
+ try (var xsdStream = loadXmlStream(xsd, errorBuilder);
+ var xmlStream = loadXmlStream(xml, errorBuilder)) {
+ StreamSource configSource = new StreamSource(xsdStream);
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Schema schema = schemaFactory.newSchema(configSource);
+
+ JAXBContext jaxbContext = JAXBContext.newInstance(objClass);
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ unmarshaller.setSchema(schema);
+ unmarshaller.setEventHandler(
+ (ValidationEventHandler)
+ event -> {
+ ValidationEventLocator locator = event.getLocator();
+ errorBuilder.append("Validation Error: " + event.getMessage() + "\n");
+ errorBuilder.append(
+ "Line: "
+ + locator.getLineNumber()
+ + ", Column: "
+ + locator.getColumnNumber()
+ + "\n");
+ return true; // Return true to continue processing, false to stop
+ });
+
+ Object xmlObject = unmarshaller.unmarshal(xmlStream);
+ @SuppressWarnings("unchecked")
+ T obj =
+ (xmlObject instanceof JAXBElement)
+ ? (T) ((JAXBElement>) xmlObject).getValue()
+ : (T) xmlObject;
+
+ return obj;
+ } catch (Exception e) {
+ errorBuilder.append("Could not reading config xml " + xml + "or xsd " + xsd + "\n");
+ }
+ return null;
+ }
+}
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/meta/AbstractCpoMetaAdapter.java b/cpo-core/src/main/java/org/synchronoss/cpo/meta/AbstractCpoMetaAdapter.java
index 367d47a5c..530e0731d 100644
--- a/cpo-core/src/main/java/org/synchronoss/cpo/meta/AbstractCpoMetaAdapter.java
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/meta/AbstractCpoMetaAdapter.java
@@ -26,20 +26,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.synchronoss.cpo.CpoException;
-import org.synchronoss.cpo.core.cpoCoreMeta.CpoMetaDataDocument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtArgument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtAttribute;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtClass;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtFunction;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtFunctionGroup;
+import org.synchronoss.cpo.cpometa.*;
import org.synchronoss.cpo.enums.Crud;
-import org.synchronoss.cpo.meta.domain.CpoArgument;
-import org.synchronoss.cpo.meta.domain.CpoAttribute;
-import org.synchronoss.cpo.meta.domain.CpoClass;
-import org.synchronoss.cpo.meta.domain.CpoClassCaseInsensitive;
-import org.synchronoss.cpo.meta.domain.CpoClassCaseSensitive;
-import org.synchronoss.cpo.meta.domain.CpoFunction;
-import org.synchronoss.cpo.meta.domain.CpoFunctionGroup;
+import org.synchronoss.cpo.meta.domain.*;
/**
* @author dberry
@@ -163,9 +152,9 @@ public List getAllowableDataTypes() throws CpoException {
protected abstract DataTypeMapper getDataTypeMapper();
- protected void loadCpoMetaDataDocument(CpoMetaDataDocument metaDataDoc, boolean caseSensitive)
+ protected void loadCpoMetaDataDocument(CtCpoMetaData ctCpoMetaData, boolean caseSensitive)
throws CpoException {
- for (CtClass ctClass : metaDataDoc.getCpoMetaData().getCpoClassArray()) {
+ for (CtClass ctClass : ctCpoMetaData.getCpoClass()) {
CpoClass cpoClass = getCpoClass(ctClass.getName());
if (cpoClass == null) {
@@ -185,19 +174,28 @@ protected void loadCpoClass(CpoClass cpoClass, CtClass ctClass) throws CpoExcept
currentClass = cpoClass;
- for (CtAttribute ctAttribute : ctClass.getCpoAttributeArray()) {
+ logger.debug("Loading " + ctClass.getCpoAttribute().size() + " attributes ");
+
+ for (var jaxbElement : ctClass.getCpoAttribute()) {
+ CtAttribute ctAttribute = jaxbElement.getValue();
+ logger.debug("ctAttribute: " + ctAttribute);
+ logger.debug("ctAttribute.getValue(): " + ctAttribute);
+ logger.debug("ctAttribute.getValue().getJavaName(): " + ctAttribute.getJavaName());
CpoAttribute cpoAttribute = cpoClass.getAttributeJava(ctAttribute.getJavaName());
+ logger.debug("cpoAttribute: " + cpoAttribute);
if (cpoAttribute == null) {
cpoAttribute = createCpoAttribute();
+ logger.debug("loading attribute: " + ctAttribute.getJavaName());
loadCpoAttribute(cpoAttribute, ctAttribute);
+ logger.debug("loaded attribute: " + ctAttribute.getJavaName());
cpoClass.addAttribute(cpoAttribute);
} else {
loadCpoAttribute(cpoAttribute, ctAttribute);
}
}
- for (CtFunctionGroup ctFunctionGroup : ctClass.getCpoFunctionGroupArray()) {
+ for (CtFunctionGroup ctFunctionGroup : ctClass.getCpoFunctionGroup()) {
CpoFunctionGroup functionGroup = null;
try {
@@ -235,12 +233,10 @@ protected void loadCpoAttribute(CpoAttribute cpoAttribute, CtAttribute ctAttribu
protected void loadCpoFunctionGroup(
CpoFunctionGroup cpoFunctionGroup, CtFunctionGroup ctFunctionGroup) {
cpoFunctionGroup.setDescription(ctFunctionGroup.getDescription());
- if (ctFunctionGroup.isSetName()) {
- cpoFunctionGroup.setName(ctFunctionGroup.getName());
- }
+ cpoFunctionGroup.setName(ctFunctionGroup.getName());
cpoFunctionGroup.setType(ctFunctionGroup.getType().toString());
- for (CtFunction ctFunction : ctFunctionGroup.getCpoFunctionArray()) {
+ for (CtFunction ctFunction : ctFunctionGroup.getCpoFunction()) {
CpoFunction cpoFunction = createCpoFunction();
cpoFunctionGroup.addFunction(cpoFunction);
loadCpoFunction(cpoFunction, ctFunction);
@@ -252,10 +248,13 @@ protected void loadCpoFunction(CpoFunction cpoFunction, CtFunction ctFunction) {
cpoFunction.setExpression(ctFunction.getExpression());
cpoFunction.setDescription(ctFunction.getDescription());
- for (CtArgument ctArgument : ctFunction.getCpoArgumentArray()) {
+ for (var jaxbElement : ctFunction.getCpoArgument()) {
+ CtArgument ctArgument = jaxbElement.getValue();
CpoArgument cpoArgument = createCpoArgument();
cpoFunction.addArgument(cpoArgument);
+ logger.debug("loading argument: " + ctArgument.getAttributeName());
loadCpoArgument(cpoArgument, ctArgument);
+ logger.debug("loaded argument: " + ctArgument.getAttributeName());
}
}
diff --git a/cpo-core/src/main/java/org/synchronoss/cpo/meta/CpoMetaDescriptor.java b/cpo-core/src/main/java/org/synchronoss/cpo/meta/CpoMetaDescriptor.java
index 51861a81d..af888e982 100644
--- a/cpo-core/src/main/java/org/synchronoss/cpo/meta/CpoMetaDescriptor.java
+++ b/cpo-core/src/main/java/org/synchronoss/cpo/meta/CpoMetaDescriptor.java
@@ -22,29 +22,31 @@
* ]]
*/
-import java.io.*;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.JAXBElement;
+import jakarta.xml.bind.JAXBException;
+import jakarta.xml.bind.Marshaller;
+import java.io.File;
+import java.io.OutputStream;
+import java.io.Writer;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import org.apache.xmlbeans.XmlException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.synchronoss.cpo.CpoException;
import org.synchronoss.cpo.cache.CpoMetaDescriptorCache;
-import org.synchronoss.cpo.core.cpoCoreMeta.CpoMetaDataDocument;
+import org.synchronoss.cpo.cpometa.CtCpoMetaData;
+import org.synchronoss.cpo.cpometa.ObjectFactory;
import org.synchronoss.cpo.exporter.CoreMetaXmlObjectExporter;
import org.synchronoss.cpo.exporter.MetaXmlObjectExporter;
import org.synchronoss.cpo.helper.CpoClassLoader;
import org.synchronoss.cpo.helper.ExceptionHelper;
-import org.synchronoss.cpo.helper.XmlBeansHelper;
-import org.synchronoss.cpo.meta.domain.CpoArgument;
-import org.synchronoss.cpo.meta.domain.CpoAttribute;
-import org.synchronoss.cpo.meta.domain.CpoClass;
-import org.synchronoss.cpo.meta.domain.CpoFunction;
-import org.synchronoss.cpo.meta.domain.CpoFunctionGroup;
+import org.synchronoss.cpo.helper.XmlHelper;
+import org.synchronoss.cpo.meta.domain.*;
import org.synchronoss.cpo.parser.ExpressionParser;
/**
@@ -165,109 +167,94 @@ protected static CpoMetaDescriptor createUpdateInstance(
String metaDescriptorClassName = null;
var errBuilder = new StringBuilder();
- for (String metaXml : metaXmls) {
-
- try (InputStream is = XmlBeansHelper.loadXmlStream(metaXml, errBuilder)) {
- CpoMetaDataDocument metaDataDoc;
- if (is == null) {
- // See if the config is sent in as a string
- try {
- metaDataDoc = CpoMetaDataDocument.Factory.parse(metaXml);
- } catch (XmlException e) {
- throw new CpoException(errBuilder.toString(), e);
- }
- } else {
- metaDataDoc = CpoMetaDataDocument.Factory.parse(is);
+ try {
+ logger.debug("CpoMetaDescriptor: " + metaDescriptor);
+
+ for (String metaXml : metaXmls) {
+ logger.debug("Processing: " + metaXml);
+ errBuilder.setLength(0);
+ CtCpoMetaData ctCpoMetaData =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_META_XSD, metaXml, CtCpoMetaData.class, errBuilder);
+ if (!errBuilder.isEmpty()) {
+ throw new RuntimeException("Error parsing CPO meta XML: " + errBuilder.toString());
}
- String errMsg = XmlBeansHelper.validateXml(metaDataDoc);
- if (errMsg != null) {
- throw new CpoException("Invalid metaXml: " + metaXml + ":" + errMsg);
- }
+ try {
+ if (metaDescriptor == null) {
+ logger.debug("Getting descriptor name");
+ metaDescriptorClassName = ctCpoMetaData.getMetaDescriptor();
+ logger.debug("Getting the Class");
+ Class> clazz = CpoClassLoader.forName(metaDescriptorClassName);
+ logger.debug("Getting the Constructor");
+ Constructor> cons = clazz.getConstructor(String.class, boolean.class);
+ logger.debug("Creating the instance");
+ metaDescriptor = (CpoMetaDescriptor) cons.newInstance(name, caseSensitive);
+ logger.debug("Adding the MetaDescriptor");
+ addCpoMetaDescriptor(metaDescriptor);
+ } else if (!metaDescriptor
+ .getClass()
+ .getName()
+ .equals(ctCpoMetaData.getMetaDescriptor())) {
+ throw new CpoException(
+ "Error processing multiple metaXml files. All files must have the same"
+ + " CpoMetaDescriptor class name.");
+ }
- if (metaDescriptor == null) {
- logger.debug("Getting descriptor name");
- metaDescriptorClassName = metaDataDoc.getCpoMetaData().getMetaDescriptor();
- logger.debug("Getting the Class");
- Class> clazz = CpoClassLoader.forName(metaDescriptorClassName);
- logger.debug("Getting the Constructor");
- Constructor> cons = clazz.getConstructor(String.class, boolean.class);
- logger.debug("Creating the instance");
- metaDescriptor = (CpoMetaDescriptor) cons.newInstance(name, caseSensitive);
- logger.debug("Adding the MetaDescriptor");
- addCpoMetaDescriptor(metaDescriptor);
- } else if (!metaDescriptor
- .getClass()
- .getName()
- .equals(metaDataDoc.getCpoMetaData().getMetaDescriptor())) {
+ metaDescriptor.setDefaultPackageName(ctCpoMetaData.getDefaultPackageName());
+ metaDescriptor.getCpoMetaAdapter().loadCpoMetaDataDocument(ctCpoMetaData, caseSensitive);
+ } catch (ClassNotFoundException cnfe) {
+ throw new CpoException(
+ "CpoMetaAdapter not found: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(cnfe));
+ } catch (IllegalAccessException iae) {
+ throw new CpoException(
+ "Could not access CpoMetaAdapter: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(iae));
+ } catch (InstantiationException ie) {
+ throw new CpoException(
+ "Could not instantiate CpoMetaAdapter: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(ie));
+ } catch (InvocationTargetException ite) {
+ throw new CpoException(
+ "Could not invoke constructor: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(ite));
+ } catch (IllegalArgumentException iae) {
throw new CpoException(
- "Error processing multiple metaXml files. All files must have the same"
- + " CpoMetaDescriptor class name.");
+ "Illegal Argument to constructor: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(iae));
+ } catch (NoSuchMethodException nsme) {
+ throw new CpoException(
+ "Could not find constructor: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(nsme));
+ } catch (SecurityException se) {
+ throw new CpoException(
+ "Not allowed to access constructor: "
+ + metaDescriptorClassName
+ + ": "
+ + ExceptionHelper.getLocalizedMessage(se));
+ } catch (ClassCastException cce) {
+ throw new CpoException(
+ "Class is not instance of CpoMetaDescriptor: "
+ + metaDescriptorClassName
+ + ":"
+ + ExceptionHelper.getLocalizedMessage(cce));
}
-
- metaDescriptor.setDefaultPackageName(metaDataDoc.getCpoMetaData().getDefaultPackageName());
- metaDescriptor.getCpoMetaAdapter().loadCpoMetaDataDocument(metaDataDoc, caseSensitive);
- } catch (IOException ioe) {
- throw new CpoException(
- "Error processing metaData from InputStream: "
- + metaXml
- + ": "
- + ExceptionHelper.getLocalizedMessage(ioe));
- } catch (XmlException xe) {
- throw new CpoException(
- "Error processing metaData from String: "
- + metaXml
- + ": "
- + ExceptionHelper.getLocalizedMessage(xe));
- } catch (ClassNotFoundException cnfe) {
- throw new CpoException(
- "CpoMetaAdapter not found: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(cnfe));
- } catch (IllegalAccessException iae) {
- throw new CpoException(
- "Could not access CpoMetaAdapter: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(iae));
- } catch (InstantiationException ie) {
- throw new CpoException(
- "Could not instantiate CpoMetaAdapter: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(ie));
- } catch (InvocationTargetException ite) {
- throw new CpoException(
- "Could not invoke constructor: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(ite));
- } catch (IllegalArgumentException iae) {
- throw new CpoException(
- "Illegal Argument to constructor: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(iae));
- } catch (NoSuchMethodException nsme) {
- throw new CpoException(
- "Could not find constructor: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(nsme));
- } catch (SecurityException se) {
- throw new CpoException(
- "Not allowed to access constructor: "
- + metaDescriptorClassName
- + ": "
- + ExceptionHelper.getLocalizedMessage(se));
- } catch (ClassCastException cce) {
- throw new CpoException(
- "Class is not instance of CpoMetaDescriptor: "
- + metaDescriptorClassName
- + ":"
- + ExceptionHelper.getLocalizedMessage(cce));
}
+ } catch (Exception e) {
+ throw new CpoException(e);
}
return metaDescriptor;
@@ -376,7 +363,7 @@ protected MetaXmlObjectExporter getMetaXmlObjectExporter() {
return new CoreMetaXmlObjectExporter(this);
}
- protected final CpoMetaDataDocument export() {
+ protected final CtCpoMetaData buildCpoMetaData() {
MetaXmlObjectExporter metaXmlObjectExporter = getMetaXmlObjectExporter();
// need these sorted
@@ -386,33 +373,48 @@ protected final CpoMetaDataDocument export() {
for (CpoClass cpoClass : classList) {
cpoClass.acceptMetaDFVisitor(metaXmlObjectExporter);
}
- return metaXmlObjectExporter.getCpoMetaDataDocument();
+ return metaXmlObjectExporter.getCpoMetaData();
+ }
+
+ private JAXBElement getJaxbElement(CtCpoMetaData ctCpoMetaData) {
+ ObjectFactory factory = new ObjectFactory();
+ return factory.createCpoMetaData(ctCpoMetaData);
+ }
+
+ private Marshaller createMarshaller() throws JAXBException {
+ JAXBContext jaxbContext = JAXBContext.newInstance(CtCpoMetaData.class);
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ XmlHelper.setMarshallerProperties(marshaller);
+ return marshaller;
}
public final void export(File file) throws CpoException {
try {
- CpoMetaDataDocument doc = export();
- doc.save(file, XmlBeansHelper.getXmlOptions());
- } catch (IOException ex) {
- throw new CpoException(ex.getMessage(), ex);
+ CtCpoMetaData ctCpoMetaData = buildCpoMetaData();
+ Marshaller marshaller = createMarshaller();
+ marshaller.marshal(getJaxbElement(ctCpoMetaData), file);
+ } catch (Exception ex) {
+ throw new CpoException(ex);
}
}
public final void export(Writer writer) throws CpoException {
try {
- CpoMetaDataDocument doc = export();
- doc.save(writer, XmlBeansHelper.getXmlOptions());
- } catch (IOException ex) {
- throw new CpoException(ex.getMessage(), ex);
+ CtCpoMetaData ctCpoMetaData = buildCpoMetaData();
+ Marshaller marshaller = createMarshaller();
+ marshaller.marshal(getJaxbElement(ctCpoMetaData), writer);
+ } catch (Exception ex) {
+ throw new CpoException(ex);
}
}
public final void export(OutputStream outputStream) throws CpoException {
try {
- CpoMetaDataDocument doc = export();
- doc.save(outputStream, XmlBeansHelper.getXmlOptions());
- } catch (IOException ex) {
- throw new CpoException(ex.getMessage(), ex);
+ CtCpoMetaData ctCpoMetaData = buildCpoMetaData();
+ Marshaller marshaller = createMarshaller();
+ marshaller.marshal(getJaxbElement(ctCpoMetaData), outputStream);
+ } catch (Exception ex) {
+ throw new CpoException(ex);
}
}
diff --git a/cpo-core/src/main/resources/xsd/CpoConfig.xsd b/cpo-core/src/main/resources/xsd/CpoConfig.xsd
new file mode 100644
index 000000000..f90710898
--- /dev/null
+++ b/cpo-core/src/main/resources/xsd/CpoConfig.xsd
@@ -0,0 +1,586 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Specifies the name of the default configuration. If the default config does not exist, the first config in the file will be used.
+
+
+
+
+
+
+
+
+ The Descriptor for the metadata to load up for the class
+
+
+
+
+ This is the classname of a class that implements CpoConfigProcessor (ie, JdbcConfigProcessor, or CassandraConfigProcessor). The actual classname will be provided in the .xsd that defines the concrete config.
+
+
+
+
+
+ This is the context name to be used when requesting a CpoAdapter. The context name will be used to look up this config info and create the appropriate CpoAdapter
+
+
+
+
+ The batchSize that cpo will use when sending data to the datasource
+
+
+
+
+ The fetchsize that the Streams will use when fetching data from the datasource. The datasource may require additional configuration to not fetch all the data at once.
+
+
+
+
+
+
+
+
+ A list containing resource or filenames that contain meta information. If this descriptor was already defined in a previous config, then only the name needs to be supplied so that is can find the previously loaded files.
+
+
+
+
+
+ This is the descriptor name that will be used to identify this metadata from within CPO. Only one meta descriptor can have this name. Last in wins.
+
+
+
+
+ This tells CPO whether to treat dataNames as caseSensitive or to ignore case. Default is caseSensitive=true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The jndi name of the datasource to use to connect to the target database
+
+
+
+
+
+
+ The classname for the DataSource provided by the database vendor.
+ Use a ConnectionPoolDataSource class if available or a DataSource class if not use a DataSource class.
+ ie: com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
+ oracle.jdbc.pool.OracleConnectionPoolDataSource
+ org.hsqldb.jdbc.JDBCDataSource
+
+
+
+
+
+ Deprecated. Use dataSourceClassName. The classname for the jdbc driver provided by the database vendor.
+ ie: oracle.jdbc.driver.OracleDriver
+ com.mysql.jdbc.Driver
+ org.hsqldb.jdbcDriver
+
+
+
+
+
+
+ This is the url to the jdbc database.
+
+
+
+
+
+
+ This is the user to log into the data source. If the user is supplied in the url, this element should not be included.
+
+
+
+
+ This is the password to log into the data source. If the password is supplied in the url, this element should not be included.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is the keyspace in the cluster that this config is pointing at.
+
+
+
+
+
+
+ Adds a contact point aka the address of the node to connect to. Contact points are addresses of Cassandra nodes that the driver uses to discover the cluster topology.
+ Only one contact point is required (the driver will retrieve the address of the other nodes automatically),
+ but it is usually a good idea to provide more than one contact point, because if that single contact point is unavailable,
+ the driver cannot initialize itself correctly.
+
+
+
+
+
+
+ An optional name for the create cluster. Defaults to the name of the core:dataConfig
+ Note: this is not related to the Cassandra cluster name (though you are free to provide the same name). See Cluster.getClusterName() for details.
+ If you use this method and create more than one Cluster instance in the same JVM (which should be avoided unless you need to connect to multiple Cassandra clusters),
+ you should make sure each Cluster instance get a unique name or you may have a problem with JMX reporting.
+
+
+
+
+
+
+ Sets the maximum time to wait for schema agreement before returning from a DDL query.
+
+
+
+
+
+
+ The port to use to connect to the Cassandra host. If not set through this method, the default port (9042) will be used instead.
+
+
+
+
+
+
+ Configures the load balancing policy to use for the new cluster.
+ Add in the fully qualified class name for a LoadBalancingPolicyFactory
+ If no load balancing policy is set through this method, Policies.defaultLoadBalancingPolicy() will be used instead.
+
+
+
+
+
+
+ Configures the reconnection policy to use for the new cluster.
+ Add in the fully qualified class name for a ReconnectionPolicyFactory
+ If no reconnection policy is set through this method, Policies.DEFAULT_RECONNECTION_POLICY will be used instead.
+
+
+
+
+
+
+ Configures the retry policy to use for the new cluster.
+ Add in the fully qualified class name for a RetryPolicyFactory
+ If no retry policy is set through this method, Policies.DEFAULT_RETRY_POLICY will be used instead.
+
+
+
+
+
+
+
+ Uses the provided credentials when connecting to Cassandra hosts.
+ This should be used if the Cassandra cluster has been configured to use the PasswordAuthenticator.
+ If the the default AllowAllAuthenticator is used instead, using this method has no effect.
+
+
+
+
+
+
+ Use the specified AuthProvider when connecting to Cassandra hosts.
+ Add in the fully qualified class name for a AuthProviderFactory
+ Use this method when a custom authentication scheme is in place. You shouldn't call both this method and withCredentials
+ on the same Builder instance as one will supercede the other
+
+
+
+
+
+
+
+ Sets the compression to use for the transport.
+
+
+
+
+
+
+ The native protocol version to use.
+
+
+
+
+
+
+ Disables metrics collection for the created cluster (metrics are enabled by default otherwise).
+
+
+
+
+
+
+ Enables the use of SSL for the created Cluster. The string is either nil which uses the default ssl or the full class path of a SSLOptionsFactory.
+ Calling this method will use default SSL options (see SSLOptions.SSLOptions()). This is thus a shortcut for withSSL(new SSLOptions()).
+ Note that if SSL is enabled, the driver will not connect to any Cassandra nodes that doesn't have SSL enabled and it is strongly advised to
+ enable SSL on every Cassandra node if you plan on using SSL in the driver.
+
+
+
+
+
+
+ Register the provided listeners in the newly created cluster.
+ Add in the fully qualified class name for a ListenerFactory
+ Note: repeated calls to this method will override the previous ones.
+
+
+
+
+
+
+ Disables JMX reporting of the metrics.
+ JMX reporting is enabled by default (see Metrics) but can be disabled using this option. If metrics are disabled, this is a no-op.
+
+
+
+
+
+
+ Options related to connection pooling.
+ The driver uses connections in an asynchronous manner, meaning that multiple requests can be submitted
+ on the same connection at the same time. Therefore only a relatively small number of connections is needed.
+ For each host, the driver uses a connection pool that may have a variable size (it will automatically adjust to the current load).
+
+ With ProtocolVersion#V2 or below, there are at most 128 simultaneous requests per connection, so the pool defaults to a variable size.
+ You will typically raise the maximum capacity by adding more connections with setMaxRequestsPerConnection(HostDistance, int).
+
+ With ProtocolVersion#V3 or above, there are up to 32768 requests per connection, and the pool defaults to a fixed size of 1.
+ You will typically raise the maximum capacity by allowing more simultaneous requests per connection
+ (setMaxRequestsPerConnection(HostDistance, int)).
+
+ All parameters can be separately set for LOCAL and REMOTE hosts (HostDistance). For IGNORED hosts, no connections are created so
+ these settings cannot be changed.
+
+
+
+
+
+
+ Sets the SocketOptions to use for the newly created Cluster.
+ If no socket options are set through this method, default socket options will be used.
+
+
+
+
+
+
+ Sets the QueryOptions to use for the newly created Cluster.
+ If no query options are set through this method, default query options will be used.
+
+
+
+
+
+
+ Configures the address translater to use for the new cluster.
+ The string is full class path of a AddressTranslaterFactory.
+
+
+
+
+
+
+ Set the NettyOptions to use for the newly created Cluster.
+ The string is full class path of a NettyOptionsFactory.
+
+
+
+
+
+
+ Configures the speculative execution policy to use for the new cluster.
+ The string is full class path of a SpeculativeExecutionPolicyFactory.
+
+
+
+
+
+
+ Configures the generator that will produce the client-side timestamp sent with each query.
+ The string is full class path of a TimestampGeneratorFactory.
+
+
+
+
+
+
+
+
+
+
+ This is the user to log into the data source. If the user is supplied in the url, this element should not be included.
+
+
+
+
+ This is the password to log into the data source. If the password is supplied in the url, this element should not be included.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets the core and maximum number of connections per host in one call.
+
+
+
+
+ Sets the core number of connections per host.
+
+
+
+
+ Sets the heart beat interval, after which a message is sent on an idle connection to make sure it's still alive.
+
+
+
+
+ Sets the timeout before an idle connection is removed.
+
+
+
+
+ Sets the maximum number of connections per host.
+
+
+
+
+ Sets the maximum number of requests per connection.
+
+
+
+
+ Sets the threshold that triggers the creation of a new connection to a host.
+
+
+
+
+ Sets the timeout when trying to acquire a connection from a host's pool.
+
+
+
+
+
+
+
+
+
+ The HostDistance for which to set these threshold.
+
+
+
+
+ the core number of connections.
+
+
+
+
+ the max number of connections.
+
+
+
+
+
+
+
+
+
+ The HostDistance for which to set these threshold.
+
+
+
+
+ the new threshold.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets the default consistency level to use for queries.
+
+
+
+
+ Sets the default idempotence for queries.
+
+
+
+
+ Sets the default fetch size to use for SELECT queries.
+
+
+
+
+ Sets the default serial consistency level to use for queries.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sets the connection timeout in milliseconds.
+
+
+
+
+ Sets whether to enable TCP keepalive.
+
+
+
+
+ Sets the per-host read timeout in milliseconds.
+
+
+
+
+ Sets a hint to the size of the underlying buffers for incoming network I/O.
+
+
+
+
+ Sets whether to enable reuse-address.
+
+
+
+
+ Sets a hint to the size of the underlying buffers for outgoing network I/O.
+
+
+
+
+ Sets the linger-on-close timeout.
+
+
+
+
+ Sets whether to disable Nagle's algorithm.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoCoreMeta.xsd b/cpo-core/src/main/resources/xsd/CpoMeta.xsd
similarity index 50%
rename from cpo-core/src/main/xsd/CpoCoreMeta.xsd
rename to cpo-core/src/main/resources/xsd/CpoMeta.xsd
index 799bb2389..fd7f9d425 100644
--- a/cpo-core/src/main/xsd/CpoCoreMeta.xsd
+++ b/cpo-core/src/main/resources/xsd/CpoMeta.xsd
@@ -1,7 +1,7 @@
@@ -15,10 +15,10 @@
-
+
-
+
@@ -46,7 +46,9 @@
-
+
+
+
@@ -60,17 +62,80 @@
-
+
-
-
-
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoUtilConfig.xsd b/cpo-core/src/main/resources/xsd/CpoUtilConfig.xsd
similarity index 87%
rename from cpo-core/src/main/xsd/CpoUtilConfig.xsd
rename to cpo-core/src/main/resources/xsd/CpoUtilConfig.xsd
index 1d5d44d82..7e47720b8 100644
--- a/cpo-core/src/main/xsd/CpoUtilConfig.xsd
+++ b/cpo-core/src/main/resources/xsd/CpoUtilConfig.xsd
@@ -1,11 +1,11 @@
-
+
diff --git a/cpo-core/src/main/xsd/CpoCassandraConfig.xsd b/cpo-core/src/main/xsd/CpoCassandraConfig.xsd
deleted file mode 100644
index f6eb1206a..000000000
--- a/cpo-core/src/main/xsd/CpoCassandraConfig.xsd
+++ /dev/null
@@ -1,446 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This is the keyspace in the cluster that this config is pointing at.
-
-
-
-
-
-
- Adds a contact point aka the address of the node to connect to. Contact points are addresses of Cassandra nodes that the driver uses to discover the cluster topology.
- Only one contact point is required (the driver will retrieve the address of the other nodes automatically),
- but it is usually a good idea to provide more than one contact point, because if that single contact point is unavailable,
- the driver cannot initialize itself correctly.
-
-
-
-
-
-
- An optional name for the create cluster. Defaults to the name of the core:dataConfig
- Note: this is not related to the Cassandra cluster name (though you are free to provide the same name). See Cluster.getClusterName() for details.
- If you use this method and create more than one Cluster instance in the same JVM (which should be avoided unless you need to connect to multiple Cassandra clusters),
- you should make sure each Cluster instance get a unique name or you may have a problem with JMX reporting.
-
-
-
-
-
-
- Sets the maximum time to wait for schema agreement before returning from a DDL query.
-
-
-
-
-
-
- The port to use to connect to the Cassandra host. If not set through this method, the default port (9042) will be used instead.
-
-
-
-
-
-
- Configures the load balancing policy to use for the new cluster.
- Add in the fully qualified class name for a LoadBalancingPolicyFactory
- If no load balancing policy is set through this method, Policies.defaultLoadBalancingPolicy() will be used instead.
-
-
-
-
-
-
- Configures the reconnection policy to use for the new cluster.
- Add in the fully qualified class name for a ReconnectionPolicyFactory
- If no reconnection policy is set through this method, Policies.DEFAULT_RECONNECTION_POLICY will be used instead.
-
-
-
-
-
-
- Configures the retry policy to use for the new cluster.
- Add in the fully qualified class name for a RetryPolicyFactory
- If no retry policy is set through this method, Policies.DEFAULT_RETRY_POLICY will be used instead.
-
-
-
-
-
-
-
- Uses the provided credentials when connecting to Cassandra hosts.
- This should be used if the Cassandra cluster has been configured to use the PasswordAuthenticator.
- If the the default AllowAllAuthenticator is used instead, using this method has no effect.
-
-
-
-
-
-
- Use the specified AuthProvider when connecting to Cassandra hosts.
- Add in the fully qualified class name for a AuthProviderFactory
- Use this method when a custom authentication scheme is in place. You shouldn't call both this method and withCredentials
- on the same Builder instance as one will supercede the other
-
-
-
-
-
-
-
- Sets the compression to use for the transport.
-
-
-
-
-
-
- The native protocol version to use.
-
-
-
-
-
-
- Disables metrics collection for the created cluster (metrics are enabled by default otherwise).
-
-
-
-
-
-
- Enables the use of SSL for the created Cluster. The string is either nil which uses the default ssl or the full class path of a SSLOptionsFactory.
- Calling this method will use default SSL options (see SSLOptions.SSLOptions()). This is thus a shortcut for withSSL(new SSLOptions()).
- Note that if SSL is enabled, the driver will not connect to any Cassandra nodes that doesn't have SSL enabled and it is strongly advised to
- enable SSL on every Cassandra node if you plan on using SSL in the driver.
-
-
-
-
-
-
- Register the provided listeners in the newly created cluster.
- Add in the fully qualified class name for a ListenerFactory
- Note: repeated calls to this method will override the previous ones.
-
-
-
-
-
-
- Disables JMX reporting of the metrics.
- JMX reporting is enabled by default (see Metrics) but can be disabled using this option. If metrics are disabled, this is a no-op.
-
-
-
-
-
-
- Options related to connection pooling.
- The driver uses connections in an asynchronous manner, meaning that multiple requests can be submitted
- on the same connection at the same time. Therefore only a relatively small number of connections is needed.
- For each host, the driver uses a connection pool that may have a variable size (it will automatically adjust to the current load).
-
- With ProtocolVersion#V2 or below, there are at most 128 simultaneous requests per connection, so the pool defaults to a variable size.
- You will typically raise the maximum capacity by adding more connections with setMaxRequestsPerConnection(HostDistance, int).
-
- With ProtocolVersion#V3 or above, there are up to 32768 requests per connection, and the pool defaults to a fixed size of 1.
- You will typically raise the maximum capacity by allowing more simultaneous requests per connection
- (setMaxRequestsPerConnection(HostDistance, int)).
-
- All parameters can be separately set for LOCAL and REMOTE hosts (HostDistance). For IGNORED hosts, no connections are created so
- these settings cannot be changed.
-
-
-
-
-
-
- Sets the SocketOptions to use for the newly created Cluster.
- If no socket options are set through this method, default socket options will be used.
-
-
-
-
-
-
- Sets the QueryOptions to use for the newly created Cluster.
- If no query options are set through this method, default query options will be used.
-
-
-
-
-
-
- Configures the address translater to use for the new cluster.
- The string is full class path of a AddressTranslaterFactory.
-
-
-
-
-
-
- Set the NettyOptions to use for the newly created Cluster.
- The string is full class path of a NettyOptionsFactory.
-
-
-
-
-
-
- Configures the speculative execution policy to use for the new cluster.
- The string is full class path of a SpeculativeExecutionPolicyFactory.
-
-
-
-
-
-
- Configures the generator that will produce the client-side timestamp sent with each query.
- The string is full class path of a TimestampGeneratorFactory.
-
-
-
-
-
-
-
-
-
-
- This is the user to log into the data source. If the user is supplied in the url, this element should not be included.
-
-
-
-
- This is the password to log into the data source. If the password is supplied in the url, this element should not be included.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sets the core and maximum number of connections per host in one call.
-
-
-
-
- Sets the core number of connections per host.
-
-
-
-
- Sets the heart beat interval, after which a message is sent on an idle connection to make sure it's still alive.
-
-
-
-
- Sets the timeout before an idle connection is removed.
-
-
-
-
- Sets the maximum number of connections per host.
-
-
-
-
- Sets the maximum number of requests per connection.
-
-
-
-
- Sets the threshold that triggers the creation of a new connection to a host.
-
-
-
-
- Sets the timeout when trying to acquire a connection from a host's pool.
-
-
-
-
-
-
-
-
-
- The HostDistance for which to set these threshold.
-
-
-
-
- the core number of connections.
-
-
-
-
- the max number of connections.
-
-
-
-
-
-
-
-
-
- The HostDistance for which to set these threshold.
-
-
-
-
- the new threshold.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sets the default consistency level to use for queries.
-
-
-
-
- Sets the default idempotence for queries.
-
-
-
-
- Sets the default fetch size to use for SELECT queries.
-
-
-
-
- Sets the default serial consistency level to use for queries.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sets the connection timeout in milliseconds.
-
-
-
-
- Sets whether to enable TCP keepalive.
-
-
-
-
- Sets the per-host read timeout in milliseconds.
-
-
-
-
- Sets a hint to the size of the underlying buffers for incoming network I/O.
-
-
-
-
- Sets whether to enable reuse-address.
-
-
-
-
- Sets a hint to the size of the underlying buffers for outgoing network I/O.
-
-
-
-
- Sets the linger-on-close timeout.
-
-
-
-
- Sets whether to disable Nagle's algorithm.
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoCassandraMeta.xsd b/cpo-core/src/main/xsd/CpoCassandraMeta.xsd
deleted file mode 100644
index c4f4d7f7e..000000000
--- a/cpo-core/src/main/xsd/CpoCassandraMeta.xsd
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoConfig.xsd b/cpo-core/src/main/xsd/CpoConfig.xsd
deleted file mode 100644
index dbe2fa16d..000000000
--- a/cpo-core/src/main/xsd/CpoConfig.xsd
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoCoreConfig.xsd b/cpo-core/src/main/xsd/CpoCoreConfig.xsd
deleted file mode 100644
index 5f567f963..000000000
--- a/cpo-core/src/main/xsd/CpoCoreConfig.xsd
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Specifies the name of the default configuration. If the default config does not exist, the first config in the file will be used.
-
-
-
-
-
-
-
-
- The Descriptor for the metadata to load up for the class
-
-
-
-
- This is the classname of a class that implements CpoConfigProcessor (ie, JdbcConfigProcessor, or CassandraConfigProcessor). The actual classname will be provided in the .xsd that defines the concrete config.
-
-
-
-
-
- This is the context name to be used when requesting a CpoAdapter. The context name will be used to look up this config info and create the appropriate CpoAdapter
-
-
-
-
- The batchSize that cpo will use when sending data to the datasource
-
-
-
-
- The fetchsize that the Streams will use when fetching data from the datasource. The datasource may require additional configuration to not fetch all the data at once.
-
-
-
-
-
-
-
-
- A list containing resource or filenames that contain meta information. If this descriptor was already defined in a previous config, then only the name needs to be supplied so that is can find the previously loaded files.
-
-
-
-
-
- This is the descriptor name that will be used to identify this metadata from within CPO. Only one meta descriptor can have this name. Last in wins.
-
-
-
-
- This tells CPO whether to treat dataNames as caseSensitive or to ignore case. Default is caseSensitive=true
-
-
-
-
-
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoJdbcConfig.xsd b/cpo-core/src/main/xsd/CpoJdbcConfig.xsd
deleted file mode 100644
index a1d9c1c76..000000000
--- a/cpo-core/src/main/xsd/CpoJdbcConfig.xsd
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The jndi name of the datasource to use to connect to the target database
-
-
-
-
-
-
- The classname for the DataSource provided by the database vendor.
- Use a ConnectionPoolDataSource class if available or a DataSource class if not use a DataSource class.
- ie: com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
- oracle.jdbc.pool.OracleConnectionPoolDataSource
- org.hsqldb.jdbc.JDBCDataSource
-
-
-
-
-
- Deprecated. Use dataSourceClassName. The classname for the jdbc driver provided by the database vendor.
- ie: oracle.jdbc.driver.OracleDriver
- com.mysql.jdbc.Driver
- org.hsqldb.jdbcDriver
-
-
-
-
-
-
- This is the url to the jdbc database.
-
-
-
-
-
-
- This is the user to log into the data source. If the user is supplied in the url, this element should not be included.
-
-
-
-
- This is the password to log into the data source. If the password is supplied in the url, this element should not be included.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/cpo-core/src/main/xsd/CpoJdbcMeta.xsd b/cpo-core/src/main/xsd/CpoJdbcMeta.xsd
deleted file mode 100644
index 6e230c6e2..000000000
--- a/cpo-core/src/main/xsd/CpoJdbcMeta.xsd
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/cpo-core/src/test/java/org/synchronoss/cpo/xml/XmlTest.java b/cpo-core/src/test/java/org/synchronoss/cpo/xml/XmlTest.java
new file mode 100644
index 000000000..0c24e3b8d
--- /dev/null
+++ b/cpo-core/src/test/java/org/synchronoss/cpo/xml/XmlTest.java
@@ -0,0 +1,45 @@
+package org.synchronoss.cpo.xml;
+
+/*-
+ * [[
+ * core
+ * ==
+ * Copyright (C) 2003 - 2025 David E. Berry
+ * ==
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * .
+ * ]]
+ */
+
+import org.synchronoss.cpo.CpoException;
+import org.synchronoss.cpo.cpometa.CtCpoMetaData;
+import org.synchronoss.cpo.helper.XmlHelper;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class XmlTest {
+
+ @Test
+ public void testCpoMetaDataXml() throws CpoException {
+ var errBuilder = new StringBuilder();
+ var metaXml = "testCoreMeta.xml";
+
+ CtCpoMetaData ctCpoMeta =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_META_XSD, metaXml, CtCpoMetaData.class, errBuilder);
+ Assert.assertTrue(
+ errBuilder.isEmpty(),
+ "Should not have received an error message: " + errBuilder.toString());
+ }
+}
diff --git a/cpo-core/src/test/resources/testCoreMeta.xml b/cpo-core/src/test/resources/testCoreMeta.xml
new file mode 100644
index 000000000..641aca8f5
--- /dev/null
+++ b/cpo-core/src/test/resources/testCoreMeta.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+ bLob
+ byte[]
+ B_LOB
+ LONGVARBINARY
+ org.synchronoss.cpo.transform.jdbc.TransformGZipBytes
+
+
+ bLob2
+ byte[]
+ B_LOB2
+ LONGVARBINARY
+
+
+ lobId
+ int
+ LOB_ID
+ INTEGER
+
+
+ cLob
+ char[]
+ C_LOB
+ LONGVARCHAR
+ org.synchronoss.cpo.transform.jdbc.TransformStringChar
+
+
+
+ delete from lob_test where lob_id = ?
+
+ lobId
+
+
+
+
+
+ insert into lob_test (lob_id, b_lob, c_lob, b_lob2) values (?,?,?,?)
+
+ lobId
+
+
+ bLob
+
+
+ cLob
+
+
+ bLob2
+
+
+
+
+
+ update lob_test set b_lob=?, c_lob=?, b_lob2=? where lob_id = ?
+
+ bLob
+
+
+ cLob
+
+
+ bLob2
+
+
+ lobId
+
+
+
+
+
+ select * from lob_test where lob_id = ?
+
+ lobId
+
+
+
+
+
diff --git a/cpo-jdbc/pom.xml b/cpo-jdbc/pom.xml
index eee6f8b4a..359452c82 100644
--- a/cpo-jdbc/pom.xml
+++ b/cpo-jdbc/pom.xml
@@ -248,11 +248,6 @@
org.slf4j
slf4j-api
-
-
- org.apache.logging.log4j
- log4j-to-slf4j
-
ch.qos.logback
@@ -266,11 +261,15 @@
${logbackVersion}
test
-
- org.apache.xmlbeans
- xmlbeans
-
-
+
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ runtime
+
diff --git a/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/config/JdbcCpoConfigProcessor.java b/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/config/JdbcCpoConfigProcessor.java
index 169b001f7..de120dd73 100644
--- a/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/config/JdbcCpoConfigProcessor.java
+++ b/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/config/JdbcCpoConfigProcessor.java
@@ -31,11 +31,11 @@
import org.synchronoss.cpo.CpoException;
import org.synchronoss.cpo.DataSourceInfo;
import org.synchronoss.cpo.config.CpoConfigProcessor;
-import org.synchronoss.cpo.core.cpoCoreConfig.CtDataSourceConfig;
+import org.synchronoss.cpo.cpoconfig.CtDataSourceConfig;
+import org.synchronoss.cpo.cpoconfig.CtJdbcConfig;
+import org.synchronoss.cpo.cpoconfig.CtJdbcReadWriteConfig;
+import org.synchronoss.cpo.cpoconfig.CtProperty;
import org.synchronoss.cpo.jdbc.*;
-import org.synchronoss.cpo.jdbc.cpoJdbcConfig.CtJdbcConfig;
-import org.synchronoss.cpo.jdbc.cpoJdbcConfig.CtJdbcReadWriteConfig;
-import org.synchronoss.cpo.jdbc.cpoJdbcConfig.CtProperty;
import org.synchronoss.cpo.jdbc.meta.JdbcCpoMetaDescriptor;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
@@ -73,7 +73,7 @@ public CpoAdapterFactory processCpoConfig(CtDataSourceConfig cpoConfig) throws C
int batchSize = jdbcConfig.getBatchSize().intValue();
// build a datasource info
- if (jdbcConfig.isSetReadWriteConfig()) {
+ if (jdbcConfig.getReadWriteConfig() != null) {
DataSourceInfo dataSourceInfo =
buildDataSourceInfo(jdbcConfig.getReadWriteConfig(), fetchSize, batchSize);
cpoAdapterFactory =
@@ -95,26 +95,26 @@ private DataSourceInfo buildDataSourceInfo(
CtJdbcReadWriteConfig readWriteConfig, int fetchSize, int batchSize) throws CpoException {
DataSourceInfo dataSourceInfo = null;
- if (readWriteConfig.isSetJndiName()) {
+ if (readWriteConfig.getJndiName() != null) {
dataSourceInfo =
new JndiJdbcDataSourceInfo(readWriteConfig.getJndiName(), fetchSize, batchSize);
- } else if (readWriteConfig.isSetDataSourceClassName()) {
+ } else if (readWriteConfig.getDataSourceClassName() != null) {
SortedMap props = new TreeMap<>();
- if (readWriteConfig.isSetUrl()) {
+ if (readWriteConfig.getUrl() != null) {
props.put(PROP_URL1, readWriteConfig.getUrl());
props.put(PROP_URL2, readWriteConfig.getUrl());
}
- if (readWriteConfig.isSetUser()) {
+ if (readWriteConfig.getUser() != null) {
props.put(PROP_USER, readWriteConfig.getUser());
}
- if (readWriteConfig.isSetPassword()) {
+ if (readWriteConfig.getPassword() != null) {
props.put(PROP_PASSWORD, readWriteConfig.getPassword());
}
- for (CtProperty property : readWriteConfig.getPropertyArray()) {
+ for (CtProperty property : readWriteConfig.getProperty()) {
props.put(property.getName(), property.getValue());
logger.debug("Adding property " + property.getName() + "=" + property.getValue());
}
@@ -122,8 +122,8 @@ private DataSourceInfo buildDataSourceInfo(
dataSourceInfo =
new ClassJdbcDataSourceInfo(
readWriteConfig.getDataSourceClassName(), props, fetchSize, batchSize);
- } else if (readWriteConfig.isSetDriverClassName()) {
- if (readWriteConfig.isSetUser()) {
+ } else if (readWriteConfig.getDriverClassName() != null) {
+ if (readWriteConfig.getUser() != null) {
dataSourceInfo =
new DriverJdbcDataSourceInfo(
readWriteConfig.getDriverClassName(),
@@ -132,9 +132,9 @@ private DataSourceInfo buildDataSourceInfo(
readWriteConfig.getPassword(),
fetchSize,
batchSize);
- } else if (readWriteConfig.getPropertyArray().length > 0) {
+ } else if (!readWriteConfig.getProperty().isEmpty()) {
Properties props = new Properties();
- for (CtProperty property : readWriteConfig.getPropertyArray()) {
+ for (CtProperty property : readWriteConfig.getProperty()) {
props.put(property.getName(), property.getValue());
}
dataSourceInfo =
diff --git a/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/exporter/JdbcMetaXmlObjectExporter.java b/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/exporter/JdbcMetaXmlObjectExporter.java
index 575237789..0838c0b0a 100644
--- a/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/exporter/JdbcMetaXmlObjectExporter.java
+++ b/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/exporter/JdbcMetaXmlObjectExporter.java
@@ -22,14 +22,14 @@
* ]]
*/
-import org.synchronoss.cpo.core.cpoCoreMeta.CtArgument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtAttribute;
+import org.synchronoss.cpo.cpometa.CtJdbcArgument;
+import org.synchronoss.cpo.cpometa.CtJdbcAttribute;
+import org.synchronoss.cpo.cpometa.ObjectFactory;
+import org.synchronoss.cpo.cpometa.StArgumentScope;
import org.synchronoss.cpo.exporter.CoreMetaXmlObjectExporter;
import org.synchronoss.cpo.exporter.MetaXmlObjectExporter;
import org.synchronoss.cpo.jdbc.JdbcCpoArgument;
import org.synchronoss.cpo.jdbc.JdbcCpoAttribute;
-import org.synchronoss.cpo.jdbc.cpoJdbcMeta.CtJdbcArgument;
-import org.synchronoss.cpo.jdbc.cpoJdbcMeta.CtJdbcAttribute;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
import org.synchronoss.cpo.meta.domain.CpoArgument;
import org.synchronoss.cpo.meta.domain.CpoAttribute;
@@ -43,6 +43,8 @@
public class JdbcMetaXmlObjectExporter extends CoreMetaXmlObjectExporter
implements MetaXmlObjectExporter {
+ protected ObjectFactory objectFactory = new ObjectFactory();
+
/**
* Constructs a JdbcMetaXmlObjectExporter object.
*
@@ -67,7 +69,10 @@ public void visit(CpoAttribute cpoAttribute) {
// CtClass.addNewCpoAttribute() can't be used here because it returns a CtAttribute, not a
// CtJdbcAttribute
- CtJdbcAttribute ctJdbcAttribute = CtJdbcAttribute.Factory.newInstance();
+ CtJdbcAttribute ctJdbcAttribute = new CtJdbcAttribute();
+ var jaxbElement = objectFactory.createJdbcAttribute(ctJdbcAttribute);
+ // add it to the class
+ currentCtClass.getCpoAttribute().add(jaxbElement);
ctJdbcAttribute.setJavaName(jdbcAttribute.getJavaName());
ctJdbcAttribute.setJavaType(jdbcAttribute.getJavaType());
@@ -75,25 +80,21 @@ public void visit(CpoAttribute cpoAttribute) {
ctJdbcAttribute.setDataType(jdbcAttribute.getDataType());
if (jdbcAttribute.getTransformClassName() != null
- && jdbcAttribute.getTransformClassName().length() > 0) {
+ && !jdbcAttribute.getTransformClassName().isEmpty()) {
ctJdbcAttribute.setTransformClass(jdbcAttribute.getTransformClassName());
}
- if (jdbcAttribute.getDescription() != null && jdbcAttribute.getDescription().length() > 0) {
+ if (jdbcAttribute.getDescription() != null && !jdbcAttribute.getDescription().isEmpty()) {
ctJdbcAttribute.setDescription(jdbcAttribute.getDescription());
}
- if (jdbcAttribute.getDbTable() != null && jdbcAttribute.getDbTable().length() > 0) {
+ if (jdbcAttribute.getDbTable() != null && !jdbcAttribute.getDbTable().isEmpty()) {
ctJdbcAttribute.setDbTable(jdbcAttribute.getDbTable());
}
- if (jdbcAttribute.getDbColumn() != null && jdbcAttribute.getDbColumn().length() > 0) {
+ if (jdbcAttribute.getDbColumn() != null && !jdbcAttribute.getDbColumn().isEmpty()) {
ctJdbcAttribute.setDbColumn(jdbcAttribute.getDbColumn());
}
-
- // add it to the class
- CtAttribute ctAttribute = currentCtClass.addNewCpoAttribute();
- ctAttribute.set(ctJdbcAttribute);
}
}
@@ -112,28 +113,27 @@ public void visit(CpoArgument cpoArgument) {
// CtFunction.addNewCpoArgument() can't be used here because it returns a CtArgument, not a
// CtJdbcArgument
- CtJdbcArgument ctJdbcArgument = CtJdbcArgument.Factory.newInstance();
+ CtJdbcArgument ctJdbcArgument = new CtJdbcArgument();
+ var jaxbElement = objectFactory.createJdbcArgument(ctJdbcArgument);
+ currentCtFunction.getCpoArgument().add(jaxbElement);
ctJdbcArgument.setAttributeName(jdbcArgument.getName());
- if (jdbcArgument.getDescription() != null && jdbcArgument.getDescription().length() > 0) {
+ if (jdbcArgument.getDescription() != null && !jdbcArgument.getDescription().isEmpty()) {
ctJdbcArgument.setDescription(jdbcArgument.getDescription());
}
if (jdbcArgument.isInParameter() && jdbcArgument.isOutParameter()) {
- ctJdbcArgument.setScope(CtJdbcArgument.Scope.BOTH);
+ ctJdbcArgument.setScope(StArgumentScope.BOTH);
} else if (jdbcArgument.isInParameter()) {
- ctJdbcArgument.setScope(CtJdbcArgument.Scope.IN);
+ ctJdbcArgument.setScope(StArgumentScope.IN);
} else if (jdbcArgument.isOutParameter()) {
- ctJdbcArgument.setScope(CtJdbcArgument.Scope.OUT);
+ ctJdbcArgument.setScope(StArgumentScope.OUT);
}
if (jdbcArgument.getTypeInfo() != null && !jdbcArgument.getTypeInfo().isEmpty()) {
ctJdbcArgument.setTypeInfo(jdbcArgument.getTypeInfo());
}
-
- CtArgument ctArgument = currentCtFunction.addNewCpoArgument();
- ctArgument.set(ctJdbcArgument);
}
}
}
diff --git a/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/meta/JdbcCpoMetaAdapter.java b/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/meta/JdbcCpoMetaAdapter.java
index ed6eec289..b9537e61a 100644
--- a/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/meta/JdbcCpoMetaAdapter.java
+++ b/cpo-jdbc/src/main/java/org/synchronoss/cpo/jdbc/meta/JdbcCpoMetaAdapter.java
@@ -26,12 +26,12 @@
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtArgument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtAttribute;
+import org.synchronoss.cpo.cpometa.CtArgument;
+import org.synchronoss.cpo.cpometa.CtAttribute;
+import org.synchronoss.cpo.cpometa.CtJdbcArgument;
+import org.synchronoss.cpo.cpometa.CtJdbcAttribute;
import org.synchronoss.cpo.jdbc.JdbcCpoArgument;
import org.synchronoss.cpo.jdbc.JdbcCpoAttribute;
-import org.synchronoss.cpo.jdbc.cpoJdbcMeta.CtJdbcArgument;
-import org.synchronoss.cpo.jdbc.cpoJdbcMeta.CtJdbcAttribute;
import org.synchronoss.cpo.meta.AbstractCpoMetaAdapter;
import org.synchronoss.cpo.meta.DataTypeMapEntry;
import org.synchronoss.cpo.meta.DataTypeMapper;
diff --git a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/HotDeployTest.java b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/HotDeployTest.java
index 0164ceaf1..94b812496 100644
--- a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/HotDeployTest.java
+++ b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/HotDeployTest.java
@@ -67,8 +67,10 @@ public void setUp() {
try {
cpoAdapter = CpoAdapterFactoryManager.getCpoAdapter(JdbcStatics.ADAPTER_CONTEXT_JDBC);
assertNotNull(cpoAdapter, method + "cpoAdapter is null");
+ var metaDescriptor = cpoAdapter.getCpoMetaDescriptor();
+ assertNotNull(metaDescriptor, method + "metaDescriptor is null");
// lets save the existing config before we monkey with it
- cpoAdapter.getCpoMetaDescriptor().export(metaFile);
+ metaDescriptor.export(metaFile);
} catch (Exception e) {
fail(method + e.getMessage());
}
diff --git a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/XmlValidationTest.java b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/XmlValidationTest.java
index 16529d347..50a7c5981 100644
--- a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/XmlValidationTest.java
+++ b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/adapter/XmlValidationTest.java
@@ -22,16 +22,9 @@
* ]]
*/
-import static org.testng.Assert.fail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import org.apache.xmlbeans.XmlException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.synchronoss.cpo.core.cpoCoreConfig.CpoConfigDocument;
-import org.synchronoss.cpo.helper.CpoClassLoader;
-import org.synchronoss.cpo.helper.XmlBeansHelper;
+import org.synchronoss.cpo.cpoconfig.CtCpoConfig;
+import org.synchronoss.cpo.helper.XmlHelper;
+import org.testng.Assert;
import org.testng.annotations.Test;
/**
@@ -39,7 +32,6 @@
*/
public class XmlValidationTest {
- private static final Logger logger = LoggerFactory.getLogger(XmlValidationTest.class);
static final String CPO_CONFIG_XML = "/h2/cpoConfig.xml";
static final String BAD_CPO_CONFIG_XML = "/badConfig.xml";
@@ -47,37 +39,23 @@ public XmlValidationTest() {}
@Test
public void testBadXml() {
- InputStream is = CpoClassLoader.getResourceAsStream(BAD_CPO_CONFIG_XML);
+ var errBuilder = new StringBuilder();
- try {
- CpoConfigDocument configDoc = CpoConfigDocument.Factory.parse(is);
- String errMsg = XmlBeansHelper.validateXml(configDoc);
- if (errMsg == null) {
- fail("Should have received an error message");
- } else {
- logger.debug(errMsg);
- }
- } catch (IOException ioe) {
- fail("Could not read config xml");
- } catch (XmlException xe) {
- fail("Config xml was not well formed");
- }
+ CtCpoConfig cpoConfig =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_CONFIG_XSD, BAD_CPO_CONFIG_XML, CtCpoConfig.class, errBuilder);
+ Assert.assertFalse(errBuilder.isEmpty(), "Should have received an error message");
}
@Test
public void testGoodXml() {
- InputStream is = CpoClassLoader.getResourceAsStream(CPO_CONFIG_XML);
-
- try {
- CpoConfigDocument configDoc = CpoConfigDocument.Factory.parse(is);
- String errMsg = XmlBeansHelper.validateXml(configDoc);
- if (errMsg != null) {
- fail("Should have received an error message:" + errMsg);
- }
- } catch (IOException ioe) {
- fail("Could not read config xml");
- } catch (XmlException xe) {
- fail("Config xml was not well formed");
- }
+ var errBuilder = new StringBuilder();
+
+ CtCpoConfig cpoConfig =
+ XmlHelper.unmarshalXmlObject(
+ XmlHelper.CPO_CONFIG_XSD, CPO_CONFIG_XML, CtCpoConfig.class, errBuilder);
+ Assert.assertTrue(
+ errBuilder.isEmpty(),
+ "Should not have received an error message: " + errBuilder.toString());
}
}
diff --git a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/exporter/ExporterTest.java b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/exporter/ExporterTest.java
index 8e6f1c3c6..1af48d26d 100644
--- a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/exporter/ExporterTest.java
+++ b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/exporter/ExporterTest.java
@@ -36,8 +36,8 @@
import org.synchronoss.cpo.CpoAdapter;
import org.synchronoss.cpo.CpoAdapterFactoryManager;
import org.synchronoss.cpo.CpoException;
-import org.synchronoss.cpo.core.cpoCoreMeta.CpoMetaDataDocument;
-import org.synchronoss.cpo.core.cpoCoreMeta.CtClass;
+import org.synchronoss.cpo.cpometa.CtClass;
+import org.synchronoss.cpo.cpometa.CtCpoMetaData;
import org.synchronoss.cpo.exporter.CpoClassSourceGenerator;
import org.synchronoss.cpo.exporter.CpoInterfaceSourceGenerator;
import org.synchronoss.cpo.exporter.CpoLegacyClassSourceGenerator;
@@ -91,19 +91,19 @@ public void testXmlExport() {
for (CpoClass cpoClass : metaDescriptor.getCpoClasses()) {
cpoClass.acceptMetaDFVisitor(metaXmlObjectExporter);
}
- CpoMetaDataDocument doc = metaXmlObjectExporter.getCpoMetaDataDocument();
+ CtCpoMetaData ctCpoMetaData = metaXmlObjectExporter.getCpoMetaData();
- // doc better be valid
- logger.debug("validating doc");
- assertTrue(doc.validate());
+ // ctCpoMetaData better be valid
+ logger.debug("validating ctCpoMetaData");
+ // assertTrue(ctCpoMetaData.validate());
// make sure it saved the data right
// should be 3 classes in here
- assertEquals(3, doc.getCpoMetaData().getCpoClassArray().length);
+ assertEquals(3, ctCpoMetaData.getCpoClass().size());
boolean found = false;
- for (CtClass ctClass : doc.getCpoMetaData().getCpoClassArray()) {
+ for (CtClass ctClass : ctCpoMetaData.getCpoClass()) {
// validate the ValueObject
if (ctClass.getName().equals(ValueObject.class.getName())) {
found = true;
diff --git a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/jmeter/CpoJavaSamplerClient.java b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/jmeter/CpoJavaSamplerClient.java
index 0d7ed21e9..550db19ac 100644
--- a/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/jmeter/CpoJavaSamplerClient.java
+++ b/cpo-jdbc/src/test/java/org/synchronoss/cpo/jdbc/jmeter/CpoJavaSamplerClient.java
@@ -33,10 +33,10 @@
import org.synchronoss.cpo.CpoAdapter;
import org.synchronoss.cpo.CpoAdapterFactoryManager;
import org.synchronoss.cpo.CpoException;
+import org.synchronoss.cpo.cpoconfig.CtJdbcConfig;
+import org.synchronoss.cpo.cpoconfig.CtJdbcReadWriteConfig;
import org.synchronoss.cpo.jdbc.ValueObject;
import org.synchronoss.cpo.jdbc.adapter.ValueObjectFactory;
-import org.synchronoss.cpo.jdbc.cpoJdbcConfig.CtJdbcConfig;
-import org.synchronoss.cpo.jdbc.cpoJdbcConfig.CtJdbcReadWriteConfig;
import org.synchronoss.cpo.jdbc.meta.JdbcCpoMetaDescriptor;
import org.synchronoss.cpo.meta.CpoMetaDescriptor;
import org.testng.annotations.BeforeClass;
@@ -82,12 +82,13 @@ public void setupTest(JavaSamplerContext javaSamplerContext) {
"/oracle/classdef/oracleValueMetaData.xml",
true);
- CtJdbcConfig jdbcConfig = CtJdbcConfig.Factory.newInstance();
+ CtJdbcConfig jdbcConfig = new CtJdbcConfig();
jdbcConfig.setName(this.getClass().getName());
jdbcConfig.setMetaDescriptorName(metaDescriptor.getName());
jdbcConfig.setCpoConfigProcessor(CONFIG_PROCESSOR);
- CtJdbcReadWriteConfig rwc = jdbcConfig.addNewReadWriteConfig();
+ CtJdbcReadWriteConfig rwc = new CtJdbcReadWriteConfig();
+ jdbcConfig.setReadWriteConfig(rwc);
rwc.setUser(javaSamplerContext.getParameter(USER_NAME));
rwc.setPassword(javaSamplerContext.getParameter(PASSWORD));
rwc.setUrl(javaSamplerContext.getParameter(URL));
diff --git a/cpo-jdbc/src/test/resources/badConfig.xml b/cpo-jdbc/src/test/resources/badConfig.xml
index 6332b96f5..897e009e5 100644
--- a/cpo-jdbc/src/test/resources/badConfig.xml
+++ b/cpo-jdbc/src/test/resources/badConfig.xml
@@ -21,10 +21,9 @@
]]
-->
-
@@ -34,14 +33,14 @@
/emptyMetaData.xml
-
+
jdbcMeta
org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
-
- ${cpo.db.url}
- ${cpo.db.user}
- ${cpo.db.pswd}
-
+
+
+ ${cpo.db.url}
+ ${cpo.db.user}
+ ${cpo.db.pswd}
+
diff --git a/cpo-jdbc/src/test/resources/common/LobMetaData.xml b/cpo-jdbc/src/test/resources/common/LobMetaData.xml
index cd7990339..7f68f0b35 100644
--- a/cpo-jdbc/src/test/resources/common/LobMetaData.xml
+++ b/cpo-jdbc/src/test/resources/common/LobMetaData.xml
@@ -21,28 +21,28 @@
]]
-->
-
+
-
+
bLob
byte[]
B_LOB
LONGVARBINARY
org.synchronoss.cpo.transform.jdbc.TransformGZipBytes
-
+
bLob2
byte[]
B_LOB2
LONGVARBINARY
-
+
lobId
int
LOB_ID
INTEGER
-
+
cLob
char[]
C_LOB
@@ -52,60 +52,60 @@
delete from lob_test where lob_id = ?
-
+
lobId
- IN
+ IN
insert into lob_test (lob_id, b_lob, c_lob, b_lob2) values (?,?,?,?)
-
+
lobId
- IN
+ IN
-
+
bLob
- IN
+ IN
-
+
cLob
- IN
+ IN
-
+
bLob2
- IN
+ IN
update lob_test set b_lob=?, c_lob=?, b_lob2=? where lob_id = ?
-
+
bLob
- IN
+ IN
-
+
cLob
- IN
+ IN
-
+
bLob2
- IN
+ IN
-
+
lobId
- IN
+ IN
select * from lob_test where lob_id = ?
-
+
lobId
- IN
+ IN
diff --git a/cpo-jdbc/src/test/resources/common/ValueCaseMetaData.xml b/cpo-jdbc/src/test/resources/common/ValueCaseMetaData.xml
index f425fa63a..4c1818b75 100644
--- a/cpo-jdbc/src/test/resources/common/ValueCaseMetaData.xml
+++ b/cpo-jdbc/src/test/resources/common/ValueCaseMetaData.xml
@@ -21,120 +21,120 @@
]]
-->
-
+
-
+
id
int
iD
INTEGER
- value_object
- id
+ value_object
+ id
-
+
attrChar
java.lang.String
attr_CHAR
CHAR
- value_object
- attr_char
+ value_object
+ attr_char
-
+
attrCharacter
java.lang.String
attr_CHARACTER
CHAR
-
+
attrDate
java.sql.Date
attr_DATE
DATE
-
+
attrDecimal
java.math.BigDecimal
attr_DECIMAL
DECIMAL
-
+
attrInteger
int
attr_INTEGER
INTEGER
org.synchronoss.cpo.transform.jdbc.TransformNoOp
-
+
attrNumeric
java.math.BigDecimal
attr_NUMERIC
NUMERIC
-
+
attrSmallInt
short
attr_SMALLINT
SMALLINT
- value_object
- attr_smallint
+ value_object
+ attr_smallint
-
+
attrTimestamp
java.sql.Timestamp
attr_TIMESTAMP
TIMESTAMP
-
+
attrVarChar
java.lang.String
attr_VARCHAR
VARCHAR
- value_object
- attr_varchar
+ value_object
+ attr_varchar
-
+
attrBit
boolean
attr_BIT
BIT
-
+
attrBool
boolean
attr_BOOL
BOOLEAN
-
+
attrDatetime
java.sql.Timestamp
attr_DATETIME
TIMESTAMP
-
+
attrBigInt
java.math.BigInteger
attr_BIGINT
BIGINT
-
+
attrDouble
double
attr_DOUBLE
DOUBLE
-
+
attrReal
float
attr_REAL
REAL
-
+
attrFloat
float
attr_FLOAT
REAL
-
+
attrTime
java.sql.Time
attr_TIME
@@ -143,123 +143,123 @@
insert into value_object(id, attr_char, attr_character, attr_date, attr_decimal, attr_integer, attr_numeric, attr_smallint, attr_timestamp, attr_varchar, attr_bit, attr_bool, attr_datetime, attr_bigint) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
-
+
id
- IN
+ IN
-
+
attrChar
- IN
+ IN
-
+
attrCharacter
- IN
+ IN
-
+
attrDate
- IN
+ IN
-
+
attrDecimal
- IN
+ IN
-
+
attrInteger
- IN
+ IN
-
+
attrNumeric
- IN
+ IN
-
+
attrSmallInt
- IN
+ IN
-
+
attrTimestamp
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
-
+
attrBit
- IN
+ IN
-
+
attrBool
- IN
+ IN
-
+
attrDatetime
- IN
+ IN
-
+
attrBigInt
- IN
+ IN
insert into value_object (id, attr_varchar) values (?,?)
-
+
id
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
delete from value_object where id = ?
-
+
id
- IN
+ IN
select count(0) from value_object where id = ?
-
+
id
- IN
+ IN
select * from value_object where id = ? for update
-
+
id
- IN
+ IN
select * from value_object where id = ? for update
-
+
id
- IN
+ IN
select * from value_object where attr_varchar=? __CPO_WHERE__ and attr_varchar=?
-
+
attrVarChar
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
@@ -276,34 +276,34 @@
{? = call power(?,?)}
-
+
attrDouble
- OUT
+ OUT
-
+
attrSmallInt
- IN
+ IN
-
+
attrSmallInt
- IN
+ IN
insert into value_object (id,attr_varchar,attr_smallint) values (?,?,?)
-
+
id
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
-
+
attrSmallInt
- IN
+ IN
@@ -315,9 +315,9 @@
delete from value_object where id = ?
-
+
id
- IN
+ IN
@@ -332,44 +332,44 @@
{? = call power(?,?)}
-
+
attrDouble
- OUT
+ OUT
-
+
attrInteger
- IN
+ IN
-
+
attrInteger
- IN
+ IN
select * from value_object where id = ?
-
+
id
- IN
+ IN
select * from value_object where id = ?
-
+
id
- IN
+ IN
select * from value_object where id = ? for update
-
+
id
- IN
+ IN
@@ -381,9 +381,9 @@
update value_object set attr_varchar=?
-
+
attrVarChar
- IN
+ IN
diff --git a/cpo-jdbc/src/test/resources/common/ValueMetaData.xml b/cpo-jdbc/src/test/resources/common/ValueMetaData.xml
index 1c53ce550..5819b3b64 100644
--- a/cpo-jdbc/src/test/resources/common/ValueMetaData.xml
+++ b/cpo-jdbc/src/test/resources/common/ValueMetaData.xml
@@ -21,39 +21,41 @@
]]
-->
-
+
-
+
minId
int
ID
INTEGER
- value_object
- id
+ value_object
+ id
-
+
maxId
int
ID
INTEGER
- value_object
- id
+ value_object
+ id
-
+
int1
int
ID
INTEGER
- value_object
- id
+ value_object
+ id
-
+
int2
int
ID
INTEGER
- value_object
- id
+ value_object
+ id
@@ -63,147 +65,147 @@
select * from value_object where id between ? and ?
-
+
minId
- IN
+ IN
-
+
maxId
- IN
+ IN
{? = call power(?,?)}
-
+
attrDouble
- OUT
+ OUT
-
+
int1
- IN
+ IN
-
+
int2
- IN
+ IN
-
+
id
int
ID
INTEGER
- value_object
- id
+ value_object
+ id
-
+
attrChar
java.lang.String
ATTR_CHAR
CHAR
- value_object
- attr_char
+ value_object
+ attr_char
-
+
attrCharacter
java.lang.String
ATTR_CHARACTER
CHAR
-
+
attrDate
java.sql.Date
ATTR_DATE
DATE
-
+
attrDecimal
java.math.BigDecimal
ATTR_DECIMAL
DECIMAL
-
+
attrInteger
int
ATTR_INTEGER
INTEGER
org.synchronoss.cpo.transform.jdbc.TransformNoOp
-
+
attrNumeric
java.math.BigDecimal
ATTR_NUMERIC
NUMERIC
-
+
attrSmallInt
short
ATTR_SMALLINT
SMALLINT
- value_object
- attr_smallint
+ value_object
+ attr_smallint
-
+
attrTimestamp
java.sql.Timestamp
ATTR_TIMESTAMP
TIMESTAMP
-
+
attrVarChar
java.lang.String
ATTR_VARCHAR
VARCHAR
- value_object
- attr_varchar
+ value_object
+ attr_varchar
-
+
attrBit
boolean
ATTR_BIT
BIT
-
+
attrBool
boolean
ATTR_BOOL
BOOLEAN
-
+
attrDatetime
java.sql.Timestamp
ATTR_DATETIME
TIMESTAMP
-
+
attrBigInt
java.math.BigInteger
ATTR_BIGINT
BIGINT
-
+
attrDouble
double
ATTR_DOUBLE
DOUBLE
-
+
attrReal
float
ATTR_REAL
REAL
-
+
attrFloat
float
ATTR_FLOAT
REAL
-
+
attrTime
java.sql.Time
ATTR_TIME
@@ -212,123 +214,123 @@
insert into value_object(id, attr_char, attr_character, attr_date, attr_decimal, attr_integer, attr_numeric, attr_smallint, attr_timestamp, attr_varchar, attr_bit, attr_bool, attr_datetime, attr_bigint) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
-
+
id
- IN
+ IN
-
+
attrChar
- IN
+ IN
-
+
attrCharacter
- IN
+ IN
-
+
attrDate
- IN
+ IN
-
+
attrDecimal
- IN
+ IN
-
+
attrInteger
- IN
+ IN
-
+
attrNumeric
- IN
+ IN
-
+
attrSmallInt
- IN
+ IN
-
+
attrTimestamp
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
-
+
attrBit
- IN
+ IN
-
+
attrBool
- IN
+ IN
-
+
attrDatetime
- IN
+ IN
-
+
attrBigInt
- IN
+ IN
insert into value_object (id, attr_varchar) values (?,?)
-
+
id
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
delete from value_object where id = ?
-
+
id
- IN
+ IN
select count(0) from value_object where id = ?
-
+
id
- IN
+ IN
select * from value_object where id = ? for update
-
+
id
- IN
+ IN
select * from value_object where id = ? for update
-
+
id
- IN
+ IN
select * from value_object where attr_varchar=? __CPO_WHERE__ and attr_varchar=?
-
+
attrVarChar
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
@@ -345,38 +347,38 @@
{? = call power(?,?)}
-
+
attrDouble
- OUT
+ OUT
-
+
attrSmallInt
- IN
+ IN
-
+
attrSmallInt
- IN
+ IN
insert into value_object (id,attr_varchar,attr_smallint,attr_bigint) values (?,?,?,?)
-
+
id
- IN
+ IN
-
+
attrVarChar
- IN
+ IN
-
+
attrSmallInt
- IN
+ IN
-
+
attrBigInt
- IN
+ IN
@@ -388,9 +390,9 @@
delete from value_object where id = ?
-
+
id
- IN
+ IN
@@ -405,44 +407,44 @@
{? = call power(?,?)}
-
+
attrDouble
- OUT
+ OUT
-
+
attrInteger
- IN
+ IN
-
+
attrInteger
- IN
+ IN
select * from value_object where id = ?
-
+
id
- IN
+ IN
select * from value_object where id = ?
-
+
id
- IN
+ IN
select * from value_object where id = ? for update nowait
-
+
id
- IN
+ IN
@@ -454,9 +456,9 @@
update value_object set attr_varchar=?
-
+
attrVarChar
- IN
+ IN
diff --git a/cpo-jdbc/src/test/resources/emptyClassMetaData.xml b/cpo-jdbc/src/test/resources/emptyClassMetaData.xml
index 4aa24bdc1..70041985c 100644
--- a/cpo-jdbc/src/test/resources/emptyClassMetaData.xml
+++ b/cpo-jdbc/src/test/resources/emptyClassMetaData.xml
@@ -19,7 +19,7 @@
.
]]
-->
-
+
diff --git a/cpo-jdbc/src/test/resources/emptyMetaData.xml b/cpo-jdbc/src/test/resources/emptyMetaData.xml
index 3eb9e188c..bfa70bb27 100644
--- a/cpo-jdbc/src/test/resources/emptyMetaData.xml
+++ b/cpo-jdbc/src/test/resources/emptyMetaData.xml
@@ -19,5 +19,5 @@
.
]]
-->
-
+
diff --git a/cpo-jdbc/src/test/resources/h2/cpoConfig.xml b/cpo-jdbc/src/test/resources/h2/cpoConfig.xml
index d86afa939..c1e32c293 100644
--- a/cpo-jdbc/src/test/resources/h2/cpoConfig.xml
+++ b/cpo-jdbc/src/test/resources/h2/cpoConfig.xml
@@ -21,181 +21,179 @@
]]
-->
-
-
- /emptyClassMetaData.xml
- /common/ValueMetaData.xml
- /common/LobMetaData.xml
- /emptyMetaData.xml
-
-
- /common/ValueCaseMetaData.xml
-
-
- /common/ValueCaseMetaData.xml
-
+
+ /emptyClassMetaData.xml
+ /common/ValueMetaData.xml
+ /common/LobMetaData.xml
+ /emptyMetaData.xml
+
+
+ /common/ValueCaseMetaData.xml
+
+
+ /common/ValueCaseMetaData.xml
+
-
- /emptyClassMetaData.xml
- /common/ValueMetaData.xml
- /common/LobMetaData.xml
- /emptyMetaData.xml
-
+
+ /emptyClassMetaData.xml
+ /common/ValueMetaData.xml
+ /common/LobMetaData.xml
+ /emptyMetaData.xml
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
-
- caseSensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
-
- caseInsensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
+
+ caseSensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
+
+ caseInsensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.driver}
- ${h2.url}
- ${h2.user}
- ${h2.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.driver}
- ${h2.userurl}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.driver}
- ${h2.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.driver}
- ${h2.url}
- ${h2.user}
- ${h2.pswd}
-
-
- ${h2.driver}
- ${h2.url}
- ${h2.user}
- ${h2.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
- ${h2.class}
- ${h2.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.driver}
- ${h2.url}
- ${h2.user}
- ${h2.pswd}
-
-
- ${h2.class}
- ${h2.url}
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${h2.class}
- ${h2.url}
-
-
-
-
- ${h2.driver}
- ${h2.url}
- ${h2.user}
- ${h2.pswd}
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.driver}
+ ${h2.url}
+ ${h2.user}
+ ${h2.pswd}
+
+
+ ${h2.driver}
+ ${h2.url}
+ ${h2.user}
+ ${h2.pswd}
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.driver}
+ ${h2.url}
+ ${h2.user}
+ ${h2.pswd}
+
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${h2.class}
+ ${h2.url}
+
+
+
+
+ ${h2.driver}
+ ${h2.url}
+ ${h2.user}
+ ${h2.pswd}
+
+
+
diff --git a/cpo-jdbc/src/test/resources/hotDeployMetaData.xml b/cpo-jdbc/src/test/resources/hotDeployMetaData.xml
index 804b45342..6667430f4 100644
--- a/cpo-jdbc/src/test/resources/hotDeployMetaData.xml
+++ b/cpo-jdbc/src/test/resources/hotDeployMetaData.xml
@@ -21,7 +21,7 @@
]]
-->
-
diff --git a/cpo-jdbc/src/test/resources/mariadb/cpoConfig.xml b/cpo-jdbc/src/test/resources/mariadb/cpoConfig.xml
index ef7c75379..9781de5a3 100644
--- a/cpo-jdbc/src/test/resources/mariadb/cpoConfig.xml
+++ b/cpo-jdbc/src/test/resources/mariadb/cpoConfig.xml
@@ -21,180 +21,178 @@
]]
-->
-
-
- /emptyClassMetaData.xml
- ${mariadb.valueMeta}
- ${mariadb.lobMeta}
- /emptyMetaData.xml
-
-
- ${mariadb.valueCaseMeta}
-
-
- ${mariadb.valueCaseMeta}
-
+
+ /emptyClassMetaData.xml
+ ${mariadb.valueMeta}
+ ${mariadb.lobMeta}
+ /emptyMetaData.xml
+
+
+ ${mariadb.valueCaseMeta}
+
+
+ ${mariadb.valueCaseMeta}
+
-
- /emptyClassMetaData.xml
- ${mariadb.valueMeta}
- ${mariadb.lobMeta}
- /emptyMetaData.xml
-
+
+ /emptyClassMetaData.xml
+ ${mariadb.valueMeta}
+ ${mariadb.lobMeta}
+ /emptyMetaData.xml
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
-
- caseSensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
-
- caseInsensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
+
+ caseSensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
+
+ caseInsensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.driver}
- ${mariadb.url}
- ${mariadb.user}
- ${mariadb.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.driver}
- ${mariadb.userurl}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.driver}
- ${mariadb.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.driver}
- ${mariadb.url}
- ${mariadb.user}
- ${mariadb.pswd}
-
-
- ${mariadb.driver}
- ${mariadb.url}
- ${mariadb.user}
- ${mariadb.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.driver}
- ${mariadb.url}
- ${mariadb.user}
- ${mariadb.pswd}
-
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mariadb.class}
- ${mariadb.url}
-
-
-
-
- ${mariadb.driver}
- ${mariadb.url}
- ${mariadb.user}
- ${mariadb.pswd}
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.driver}
+ ${mariadb.url}
+ ${mariadb.user}
+ ${mariadb.pswd}
+
+
+ ${mariadb.driver}
+ ${mariadb.url}
+ ${mariadb.user}
+ ${mariadb.pswd}
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.driver}
+ ${mariadb.url}
+ ${mariadb.user}
+ ${mariadb.pswd}
+
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mariadb.class}
+ ${mariadb.url}
+
+
+
+
+ ${mariadb.driver}
+ ${mariadb.url}
+ ${mariadb.user}
+ ${mariadb.pswd}
+
+
+
diff --git a/cpo-jdbc/src/test/resources/mysql/cpoConfig.xml b/cpo-jdbc/src/test/resources/mysql/cpoConfig.xml
index 436e6f97e..a78047688 100644
--- a/cpo-jdbc/src/test/resources/mysql/cpoConfig.xml
+++ b/cpo-jdbc/src/test/resources/mysql/cpoConfig.xml
@@ -21,180 +21,178 @@
]]
-->
-
-
- /emptyClassMetaData.xml
- ${mysql.valueMeta}
- ${mysql.lobMeta}
- /emptyMetaData.xml
-
-
- ${mysql.valueCaseMeta}
-
-
- ${mysql.valueCaseMeta}
-
+
+ /emptyClassMetaData.xml
+ ${mysql.valueMeta}
+ ${mysql.lobMeta}
+ /emptyMetaData.xml
+
+
+ ${mysql.valueCaseMeta}
+
+
+ ${mysql.valueCaseMeta}
+
-
- /emptyClassMetaData.xml
- ${mysql.valueMeta}
- ${mysql.lobMeta}
- /emptyMetaData.xml
-
+
+ /emptyClassMetaData.xml
+ ${mysql.valueMeta}
+ ${mysql.lobMeta}
+ /emptyMetaData.xml
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
-
- caseSensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
-
- caseInsensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
+
+ caseSensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
+
+ caseInsensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.driver}
- ${mysql.url}
- ${mysql.user}
- ${mysql.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.driver}
- ${mysql.userurl}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.driver}
- ${mysql.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.driver}
- ${mysql.url}
- ${mysql.user}
- ${mysql.pswd}
-
-
- ${mysql.driver}
- ${mysql.url}
- ${mysql.user}
- ${mysql.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.driver}
- ${mysql.url}
- ${mysql.user}
- ${mysql.pswd}
-
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${mysql.class}
- ${mysql.url}
-
-
-
-
- ${mysql.driver}
- ${mysql.url}
- ${mysql.user}
- ${mysql.pswd}
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.driver}
+ ${mysql.url}
+ ${mysql.user}
+ ${mysql.pswd}
+
+
+ ${mysql.driver}
+ ${mysql.url}
+ ${mysql.user}
+ ${mysql.pswd}
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.driver}
+ ${mysql.url}
+ ${mysql.user}
+ ${mysql.pswd}
+
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${mysql.class}
+ ${mysql.url}
+
+
+
+
+ ${mysql.driver}
+ ${mysql.url}
+ ${mysql.user}
+ ${mysql.pswd}
+
+
+
diff --git a/cpo-jdbc/src/test/resources/oracle/classdef/oracleLobMetaData.xml b/cpo-jdbc/src/test/resources/oracle/classdef/oracleLobMetaData.xml
index ccdd0eb95..96d7764e7 100644
--- a/cpo-jdbc/src/test/resources/oracle/classdef/oracleLobMetaData.xml
+++ b/cpo-jdbc/src/test/resources/oracle/classdef/oracleLobMetaData.xml
@@ -19,7 +19,7 @@
.
]]
-->
-
+
bLob
diff --git a/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueCaseMetaData.xml b/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueCaseMetaData.xml
index 2f93d9eaa..245e92247 100644
--- a/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueCaseMetaData.xml
+++ b/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueCaseMetaData.xml
@@ -19,7 +19,7 @@
.
]]
-->
-
+
attrBit
diff --git a/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueMetaData.xml b/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueMetaData.xml
index 2b6669d68..e5cb7a873 100644
--- a/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueMetaData.xml
+++ b/cpo-jdbc/src/test/resources/oracle/classdef/oracleValueMetaData.xml
@@ -19,7 +19,7 @@
.
]]
-->
-
+
minId
diff --git a/cpo-jdbc/src/test/resources/oracle/cpoConfig.xml b/cpo-jdbc/src/test/resources/oracle/cpoConfig.xml
index 2ce641278..c8f3ca623 100644
--- a/cpo-jdbc/src/test/resources/oracle/cpoConfig.xml
+++ b/cpo-jdbc/src/test/resources/oracle/cpoConfig.xml
@@ -21,180 +21,178 @@
]]
-->
-
-
- /emptyClassMetaData.xml
- ${oracle.valueMeta}
- ${oracle.lobMeta}
- /emptyMetaData.xml
-
-
- ${oracle.valueCaseMeta}
-
-
- ${oracle.valueCaseMeta}
-
+
+ /emptyClassMetaData.xml
+ ${oracle.valueMeta}
+ ${oracle.lobMeta}
+ /emptyMetaData.xml
+
+
+ ${oracle.valueCaseMeta}
+
+
+ ${oracle.valueCaseMeta}
+
-
- /emptyClassMetaData.xml
- ${oracle.valueMeta}
- ${oracle.lobMeta}
- /emptyMetaData.xml
-
+
+ /emptyClassMetaData.xml
+ ${oracle.valueMeta}
+ ${oracle.lobMeta}
+ /emptyMetaData.xml
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
-
- caseSensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
-
- caseInsensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
+
+ caseSensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
+
+ caseInsensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.driver}
- ${oracle.url}
- ${oracle.user}
- ${oracle.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.driver}
- ${oracle.userurl}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.driver}
- ${oracle.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.driver}
- ${oracle.url}
- ${oracle.user}
- ${oracle.pswd}
-
-
- ${oracle.driver}
- ${oracle.url}
- ${oracle.user}
- ${oracle.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.driver}
- ${oracle.url}
- ${oracle.user}
- ${oracle.pswd}
-
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${oracle.class}
- ${oracle.url}
-
-
-
-
- ${oracle.driver}
- ${oracle.url}
- ${oracle.user}
- ${oracle.pswd}
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.driver}
+ ${oracle.url}
+ ${oracle.user}
+ ${oracle.pswd}
+
+
+ ${oracle.driver}
+ ${oracle.url}
+ ${oracle.user}
+ ${oracle.pswd}
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.driver}
+ ${oracle.url}
+ ${oracle.user}
+ ${oracle.pswd}
+
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${oracle.class}
+ ${oracle.url}
+
+
+
+
+ ${oracle.driver}
+ ${oracle.url}
+ ${oracle.user}
+ ${oracle.pswd}
+
+
+
diff --git a/cpo-jdbc/src/test/resources/postgres/cpoConfig.xml b/cpo-jdbc/src/test/resources/postgres/cpoConfig.xml
index 4ba8a205a..9a3cdf34a 100644
--- a/cpo-jdbc/src/test/resources/postgres/cpoConfig.xml
+++ b/cpo-jdbc/src/test/resources/postgres/cpoConfig.xml
@@ -21,180 +21,178 @@
]]
-->
-
-
- /emptyClassMetaData.xml
- ${postgres.valueMeta}
- ${postgres.lobMeta}
- /emptyMetaData.xml
-
-
- ${postgres.valueCaseMeta}
-
-
- ${postgres.valueCaseMeta}
-
+
+ /emptyClassMetaData.xml
+ ${postgres.valueMeta}
+ ${postgres.lobMeta}
+ /emptyMetaData.xml
+
+
+ ${postgres.valueCaseMeta}
+
+
+ ${postgres.valueCaseMeta}
+
-
- /emptyClassMetaData.xml
- ${postgres.valueMeta}
- ${postgres.lobMeta}
- /emptyMetaData.xml
-
+
+ /emptyClassMetaData.xml
+ ${postgres.valueMeta}
+ ${postgres.lobMeta}
+ /emptyMetaData.xml
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
-
- caseSensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
-
- caseInsensitive
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
+
+ caseSensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
+
+ caseInsensitive
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.driver}
- ${postgres.url}
- ${postgres.user}
- ${postgres.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.driver}
- ${postgres.userurl}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.driver}
- ${postgres.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.driver}
- ${postgres.url}
- ${postgres.user}
- ${postgres.pswd}
-
-
- ${postgres.driver}
- ${postgres.url}
- ${postgres.user}
- ${postgres.pswd}
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.driver}
- ${postgres.url}
- ${postgres.user}
- ${postgres.pswd}
-
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
- jdbcMeta
- org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
-
- ${postgres.class}
- ${postgres.url}
-
-
-
-
- ${postgres.driver}
- ${postgres.url}
- ${postgres.user}
- ${postgres.pswd}
-
-
-
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.driver}
+ ${postgres.url}
+ ${postgres.user}
+ ${postgres.pswd}
+
+
+ ${postgres.driver}
+ ${postgres.url}
+ ${postgres.user}
+ ${postgres.pswd}
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.driver}
+ ${postgres.url}
+ ${postgres.user}
+ ${postgres.pswd}
+
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
+ jdbcMeta
+ org.synchronoss.cpo.jdbc.config.JdbcCpoConfigProcessor
+
+ ${postgres.class}
+ ${postgres.url}
+
+
+
+
+ ${postgres.driver}
+ ${postgres.url}
+ ${postgres.user}
+ ${postgres.pswd}
+
+
+
diff --git a/pom.xml b/pom.xml
index 9a55946c9..655d9ed03 100644
--- a/pom.xml
+++ b/pom.xml
@@ -180,20 +180,6 @@
maven-surefire-plugin
3.5.4
-
- org.apache.xmlbeans
- xmlbeans
- 5.3.0
-
-
- Build-XMLBeans
- generate-sources
-
- compile
-
-
-
-
org.apache.maven.plugins
maven-site-plugin
@@ -443,12 +429,6 @@
testng
7.11.0
-
-
- org.apache.logging.log4j
- log4j-to-slf4j
- 2.25.1
-
org.slf4j
slf4j-api
@@ -467,11 +447,15 @@
import
- org.apache.xmlbeans
- xmlbeans
- 5.3.0
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+ 4.0.4
-
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ 4.0.6
+
@@ -576,7 +560,7 @@
all
true
- org.synchronoss.cpo.cassandra.cpoCassandraConfig.*:org.synchronoss.cpo.cassandra.cpoCassandraMeta.*:org.synchronoss.cpo.jdbc.cpoJdbcMeta.*:org.synchronoss.cpo.jdbc.cpoJdbcConfig.*:org.synchronoss.cpo.core.cpoCoreMeta.*:org.synchronoss.cpo.core.cpoCoreConfig.*
+ org.synchronoss.cpo.cassandra.cpoCassandraConfig.*:org.synchronoss.cpo.cassandra.cpoCassandraMeta.*:org.synchronoss.cpo.jdbc.cpoJdbcMeta.*:org.synchronoss.cpo.jdbc.cpoJdbcConfig.*:org.synchronoss.cpo.core.cpometa.*:org.synchronoss.cpo.core.cpoCoreConfig.*