IGNITE-5879 .NET: Move TestPlatformPlugin to a separate module
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c42a9eac Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c42a9eac Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c42a9eac Branch: refs/heads/ignite-5896 Commit: c42a9eacb1adfd8593702d4d0b76fa5ed14771e8 Parents: 4f80f86 Author: Vyacheslav Daradur <[email protected]> Authored: Tue Sep 5 15:00:21 2017 +0300 Committer: Anton Vinogradov <[email protected]> Committed: Tue Sep 5 15:00:21 2017 +0300 ---------------------------------------------------------------------- .../org.apache.ignite.plugin.PluginProvider | 3 +- ...atformCachePluginConfigurationClosureFactory | 1 - ...rm.PlatformPluginConfigurationClosureFactory | 1 - .../platform/plugin/PlatformTestPlugin.java | 27 --- .../plugin/PlatformTestPluginConfiguration.java | 63 ----- ...rmTestPluginConfigurationClosureFactory.java | 61 ----- .../plugin/PlatformTestPluginException.java | 34 --- .../plugin/PlatformTestPluginExtension.java | 51 ---- .../plugin/PlatformTestPluginProvider.java | 103 -------- .../plugin/PlatformTestPluginTarget.java | 236 ------------------- .../cache/PlatformGetCachePluginsTask.java | 85 ------- .../PlatformTestCachePluginConfiguration.java | 55 ----- ...formTestCachePluginConfigurationClosure.java | 48 ---- ...tCachePluginConfigurationClosureFactory.java | 37 --- .../cache/PlatformTestCachePluginProvider.java | 72 ------ modules/extdata/platform/README.txt | 4 + .../extdata/platform/licenses/apache-2.0.txt | 202 ++++++++++++++++ modules/extdata/platform/pom.xml | 46 ++++ .../platform/plugin/PlatformTestPlugin.java | 27 +++ .../plugin/PlatformTestPluginConfiguration.java | 63 +++++ ...rmTestPluginConfigurationClosureFactory.java | 61 +++++ .../plugin/PlatformTestPluginException.java | 34 +++ .../plugin/PlatformTestPluginExtension.java | 51 ++++ .../plugin/PlatformTestPluginProvider.java | 103 ++++++++ .../plugin/PlatformTestPluginTarget.java | 236 +++++++++++++++++++ .../cache/PlatformGetCachePluginsTask.java | 85 +++++++ .../PlatformTestCachePluginConfiguration.java | 55 +++++ ...formTestCachePluginConfigurationClosure.java | 48 ++++ ...tCachePluginConfigurationClosureFactory.java | 37 +++ .../cache/PlatformTestCachePluginProvider.java | 72 ++++++ .../platform/plugin/cache/package-info.java | 22 ++ .../ignite/platform/plugin/package-info.java | 22 ++ .../org.apache.ignite.plugin.PluginProvider | 1 + ...atformCachePluginConfigurationClosureFactory | 1 + ...rm.PlatformPluginConfigurationClosureFactory | 1 + .../Apache.Ignite.Core/Impl/Common/Classpath.cs | 1 + pom.xml | 1 + 37 files changed, 1174 insertions(+), 876 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider b/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider index 5b6ed7d..8437ef0 100644 --- a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider +++ b/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.PluginProvider @@ -1,3 +1,2 @@ -org.apache.ignite.platform.plugin.PlatformTestPluginProvider org.apache.ignite.spi.discovery.tcp.TestReconnectPluginProvider -org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteStandByClusterTest$StanByClusterTestProvider \ No newline at end of file +org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteStandByClusterTest$StanByClusterTestProvider http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosureFactory ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosureFactory b/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosureFactory deleted file mode 100644 index a99b3b9..0000000 --- a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosureFactory +++ /dev/null @@ -1 +0,0 @@ -org.apache.ignite.platform.plugin.cache.PlatformTestCachePluginConfigurationClosureFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosureFactory ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosureFactory b/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosureFactory deleted file mode 100644 index ef79fbe..0000000 --- a/modules/core/src/test/java/META-INF/services/org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosureFactory +++ /dev/null @@ -1 +0,0 @@ -org.apache.ignite.platform.plugin.PlatformTestPluginConfigurationClosureFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java deleted file mode 100644 index b5a2ef3..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java +++ /dev/null @@ -1,27 +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.plugin; - -import org.apache.ignite.plugin.IgnitePlugin; - -/** - * Test plugin. - */ -class PlatformTestPlugin implements IgnitePlugin { - // No-op. -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java deleted file mode 100644 index b7fb36d..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java +++ /dev/null @@ -1,63 +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.plugin; - -import org.apache.ignite.binary.BinaryRawReader; -import org.apache.ignite.plugin.PluginConfiguration; - -/** - * Test plugin configuration. - */ -public class PlatformTestPluginConfiguration implements PluginConfiguration { - /** */ - private String pluginProperty; - - /** - * Initializes a new instance of PlatformTestPluginConfiguration. - */ - public PlatformTestPluginConfiguration() { - // No-op. - } - - /** - * Initializes a new instance of PlatformTestPluginConfiguration. - * - * @param reader Reader. - */ - public PlatformTestPluginConfiguration(BinaryRawReader reader) { - pluginProperty = reader.readString(); - } - - /** - * Gets the plugin property. - * - * @return Plugin property. - */ - public String pluginProperty() { - return pluginProperty; - } - - /** - * Sets the plugin property. - * - * @param pluginProperty Value. - */ - public void setPluginProperty(String pluginProperty) { - this.pluginProperty = pluginProperty; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java deleted file mode 100644 index e851384..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java +++ /dev/null @@ -1,61 +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.plugin; - -import org.apache.ignite.binary.BinaryRawReader; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.plugin.PluginConfiguration; -import org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosure; -import org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosureFactory; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Collections; - -/** - * Test config factory. - */ -public class PlatformTestPluginConfigurationClosureFactory implements PlatformPluginConfigurationClosureFactory, - PlatformPluginConfigurationClosure { - /** {@inheritDoc} */ - @Override public int id() { - return 0; - } - - /** {@inheritDoc} */ - @Override public PlatformPluginConfigurationClosure create() { - return this; - } - - /** {@inheritDoc} */ - @Override public void apply(@NotNull IgniteConfiguration cfg, @NotNull BinaryRawReader reader) { - ArrayList<PluginConfiguration> cfgs = new ArrayList<>(); - - if (cfg.getPluginConfigurations() != null) { - Collections.addAll(cfgs, cfg.getPluginConfigurations()); - } - - PlatformTestPluginConfiguration plugCfg = new PlatformTestPluginConfiguration(); - - plugCfg.setPluginProperty(reader.readString()); - - cfgs.add(plugCfg); - - cfg.setPluginConfigurations(cfgs.toArray(new PluginConfiguration[cfgs.size()])); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java deleted file mode 100644 index 3d71dda..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java +++ /dev/null @@ -1,34 +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.plugin; - -import org.apache.ignite.IgniteCheckedException; - -/** - * Custom plugin exception - */ -public class PlatformTestPluginException extends IgniteCheckedException { - /** - * Ctor. - * - * @param msg Message. - */ - public PlatformTestPluginException(String msg) { - super(msg); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java deleted file mode 100644 index 597e9bc..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.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.plugin; - -import org.apache.ignite.internal.IgniteEx; -import org.apache.ignite.internal.processors.platform.PlatformPluginExtension; -import org.apache.ignite.internal.processors.platform.PlatformTarget; - -/** - * Test plugin extension. - */ -public class PlatformTestPluginExtension implements PlatformPluginExtension { - /** */ - private final IgniteEx ignite; - - /** - * Ctor. - * - * @param ignite Ignite. - */ - PlatformTestPluginExtension(IgniteEx ignite) { - assert ignite != null; - - this.ignite = ignite; - } - - /** {@inheritDoc} */ - @Override public int id() { - return 0; - } - - /** {@inheritDoc} */ - @Override public PlatformTarget createTarget() { - return new PlatformTestPluginTarget(ignite.context().platform().context(), null); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java deleted file mode 100644 index c34696f..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java +++ /dev/null @@ -1,103 +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.plugin; - -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.internal.IgniteEx; -import org.apache.ignite.internal.processors.platform.PlatformPluginExtension; -import org.apache.ignite.platform.plugin.cache.PlatformTestCachePluginProvider; -import org.apache.ignite.plugin.*; -import org.jetbrains.annotations.Nullable; - -import java.io.Serializable; -import java.util.UUID; - -/** - * Plugin provider for platform tests. - */ -public class PlatformTestPluginProvider implements PluginProvider<PlatformTestPluginConfiguration> { - /** {@inheritDoc} */ - @Override public String name() { - return "TestPlatformPlugin"; - } - - /** {@inheritDoc} */ - @Override public String version() { - return "1.0"; - } - - /** {@inheritDoc} */ - @Override public String copyright() { - return "-"; - } - - /** {@inheritDoc} */ - @Override public void initExtensions(PluginContext ctx, ExtensionRegistry registry) { - registry.registerExtension(PlatformPluginExtension.class, - new PlatformTestPluginExtension((IgniteEx) ctx.grid())); - } - - /** {@inheritDoc} */ - @Override public void start(PluginContext ctx) throws IgniteCheckedException { - // No-op. - } - - /** {@inheritDoc} */ - @Override public void stop(boolean cancel) throws IgniteCheckedException { - // No-op. - } - - @Override public void onIgniteStart() throws IgniteCheckedException { - // No-op. - } - - @Override public void onIgniteStop(boolean cancel) { - // No-op. - } - - /** {@inheritDoc} */ - @Nullable @Override public Serializable provideDiscoveryData(UUID nodeId) { - return null; - } - - /** {@inheritDoc} */ - @Override public void receiveDiscoveryData(UUID nodeId, Serializable data) { - // No-op. - } - - /** {@inheritDoc} */ - @Override public void validateNewNode(ClusterNode node) throws PluginValidationException { - // No-op. - } - - /** {@inheritDoc} */ - @Nullable @Override public <T> T createComponent(PluginContext ctx, Class<T> cls) { - return null; - } - - /** {@inheritDoc} */ - @Override public <T extends IgnitePlugin> T plugin() { - return (T)new PlatformTestPlugin(); - } - - /** {@inheritDoc} */ - @Override public CachePluginProvider createCacheProvider(CachePluginContext ctx) { - return new PlatformTestCachePluginProvider(); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java deleted file mode 100644 index 8c1cbe9..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java +++ /dev/null @@ -1,236 +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.plugin; - -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.binary.BinaryRawReaderEx; -import org.apache.ignite.internal.binary.BinaryRawWriterEx; -import org.apache.ignite.internal.processors.platform.PlatformAsyncResult; -import org.apache.ignite.internal.processors.platform.PlatformContext; -import org.apache.ignite.internal.processors.platform.PlatformTarget; -import org.apache.ignite.internal.processors.platform.memory.PlatformMemory; -import org.apache.ignite.internal.processors.platform.memory.PlatformOutputStream; -import org.apache.ignite.internal.util.future.GridFutureAdapter; -import org.apache.ignite.internal.util.future.IgniteFutureImpl; -import org.apache.ignite.lang.IgniteFuture; -import org.apache.ignite.plugin.PluginConfiguration; -import org.jetbrains.annotations.Nullable; - -/** - * Test target. - */ -@SuppressWarnings("ConstantConditions") -class PlatformTestPluginTarget implements PlatformTarget { - /** */ - private final String name; - - /** */ - private final PlatformContext platformCtx; - - /** - * Constructor. - * - * @param platformCtx Context. - */ - PlatformTestPluginTarget(PlatformContext platformCtx, String name) { - this.platformCtx = platformCtx; - - if (name == null) { - // Initialize from configuration. - PlatformTestPluginConfiguration cfg = configuration(platformCtx.kernalContext().config()); - - assert cfg != null; - - name = cfg.pluginProperty(); - } - - this.name = name; - } - - /** {@inheritDoc} */ - @Override public long processInLongOutLong(int type, long val) throws IgniteCheckedException { - if (type == -1) - throw new PlatformTestPluginException("Baz"); - - return val + 1; - } - - @Override public long processInStreamOutLong(int type, BinaryRawReaderEx reader) throws IgniteCheckedException { - return reader.readString().length(); - } - - /** {@inheritDoc} */ - @Override public long processInStreamOutLong(int type, BinaryRawReaderEx reader, PlatformMemory mem) - throws IgniteCheckedException { - return processInStreamOutLong(type, reader); - } - - /** {@inheritDoc} */ - @Override public void processInStreamOutStream(int type, BinaryRawReaderEx reader, BinaryRawWriterEx writer) - throws IgniteCheckedException { - String s = reader.readString(); - - writer.writeString(s.toUpperCase()); - } - - /** {@inheritDoc} */ - @Override public PlatformTarget processInStreamOutObject(int type, BinaryRawReaderEx reader) - throws IgniteCheckedException { - return new PlatformTestPluginTarget(platformCtx, reader.readString()); - } - - /** {@inheritDoc} */ - @Override public PlatformTarget processInObjectStreamOutObjectStream( - int type, @Nullable PlatformTarget arg, BinaryRawReaderEx reader, BinaryRawWriterEx writer) - throws IgniteCheckedException { - PlatformTestPluginTarget t = (PlatformTestPluginTarget)arg; - - writer.writeString(invokeCallback(t.name)); - - return new PlatformTestPluginTarget(platformCtx, t.name + reader.readString()); - } - - /** - * Invokes the platform callback. - * - * @param val Value to send. - * @return Result. - */ - private String invokeCallback(String val) { - PlatformMemory outMem = platformCtx.memory().allocate(); - PlatformMemory inMem = platformCtx.memory().allocate(); - - PlatformOutputStream outStream = outMem.output(); - BinaryRawWriterEx writer = platformCtx.writer(outStream); - - writer.writeString(val); - - outStream.synchronize(); - - platformCtx.gateway().pluginCallback(1, outMem, inMem); - - BinaryRawReaderEx reader = platformCtx.reader(inMem); - - return reader.readString(); - } - - /** {@inheritDoc} */ - @Override public void processOutStream(int type, BinaryRawWriterEx writer) throws IgniteCheckedException { - writer.writeString(name); - } - - /** {@inheritDoc} */ - @Override public PlatformTarget processOutObject(int type) throws IgniteCheckedException { - return new PlatformTestPluginTarget(platformCtx, name); - } - - /** {@inheritDoc} */ - @Override public PlatformAsyncResult processInStreamAsync(int type, BinaryRawReaderEx reader) throws IgniteCheckedException { - switch (type) { - case 1: { - // Async upper case. - final String val = reader.readString(); - - final GridFutureAdapter<String> fa = new GridFutureAdapter<String>() { - @Override public boolean cancel() throws IgniteCheckedException { - return onCancelled(); - } - }; - - new Thread(new Runnable() { - @Override public void run() { - try { - Thread.sleep(500L); - fa.onDone(val.toUpperCase()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }).start(); - - return new PlatformAsyncResult() { - @Override public IgniteFuture future() { - //noinspection unchecked - return new IgniteFutureImpl(fa); - } - - @Override public void write(BinaryRawWriterEx writer, Object result) { - writer.writeString((String) result); - } - }; - } - case 2: { - // Exception. - throw new PlatformTestPluginException("123"); - } - case 3: { - // Async exception. - final GridFutureAdapter<String> fa = new GridFutureAdapter<>(); - - new Thread(new Runnable() { - @Override public void run() { - try { - Thread.sleep(500L); - fa.onDone(new PlatformTestPluginException("x")); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }).start(); - - return new PlatformAsyncResult() { - @Override public IgniteFuture future() { - //noinspection unchecked - return new IgniteFutureImpl(fa); - } - - @Override public void write(BinaryRawWriterEx writer, Object result) { - // No-op. - } - }; - } - } - - return null; - } - - /** {@inheritDoc} */ - @Override public Exception convertException(Exception e) { - return e; - } - - /** - * Gets the plugin config. - * - * @param igniteCfg Ignite config. - * - * @return Plugin config. - */ - private PlatformTestPluginConfiguration configuration(IgniteConfiguration igniteCfg) { - if (igniteCfg.getPluginConfigurations() != null) { - for (PluginConfiguration pluginCfg : igniteCfg.getPluginConfigurations()) { - if (pluginCfg instanceof PlatformTestPluginConfiguration) { - return (PlatformTestPluginConfiguration) pluginCfg; - } - } - } - - return null; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java deleted file mode 100644 index cfcf0d5..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java +++ /dev/null @@ -1,85 +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.plugin.cache; - -import org.apache.ignite.Ignite; -import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.compute.ComputeJob; -import org.apache.ignite.compute.ComputeJobAdapter; -import org.apache.ignite.compute.ComputeJobResult; -import org.apache.ignite.compute.ComputeTaskAdapter; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.internal.util.typedef.F; -import org.apache.ignite.plugin.CachePluginConfiguration; -import org.apache.ignite.resources.IgniteInstanceResource; -import org.jetbrains.annotations.Nullable; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * Task to get a list of cache plugins. - */ -public class PlatformGetCachePluginsTask extends ComputeTaskAdapter<String, String[]> { - /** {@inheritDoc} */ - @Nullable @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, - @Nullable String arg) { - return Collections.singletonMap(new GetCachePluginsJob(arg), F.first(subgrid)); - } - - /** {@inheritDoc} */ - @Nullable @Override public String[] reduce(List<ComputeJobResult> results) { - return results.get(0).getData(); - } - - /** - * Job. - */ - @SuppressWarnings("unchecked") - private static class GetCachePluginsJob extends ComputeJobAdapter { - /** */ - private final String cacheName; - - /** */ - @IgniteInstanceResource - private final Ignite ignite; - - /** */ - GetCachePluginsJob(String cacheName) { - this.cacheName = cacheName; - ignite = null; - } - - /** {@inheritDoc} */ - @Nullable @Override public String[] execute() { - CachePluginConfiguration[] cfg = - ignite.cache(cacheName).getConfiguration(CacheConfiguration.class).getPluginConfigurations(); - - if (cfg == null) - return null; - - String[] res = new String[cfg.length]; - - for (int i = 0; i < cfg.length; i++) - res[i] = cfg[i].getClass().getName(); - - return res; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java deleted file mode 100644 index 9f1db88..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java +++ /dev/null @@ -1,55 +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.plugin.cache; - -import org.apache.ignite.plugin.CachePluginConfiguration; -import org.apache.ignite.plugin.CachePluginContext; -import org.apache.ignite.plugin.CachePluginProvider; - -/** - * Test plugin configuration. - */ -public class PlatformTestCachePluginConfiguration implements CachePluginConfiguration { - /** */ - private String pluginProperty; - - /** - * Initializes a new instance of PlatformTestPluginConfiguration. - */ - PlatformTestCachePluginConfiguration() { - // No-op. - } - - /** - * Gets the plugin property. - * - * @return Plugin property. - */ - public String pluginProperty() { - return pluginProperty; - } - - /** - * Sets the plugin property. - * - * @param pluginProperty Value. - */ - void setPluginProperty(String pluginProperty) { - this.pluginProperty = pluginProperty; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosure.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosure.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosure.java deleted file mode 100644 index 2763c4f..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosure.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.platform.plugin.cache; - -import org.apache.ignite.binary.BinaryRawReader; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.plugin.CachePluginConfiguration; -import org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosure; - -import java.util.ArrayList; -import java.util.Collections; - -/** - * Test config closure. - */ -public class PlatformTestCachePluginConfigurationClosure implements PlatformCachePluginConfigurationClosure { - /** {@inheritDoc} */ - @Override public void apply(CacheConfiguration cacheConfiguration, BinaryRawReader reader) { - ArrayList<CachePluginConfiguration> cfgs = new ArrayList<>(); - - if (cacheConfiguration.getPluginConfigurations() != null) { - Collections.addAll(cfgs, cacheConfiguration.getPluginConfigurations()); - } - - PlatformTestCachePluginConfiguration plugCfg = new PlatformTestCachePluginConfiguration(); - - plugCfg.setPluginProperty(reader.readString()); - - cfgs.add(plugCfg); - - cacheConfiguration.setPluginConfigurations(cfgs.toArray(new CachePluginConfiguration[cfgs.size()])); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosureFactory.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosureFactory.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosureFactory.java deleted file mode 100644 index c294342..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfigurationClosureFactory.java +++ /dev/null @@ -1,37 +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.plugin.cache; - -import org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosure; -import org.apache.ignite.plugin.platform.PlatformCachePluginConfigurationClosureFactory; - -/** - * Test closure factory. - */ -public class PlatformTestCachePluginConfigurationClosureFactory - implements PlatformCachePluginConfigurationClosureFactory { - /** {@inheritDoc} */ - @Override public int id() { - return 0; - } - - /** {@inheritDoc} */ - @Override public PlatformCachePluginConfigurationClosure create() { - return new PlatformTestCachePluginConfigurationClosure(); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginProvider.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginProvider.java b/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginProvider.java deleted file mode 100644 index ba04411..0000000 --- a/modules/core/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginProvider.java +++ /dev/null @@ -1,72 +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.plugin.cache; - -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.plugin.CachePluginConfiguration; -import org.apache.ignite.plugin.CachePluginProvider; -import org.jetbrains.annotations.Nullable; - -import javax.cache.Cache; - -/** - * Test cache plugin provider. - */ -public class PlatformTestCachePluginProvider implements CachePluginProvider { - /** {@inheritDoc} */ - @Override public void start() throws IgniteCheckedException { - // No-op. - } - - /** {@inheritDoc} */ - @Override public void stop(boolean cancel) { - // No-op. - } - - /** {@inheritDoc} */ - @Override public void onIgniteStart() throws IgniteCheckedException { - // No-op. - } - - /** {@inheritDoc} */ - @Override public void onIgniteStop(boolean cancel) { - // No-op. - } - - /** {@inheritDoc} */ - @Override public void validate() throws IgniteCheckedException { - // No-op. - } - - @Override public void validateRemote(CacheConfiguration locCfg, CacheConfiguration rmtCfg, ClusterNode rmtNode) - throws IgniteCheckedException { - // No-op. - } - - /** {@inheritDoc} */ - @Nullable @Override public Object unwrapCacheEntry(Cache.Entry entry, Class cls) { - return null; - } - - /** {@inheritDoc} */ - @Nullable @Override public Object createComponent(Class cls) { - return null; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/README.txt ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/README.txt b/modules/extdata/platform/README.txt new file mode 100644 index 0000000..cb583ca --- /dev/null +++ b/modules/extdata/platform/README.txt @@ -0,0 +1,4 @@ +Apache Ignite Platform Tests +------------------------ + +Special module for platform tests. http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/licenses/apache-2.0.txt ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/licenses/apache-2.0.txt b/modules/extdata/platform/licenses/apache-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/modules/extdata/platform/licenses/apache-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/pom.xml ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/pom.xml b/modules/extdata/platform/pom.xml new file mode 100644 index 0000000..d7b84ac --- /dev/null +++ b/modules/extdata/platform/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + 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. +--> + +<!-- + POM file. +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-parent</artifactId> + <version>1</version> + <relativePath>../../../parent</relativePath> + </parent> + + <artifactId>ignite-extdata-platform</artifactId> + <version>2.2.0-SNAPSHOT</version> + <url>http://ignite.apache.org</url> + + <dependencies> + <dependency> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-core</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java new file mode 100644 index 0000000..b5a2ef3 --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPlugin.java @@ -0,0 +1,27 @@ +/* + * 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.plugin; + +import org.apache.ignite.plugin.IgnitePlugin; + +/** + * Test plugin. + */ +class PlatformTestPlugin implements IgnitePlugin { + // No-op. +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java new file mode 100644 index 0000000..b7fb36d --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfiguration.java @@ -0,0 +1,63 @@ +/* + * 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.plugin; + +import org.apache.ignite.binary.BinaryRawReader; +import org.apache.ignite.plugin.PluginConfiguration; + +/** + * Test plugin configuration. + */ +public class PlatformTestPluginConfiguration implements PluginConfiguration { + /** */ + private String pluginProperty; + + /** + * Initializes a new instance of PlatformTestPluginConfiguration. + */ + public PlatformTestPluginConfiguration() { + // No-op. + } + + /** + * Initializes a new instance of PlatformTestPluginConfiguration. + * + * @param reader Reader. + */ + public PlatformTestPluginConfiguration(BinaryRawReader reader) { + pluginProperty = reader.readString(); + } + + /** + * Gets the plugin property. + * + * @return Plugin property. + */ + public String pluginProperty() { + return pluginProperty; + } + + /** + * Sets the plugin property. + * + * @param pluginProperty Value. + */ + public void setPluginProperty(String pluginProperty) { + this.pluginProperty = pluginProperty; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java new file mode 100644 index 0000000..e851384 --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginConfigurationClosureFactory.java @@ -0,0 +1,61 @@ +/* + * 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.plugin; + +import org.apache.ignite.binary.BinaryRawReader; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.plugin.PluginConfiguration; +import org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosure; +import org.apache.ignite.plugin.platform.PlatformPluginConfigurationClosureFactory; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; + +/** + * Test config factory. + */ +public class PlatformTestPluginConfigurationClosureFactory implements PlatformPluginConfigurationClosureFactory, + PlatformPluginConfigurationClosure { + /** {@inheritDoc} */ + @Override public int id() { + return 0; + } + + /** {@inheritDoc} */ + @Override public PlatformPluginConfigurationClosure create() { + return this; + } + + /** {@inheritDoc} */ + @Override public void apply(@NotNull IgniteConfiguration cfg, @NotNull BinaryRawReader reader) { + ArrayList<PluginConfiguration> cfgs = new ArrayList<>(); + + if (cfg.getPluginConfigurations() != null) { + Collections.addAll(cfgs, cfg.getPluginConfigurations()); + } + + PlatformTestPluginConfiguration plugCfg = new PlatformTestPluginConfiguration(); + + plugCfg.setPluginProperty(reader.readString()); + + cfgs.add(plugCfg); + + cfg.setPluginConfigurations(cfgs.toArray(new PluginConfiguration[cfgs.size()])); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java new file mode 100644 index 0000000..3d71dda --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginException.java @@ -0,0 +1,34 @@ +/* + * 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.plugin; + +import org.apache.ignite.IgniteCheckedException; + +/** + * Custom plugin exception + */ +public class PlatformTestPluginException extends IgniteCheckedException { + /** + * Ctor. + * + * @param msg Message. + */ + public PlatformTestPluginException(String msg) { + super(msg); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java new file mode 100644 index 0000000..597e9bc --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginExtension.java @@ -0,0 +1,51 @@ +/* + * 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.plugin; + +import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.internal.processors.platform.PlatformPluginExtension; +import org.apache.ignite.internal.processors.platform.PlatformTarget; + +/** + * Test plugin extension. + */ +public class PlatformTestPluginExtension implements PlatformPluginExtension { + /** */ + private final IgniteEx ignite; + + /** + * Ctor. + * + * @param ignite Ignite. + */ + PlatformTestPluginExtension(IgniteEx ignite) { + assert ignite != null; + + this.ignite = ignite; + } + + /** {@inheritDoc} */ + @Override public int id() { + return 0; + } + + /** {@inheritDoc} */ + @Override public PlatformTarget createTarget() { + return new PlatformTestPluginTarget(ignite.context().platform().context(), null); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java new file mode 100644 index 0000000..c34696f --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginProvider.java @@ -0,0 +1,103 @@ +/* + * 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.plugin; + +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.internal.processors.platform.PlatformPluginExtension; +import org.apache.ignite.platform.plugin.cache.PlatformTestCachePluginProvider; +import org.apache.ignite.plugin.*; +import org.jetbrains.annotations.Nullable; + +import java.io.Serializable; +import java.util.UUID; + +/** + * Plugin provider for platform tests. + */ +public class PlatformTestPluginProvider implements PluginProvider<PlatformTestPluginConfiguration> { + /** {@inheritDoc} */ + @Override public String name() { + return "TestPlatformPlugin"; + } + + /** {@inheritDoc} */ + @Override public String version() { + return "1.0"; + } + + /** {@inheritDoc} */ + @Override public String copyright() { + return "-"; + } + + /** {@inheritDoc} */ + @Override public void initExtensions(PluginContext ctx, ExtensionRegistry registry) { + registry.registerExtension(PlatformPluginExtension.class, + new PlatformTestPluginExtension((IgniteEx) ctx.grid())); + } + + /** {@inheritDoc} */ + @Override public void start(PluginContext ctx) throws IgniteCheckedException { + // No-op. + } + + /** {@inheritDoc} */ + @Override public void stop(boolean cancel) throws IgniteCheckedException { + // No-op. + } + + @Override public void onIgniteStart() throws IgniteCheckedException { + // No-op. + } + + @Override public void onIgniteStop(boolean cancel) { + // No-op. + } + + /** {@inheritDoc} */ + @Nullable @Override public Serializable provideDiscoveryData(UUID nodeId) { + return null; + } + + /** {@inheritDoc} */ + @Override public void receiveDiscoveryData(UUID nodeId, Serializable data) { + // No-op. + } + + /** {@inheritDoc} */ + @Override public void validateNewNode(ClusterNode node) throws PluginValidationException { + // No-op. + } + + /** {@inheritDoc} */ + @Nullable @Override public <T> T createComponent(PluginContext ctx, Class<T> cls) { + return null; + } + + /** {@inheritDoc} */ + @Override public <T extends IgnitePlugin> T plugin() { + return (T)new PlatformTestPlugin(); + } + + /** {@inheritDoc} */ + @Override public CachePluginProvider createCacheProvider(CachePluginContext ctx) { + return new PlatformTestCachePluginProvider(); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java new file mode 100644 index 0000000..8c1cbe9 --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/PlatformTestPluginTarget.java @@ -0,0 +1,236 @@ +/* + * 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.plugin; + +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.internal.binary.BinaryRawReaderEx; +import org.apache.ignite.internal.binary.BinaryRawWriterEx; +import org.apache.ignite.internal.processors.platform.PlatformAsyncResult; +import org.apache.ignite.internal.processors.platform.PlatformContext; +import org.apache.ignite.internal.processors.platform.PlatformTarget; +import org.apache.ignite.internal.processors.platform.memory.PlatformMemory; +import org.apache.ignite.internal.processors.platform.memory.PlatformOutputStream; +import org.apache.ignite.internal.util.future.GridFutureAdapter; +import org.apache.ignite.internal.util.future.IgniteFutureImpl; +import org.apache.ignite.lang.IgniteFuture; +import org.apache.ignite.plugin.PluginConfiguration; +import org.jetbrains.annotations.Nullable; + +/** + * Test target. + */ +@SuppressWarnings("ConstantConditions") +class PlatformTestPluginTarget implements PlatformTarget { + /** */ + private final String name; + + /** */ + private final PlatformContext platformCtx; + + /** + * Constructor. + * + * @param platformCtx Context. + */ + PlatformTestPluginTarget(PlatformContext platformCtx, String name) { + this.platformCtx = platformCtx; + + if (name == null) { + // Initialize from configuration. + PlatformTestPluginConfiguration cfg = configuration(platformCtx.kernalContext().config()); + + assert cfg != null; + + name = cfg.pluginProperty(); + } + + this.name = name; + } + + /** {@inheritDoc} */ + @Override public long processInLongOutLong(int type, long val) throws IgniteCheckedException { + if (type == -1) + throw new PlatformTestPluginException("Baz"); + + return val + 1; + } + + @Override public long processInStreamOutLong(int type, BinaryRawReaderEx reader) throws IgniteCheckedException { + return reader.readString().length(); + } + + /** {@inheritDoc} */ + @Override public long processInStreamOutLong(int type, BinaryRawReaderEx reader, PlatformMemory mem) + throws IgniteCheckedException { + return processInStreamOutLong(type, reader); + } + + /** {@inheritDoc} */ + @Override public void processInStreamOutStream(int type, BinaryRawReaderEx reader, BinaryRawWriterEx writer) + throws IgniteCheckedException { + String s = reader.readString(); + + writer.writeString(s.toUpperCase()); + } + + /** {@inheritDoc} */ + @Override public PlatformTarget processInStreamOutObject(int type, BinaryRawReaderEx reader) + throws IgniteCheckedException { + return new PlatformTestPluginTarget(platformCtx, reader.readString()); + } + + /** {@inheritDoc} */ + @Override public PlatformTarget processInObjectStreamOutObjectStream( + int type, @Nullable PlatformTarget arg, BinaryRawReaderEx reader, BinaryRawWriterEx writer) + throws IgniteCheckedException { + PlatformTestPluginTarget t = (PlatformTestPluginTarget)arg; + + writer.writeString(invokeCallback(t.name)); + + return new PlatformTestPluginTarget(platformCtx, t.name + reader.readString()); + } + + /** + * Invokes the platform callback. + * + * @param val Value to send. + * @return Result. + */ + private String invokeCallback(String val) { + PlatformMemory outMem = platformCtx.memory().allocate(); + PlatformMemory inMem = platformCtx.memory().allocate(); + + PlatformOutputStream outStream = outMem.output(); + BinaryRawWriterEx writer = platformCtx.writer(outStream); + + writer.writeString(val); + + outStream.synchronize(); + + platformCtx.gateway().pluginCallback(1, outMem, inMem); + + BinaryRawReaderEx reader = platformCtx.reader(inMem); + + return reader.readString(); + } + + /** {@inheritDoc} */ + @Override public void processOutStream(int type, BinaryRawWriterEx writer) throws IgniteCheckedException { + writer.writeString(name); + } + + /** {@inheritDoc} */ + @Override public PlatformTarget processOutObject(int type) throws IgniteCheckedException { + return new PlatformTestPluginTarget(platformCtx, name); + } + + /** {@inheritDoc} */ + @Override public PlatformAsyncResult processInStreamAsync(int type, BinaryRawReaderEx reader) throws IgniteCheckedException { + switch (type) { + case 1: { + // Async upper case. + final String val = reader.readString(); + + final GridFutureAdapter<String> fa = new GridFutureAdapter<String>() { + @Override public boolean cancel() throws IgniteCheckedException { + return onCancelled(); + } + }; + + new Thread(new Runnable() { + @Override public void run() { + try { + Thread.sleep(500L); + fa.onDone(val.toUpperCase()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + return new PlatformAsyncResult() { + @Override public IgniteFuture future() { + //noinspection unchecked + return new IgniteFutureImpl(fa); + } + + @Override public void write(BinaryRawWriterEx writer, Object result) { + writer.writeString((String) result); + } + }; + } + case 2: { + // Exception. + throw new PlatformTestPluginException("123"); + } + case 3: { + // Async exception. + final GridFutureAdapter<String> fa = new GridFutureAdapter<>(); + + new Thread(new Runnable() { + @Override public void run() { + try { + Thread.sleep(500L); + fa.onDone(new PlatformTestPluginException("x")); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + return new PlatformAsyncResult() { + @Override public IgniteFuture future() { + //noinspection unchecked + return new IgniteFutureImpl(fa); + } + + @Override public void write(BinaryRawWriterEx writer, Object result) { + // No-op. + } + }; + } + } + + return null; + } + + /** {@inheritDoc} */ + @Override public Exception convertException(Exception e) { + return e; + } + + /** + * Gets the plugin config. + * + * @param igniteCfg Ignite config. + * + * @return Plugin config. + */ + private PlatformTestPluginConfiguration configuration(IgniteConfiguration igniteCfg) { + if (igniteCfg.getPluginConfigurations() != null) { + for (PluginConfiguration pluginCfg : igniteCfg.getPluginConfigurations()) { + if (pluginCfg instanceof PlatformTestPluginConfiguration) { + return (PlatformTestPluginConfiguration) pluginCfg; + } + } + } + + return null; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java new file mode 100644 index 0000000..cfcf0d5 --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformGetCachePluginsTask.java @@ -0,0 +1,85 @@ +/* + * 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.plugin.cache; + +import org.apache.ignite.Ignite; +import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.compute.ComputeJob; +import org.apache.ignite.compute.ComputeJobAdapter; +import org.apache.ignite.compute.ComputeJobResult; +import org.apache.ignite.compute.ComputeTaskAdapter; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.plugin.CachePluginConfiguration; +import org.apache.ignite.resources.IgniteInstanceResource; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * Task to get a list of cache plugins. + */ +public class PlatformGetCachePluginsTask extends ComputeTaskAdapter<String, String[]> { + /** {@inheritDoc} */ + @Nullable @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, + @Nullable String arg) { + return Collections.singletonMap(new GetCachePluginsJob(arg), F.first(subgrid)); + } + + /** {@inheritDoc} */ + @Nullable @Override public String[] reduce(List<ComputeJobResult> results) { + return results.get(0).getData(); + } + + /** + * Job. + */ + @SuppressWarnings("unchecked") + private static class GetCachePluginsJob extends ComputeJobAdapter { + /** */ + private final String cacheName; + + /** */ + @IgniteInstanceResource + private final Ignite ignite; + + /** */ + GetCachePluginsJob(String cacheName) { + this.cacheName = cacheName; + ignite = null; + } + + /** {@inheritDoc} */ + @Nullable @Override public String[] execute() { + CachePluginConfiguration[] cfg = + ignite.cache(cacheName).getConfiguration(CacheConfiguration.class).getPluginConfigurations(); + + if (cfg == null) + return null; + + String[] res = new String[cfg.length]; + + for (int i = 0; i < cfg.length; i++) + res[i] = cfg[i].getClass().getName(); + + return res; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/c42a9eac/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java new file mode 100644 index 0000000..9f1db88 --- /dev/null +++ b/modules/extdata/platform/src/test/java/org/apache/ignite/platform/plugin/cache/PlatformTestCachePluginConfiguration.java @@ -0,0 +1,55 @@ +/* + * 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.plugin.cache; + +import org.apache.ignite.plugin.CachePluginConfiguration; +import org.apache.ignite.plugin.CachePluginContext; +import org.apache.ignite.plugin.CachePluginProvider; + +/** + * Test plugin configuration. + */ +public class PlatformTestCachePluginConfiguration implements CachePluginConfiguration { + /** */ + private String pluginProperty; + + /** + * Initializes a new instance of PlatformTestPluginConfiguration. + */ + PlatformTestCachePluginConfiguration() { + // No-op. + } + + /** + * Gets the plugin property. + * + * @return Plugin property. + */ + public String pluginProperty() { + return pluginProperty; + } + + /** + * Sets the plugin property. + * + * @param pluginProperty Value. + */ + void setPluginProperty(String pluginProperty) { + this.pluginProperty = pluginProperty; + } +}
