Revert "IGNITE-2979: .NET: Implemented ability to use Java filter in .NET-based continuous queries."
This reverts commit 4e34f58e3affb6fd73807333808e1b8ede8e8b64. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b2c2fa43 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b2c2fa43 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b2c2fa43 Branch: refs/heads/ignite-testing-discovery Commit: b2c2fa43a21ac38f9060b1f3c405954beeeb3bac Parents: 03e8134 Author: vozerov-gridgain <[email protected]> Authored: Thu Apr 14 11:44:52 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Thu Apr 14 11:44:52 2016 +0300 ---------------------------------------------------------------------- .../ignite/internal/binary/BinaryContext.java | 3 - .../internal/binary/GridBinaryMarshaller.java | 3 - .../PlatformDefaultJavaObjectFactory.java | 62 ----- .../platform/PlatformJavaObjectFactoryEx.java | 36 --- .../PlatformJavaObjectFactoryProxy.java | 192 ------------- .../PlatformJavaObjectSingletonFactory.java | 48 ---- .../query/PlatformContinuousQueryImpl.java | 45 +-- .../platform/utils/PlatformUtils.java | 71 ----- .../ignite/internal/util/IgniteUtils.java | 25 -- .../platform/PlatformJavaObjectFactory.java | 36 --- .../platform/PlatformCacheEntryEventFilter.java | 186 ------------- .../PlatformCacheEntryEventFilterFactory.java | 51 ---- ...latformDefaultJavaObjectFactorySelfTest.java | 185 ------------- .../PlatformJavaObjectFactoryProxySelfTest.java | 220 --------------- .../platform/javaobject/TestJavaObject.java | 271 ------------------- .../javaobject/TestJavaObjectNoDefaultCtor.java | 49 ---- .../TestJavaObjectNoDefaultCtorFactory.java | 68 ----- .../ignite/testsuites/IgniteBasicTestSuite.java | 2 - .../testsuites/IgnitePlatformsTestSuite.java | 41 --- .../Apache.Ignite.Core.Tests.csproj | 1 - .../Continuous/ContinuousQueryJavaFilterTest.cs | 265 ------------------ .../Apache.Ignite.Core.csproj | 3 - .../Impl/Binary/BinaryUtils.cs | 3 - .../Impl/Binary/Marshaller.cs | 2 - .../Continuous/ContinuousQueryHandleImpl.cs | 17 +- .../JavaObjects/JavaCacheEntryEventFilter.cs | 48 ---- .../Common/PlatformJavaObjectFactoryProxy.cs | 106 -------- .../Apache.Ignite.Core/Interop/JavaObject.cs | 92 ------- 28 files changed, 7 insertions(+), 2124 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java index 54cb971..c410596 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java @@ -83,7 +83,6 @@ import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileReserveSpaceP import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileUnlockProcessor; import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdatePropertiesProcessor; import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdateTimesProcessor; -import org.apache.ignite.internal.processors.platform.PlatformJavaObjectFactoryProxy; import org.apache.ignite.internal.util.IgniteUtils; import org.apache.ignite.internal.util.lang.GridMapEntry; import org.apache.ignite.internal.util.typedef.F; @@ -273,8 +272,6 @@ public class BinaryContext { registerPredefinedType(GridMapEntry.class, 60); registerPredefinedType(IgniteBiTuple.class, 61); registerPredefinedType(T2.class, 62); - registerPredefinedType(PlatformJavaObjectFactoryProxy.class, - GridBinaryMarshaller.PLATFORM_JAVA_OBJECT_FACTORY_PROXY); registerPredefinedType(BinaryObjectImpl.class, 0); registerPredefinedType(BinaryObjectOffheapImpl.class, 0); http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java index 535207c..3a7454a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java @@ -181,9 +181,6 @@ public class GridBinaryMarshaller { public static final byte LINKED_HASH_MAP = 2; /** */ - public static final byte PLATFORM_JAVA_OBJECT_FACTORY_PROXY = 99; - - /** */ public static final int OBJECT_TYPE_ID = -1; /** */ http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformDefaultJavaObjectFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformDefaultJavaObjectFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformDefaultJavaObjectFactory.java deleted file mode 100644 index 011088c..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformDefaultJavaObjectFactory.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.platform; - -import org.apache.ignite.IgniteException; -import org.apache.ignite.internal.processors.platform.utils.PlatformUtils; -import org.apache.ignite.internal.util.typedef.internal.S; -import org.jetbrains.annotations.Nullable; - -import java.util.Map; - -/** - * Default Java object factory implementation. - */ -public class PlatformDefaultJavaObjectFactory<T> implements PlatformJavaObjectFactoryEx<T> { - /** Class name. */ - private String clsName; - - /** Properties. */ - private Map<String, Object> props; - - /** {@inheritDoc} */ - @Override public void initialize(@Nullable Object payload, @Nullable Map<String, Object> props) { - if (payload == null) - throw new IgniteException("Java object class name is not provided."); - - assert payload instanceof String; - - clsName = (String)payload; - - this.props = props; - } - - /** {@inheritDoc} */ - @Override public T create() { - T res = PlatformUtils.createJavaObject(clsName); - - PlatformUtils.initializeJavaObject(res, clsName, props, null); - - return res; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PlatformDefaultJavaObjectFactory.class, this); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryEx.java deleted file mode 100644 index 9c56e34..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryEx.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.platform; - -import org.apache.ignite.platform.PlatformJavaObjectFactory; -import org.jetbrains.annotations.Nullable; - -import java.util.Map; - -/** - * Extended Java object factory interface to handle special cases. - */ -public interface PlatformJavaObjectFactoryEx<T> extends PlatformJavaObjectFactory<T> { - /** - * Initialize factory. - * - * @param payload Optional payload. - * @param props Optional properties. - */ - public void initialize(@Nullable Object payload, @Nullable Map<String, Object> props); -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryProxy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryProxy.java deleted file mode 100644 index cdf553b..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectFactoryProxy.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.platform; - -import org.apache.ignite.IgniteException; -import org.apache.ignite.binary.BinaryObjectException; -import org.apache.ignite.binary.BinaryReader; -import org.apache.ignite.binary.BinaryWriter; -import org.apache.ignite.binary.Binarylizable; -import org.apache.ignite.internal.GridKernalContext; -import org.apache.ignite.internal.binary.BinaryRawReaderEx; -import org.apache.ignite.internal.binary.BinaryRawWriterEx; -import org.apache.ignite.internal.processors.platform.utils.PlatformUtils; -import org.apache.ignite.internal.util.tostring.GridToStringExclude; -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.platform.PlatformJavaObjectFactory; -import org.jetbrains.annotations.Nullable; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.util.HashMap; -import java.util.Map; - -/** - * Wrapper for Java object factory. - */ -public class PlatformJavaObjectFactoryProxy implements Externalizable, Binarylizable { - /** */ - private static final long serialVersionUID = 0L; - - /** User-defined type. */ - public static final int TYP_USER = 0; - - /** Default factory. */ - public static final int TYP_DEFAULT = 1; - - /** Factory type. */ - private int factoryTyp; - - /** Class name. */ - private String clsName; - - /** Optional payload for special factory types. */ - @GridToStringExclude - private Object payload; - - /** Properties. */ - @GridToStringExclude - private Map<String, Object> props; - - /** - * Default constructor. - */ - public PlatformJavaObjectFactoryProxy() { - // No-op. - } - - /** - * Constructor. - * - * @param factoryTyp Factory type. - * @param clsName Class name. - * @param payload Payload. - * @param props Properties. - */ - public PlatformJavaObjectFactoryProxy(int factoryTyp, @Nullable String clsName, @Nullable Object payload, - @Nullable Map<String, Object> props) { - this.factoryTyp = factoryTyp; - this.clsName = clsName; - this.payload = payload; - this.props = props; - } - - /** - * Get factory instance. - * - * @param ctx Kernal context for injections. - * @return Factory instance. - */ - public PlatformJavaObjectFactory factory(GridKernalContext ctx) { - // Create factory. - Object res; - - switch (factoryTyp) { - case TYP_DEFAULT: - res = new PlatformDefaultJavaObjectFactory(); - - break; - - case TYP_USER: - res = PlatformUtils.createJavaObject(clsName); - - break; - - default: - throw new IgniteException("Unsupported Java object factory type: " + factoryTyp); - } - - // Initialize factory. - if (res instanceof PlatformJavaObjectFactoryEx) - ((PlatformJavaObjectFactoryEx)res).initialize(payload, props); - else { - PlatformUtils.initializeJavaObject(res, clsName, props, ctx); - - if (!(res instanceof PlatformJavaObjectFactory)) - res = new PlatformJavaObjectSingletonFactory<>(res); - } - - return (PlatformJavaObjectFactory)res; - } - - /** {@inheritDoc} */ - @Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException { - BinaryRawWriterEx rawWriter = (BinaryRawWriterEx)writer.rawWriter(); - - rawWriter.writeInt(factoryTyp); - rawWriter.writeString(clsName); - rawWriter.writeObjectDetached(payload); - - if (props != null) { - rawWriter.writeInt(props.size()); - - for (Map.Entry<String, Object> prop : props.entrySet()) { - rawWriter.writeString(prop.getKey()); - rawWriter.writeObjectDetached(prop.getValue()); - } - } - else - rawWriter.writeInt(0); - } - - /** {@inheritDoc} */ - @Override public void readBinary(BinaryReader reader) throws BinaryObjectException { - BinaryRawReaderEx rawReader = (BinaryRawReaderEx)reader.rawReader(); - - factoryTyp = rawReader.readInt(); - clsName = rawReader.readString(); - payload = rawReader.readObjectDetached(); - - int propsSize = rawReader.readInt(); - - if (propsSize > 0) { - props = new HashMap<>(propsSize); - - for (int i = 0; i < propsSize; i++) { - String key = rawReader.readString(); - Object val = rawReader.readObjectDetached(); - - props.put(key, val); - } - } - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeInt(factoryTyp); - U.writeString(out, clsName); - out.writeObject(payload); - U.writeMap(out, props); - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - factoryTyp = in.readInt(); - clsName = U.readString(in); - payload = in.readObject(); - props = U.readMap(in); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PlatformJavaObjectFactoryProxy.class, this); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectSingletonFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectSingletonFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectSingletonFactory.java deleted file mode 100644 index 165b7d1..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/PlatformJavaObjectSingletonFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.processors.platform; - -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.platform.PlatformJavaObjectFactory; - -/** - * Singleton factory. - */ -public class PlatformJavaObjectSingletonFactory<T> implements PlatformJavaObjectFactory<T> { - /** Instance. */ - private final T instance; - - /** - * Constructor. - * - * @param instance Instance. - */ - public PlatformJavaObjectSingletonFactory(T instance) { - this.instance = instance; - } - - /** {@inheritDoc} */ - @Override public T create() { - return instance; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PlatformJavaObjectSingletonFactory.class, this); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/query/PlatformContinuousQueryImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/query/PlatformContinuousQueryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/query/PlatformContinuousQueryImpl.java index f8244a9..453e233 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/query/PlatformContinuousQueryImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/query/PlatformContinuousQueryImpl.java @@ -24,19 +24,14 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import javax.cache.Cache; import javax.cache.event.CacheEntryEvent; -import javax.cache.event.CacheEntryEventFilter; import javax.cache.event.CacheEntryListenerException; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cache.query.ContinuousQuery; import org.apache.ignite.cache.query.Query; import org.apache.ignite.cache.query.QueryCursor; -import org.apache.ignite.internal.GridKernalContext; -import org.apache.ignite.internal.binary.BinaryObjectImpl; -import org.apache.ignite.internal.binary.GridBinaryMarshaller; import org.apache.ignite.internal.processors.cache.IgniteCacheProxy; import org.apache.ignite.internal.processors.cache.query.QueryCursorEx; import org.apache.ignite.internal.processors.platform.PlatformContext; -import org.apache.ignite.internal.processors.platform.PlatformJavaObjectFactoryProxy; import org.apache.ignite.internal.processors.platform.PlatformTarget; import org.apache.ignite.internal.processors.platform.utils.PlatformUtils; import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata; @@ -57,9 +52,6 @@ public class PlatformContinuousQueryImpl implements PlatformContinuousQuery { /** Native filter in serialized form. If null, then filter is either not set, or this is local query. */ protected final Object filter; - /** Java filter. */ - protected final CacheEntryEventFilter javaFilter; - /** Pointer to native counterpart; zero if closed. */ private long ptr; @@ -87,29 +79,6 @@ public class PlatformContinuousQueryImpl implements PlatformContinuousQuery { this.ptr = ptr; this.hasFilter = hasFilter; this.filter = filter; - - javaFilter = getJavaFilter(filter, platformCtx.kernalContext()); - } - - /** - * Gets the Java filter if present. - * - * @param filter Filter object. - * @param ctx Context. - * @return Java filter or null. - */ - private static CacheEntryEventFilter getJavaFilter(Object filter, GridKernalContext ctx) { - if (filter instanceof BinaryObjectImpl) { - BinaryObjectImpl bo = (BinaryObjectImpl)filter; - - if (bo.typeId() == GridBinaryMarshaller.PLATFORM_JAVA_OBJECT_FACTORY_PROXY) { - PlatformJavaObjectFactoryProxy prx = bo.deserialize(); - - return (CacheEntryEventFilter)prx.factory(ctx).create(); - } - } - - return null; } /** @@ -123,8 +92,9 @@ public class PlatformContinuousQueryImpl implements PlatformContinuousQuery { * @param initialQry Initial query. */ @SuppressWarnings("unchecked") - @Override public void start(IgniteCacheProxy cache, boolean loc, int bufSize, long timeInterval, - boolean autoUnsubscribe, Query initialQry) throws IgniteCheckedException { + public void start(IgniteCacheProxy cache, boolean loc, int bufSize, long timeInterval, boolean autoUnsubscribe, + Query initialQry) throws IgniteCheckedException { + assert !loc || filter == null; lock.writeLock().lock(); @@ -200,11 +170,7 @@ public class PlatformContinuousQueryImpl implements PlatformContinuousQuery { } /** {@inheritDoc} */ - @SuppressWarnings("unchecked") @Override public boolean evaluate(CacheEntryEvent evt) throws CacheEntryListenerException { - if (javaFilter != null) - return javaFilter.evaluate(evt); - lock.readLock().lock(); try { @@ -263,10 +229,7 @@ public class PlatformContinuousQueryImpl implements PlatformContinuousQuery { * @return Filter to be deployed on remote node. * @throws ObjectStreamException If failed. */ - protected Object writeReplace() throws ObjectStreamException { - if (javaFilter != null) - return javaFilter; - + Object writeReplace() throws ObjectStreamException { return filter == null ? null : platformCtx.createContinuousQueryFilter(filter); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java index 5f43753..4a29637 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformUtils.java @@ -46,9 +46,6 @@ import org.jetbrains.annotations.Nullable; import javax.cache.CacheException; import javax.cache.event.CacheEntryEvent; import javax.cache.event.CacheEntryListenerException; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.security.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -805,74 +802,6 @@ public class PlatformUtils { } /** - * Create Java object. - * - * @param clsName Class name. - * @return Instance. - */ - public static <T> T createJavaObject(String clsName) { - if (clsName == null) - throw new IgniteException("Java object/factory class name is not set."); - - Class cls = U.classForName(clsName, null); - - if (cls == null) - throw new IgniteException("Java object/factory class is not found (is it in the classpath?): " + - clsName); - - try { - return (T)cls.newInstance(); - } - catch (ReflectiveOperationException e) { - throw new IgniteException("Failed to instantiate Java object/factory class (does it have public " + - "default constructor?): " + clsName, e); - } - } - - /** - * Initialize Java object or object factory. - * - * @param obj Object. - * @param clsName Class name. - * @param props Properties (optional). - * @param ctx Kernal context (optional). - */ - public static void initializeJavaObject(Object obj, String clsName, @Nullable Map<String, Object> props, - @Nullable GridKernalContext ctx) { - if (props != null) { - for (Map.Entry<String, Object> prop : props.entrySet()) { - String fieldName = prop.getKey(); - - if (fieldName == null) - throw new IgniteException("Java object/factory field name cannot be null: " + clsName); - - Field field = U.findField(obj.getClass(), fieldName); - - if (field == null) - throw new IgniteException("Java object/factory class field is not found [" + - "className=" + clsName + ", fieldName=" + fieldName + ']'); - - try { - field.set(obj, prop.getValue()); - } - catch (Exception e) { - throw new IgniteException("Failed to set Java object/factory field [className=" + clsName + - ", fieldName=" + fieldName + ", fieldValue=" + prop.getValue() + ']', e); - } - } - } - - if (ctx != null) { - try { - ctx.resource().injectGeneric(obj); - } - catch (IgniteCheckedException e) { - throw new IgniteException("Failed to inject resources to Java factory: " + clsName, e); - } - } - } - - /** * Private constructor. */ private PlatformUtils() { http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 6d9f574..60abbb5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -9215,31 +9215,6 @@ public abstract class IgniteUtils { } /** - * @param cls The class to search. - * @param name Name of a field to get. - * @return Field or {@code null}. - */ - @Nullable public static Field findField(Class<?> cls, String name) { - while (cls != null) { - try { - Field fld = cls.getDeclaredField(name); - - if (!fld.isAccessible()) - fld.setAccessible(true); - - return fld; - } - catch (NoSuchFieldException e) { - // No-op. - } - - cls = cls.getSuperclass(); - } - - return null; - } - - /** * @param c Collection. * @param p Optional filters. * @return Resulting array list. http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/main/java/org/apache/ignite/platform/PlatformJavaObjectFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/platform/PlatformJavaObjectFactory.java b/modules/core/src/main/java/org/apache/ignite/platform/PlatformJavaObjectFactory.java deleted file mode 100644 index cd97470..0000000 --- a/modules/core/src/main/java/org/apache/ignite/platform/PlatformJavaObjectFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform; - -/** - * Object factory used for advanced interop between platform and Java. - * <p> - * Use it when you need Java component for some Ignite feature in platform code. E.g. Java-based continuous - * query filter. - * <p> - * You should implement the factory, compile it and then place it into node's classpath. Then you can reference - * the factory form platform code using it's fully-qualified Java class name. - */ -public interface PlatformJavaObjectFactory<T> { - /** - * Constructs and returns a fully configured instance of T. - * - * @return An instance of T. - */ - public T create(); -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilter.java b/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilter.java deleted file mode 100644 index ca019f4..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilter.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform; - -import org.apache.ignite.Ignite; -import org.apache.ignite.binary.BinaryObject; -import org.apache.ignite.cache.CacheEntryEventSerializableFilter; -import org.apache.ignite.resources.IgniteInstanceResource; - -import javax.cache.event.CacheEntryEvent; -import javax.cache.event.CacheEntryListenerException; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.UUID; - -/** - * Test filter. - */ -@SuppressWarnings({"FieldCanBeLocal", "FloatingPointEquality", "MismatchedReadAndWriteOfArray", "unused", - "SpellCheckingInspection"}) -public class PlatformCacheEntryEventFilter implements CacheEntryEventSerializableFilter { - /** Property to be set from platform. */ - private String startsWith = "-"; - - /** Property to be set from platform. */ - private char charField; - - /** Property to be set from platform. */ - private byte byteField; - - /** Property to be set from platform. */ - private byte sbyteField; - - /** Property to be set from platform. */ - private short shortField; - - /** Property to be set from platform. */ - private short ushortField; - - /** Property to be set from platform. */ - private int intField; - - /** Property to be set from platform. */ - private int uintField; - - /** Property to be set from platform. */ - private long longField; - - /** Property to be set from platform. */ - private long ulongField; - - /** Property to be set from platform. */ - private float floatField; - - /** Property to be set from platform. */ - private double doubleField; - - /** Property to be set from platform. */ - private BigDecimal decimalField; - - /** Property to be set from platform. */ - private boolean boolField; - - /** Property to be set from platform. */ - private UUID guidField; - - /** Property to be set from platform. */ - private BinaryObject objField; - - /** Property to be set from platform. */ - private char[] charArr; - - /** Property to be set from platform. */ - private byte[] byteArr; - - /** Property to be set from platform. */ - private byte[] sbyteArr; - - /** Property to be set from platform. */ - private short[] shortArr; - - /** Property to be set from platform. */ - private short[] ushortArr; - - /** Property to be set from platform. */ - private int[] intArr; - - /** Property to be set from platform. */ - private int[] uintArr; - - /** Property to be set from platform. */ - private long[] longArr; - - /** Property to be set from platform. */ - private long[] ulongArr; - - /** Property to be set from platform. */ - private float[] floatArr; - - /** Property to be set from platform. */ - private double[] doubleArr; - - /** Property to be set from platform. */ - private boolean[] boolArr; - - /** Property to be set from platform. */ - private Object[] objArr; - - /** Property to be set from platform. */ - private ArrayList arrayList; - - /** Property to be set from platform. */ - private HashMap hashTable; - - /** Injected instance. */ - @IgniteInstanceResource - private Ignite ignite; - - /** {@inheritDoc} */ - @Override public boolean evaluate(CacheEntryEvent event) throws CacheEntryListenerException { - // check injection - assert ignite != null; - - // check fields - assert charField == 'a'; - assert byteField == 1; - assert sbyteField == 2; - assert shortField == 3; - assert ushortField == 4; - assert intField == 5; - assert uintField == 6; - assert longField == 7; - assert ulongField == 8; - assert floatField == (float)9.99; - assert doubleField == 10.123; - assert "11.245".equals(decimalField.toString()); - assert boolField; - assert guidField.equals(UUID.fromString("1c579241-509d-47c6-a1a0-87462ae31e59")); - - // check arrays - assert charArr[0] == 'a'; - assert byteArr[0] == 1; - assert sbyteArr[0] == 2; - assert shortArr[0] == 3; - assert ushortArr[0] == 4; - assert intArr[0] == 5; - assert uintArr[0] == 6; - assert longArr[0] == 7; - assert ulongArr[0] == 8; - assert floatArr[0] == (float)9.99; - assert doubleArr[0] == 10.123; - assert boolArr[0]; - - // check collections - assert "x".equals(arrayList.get(0)); - assert "2".equals(hashTable.get(1)); - - // check binary object - assert objField != null; - assert Integer.valueOf(1).equals(objField.field("Int")); - assert "2".equals(objField.field("String")); - - assert objArr != null; - assert objArr.length == 1; - assert Integer.valueOf(1).equals(((BinaryObject)objArr[0]).field("Int")); - assert "2".equals(((BinaryObject)objArr[0]).field("String")); - - return ((String)event.getValue()).startsWith(startsWith); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilterFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilterFactory.java b/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilterFactory.java deleted file mode 100644 index 5410603..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/PlatformCacheEntryEventFilterFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform; - -import org.apache.ignite.Ignite; -import org.apache.ignite.cache.CacheEntryEventSerializableFilter; -import org.apache.ignite.resources.IgniteInstanceResource; - -import javax.cache.event.CacheEntryEvent; -import javax.cache.event.CacheEntryListenerException; -import java.io.Serializable; - -/** - * Test filter factory - */ -public class PlatformCacheEntryEventFilterFactory implements Serializable, - PlatformJavaObjectFactory<CacheEntryEventSerializableFilter> { - /** Property to be set from platform. */ - @SuppressWarnings("FieldCanBeLocal") - private String startsWith = "-"; - - /** Injected instance. */ - @IgniteInstanceResource - private Ignite ignite; - - /** {@inheritDoc} */ - @Override public CacheEntryEventSerializableFilter create() { - assert ignite != null; - - return new CacheEntryEventSerializableFilter() { - @Override public boolean evaluate(CacheEntryEvent event) throws CacheEntryListenerException { - return ((String)event.getValue()).startsWith(startsWith); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/PlatformDefaultJavaObjectFactorySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/PlatformDefaultJavaObjectFactorySelfTest.java b/modules/core/src/test/java/org/apache/ignite/platform/PlatformDefaultJavaObjectFactorySelfTest.java deleted file mode 100644 index 45fda4f..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/PlatformDefaultJavaObjectFactorySelfTest.java +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform; - -import org.apache.ignite.IgniteException; -import org.apache.ignite.internal.processors.platform.PlatformDefaultJavaObjectFactory; -import org.apache.ignite.platform.javaobject.TestJavaObject; -import org.apache.ignite.platform.javaobject.TestJavaObjectNoDefaultCtor; -import org.apache.ignite.testframework.GridTestUtils; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.Callable; - -/** - * Dedicated tests for {@link PlatformDefaultJavaObjectFactory}. - */ -@SuppressWarnings("ThrowableResultOfMethodCallIgnored") -public class PlatformDefaultJavaObjectFactorySelfTest extends GridCommonAbstractTest { - /** Name of the class. */ - private static final String CLS_NAME = TestJavaObject.class.getName(); - - /** Name of the class without default constructor. */ - private static final String NO_DFLT_CTOR_CLS_NAME = TestJavaObjectNoDefaultCtor.class.getName(); - - /** - * Test normal object creation. - */ - public void testNormal() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - Map<String, Object> props = new HashMap<>(); - - props.put("fBoolean", true); - props.put("fByte", (byte)1); - props.put("fShort", (short)2); - props.put("fChar", '3'); - props.put("fInt", 4); - props.put("fLong", 5L); - props.put("fFloat", 6.6f); - props.put("fDouble", 7.7d); - - UUID obj = UUID.randomUUID(); - - props.put("fObj", obj); - - props.put("fIntBoxed", 10); - - factory.initialize(CLS_NAME, props); - - Object val = factory.create(); - - TestJavaObject expVal = new TestJavaObject().setBoolean(true).setByte((byte)1).setShort((short)2).setChar('3') - .setInt(4).setLong(5L).setFloat(6.6f).setDouble(7.7d).setObject(obj).setIntBoxed(10); - - assertEquals(expVal, val); - } - - /** - * Test object creation with boxed property. - */ - public void testBoxedProperty() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - factory.initialize(CLS_NAME, Collections.singletonMap("fIntBoxed", 1)); - - Object val = factory.create(); - - assertEquals(val, new TestJavaObject().setIntBoxed(1)); - } - - /** - * Test object creation without properties. - */ - public void testNoProperties() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - factory.initialize(CLS_NAME, Collections.emptyMap()); - - Object val = factory.create(); - - assertEquals(val, new TestJavaObject()); - } - - /** - * Test object creation with invalid property name. - */ - public void testInvalidPropertyName() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - factory.initialize(CLS_NAME, Collections.singletonMap("invalid", 1)); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return factory.create(); - } - }, IgniteException.class, null); - } - - /** - * Test object creation with invalid property value. - */ - public void testInvalidPropertyValue() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - factory.initialize(CLS_NAME, Collections.singletonMap("fInt", 1L)); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return factory.create(); - } - }, IgniteException.class, null); - } - - /** - * Test object creation without default constructor. - */ - public void testNoDefaultConstructor() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - factory.initialize(NO_DFLT_CTOR_CLS_NAME, null); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return factory.create(); - } - }, IgniteException.class, null); - } - - /** - * Test object creation with null class name. - */ - public void testNullClassName() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - GridTestUtils.assertThrows(null, new Callable<Void>() { - @Override public Void call() throws Exception { - factory.initialize(null, null); - - return null; - } - }, IgniteException.class, null); - - GridTestUtils.assertThrows(null, new Callable<Void>() { - @Override public Void call() throws Exception { - factory.initialize(null, new HashMap<String, Object>()); - - return null; - } - }, IgniteException.class, null); - } - - /** - * Test object creation with invalid class name. - */ - public void testInvalidClassName() { - final PlatformDefaultJavaObjectFactory factory = new PlatformDefaultJavaObjectFactory(); - - factory.initialize("invalid", null); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return factory.create(); - } - }, IgniteException.class, null); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/PlatformJavaObjectFactoryProxySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/PlatformJavaObjectFactoryProxySelfTest.java b/modules/core/src/test/java/org/apache/ignite/platform/PlatformJavaObjectFactoryProxySelfTest.java deleted file mode 100644 index 18fb806..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/PlatformJavaObjectFactoryProxySelfTest.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform; - -import org.apache.ignite.IgniteException; -import org.apache.ignite.Ignition; -import org.apache.ignite.internal.GridKernalContext; -import org.apache.ignite.internal.IgniteKernal; -import org.apache.ignite.internal.processors.platform.PlatformJavaObjectFactoryProxy; -import org.apache.ignite.platform.javaobject.TestJavaObject; -import org.apache.ignite.platform.javaobject.TestJavaObjectNoDefaultCtor; -import org.apache.ignite.platform.javaobject.TestJavaObjectNoDefaultCtorFactory; -import org.apache.ignite.testframework.GridTestUtils; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.Callable; - -/** - * Dedicated tests for {@link PlatformJavaObjectFactoryProxy}. - */ -@SuppressWarnings("ThrowableResultOfMethodCallIgnored") -public class PlatformJavaObjectFactoryProxySelfTest extends GridCommonAbstractTest { - /** Name of the class. */ - private static final String CLS_NAME = TestJavaObject.class.getName(); - - /** Name of the factory class to create object without default constructor. */ - private static final String NO_DFLT_CTOR_FACTORY_CLS_NAME = TestJavaObjectNoDefaultCtorFactory.class.getName(); - - /** Kernal context. */ - private GridKernalContext ctx; - - /** {@inheritDoc} */ - @Override protected void beforeTest() throws Exception { - ctx = ((IgniteKernal)Ignition.start(getConfiguration(PlatformJavaObjectFactoryProxySelfTest.class.getName()))) - .context(); - } - - /** {@inheritDoc} */ - @Override protected void afterTest() throws Exception { - ctx = null; - - Ignition.stopAll(true); - } - - /** - * Test normal object creation using default factory. - */ - public void testDefaultFactoryNormal() { - Map<String, Object> props = new HashMap<>(); - - props.put("fBoolean", true); - props.put("fByte", (byte)1); - props.put("fShort", (short)2); - props.put("fChar", '3'); - props.put("fInt", 4); - props.put("fLong", 5L); - props.put("fFloat", 6.6f); - props.put("fDouble", 7.7d); - - UUID obj = UUID.randomUUID(); - - props.put("fObj", obj); - - props.put("fIntBoxed", 10); - - PlatformJavaObjectFactoryProxy proxy = - new PlatformJavaObjectFactoryProxy(PlatformJavaObjectFactoryProxy.TYP_DEFAULT, null, CLS_NAME, props); - - TestJavaObject val = (TestJavaObject)proxy.factory(ctx).create(); - - TestJavaObject expVal = new TestJavaObject().setBoolean(true).setByte((byte)1).setShort((short)2).setChar('3') - .setInt(4).setLong(5L).setFloat(6.6f).setDouble(7.7d).setObject(obj).setIntBoxed(10); - - assertEquals(expVal, val); - } - - /** - * Test normal object creation using custom factory. - */ - public void testCustomFactoryNormal() { - Map<String, Object> props = new HashMap<>(); - - props.put("fBoolean", true); - props.put("fByte", (byte)1); - props.put("fShort", (short)2); - props.put("fChar", '3'); - props.put("fInt", 4); - props.put("fLong", 5L); - props.put("fFloat", 6.6f); - props.put("fDouble", 7.7d); - - UUID obj = UUID.randomUUID(); - - props.put("fObj", obj); - - props.put("fIntBoxed", 10); - - PlatformJavaObjectFactoryProxy proxy = proxyForCustom(NO_DFLT_CTOR_FACTORY_CLS_NAME, props); - - TestJavaObjectNoDefaultCtor val = (TestJavaObjectNoDefaultCtor)proxy.factory(ctx).create(); - - TestJavaObject expVal = new TestJavaObject().setBoolean(true).setByte((byte)1).setShort((short)2).setChar('3') - .setInt(4).setLong(5L).setFloat(6.6f).setDouble(7.7d).setObject(obj).setIntBoxed(10); - - assertEquals(expVal, val); - - assertNotNull(val.node); - assertEquals(val.node.name(), ctx.gridName()); - } - - /** - * Test object creation with boxed property. - */ - public void testCustomFactoryBoxedProperty() { - PlatformJavaObjectFactoryProxy proxy = proxyForCustom(NO_DFLT_CTOR_FACTORY_CLS_NAME, - Collections.singletonMap("fIntBoxed", (Object)1)); - - Object val = proxy.factory(ctx).create(); - - assertEquals(val, new TestJavaObject().setIntBoxed(1)); - } - - /** - * Test object creation without properties. - */ - public void testCustomFactoryNoProperties() { - PlatformJavaObjectFactoryProxy proxy = proxyForCustom(NO_DFLT_CTOR_FACTORY_CLS_NAME, - Collections.<String, Object>emptyMap()); - - Object val = proxy.factory(ctx).create(); - - assertEquals(val, new TestJavaObject()); - } - - /** - * Test object creation with invalid property name. - */ - public void testCustomFactoryInvalidPropertyName() { - final PlatformJavaObjectFactoryProxy proxy = proxyForCustom(NO_DFLT_CTOR_FACTORY_CLS_NAME, - Collections.singletonMap("invalid", (Object)1)); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return proxy.factory(ctx).create(); - } - }, IgniteException.class, null); - } - - /** - * Test object creation with invalid property value. - */ - public void testCustomFactoryInvalidPropertyValue() { - final PlatformJavaObjectFactoryProxy proxy = proxyForCustom(NO_DFLT_CTOR_FACTORY_CLS_NAME, - Collections.singletonMap("fInt", (Object)1L)); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return proxy.factory(ctx).create(); - } - }, IgniteException.class, null); - } - - /** - * Test object creation with null class name. - */ - public void testCustomFactoryNullClassName() { - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return proxyForCustom(null, null).factory(ctx).create(); - } - }, IgniteException.class, null); - - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return proxyForCustom(null, new HashMap<String, Object>()).factory(ctx).create(); - } - }, IgniteException.class, null); - } - - /** - * Test object creation with invalid class name. - */ - public void testCustomFactoryInvalidClassName() { - GridTestUtils.assertThrows(null, new Callable<Object>() { - @Override public Object call() throws Exception { - return proxyForCustom("invalid", null).factory(ctx).create(); - } - }, IgniteException.class, null); - } - - /** - * Create proxy for user-defined factory. - * - * @param clsName Class name. - * @param props Properties. - * @return Proxy. - */ - private static PlatformJavaObjectFactoryProxy proxyForCustom(String clsName, Map<String, Object> props) { - return new PlatformJavaObjectFactoryProxy(PlatformJavaObjectFactoryProxy.TYP_USER, clsName, null, props); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObject.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObject.java b/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObject.java deleted file mode 100644 index 3c76798..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObject.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform.javaobject; - -/** - * Test object. - */ -public class TestJavaObject { - /** */ - protected boolean fBoolean; - - /** */ - protected byte fByte; - - /** */ - protected short fShort; - - /** */ - protected char fChar; - - /** */ - protected int fInt; - - /** */ - protected long fLong; - - /** */ - protected float fFloat; - - /** */ - protected double fDouble; - - /** */ - protected Object fObj; - - /** Integer field. */ - protected Integer fIntBoxed; - - /** - * Default constructor. - */ - public TestJavaObject() { - // No-op. - } - - /** - * Constructor. - * - * @param fBoolean Boolean field. - * @param fByte Byte field. - * @param fShort Short field. - * @param fChar Char field. - * @param fInt Integer field. - * @param fLong Long field. - * @param fDouble Double field. - * @param fFloat Float field. - * @param fObj Object field. - * @param fIntBoxed Integer boxed field. - */ - public TestJavaObject(boolean fBoolean, byte fByte, short fShort, char fChar, int fInt, long fLong, float fFloat, - double fDouble, Object fObj, Integer fIntBoxed) { - this.fBoolean = fBoolean; - this.fByte = fByte; - this.fShort = fShort; - this.fChar = fChar; - this.fInt = fInt; - this.fLong = fLong; - this.fDouble = fDouble; - this.fFloat = fFloat; - this.fObj = fObj; - this.fIntBoxed = fIntBoxed; - } - - /** - * Set boolean field. - * - * @param fBoolean Value. - * @return This instance for chaining. - */ - public TestJavaObject setBoolean(boolean fBoolean) { - this.fBoolean = fBoolean; - - return this; - } - - /** - * Set byte field. - * - * @param fByte Value. - * @return This instance for chaining. - */ - public TestJavaObject setByte(byte fByte) { - this.fByte = fByte; - - return this; - } - - /** - * Set short field. - * - * @param fShort Value. - * @return This instance for chaining. - */ - public TestJavaObject setShort(short fShort) { - this.fShort = fShort; - - return this; - } - - /** - * Set char field. - * - * @param fChar Value. - * @return This instance for chaining. - */ - public TestJavaObject setChar(char fChar) { - this.fChar = fChar; - - return this; - } - - /** - * Set int field. - * - * @param fInt Value. - * @return This instance for chaining. - */ - public TestJavaObject setInt(int fInt) { - this.fInt = fInt; - - return this; - } - - /** - * Set long field. - * - * @param fLong Value. - * @return This instance for chaining. - */ - public TestJavaObject setLong(long fLong) { - this.fLong = fLong; - - return this; - } - - /** - * Set float field. - * - * @param fFloat Value. - * @return This instance for chaining. - */ - public TestJavaObject setFloat(float fFloat) { - this.fFloat = fFloat; - - return this; - } - - /** - * Set double field. - * - * @param fDouble Value. - * @return This instance for chaining. - */ - public TestJavaObject setDouble(double fDouble) { - this.fDouble = fDouble; - - return this; - } - - /** - * Set object field. - * - * @param fObj Value. - * @return This instance for chaining. - */ - public TestJavaObject setObject(Object fObj) { - this.fObj = fObj; - - return this; - } - - /** - * Set wrapped integer field. - * - * @param fInteger Value. - * @return This instance for chaining. - */ - public TestJavaObject setIntBoxed(Integer fInteger) { - this.fIntBoxed = fInteger; - - return this; - } - - /** {@inheritDoc} */ - @SuppressWarnings({"EqualsWhichDoesntCheckParameterClass", "SimplifiableIfStatement"}) - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null) - return false; - - TestJavaObject that = (TestJavaObject) o; - - if (fBoolean != that.fBoolean) - return false; - - if (fByte != that.fByte) - return false; - - if (fShort != that.fShort) - return false; - - if (fChar != that.fChar) - return false; - - if (fInt != that.fInt) - return false; - - if (fLong != that.fLong) - return false; - - if (Double.compare(that.fDouble, fDouble) != 0) - return false; - - if (Float.compare(that.fFloat, fFloat) != 0) - return false; - - if (fObj != null ? !fObj.equals(that.fObj) : that.fObj != null) - return false; - - return fIntBoxed != null ? fIntBoxed.equals(that.fIntBoxed) : that.fIntBoxed == null; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - int res; - long tmp; - - res = (fBoolean ? 1 : 0); - res = 31 * res + (int) fByte; - res = 31 * res + (int) fShort; - res = 31 * res + (int) fChar; - res = 31 * res + fInt; - res = 31 * res + (int) (fLong ^ (fLong >>> 32)); - - tmp = Double.doubleToLongBits(fDouble); - - res = 31 * res + (int) (tmp ^ (tmp >>> 32)); - res = 31 * res + (fFloat != +0.0f ? Float.floatToIntBits(fFloat) : 0); - res = 31 * res + (fObj != null ? fObj.hashCode() : 0); - res = 31 * res + (fIntBoxed != null ? fIntBoxed.hashCode() : 0); - - return res; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtor.java b/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtor.java deleted file mode 100644 index 1d7ed07..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtor.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform.javaobject; - -import org.apache.ignite.Ignite; - -/** - * Test Java object without default constructor. - */ -public class TestJavaObjectNoDefaultCtor extends TestJavaObject { - /** Node. */ - public Ignite node; - - /** - * Constructor. - * - * @param fBoolean Boolean field. - * @param fByte Byte field. - * @param fShort Short field. - * @param fChar Char field. - * @param fInt Integer field. - * @param fLong Long field. - * @param fDouble Double field. - * @param fFloat Float field. - * @param fObj Object field. - * @param fIntBoxed Integer boxed field. - */ - public TestJavaObjectNoDefaultCtor(boolean fBoolean, byte fByte, short fShort, char fChar, int fInt, long fLong, - float fFloat, double fDouble, Object fObj, Integer fIntBoxed, Ignite node) { - super(fBoolean, fByte, fShort, fChar, fInt, fLong, fFloat, fDouble, fObj, fIntBoxed); - - this.node = node; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtorFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtorFactory.java b/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtorFactory.java deleted file mode 100644 index 0e6dd99..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/javaobject/TestJavaObjectNoDefaultCtorFactory.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.platform.javaobject; - -import org.apache.ignite.Ignite; -import org.apache.ignite.platform.PlatformJavaObjectFactory; -import org.apache.ignite.resources.IgniteInstanceResource; - -/** - * Test factory. - */ -@SuppressWarnings("unused") -public class TestJavaObjectNoDefaultCtorFactory implements PlatformJavaObjectFactory { - /** Injected node. */ - @IgniteInstanceResource - public Ignite node; - - /** */ - private boolean fBoolean; - - /** */ - private byte fByte; - - /** */ - private short fShort; - - /** */ - private char fChar; - - /** */ - private int fInt; - - /** */ - private long fLong; - - /** */ - private float fFloat; - - /** */ - private double fDouble; - - /** */ - private Object fObj; - - /** Integer field. */ - private Integer fIntBoxed; - - /** {@inheritDoc} */ - @Override public Object create() { - return new TestJavaObjectNoDefaultCtor(fBoolean, fByte, fShort, fChar, fInt, fLong, fFloat, fDouble, fObj, - fIntBoxed, node); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java index fede0ab..c904ef4 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java @@ -82,8 +82,6 @@ public class IgniteBasicTestSuite extends TestSuite { suite.addTest(IgniteCacheP2pUnmarshallingErrorTestSuite.suite(ignoredTests)); suite.addTest(IgniteStreamSelfTestSuite.suite()); - suite.addTest(IgnitePlatformsTestSuite.suite()); - suite.addTest(new TestSuite(GridSelfTest.class)); suite.addTest(new TestSuite(ClusterGroupHostsSelfTest.class)); suite.addTest(new TestSuite(IgniteMessagingWithClientTest.class)); http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePlatformsTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePlatformsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePlatformsTestSuite.java deleted file mode 100644 index f7021d8..0000000 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePlatformsTestSuite.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.testsuites; - -import junit.framework.TestSuite; -import org.apache.ignite.platform.PlatformDefaultJavaObjectFactorySelfTest; -import org.apache.ignite.platform.PlatformJavaObjectFactoryProxySelfTest; - -/** - * Suite for platform tests. - */ -public class IgnitePlatformsTestSuite extends TestSuite { - /** - * @return Test suite. - * @throws Exception If failed. - */ - public static TestSuite suite() throws Exception { - TestSuite suite = new TestSuite("Ignite Deployment SPI Test Suite"); - - // LocalDeploymentSpi tests - suite.addTest(new TestSuite(PlatformDefaultJavaObjectFactorySelfTest.class)); - suite.addTest(new TestSuite(PlatformJavaObjectFactoryProxySelfTest.class)); - - return suite; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj index 26b4352..a247f63 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj +++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Apache.Ignite.Core.Tests.csproj @@ -99,7 +99,6 @@ <Compile Include="Compute\FailoverTaskSelfTest.cs" /> <Compile Include="Compute\BinarizableClosureTaskTest.cs" /> <Compile Include="Compute\BinarizableTaskTest.cs" /> - <Compile Include="Cache\Query\Continuous\ContinuousQueryJavaFilterTest.cs" /> <Compile Include="Compute\ResourceTaskTest.cs" /> <Compile Include="Compute\SerializableClosureTaskTest.cs" /> <Compile Include="Compute\TaskAdapterTest.cs" /> http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryJavaFilterTest.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryJavaFilterTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryJavaFilterTest.cs deleted file mode 100644 index fa73621..0000000 --- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryJavaFilterTest.cs +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// ReSharper disable UnusedAutoPropertyAccessor.Local -#pragma warning disable 618 // SpringConfigUrl -namespace Apache.Ignite.Core.Tests.Cache.Query.Continuous -{ - using System; - using System.Collections; - using System.Collections.Generic; - using System.Linq; - using Apache.Ignite.Core.Binary; - using Apache.Ignite.Core.Cache.Event; - using Apache.Ignite.Core.Cache.Query.Continuous; - using Apache.Ignite.Core.Common; - using Apache.Ignite.Core.Interop; - using NUnit.Framework; - - /// <summary> - /// Tests query in a cluster with Java-only and .NET nodes. - /// </summary> - public class ContinuousQueryJavaFilterTest - { - /** */ - private const string SpringConfig = @"Config\Compute\compute-grid1.xml"; - - /** */ - private const string SpringConfig2 = @"Config\Compute\compute-grid2.xml"; - - /** */ - private const string StartTask = "org.apache.ignite.platform.PlatformStartIgniteTask"; - - /** */ - private const string StopTask = "org.apache.ignite.platform.PlatformStopIgniteTask"; - - /** */ - private IIgnite _ignite; - - /** */ - private string _javaNodeName; - - /** */ - private static volatile ICacheEntryEvent<int, string> _lastEvent; - - /// <summary> - /// Fixture set up. - /// </summary> - [TestFixtureSetUp] - public void FixtureSetUp() - { - // Main .NET nodes - _ignite = Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration()) - { - SpringConfigUrl = SpringConfig, - BinaryConfiguration = new BinaryConfiguration(typeof (TestBinary)) - }); - - // Second .NET node - Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration()) - { - SpringConfigUrl = SpringConfig2, - GridName = "dotNet2" - }); - - - // Java-only node - _javaNodeName = _ignite.GetCompute().ExecuteJavaTask<string>(StartTask, SpringConfig2); - - Assert.IsTrue(_ignite.WaitTopology(3)); - } - - /// <summary> - /// Fixture tear down. - /// </summary> - [TestFixtureTearDown] - public void FixtureTearDown() - { - _ignite.GetCompute().ExecuteJavaTask<object>(StopTask, _javaNodeName); - Ignition.StopAll(true); - } - - /// <summary> - /// Tests the filter. - /// </summary> - [Test] - public void TestFilter() - { - var javaObj = new JavaObject("org.apache.ignite.platform.PlatformCacheEntryEventFilter") - { - Properties = - { - {"startsWith", "valid"}, - {"charField", 'a'}, - {"byteField", (byte) 1}, - {"sbyteField", (sbyte) 2}, - {"shortField", (short) 3}, - {"ushortField", (ushort) 4}, - {"intField", 5}, - {"uintField", (uint) 6}, - {"longField", (long) 7}, - {"ulongField", (ulong) 8}, - {"floatField", (float) 9.99}, - {"doubleField", 10.123}, - {"decimalField", (decimal) 11.245}, - {"boolField", true}, - {"guidField", Guid.Parse("1c579241-509d-47c6-a1a0-87462ae31e59")}, - { - "objField", new TestBinary - { - Int = 1, - String = "2" - } - }, - {"charArr", new[] {'a'}}, - {"byteArr", new[] {(byte) 1}}, - {"sbyteArr", new[] {(sbyte) 2}}, - {"shortArr", new[] {(short) 3}}, - {"ushortArr", new[] {(ushort) 4}}, - {"intArr", new[] {5}}, - {"uintArr", new[] {(uint) 6}}, - {"longArr", new[] {(long) 7}}, - {"ulongArr", new[] {(ulong) 8}}, - {"floatArr", new[] {(float) 9.99}}, - {"doubleArr", new[] {10.123}}, - {"boolArr", new[] {true}}, - { - "objArr", new object[] - { - new TestBinary - { - Int = 1, - String = "2" - } - } - }, - {"arrayList", new ArrayList {"x"}}, - {"hashTable", new Hashtable {{1, "2"}}} - } - }; - - var filter = javaObj.ToCacheEntryEventFilter<int, string>(); - - TestFilter(filter); - } - - /// <summary> - /// Tests the factory class. - /// </summary> - [Test] - public void TestFactory() - { - var javaObj = new JavaObject("org.apache.ignite.platform.PlatformCacheEntryEventFilterFactory", - new Dictionary<string, object> {{"startsWith", "valid"}}); - - var filter = javaObj.ToCacheEntryEventFilter<int, string>(); - - TestFilter(filter); - } - - /// <summary> - /// Tests the invalid class name - /// </summary> - [Test] - public void TestInvalidClassName() - { - var filter = new JavaObject("blabla").ToCacheEntryEventFilter<int, string>(); - - var ex = Assert.Throws<IgniteException>(() => TestFilter(filter)); - - Assert.IsTrue(ex.Message.StartsWith("Java object/factory class is not found")); - } - - /// <summary> - /// Tests the invalid class name - /// </summary> - [Test] - public void TestInvalidProperty() - { - var javaObject = new JavaObject("org.apache.ignite.platform.PlatformCacheEntryEventFilter") - { - Properties = {{"invalidProp", "123"}} - }; - - var filter = javaObject.ToCacheEntryEventFilter<int, string>(); - - var ex = Assert.Throws<IgniteException>(() => TestFilter(filter)); - - Assert.IsTrue(ex.Message.StartsWith("Java object/factory class field is not found")); - } - - /// <summary> - /// Tests the specified filter. - /// </summary> - private void TestFilter(ICacheEntryEventFilter<int, string> pred) - { - TestFilter(pred, false); - TestFilter(pred, true); - } - - /// <summary> - /// Tests the specified filter. - /// </summary> - private void TestFilter(ICacheEntryEventFilter<int, string> pred, bool local) - { - var cache = _ignite.GetOrCreateCache<int, string>("qry"); - var qry = new ContinuousQuery<int, string>(new QueryListener(), pred, local); - var aff = _ignite.GetAffinity("qry"); - var localNode = _ignite.GetCluster().GetLocalNode(); - - using (cache.QueryContinuous(qry)) - { - // Run on many keys to test all nodes - for (var i = 0; i < 200; i++) - { - if (local && aff.MapKeyToNode(i).Id != localNode.Id) - continue; - - _lastEvent = null; - cache[i] = "validValue"; - // ReSharper disable once PossibleNullReferenceException - Assert.AreEqual(cache[i], _lastEvent.Value); - - _lastEvent = null; - cache[i] = "invalidValue"; - Assert.IsNull(_lastEvent); - } - } - } - - /// <summary> - /// Test listener. - /// </summary> - private class QueryListener : ICacheEntryEventListener<int, string> - { - /** <inheritdoc /> */ - public void OnEvent(IEnumerable<ICacheEntryEvent<int, string>> evts) - { - _lastEvent = evts.FirstOrDefault(); - } - } - - /// <summary> - /// Test binary object. - /// </summary> - private class TestBinary - { - public int Int { get; set; } - public string String { get; set; } - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj index 2b37d2d..12404be 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Apache.Ignite.Core.csproj @@ -107,8 +107,6 @@ <Compile Include="Common\IgniteFutureCancelledException.cs" /> <Compile Include="Common\IgniteGuid.cs" /> <Compile Include="Common\Package-Info.cs" /> - <Compile Include="Impl\Common\PlatformJavaObjectFactoryProxy.cs" /> - <Compile Include="Impl\Common\JavaObjects\JavaCacheEntryEventFilter.cs" /> <Compile Include="Compute\ComputeExecutionRejectedException.cs" /> <Compile Include="Compute\ComputeJobAdapter.cs" /> <Compile Include="Compute\ComputeJobFailoverException.cs" /> @@ -326,7 +324,6 @@ <Compile Include="Impl\Unmanaged\UnmanagedNonReleaseableTarget.cs" /> <Compile Include="Impl\Unmanaged\UnmanagedTarget.cs" /> <Compile Include="Impl\Unmanaged\UnmanagedUtils.cs" /> - <Compile Include="Interop\JavaObject.cs" /> <Compile Include="Lifecycle\Package-Info.cs" /> <Compile Include="Messaging\Package-Info.cs" /> <Compile Include="Package-Info.cs" /> http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs index 80e5b26..1c85e31 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/BinaryUtils.cs @@ -187,9 +187,6 @@ namespace Apache.Ignite.Core.Impl.Binary /** Type: stream receiver holder. */ public const byte TypeStreamReceiverHolder = 94; - /** Type: platform object proxy. */ - public const byte TypePlatformJavaObjectFactoryProxy = 99; - /** Collection: custom. */ public const byte CollectionCustom = 0; http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs index 81fc195..457830f 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Binary/Marshaller.cs @@ -26,7 +26,6 @@ namespace Apache.Ignite.Core.Impl.Binary using Apache.Ignite.Core.Impl.Binary.Metadata; using Apache.Ignite.Core.Impl.Cache; using Apache.Ignite.Core.Impl.Cache.Query.Continuous; - using Apache.Ignite.Core.Impl.Common; using Apache.Ignite.Core.Impl.Compute; using Apache.Ignite.Core.Impl.Compute.Closure; using Apache.Ignite.Core.Impl.Datastream; @@ -535,7 +534,6 @@ namespace Apache.Ignite.Core.Impl.Binary AddSystemType(BinaryUtils.TypeCacheEntryPredicateHolder, w => new CacheEntryFilterHolder(w)); AddSystemType(BinaryUtils.TypeMessageListenerHolder, w => new MessageListenerHolder(w)); AddSystemType(BinaryUtils.TypeStreamReceiverHolder, w => new StreamReceiverHolder(w)); - AddSystemType(BinaryUtils.TypePlatformJavaObjectFactoryProxy, w => new PlatformJavaObjectFactoryProxy()); } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/b2c2fa43/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs ---------------------------------------------------------------------- diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs index 101ed43..fef904b 100644 --- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs +++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/Query/Continuous/ContinuousQueryHandleImpl.cs @@ -26,7 +26,6 @@ namespace Apache.Ignite.Core.Impl.Cache.Query.Continuous using Apache.Ignite.Core.Cache.Query.Continuous; using Apache.Ignite.Core.Impl.Binary; using Apache.Ignite.Core.Impl.Binary.IO; - using Apache.Ignite.Core.Impl.Common; using Apache.Ignite.Core.Impl.Resource; using Apache.Ignite.Core.Impl.Unmanaged; using UU = Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils; @@ -112,20 +111,10 @@ namespace Apache.Ignite.Core.Impl.Cache.Query.Continuous writer.WriteBoolean(qry.Local); writer.WriteBoolean(_filter != null); - var javaFilter = _filter as PlatformJavaObjectFactoryProxy; + var filterHolder = _filter == null || qry.Local ? null : + new ContinuousQueryFilterHolder(_filter, _keepBinary); - if (javaFilter != null) - { - writer.WriteObject(javaFilter.GetRawProxy()); - } - else - { - var filterHolder = _filter == null || qry.Local - ? null - : new ContinuousQueryFilterHolder(_filter, _keepBinary); - - writer.WriteObject(filterHolder); - } + writer.WriteObject(filterHolder); writer.WriteInt(qry.BufferSize); writer.WriteLong((long)qry.TimeInterval.TotalMilliseconds);
