/** * @param builder Builder. * @param desc Descriptor with parameters of BinaryObject to build. * @return BinaryObject built by provided description */ private static BinaryObject newBinaryObject(BinaryObjectBuilder builder, BinaryUpdateDescription desc) { builder.setField(SEQ_NUM_FLD, desc.itemId + 1); builder.setField(desc.fieldName, desc.val); return builder.build(); }
/** {@inheritDoc} */ @Override public Void process(MutableEntry<Integer, BinaryObject> entry, Object... arguments) throws EntryProcessorException { BinaryObjectBuilder bldr = entry.getValue().toBuilder(); Integer val = bldr.<Integer>getField("val"); bldr.setField("val", val + 1); bldr.setField("strVal", "updated-" + val); entry.setValue(bldr.build()); return null; } }
/** * */ @Test public void testRemoveFromNewObject() { BinaryObjectBuilder builder = builder(GridBinaryTestClasses.TestObjectAllTypes.class.getName()); builder.setField("str", "a"); builder.removeField("str"); Assert.assertNull(builder.build().<GridBinaryTestClasses.TestObjectAllTypes>deserialize().str); }
/** * */ @Test public void testRemoveFromExistingObject() { GridBinaryTestClasses.TestObjectAllTypes obj = new GridBinaryTestClasses.TestObjectAllTypes(); obj.setDefaultData(); obj.enumArr = null; BinaryObjectBuilder builder = builder(toBinary(obj)); builder.removeField("str"); BinaryObject binary = builder.build(); GridBinaryTestClasses.TestObjectAllTypes deserialzied = binary.deserialize(); assertNull(deserialzied.str); }
@Override public Object process(MutableEntry<MyKey, Integer> entry, Object... objects) throws EntryProcessorException { String key = entry.getKey().key; if (key.startsWith("register_type")) { BinaryObjectBuilder bo = ignite.binary().builder(key); bo.build(); } if (key.startsWith("remove")) { entry.remove(); } else { Integer value = entry.getValue() == null ? 0 : entry.getValue(); entry.setValue(++value); } if (key.startsWith("register_type")) return results[Integer.parseInt(key.substring(key.lastIndexOf("_") + 1))]; return null; }
/** * @param builder Object builder. * @param field Field name. * @param val Value to set. * @param valType Type of {@code val}. * @param <T> Value type. */ private <T> void setValue0(BinaryObjectBuilder builder, String field, Object val, Class<T> valType) { builder.setField(field, (T)val, valType); }
/** {@inheritDoc} */ @Override public Object value(Object key, Object val) throws IgniteCheckedException { Object obj; if (parent != null) { obj = parent.value(key, val); if (obj == null) return null; if (!ctx.cacheObjects().isBinaryObject(obj)) throw new IgniteCheckedException("Non-binary object received as a result of property extraction " + "[parent=" + parent + ", propName=" + propName + ", obj=" + obj + ']'); } else obj = isKeyProp ? key : val; if (obj instanceof BinaryObject) { BinaryObject obj0 = (BinaryObject) obj; return fieldValue(obj0); } else if (obj instanceof BinaryObjectBuilder) { BinaryObjectBuilder obj0 = (BinaryObjectBuilder)obj; return obj0.getField(propName); } else throw new IgniteCheckedException("Unexpected binary object class [type=" + obj.getClass() + ']'); }
BinaryObjectBuilder clearBoBuilder = provider.createBinaryObjectBuilder( clearBo ); for ( String columnName : key.getMetadata().getRowKeyColumnNames() ) { clearBoBuilder.removeField( StringHelper.realColumnName( columnName ) ); changedObjects.put( id, clearBoBuilder.build() ); Contracts.assertNotNull( binaryObject, "binaryObject" ); BinaryObjectBuilder binaryObjectBuilder = provider.createBinaryObjectBuilder( binaryObject ); binaryObjectBuilder.removeField( key.getMetadata().getCollectionRole() ); binaryObject = binaryObjectBuilder.build(); associationCache.put( id, binaryObject );
/** * @param expTypeName Type name. * @throws Exception If failed. */ private void checkProperty(String expTypeName) throws Exception { String marshBackup = GridTestProperties.getProperty(MARSH_CLASS_NAME); try { GridTestProperties.setProperty(MARSH_CLASS_NAME, BinaryMarshaller.class.getName()); IgniteBinary binary = startGrid().binary(); BinaryObjectBuilder builder = binary.builder("org.ignite.test.TestClass"); BinaryObject bObj = builder.build(); assertEquals(expTypeName, bObj.type().typeName()); } finally { if (marshBackup != null) GridTestProperties.setProperty(MARSH_CLASS_NAME, marshBackup); } } }
/** * @throws Exception If failed. */ @Test public void testSimpleTypeFieldRead() throws Exception { GridBinaryTestClasses.TestObjectAllTypes exp = new GridBinaryTestClasses.TestObjectAllTypes(); exp.setDefaultData(); BinaryObjectBuilder mutPo = wrap(exp); for (Field field : GridBinaryTestClasses.TestObjectAllTypes.class.getDeclaredFields()) { Object expVal = field.get(exp); Object actVal = mutPo.getField(field.getName()); switch (field.getName()) { case "anEnum": assertEquals(((BinaryBuilderEnum)actVal).getOrdinal(), ((Enum)expVal).ordinal()); break; case "enumArr": { BinaryBuilderEnum[] actArr = (BinaryBuilderEnum[])actVal; Enum[] expArr = (Enum[])expVal; assertEquals(expArr.length, actArr.length); for (int i = 0; i < actArr.length; i++) assertEquals(expArr[i].ordinal(), actArr[i].getOrdinal()); break; } } } }
/** * {@inheritDoc} */ @Override public Object process(MutableEntry<String, BinaryObject> mutableEntry, Object... objects) throws EntryProcessorException { BinaryObjectBuilder bob = mutableEntry.getValue().toBuilder(); for (int i = 0; i < flds.length; ++i) { bob.setField(flds[i], vals[i]); } mutableEntry.setValue(bob.build()); return null; } }
@Override public void insertOrUpdateTuple(EntityKey key, TuplePointer tuplePointer, TupleContext tupleContext) throws TupleAlreadyExistsException { IgniteCache<Object, BinaryObject> entityCache = provider.getEntityCache( key.getMetadata() ); Tuple tuple = tuplePointer.getTuple(); Object keyObject = null; BinaryObjectBuilder builder = null; IgniteTupleSnapshot tupleSnapshot = (IgniteTupleSnapshot) tuple.getSnapshot(); keyObject = tupleSnapshot.getCacheKey(); if ( tuple.getSnapshotType() == SnapshotType.UPDATE ) { builder = provider.createBinaryObjectBuilder( tupleSnapshot.getCacheValue() ); } else { builder = provider.createBinaryObjectBuilder( provider.getEntityTypeName( key.getMetadata().getTable() ) ); } for ( String columnName : tuple.getColumnNames() ) { Object value = tuple.get( columnName ); if ( value != null ) { builder.setField( StringHelper.realColumnName( columnName ), value ); } else { builder.removeField( StringHelper.realColumnName( columnName ) ); } } BinaryObject valueObject = builder.build(); entityCache.put( keyObject, valueObject ); tuplePointer.setTuple( new Tuple( new IgniteTupleSnapshot( keyObject, valueObject, key.getMetadata() ), SnapshotType.UPDATE ) ); }
/** * Test {@link BinaryObjectBuilder#build()} adds type mapping to the binary marshaller's cache. */ @Test public void testMarshallerMappings() throws IgniteCheckedException, ClassNotFoundException { String typeName = "TestType"; int typeId = BinaryContext.defaultIdMapper().typeId(typeName); BinaryObjectBuilder builder = newWrapper(typeName); builder.build(); MarshallerContext marshCtx = grid(0).context().marshallerContext(); String actualTypeName = marshCtx.getClassName(MarshallerPlatformIds.JAVA_ID, typeId); assertEquals(typeName, actualTypeName); }
BinaryObjectBuilder obj0 = (BinaryObjectBuilder)obj; return obj0.getField(propName);
/** * @param ignite Node. * @param id Identifier. * @return Trader entity as binary object. */ private BinaryObject createTrader(Ignite ignite, String id) { return ignite.binary() .builder(TRADER) .setField(ID, id) .setField(FIRSTNAME, "First name " + id) .setField(SECONDNAME, "Second name " + id) .setField(EMAIL, "trader" + id + "@mail.org") .build(); }
BinaryObjectBuilder clearBoBuilder = provider.createBinaryObjectBuilder( clearBo ); for ( String columnName : key.getColumnNames() ) { clearBoBuilder.removeField( columnName ); clearBoBuilder.removeField( columnName ); changedObjects.put( previousId, clearBoBuilder.build() ); putBoBuilder.setField( StringHelper.realColumnName( columnName ), value ); putBoBuilder.removeField( columnName ); changedObjects.put( currentId, putBoBuilder.build() ); Object value = op.getKey().getColumnValue( columnName ); if ( value != null ) { putBoBuilder.setField( StringHelper.stringAfterPoint( columnName ), value ); Object value = currentStateTuple.get( columnName ); if ( value != null ) { putBoBuilder.setField( StringHelper.stringAfterPoint( columnName ), value ); BinaryObject itemObject = putBoBuilder.build(); if ( index >= 0 ) { associationObjects.set( index, itemObject ); binaryObjectBuilder.setField( column, associationObjects.toArray( new BinaryObject[ associationObjects.size() ] ) ); binaryObject = binaryObjectBuilder.build(); associationCache.put( id, binaryObject );
/** * @param po Binary object. * @param fields Fields. * @return Copy. */ private BinaryObject copy(BinaryObject po, Map<String, Object> fields) { BinaryObjectBuilder builder = BinaryObjectBuilderImpl.wrap(po); if (fields != null) { for (Map.Entry<String, Object> e : fields.entrySet()) builder.setField(e.getKey(), e.getValue()); } return builder.build(); }
/** * Create value object. * * @param ignite Ignite instance. * @param id ID. * @return Value object. */ protected static BinaryObject value(Ignite ignite, long id) { return ignite.binary().builder(ValueClass.class.getName()) .setField(FIELD_NAME_1_ESCAPED, id) .setField(FIELD_NAME_2_ESCAPED, id) .build(); }
/** * @param ignite Node. * @param id Identifier. * @param traderId Key. * @param num Num. * @return Deposit entity as binary object. */ private BinaryObject createDeposit(Ignite ignite, String id, String traderId, int num) { double startBalance = 100 + nextRandom(100) / 1.123; return ignite.binary() .builder(DEPOSIT) .setField(ID, id) .setField(TRADER_ID, traderId) .setField(TRADER_LINK, num) .setField(BALANCE, new BigDecimal(startBalance)) .setField(MARGIN_RATE, new BigDecimal(0.1)) .setField(BALANCE_ON_DAY_OPEN, new BigDecimal(startBalance)) .build(); }