下面列出了怎么用org.apache.commons.lang.SerializationUtils的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public Object decode() throws IOException {
final byte isWatermark = (byte) inputStream.read();
if (isWatermark == -1) {
// end of the input stream
throw new EOFException();
}
if (isWatermark == 0x00) {
// this is not a watermark
return valueDecoder.decode();
} else if (isWatermark == 0x01) {
// this is a watermark
final WatermarkWithIndex watermarkWithIndex =
(WatermarkWithIndex) SerializationUtils.deserialize(inputStream);
return watermarkWithIndex;
} else {
throw new RuntimeException("Watermark decoding failure: " + isWatermark);
}
}
@Test
public void testReadFromQueryWithPartitions() throws Exception {
String serversDirectory = new File(this.getClass().getClassLoader().getResource("servers").toURI()).getCanonicalPath();
context.getAdditionalConfigProps().put("pxf.config.server.directory", serversDirectory + File.separator + "test-server");
context.setDataSource("query:testquery");
context.addOption("PARTITION_BY", "count:int");
context.addOption("RANGE", "1:10");
context.addOption("INTERVAL", "1");
context.setFragmentMetadata(SerializationUtils.serialize(PartitionType.INT.getFragmentsMetadata("count", "1:10", "1").get(2)));
ArgumentCaptor<String> queryPassed = ArgumentCaptor.forClass(String.class);
when(mockStatement.executeQuery(queryPassed.capture())).thenReturn(mockResultSet);
accessor.initialize(context);
accessor.openForRead();
String expected = "SELECT FROM (SELECT dept.name, count(), max(emp.salary)\n" +
"FROM dept JOIN emp\n" +
"ON dept.id = emp.dept_id\n" +
"GROUP BY dept.name) pxfsubquery WHERE count >= 1 AND count < 2";
assertEquals(expected, queryPassed.getValue());
}
@Test
public void testReadFromQueryWithWhereWithPartitions() throws Exception {
String serversDirectory = new File(this.getClass().getClassLoader().getResource("servers").toURI()).getCanonicalPath();
context.getAdditionalConfigProps().put("pxf.config.server.directory", serversDirectory + File.separator + "test-server");
context.setDataSource("query:testquerywithwhere");
context.addOption("PARTITION_BY", "count:int");
context.addOption("RANGE", "1:10");
context.addOption("INTERVAL", "1");
context.setFragmentMetadata(SerializationUtils.serialize(PartitionType.INT.getFragmentsMetadata("count", "1:10", "1").get(2)));
ArgumentCaptor<String> queryPassed = ArgumentCaptor.forClass(String.class);
when(mockStatement.executeQuery(queryPassed.capture())).thenReturn(mockResultSet);
accessor.initialize(context);
accessor.openForRead();
String expected = "SELECT FROM (SELECT dept.name, count(), max(emp.salary)\n" +
"FROM dept JOIN emp\n" +
"ON dept.id = emp.dept_id\n" +
"WHERE dept.id < 10\n" +
"GROUP BY dept.name) pxfsubquery WHERE count >= 1 AND count < 2";
assertEquals(expected, queryPassed.getValue());
}
@Override
public void write(DataOutput output) throws IOException {
// write model type
WritableUtils.writeString(output, modelType);
// write learning rate
output.writeFloat(learningRate);
// write model path
if (this.modelPath != null) {
WritableUtils.writeString(output, modelPath);
} else {
WritableUtils.writeString(output, "null");
}
// serialize the class
Class<? extends FloatFeatureTransformer> featureTransformerCls = this.featureTransformer
.getClass();
byte[] featureTransformerBytes = SerializationUtils
.serialize(featureTransformerCls);
output.writeInt(featureTransformerBytes.length);
output.write(featureTransformerBytes);
}
@SuppressWarnings("unchecked")
public static Class<? extends Serializable> defineBeanClass(Collection<ParamSpec> paramSpecs) {
byte[] bytes = SerializationUtils.serialize((Serializable) paramSpecs);
String className = PARAM_BEAN_PREFIX + "_" + Hex.encodeHexString(bytes);
List<ParamSpec> paramSpecsCopy = new ArrayList<>(paramSpecs);
for (int i=0; i<paramSpecsCopy.size(); i++) {
ParamSpec paramSpec = paramSpecsCopy.get(i);
if (paramSpec instanceof SecretParam) {
ParamSpec paramSpecClone = (ParamSpec) SerializationUtils.clone(paramSpec);
String description = paramSpecClone.getDescription();
if (description == null)
description = "";
description += String.format("<div style='margin-top: 12px;'><b>Note:</b> Secret less than %d characters "
+ "will not be masked in build log</div>", SecretInput.MASK.length());
paramSpecClone.setDescription(description);
paramSpecsCopy.set(i, paramSpecClone);
}
}
return (Class<? extends Serializable>) ParamSpec.defineClass(className, "Build Parameters", paramSpecsCopy);
}
@SuppressWarnings("unchecked")
@Nullable
public static Class<? extends Serializable> loadBeanClass(String className) {
if (className.startsWith(PARAM_BEAN_PREFIX)) {
byte[] bytes;
try {
bytes = Hex.decodeHex(className.substring(PARAM_BEAN_PREFIX.length()+1).toCharArray());
} catch (DecoderException e) {
throw new RuntimeException(e);
}
List<ParamSpec> paramSpecs = (List<ParamSpec>) SerializationUtils.deserialize(bytes);
return defineBeanClass(paramSpecs);
} else {
return null;
}
}
@Override
public void putx(String key, V value, int seconds) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
byte[] bkey = key.getBytes();
if (seconds > 0) {
jedis.setex(bkey, seconds, SerializationUtils.serialize(value));
} else {
jedis.set(bkey, SerializationUtils.serialize(value));
}
} finally {
IOUtils.closeQuietly(jedis);
}
}
@Override
public RowDataPacket nextRow() {
RowDataPacket rp = super.nextRow();
if (rp == null)
return null;
else {
DGRowPacket newRow = new DGRowPacket(orgFieldCount, sumSize);
for (int index = 0; index < sumSize; index++) {
byte[] b = rp.getValue(index);
if (b != null) {
Object obj = SerializationUtils.deserialize(b);
newRow.setSumTran(index, obj, b.length);
}
}
for (int index = sumSize; index < this.fieldCount; index++) {
newRow.add(rp.getValue(index));
}
return newRow;
}
}
@Test(expected = ExecutionException.class)
public void testMultiget_TranscoderExecption() throws ExecutionException, InterruptedException, TimeoutException {
final Transcoder<Serializable> transcoder = new Transcoder<Serializable>() {
@Override
public Serializable decode(final byte[] b) {
throw new SerializationException("QQQQQ YYYYY");
}
@Override
public byte[] encode(final Serializable t) {
return SerializationUtils.serialize(t);
}
};
final MemcachedClient<Object, Serializable> client = createClient(transcoder);
client.setAsync("meh", "its here").get();
client.getBulkAsync(Lists.newArrayList("meh", "bah")).get(1, TimeUnit.MINUTES);
}
/**
* {@inheritDoc}
*/
@Override
public Payment voidCapture(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(VOID_CAPTURE);
final net.authorize.Merchant merchant = createMerchant();
final net.authorize.aim.Transaction transaction = merchant.createAIMTransaction(
net.authorize.TransactionType.VOID,
payment.getPaymentAmount()
);
transaction.setTransactionId(payment.getTransactionReferenceId()); // prev auth
return runTransaction(merchant, transaction, payment);
}
/**
* {@inheritDoc}
*/
@Override
public Payment authorizeCapture(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(AUTH_CAPTURE);
final net.authorize.Merchant merchant = createMerchant();
final net.authorize.aim.Transaction transaction = merchant.createAIMTransaction(
net.authorize.TransactionType.AUTH_CAPTURE,
payment.getPaymentAmount()
);
transaction.setCustomer(createAnetCustomer(payment));
transaction.setOrder(createAnetOrder(payment));
transaction.setCreditCard(createAnetCreditCard(payment));
transaction.setShippingAddress(createShippingAddress(payment));
return runTransaction(merchant, transaction, payment);
}
@Override
public Payment capture(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(CAPTURE);
final net.authorize.Merchant merchant = createMerchant();
final net.authorize.aim.Transaction transaction = merchant.createAIMTransaction(
net.authorize.TransactionType.PRIOR_AUTH_CAPTURE,
payment.getPaymentAmount()
);
transaction.setTransactionId(payment.getTransactionReferenceId()); // prev auth
return runTransaction(merchant, transaction, payment);
}
/**
* {@inheritDoc}
*/
@Override
public Payment reverseAuthorization(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(REVERSE_AUTH);
if (isParameterActivated(REVERSE_AUTH_FAIL) || isParameterActivated(REVERSE_AUTH_FAIL_NO + payment.getPaymentAmount().toPlainString())) {
payment.setTransactionOperationResultCode("EXTERNAL_ERROR_CODE");
payment.setTransactionOperationResultMessage("Card rejected exception. Reverse authorize for " + payment.getPaymentAmount().toPlainString());
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_FAILED);
payment.setPaymentProcessorBatchSettlement(false);
} else {
payment.setTransactionReferenceId(UUID.randomUUID().toString());
payment.setTransactionGatewayLabel(getLabel());
payment.setTransactionOperationResultCode("REVERSE_AUTH_OK");
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_OK);
payment.setPaymentProcessorBatchSettlement(false);
}
return payment;
}
/**
* {@inheritDoc}
*/
@Override
public Payment voidCapture(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(VOID_CAPTURE);
if (isParameterActivated(VOID_CAPTURE_FAIL) || isParameterActivated(VOID_CAPTURE_FAIL_NO + payment.getPaymentAmount().toPlainString())) {
payment.setTransactionOperationResultCode("EXTERNAL_ERROR_CODE");
payment.setTransactionOperationResultMessage("Card rejected exception. Void Capture for " + payment.getPaymentAmount().toPlainString());
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_FAILED);
payment.setPaymentProcessorBatchSettlement(false);
} else {
payment.setTransactionReferenceId(UUID.randomUUID().toString());
payment.setTransactionGatewayLabel(getLabel());
payment.setTransactionOperationResultCode("OK");
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_OK);
payment.setPaymentProcessorBatchSettlement(false);
}
return payment;
}
/**
* {@inheritDoc}
*/
@Override
public Payment refund(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(REFUND);
if (isParameterActivated(REFUND_FAIL) || isParameterActivated(REFUND_FAIL_NO + payment.getPaymentAmount().toPlainString())) {
payment.setTransactionOperationResultCode("EXTERNAL_ERROR_CODE");
payment.setTransactionOperationResultMessage("Card rejected exception. Refund for " + payment.getPaymentAmount().toPlainString());
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_FAILED);
payment.setPaymentProcessorBatchSettlement(false);
} else {
payment.setTransactionReferenceId(UUID.randomUUID().toString());
payment.setTransactionGatewayLabel(getLabel());
payment.setTransactionOperationResultCode("OK");
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_OK);
payment.setPaymentProcessorBatchSettlement(false);
}
return payment;
}
@Override
public void encode(final T element) throws IOException {
if (element instanceof WatermarkWithIndex) {
outputStream.write(0x01); // this is watermark
outputStream.write(SerializationUtils.serialize((Serializable) element));
} else {
outputStream.write(0x00); // this is a data element
valueEncoder.encode(element);
}
}
public void testSerialization() {
int hashCode = ColorEnum.RED.hashCode();
assertSame(ColorEnum.RED, SerializationUtils.clone(ColorEnum.RED));
assertEquals(hashCode, SerializationUtils.clone(ColorEnum.RED).hashCode());
assertSame(ColorEnum.GREEN, SerializationUtils.clone(ColorEnum.GREEN));
assertSame(ColorEnum.BLUE, SerializationUtils.clone(ColorEnum.BLUE));
}
/**
* getFragments() implementation.
* Note that all partitionType parameters must be verified before calling this procedure.
*
* @return a list of getFragmentsMetadata to be passed to PXF segments
*/
@Override
public List<Fragment> getFragments() {
if (partitionType == null) {
fragments.add(createFragment(null));
} else {
List<JdbcFragmentMetadata> fragmentsMetadata = partitionType.getFragmentsMetadata(column, range, interval);
for (JdbcFragmentMetadata fragmentMetadata : fragmentsMetadata) {
fragments.add(createFragment(SerializationUtils.serialize(fragmentMetadata)));
}
}
return fragments;
}
/**
* Insert fragment constraints into the SQL query.
*
* @param context RequestContext of the fragment
* @param dbProduct Database product (affects the behaviour for DATE partitions)
* @param quoteString String to use as quote for column identifiers
* @param query SQL query to insert constraints to. The query may may contain other WHERE statements
*/
public void buildFragmenterSql(RequestContext context, DbProduct dbProduct, String quoteString, StringBuilder query) {
if (context.getOption("PARTITION_BY") == null) {
return;
}
byte[] meta = context.getFragmentMetadata();
if (meta == null) {
return;
}
// determine if we need to add WHERE statement if not a single WHERE is in the query
// or subquery is used and there are no WHERE statements after subquery alias
int startIndexToSearchForWHERE = 0;
if (subQueryUsed) {
startIndexToSearchForWHERE = query.indexOf(SUBQUERY_ALIAS_SUFFIX);
}
if (query.indexOf("WHERE", startIndexToSearchForWHERE) < 0) {
query.append(" WHERE ");
} else {
query.append(" AND ");
}
JdbcFragmentMetadata fragmentMetadata = JdbcFragmentMetadata.class.cast(SerializationUtils.deserialize(meta));
String fragmentSql = fragmentMetadata.toSqlConstraint(quoteString, dbProduct);
query.append(fragmentSql);
}
@Path("/allocate-job-caches")
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@POST
public byte[] allocateJobCaches(byte[] cacheAllocationRequestBytes) {
CacheAllocationRequest allocationRequest = (CacheAllocationRequest) SerializationUtils
.deserialize(cacheAllocationRequestBytes);
return SerializationUtils.serialize((Serializable) jobManager.allocateJobCaches(
getJobToken(), allocationRequest.getCurrentTime(), allocationRequest.getInstances()));
}
private int getRealSize() {
int size = super.calcPacketSize();
for (int i = 0; i < sumSize; i++) {
byte[] v = null;
Object obj = sumTranObjects[i];
if (obj != null)
v = SerializationUtils.serialize((Serializable) obj);
size += (v == null || v.length == 0) ? 1 : ByteUtil.decodeLength(v);
}
return size;
}
/**
* gets the OBO-style ID of the specified object. E.g. "GO:0008150"
* ID is then cloned to avoid memory leaks.
* @param owlObject
* @return OBO-style identifier, using obo2owl mapping
*/
public String getIdentifier(OWLObject owlObject) {
if (owlObject instanceof OWLNamedObject) {
// https://github.com/owlcollab/owltools/pull/247
IRI iri = ((OWLNamedObject)owlObject).getIRI();
return getIdentifier(iri);
}
String identifier = Owl2Obo.getIdentifierFromObject(owlObject, this.sourceOntology, null);
return (String) SerializationUtils.clone(identifier);
}
@Override
public Object hget(String key, String field) {
byte[] bytes = jedis.hget(key.getBytes(), field.getBytes());
if (bytes == null){
return null;
} else {
return SerializationUtils.deserialize(bytes);
}
}
/**
* Gets the monitoring info.
*
* @return the monitoringInfo
*/
@Transient
public MonitoringInfo getMonitoringInfo() {
if (getMonitoringInfoBytes() == null) {
return null;
}
return (MonitoringInfo) SerializationUtils
.deserialize(getMonitoringInfoBytes());
}
@Test
public void span_serializes_and_deserializes_with_no_data_loss() {
Span span = new Span(
traceId, parentSpanId, spanId, spanName, sampleableForFullyCompleteSpan, userId,
spanPurposeForFullyCompletedSpan, startTimeEpochMicrosForFullyCompleteSpan,
startTimeNanosForFullyCompleteSpan, durationNanosForFullyCompletedSpan, tags, annotations
);
byte[] bytes = SerializationUtils.serialize(span);
Span deserializedSpan = (Span) SerializationUtils.deserialize(bytes);
verifySpanDeepEquals(span, deserializedSpan, false);
}
/**
* {@inheritDoc}
*/
@Override
public Payment authorize(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(AUTH);
payment.setTransactionReferenceId(UUID.randomUUID().toString());
payment.setTransactionAuthorizationCode(UUID.randomUUID().toString());
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_MANUAL_PROCESSING_REQUIRED);
payment.setPaymentProcessorBatchSettlement(false);
return payment;
}
@Override
public Optional<Throwable> fromBytes(final byte[] bytes) {
try {
if (bytes != null && bytes.length > 0) {
return Optional.of((Throwable) SerializationUtils.deserialize(bytes));
}
} catch (final SerializationException | IllegalArgumentException e) {
LOG.log(Level.WARNING, "Unable to deserialize a Throwable.", e);
}
return Optional.empty();
}
/**
* {@inheritDoc}
*/
@Override
public Payment capture(final Payment paymentIn, final boolean forceProcessing) {
final Payment payment = (Payment) SerializationUtils.clone(paymentIn);
payment.setTransactionOperation(CAPTURE);
payment.setTransactionReferenceId(UUID.randomUUID().toString());
payment.setTransactionAuthorizationCode(UUID.randomUUID().toString());
payment.setPaymentProcessorResult(Payment.PAYMENT_STATUS_MANUAL_PROCESSING_REQUIRED);
payment.setPaymentProcessorBatchSettlement(false);
return payment;
}
public String getLabelOrDisplayId(OWLObject c) {
String label = getLabel(c);
if (label == null) {
if (c instanceof OWLNamedObject) {
OWLNamedObject nc = (OWLNamedObject)c;
label = nc.getIRI().getFragment();
}
else {
label = c.toString();
}
}
return (String) SerializationUtils.clone(label);
}
/**
* Method to get Service Status in its raw state i.e. without any check or update.
*
* @param technology
* @return
*/
@Transient
public HashMap<String, Map<String, Boolean>> getTechnologyGroupedRawServiceStatus(String technology) {
HashMap<String, Map<String, Boolean>> techServiceMap = new HashMap<String, Map<String, Boolean>>();
HashMap<String, Map<String, Boolean>> serviceMap = new HashMap<String, Map<String, Boolean>>();
byte [] techBytes = getTechnologyServiceBytes();
if (techBytes == null) {
return serviceMap;
}
// deserializing the data.
techServiceMap = (HashMap<String, Map<String, Boolean>>) SerializationUtils
.deserialize(techBytes);
if (technology != null) {
serviceMap.put(technology, techServiceMap.get(technology));
} else {
serviceMap.putAll(techServiceMap);
}
/*
if (technology == null) {
Map agentStatus = new HashMap<String, Boolean>();
agentStatus.put(Constant.Component.Name.AGENT, isAgentDown());
serviceMap.put(Constant.Component.Name.AGENT, agentStatus);
}
*/
// return service status.
return serviceMap;
}