http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPersonStore.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPersonStore.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPersonStore.java deleted file mode 100644 index 252c037..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPersonStore.java +++ /dev/null @@ -1,275 +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.examples.datagrid.store.jdbc; - -import org.apache.ignite.*; -import org.apache.ignite.cache.store.*; -import org.apache.ignite.examples.datagrid.store.model.*; -import org.apache.ignite.lang.*; -import org.apache.ignite.resources.*; -import org.jetbrains.annotations.*; - -import javax.cache.*; -import javax.cache.integration.*; -import java.sql.*; -import java.util.*; - -/** - * Example of {@link CacheStore} implementation that uses JDBC - * transaction with cache transactions and maps {@link Long} to {@link Person}. - * - */ -public class CacheJdbcPersonStore extends CacheStoreAdapter<Long, Person> { - /** Transaction metadata attribute name. */ - private static final String ATTR_NAME = "SIMPLE_STORE_CONNECTION"; - - /** Auto-injected store session. */ - @CacheStoreSessionResource - private CacheStoreSession ses; - - /** - * Constructor. - * - * @throws IgniteException If failed. - */ - public CacheJdbcPersonStore() throws IgniteException { - prepareDb(); - } - - /** - * Prepares database for example execution. This method will create a - * table called "PERSONS" so it can be used by store implementation. - * - * @throws IgniteException If failed. - */ - private void prepareDb() throws IgniteException { - try (Connection conn = openConnection(false); Statement st = conn.createStatement()) { - st.execute("create table if not exists PERSONS (id number unique, firstName varchar(255), " + - "lastName varchar(255))"); - - conn.commit(); - } - catch (SQLException e) { - throw new IgniteException("Failed to create database table.", e); - } - } - - /** {@inheritDoc} */ - @Override public void txEnd(boolean commit) { - Map<String, Connection> props = ses.properties(); - - try (Connection conn = props.remove(ATTR_NAME)) { - if (conn != null) { - if (commit) - conn.commit(); - else - conn.rollback(); - } - - System.out.println(">>> Transaction ended [commit=" + commit + ']'); - } - catch (SQLException e) { - throw new CacheWriterException("Failed to end transaction: " + ses.transaction(), e); - } - } - - /** {@inheritDoc} */ - @Override public Person load(Long key) { - System.out.println(">>> Loading key: " + key); - - Connection conn = null; - - try { - conn = connection(); - - try (PreparedStatement st = conn.prepareStatement("select * from PERSONS where id=?")) { - st.setString(1, key.toString()); - - ResultSet rs = st.executeQuery(); - - if (rs.next()) - return new Person(rs.getLong(1), rs.getString(2), rs.getString(3)); - } - } - catch (SQLException e) { - throw new CacheLoaderException("Failed to load object: " + key, e); - } - finally { - end(conn); - } - - return null; - } - - /** {@inheritDoc} */ - @Override public void write(Cache.Entry<? extends Long, ? extends Person> entry) { - Long key = entry.getKey(); - - Person val = entry.getValue(); - - System.out.println(">>> Putting [key=" + key + ", val=" + val + ']'); - - Connection conn = null; - - try { - conn = connection(); - - int updated; - - // Try update first. If it does not work, then try insert. - // Some databases would allow these to be done in one 'upsert' operation. - try (PreparedStatement st = conn.prepareStatement( - "update PERSONS set firstName=?, lastName=? where id=?")) { - st.setString(1, val.getFirstName()); - st.setString(2, val.getLastName()); - st.setLong(3, val.getId()); - - updated = st.executeUpdate(); - } - - // If update failed, try to insert. - if (updated == 0) { - try (PreparedStatement st = conn.prepareStatement( - "insert into PERSONS (id, firstName, lastName) values(?, ?, ?)")) { - st.setLong(1, val.getId()); - st.setString(2, val.getFirstName()); - st.setString(3, val.getLastName()); - - st.executeUpdate(); - } - } - } - catch (SQLException e) { - throw new CacheLoaderException("Failed to put object [key=" + key + ", val=" + val + ']', e); - } - finally { - end(conn); - } - } - - /** {@inheritDoc} */ - @Override public void delete(Object key) { - System.out.println(">>> Removing key: " + key); - - Connection conn = null; - - try { - conn = connection(); - - try (PreparedStatement st = conn.prepareStatement("delete from PERSONS where id=?")) { - st.setLong(1, (Long)key); - - st.executeUpdate(); - } - } - catch (SQLException e) { - throw new CacheWriterException("Failed to remove object: " + key, e); - } - finally { - end(conn); - } - } - - /** {@inheritDoc} */ - @Override public void loadCache(IgniteBiInClosure<Long, Person> clo, Object... args) { - if (args == null || args.length == 0 || args[0] == null) - throw new CacheLoaderException("Expected entry count parameter is not provided."); - - final int entryCnt = (Integer)args[0]; - - try (Connection conn = connection()) { - try (PreparedStatement st = conn.prepareStatement("select * from PERSONS")) { - try (ResultSet rs = st.executeQuery()) { - int cnt = 0; - - while (cnt < entryCnt && rs.next()) { - Person person = new Person(rs.getLong(1), rs.getString(2), rs.getString(3)); - - clo.apply(person.getId(), person); - - cnt++; - } - - System.out.println(">>> Loaded " + cnt + " values into cache."); - } - } - } - catch (SQLException e) { - throw new CacheLoaderException("Failed to load values from cache store.", e); - } - } - - /** - * @return Connection. - * @throws SQLException In case of error. - */ - private Connection connection() throws SQLException { - // If there is an ongoing transaction, - // we must reuse the same connection. - if (ses.isWithinTransaction()) { - Map<Object, Object> props = ses.properties(); - - Connection conn = (Connection)props.get(ATTR_NAME); - - if (conn == null) { - conn = openConnection(false); - - // Store connection in session properties, so it can be accessed - // for other operations on the same transaction. - props.put(ATTR_NAME, conn); - } - - return conn; - } - // Transaction can be null in case of simple load or put operation. - else - return openConnection(true); - } - - /** - * Closes allocated resources depending on transaction status. - * - * @param conn Allocated connection. - */ - private void end(@Nullable Connection conn) { - if (!ses.isWithinTransaction() && conn != null) { - // Close connection right away if there is no transaction. - try { - conn.close(); - } - catch (SQLException ignored) { - // No-op. - } - } - } - - /** - * Gets connection from a pool. - * - * @param autocommit {@code true} If connection should use autocommit mode. - * @return Pooled connection. - * @throws SQLException In case of error. - */ - private Connection openConnection(boolean autocommit) throws SQLException { - Connection conn = DriverManager.getConnection("jdbc:h2:mem:example;DB_CLOSE_DELAY=-1"); - - conn.setAutoCommit(autocommit); - - return conn; - } -}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java deleted file mode 100644 index 86f3403..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java +++ /dev/null @@ -1,82 +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.examples.datagrid.store.jdbc; - -import org.apache.ignite.*; -import org.apache.ignite.cache.store.jdbc.*; -import org.apache.ignite.examples.datagrid.store.model.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.h2.tools.*; - -import javax.cache.*; -import java.io.*; -import java.sql.*; - -/** - * Example of {@link CacheJdbcPojoStore} implementation that uses JDBC - * transaction with cache transactions and maps {@link Long} to {@link Person}. - */ -public class CacheJdbcPojoPersonStore extends CacheJdbcPojoStore<Long, Person> { - /** - * Constructor. - * - * @throws IgniteException If failed. - */ - public CacheJdbcPojoPersonStore() throws IgniteException { - try { - // Try to connect to database server. - dataSrc = org.h2.jdbcx.JdbcConnectionPool.create("jdbc:h2:tcp://localhost/mem:ExampleDb", "sa", ""); - - resolveDialect(); - } - catch (CacheException ignore) { - // Construct example database in memory. - dataSrc = org.h2.jdbcx.JdbcConnectionPool.create("jdbc:h2:mem:ExampleDb;DB_CLOSE_DELAY=-1", "sa", ""); - - prepareDb(); - } - } - - /** - * Prepares database for example execution. This method will create a table called "PERSONS" - * so it can be used by store implementation. - * - * @throws IgniteException If failed. - */ - private void prepareDb() throws IgniteException { - File script = U.resolveIgnitePath("examples/config/store/example-database.script"); - - if (script == null) - throw new IgniteException("Failed to find example database script: " + - "examples/config/store/example-database.script"); - - try { - // Start H2 database TCP server in order to access sample in-memory database from other processes. - Server.createTcpServer("-tcpDaemon").start(); - - // Load sample data into database. - RunScript.execute(dataSrc.getConnection(), new FileReader(script)); - } - catch (SQLException e) { - throw new IgniteException("Failed to initialize database", e); - } - catch (FileNotFoundException e) { - throw new IgniteException("Failed to find example database script: " + script.getPath(), e); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/package-info.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/package-info.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/package-info.java deleted file mode 100644 index 46cfe6b..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/jdbc/package-info.java +++ /dev/null @@ -1,22 +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 description. --> - * Contains JDBC-based cache store implementation. - */ -package org.apache.ignite.examples.datagrid.store.jdbc; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/model/Person.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/model/Person.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/model/Person.java deleted file mode 100644 index fad7816..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/model/Person.java +++ /dev/null @@ -1,155 +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.examples.datagrid.store.model; - -import java.io.*; - -/** - * Person definition. - * - * Code generated by Apache Ignite Schema Import utility: 02/24/2015. - */ -public class Person implements Serializable { - /** */ - private static final long serialVersionUID = 0L; - - /** Value for id. */ - private long id; - - /** Value for first name. */ - private String firstName; - - /** Value for last name. */ - private String lastName; - - /** - * Empty constructor. - */ - public Person() { - // No-op. - } - - /** - * Full constructor. - */ - public Person( - long id, - String firstName, - String lastName - ) { - this.id = id; - this.firstName = firstName; - this.lastName = lastName; - } - - /** - * Gets id. - * - * @return Value for id. - */ - public long getId() { - return id; - } - - /** - * Sets id. - * - * @param id New value for id. - */ - public void setId(long id) { - this.id = id; - } - - /** - * Gets first name. - * - * @return Value for first name. - */ - public String getFirstName() { - return firstName; - } - - /** - * Sets first name. - * - * @param firstName New value for first name. - */ - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - /** - * Gets last name. - * - * @return Value for last name. - */ - public String getLastName() { - return lastName; - } - - /** - * Sets last name. - * - * @param lastName New value for last name. - */ - public void setLastName(String lastName) { - this.lastName = lastName; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (!(o instanceof Person)) - return false; - - Person that = (Person)o; - - if (id != that.id) - return false; - - if (firstName != null ? !firstName.equals(that.firstName) : that.firstName != null) - return false; - - if (lastName != null ? !lastName.equals(that.lastName) : that.lastName != null) - return false; - - return true; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - int res = (int)(id ^ (id >>> 32)); - - res = 31 * res + (firstName != null ? firstName.hashCode() : 0); - - res = 31 * res + (lastName != null ? lastName.hashCode() : 0); - - return res; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return "Person [id=" + id + - ", firstName=" + firstName + - ", lastName=" + lastName + - "]"; - } -} - http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/package-info.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/package-info.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/store/package-info.java deleted file mode 100644 index c05873a..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datagrid/store/package-info.java +++ /dev/null @@ -1,22 +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 description. --> - * Demonstrates using of cache store. - */ -package org.apache.ignite.examples.datagrid.store; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicLongExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicLongExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicLongExample.java deleted file mode 100644 index e83673f..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicLongExample.java +++ /dev/null @@ -1,74 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -import java.util.*; - -/** - * Demonstrates a simple usage of distributed atomic long. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public final class IgniteAtomicLongExample { - /** Number of retries */ - private static final int RETRIES = 20; - - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Atomic long example started."); - - // Make name for atomic long (by which it will be known in the cluster). - String atomicName = UUID.randomUUID().toString(); - - // Initialize atomic long. - final IgniteAtomicLong atomicLong = ignite.atomicLong(atomicName, 0, true); - - System.out.println(); - System.out.println("Atomic long initial value : " + atomicLong.get() + '.'); - - // Try increment atomic long from all nodes. - // Note that this node is also part of the ignite cluster. - ignite.compute().broadcast(new IgniteCallable<Object>() { - @Override public Object call() { - for (int i = 0; i < RETRIES; i++) - System.out.println("AtomicLong value has been incremented: " + atomicLong.incrementAndGet()); - - return null; - } - }); - - System.out.println(); - System.out.println("Atomic long value after successful CAS: " + atomicLong.get()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicReferenceExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicReferenceExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicReferenceExample.java deleted file mode 100644 index 76c1d5e..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicReferenceExample.java +++ /dev/null @@ -1,110 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -import java.util.*; - -/** - * Demonstrates a simple usage of distributed atomic reference. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public final class IgniteAtomicReferenceExample { - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Atomic reference example started."); - - // Make name of atomic reference. - final String refName = UUID.randomUUID().toString(); - - // Make value of atomic reference. - String val = UUID.randomUUID().toString(); - - // Initialize atomic reference. - IgniteAtomicReference<String> ref = ignite.atomicReference(refName, val, true); - - System.out.println("Atomic reference initial value : " + ref.get() + '.'); - - // Make closure for checking atomic reference value on cluster. - IgniteRunnable c = new ReferenceClosure(refName); - - // Check atomic reference on all cluster nodes. - ignite.compute().run(c); - - // Make new value of atomic reference. - String newVal = UUID.randomUUID().toString(); - - System.out.println("Try to change value of atomic reference with wrong expected value."); - - ref.compareAndSet("WRONG EXPECTED VALUE", newVal); // Won't change. - - // Check atomic reference on all cluster nodes. - // Atomic reference value shouldn't be changed. - ignite.compute().run(c); - - System.out.println("Try to change value of atomic reference with correct expected value."); - - ref.compareAndSet(val, newVal); - - // Check atomic reference on all cluster nodes. - // Atomic reference value should be changed. - ignite.compute().run(c); - } - - System.out.println(); - System.out.println("Finished atomic reference example..."); - System.out.println("Check all nodes for output (this node is also part of the cluster)."); - } - - /** - * Obtains atomic reference. - */ - private static class ReferenceClosure implements IgniteRunnable { - /** Reference name. */ - private final String refName; - - /** - * @param refName Reference name. - */ - ReferenceClosure(String refName) { - this.refName = refName; - } - - /** {@inheritDoc} */ - @Override public void run() { - IgniteAtomicReference<String> ref = Ignition.ignite().atomicReference(refName, null, true); - - System.out.println("Atomic reference value is " + ref.get() + '.'); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicSequenceExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicSequenceExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicSequenceExample.java deleted file mode 100644 index 3052da5..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicSequenceExample.java +++ /dev/null @@ -1,91 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -/** - * Demonstrates a simple usage of distributed atomic sequence. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public final class IgniteAtomicSequenceExample { - /** Number of retries */ - private static final int RETRIES = 20; - - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Cache atomic sequence example started."); - - // Try increment atomic sequence on all cluster nodes. Note that this node is also part of the cluster. - ignite.compute().broadcast(new SequenceClosure("example-sequence")); - - System.out.println(); - System.out.println("Finished atomic sequence example..."); - System.out.println("Check all nodes for output (this node is also part of the cluster)."); - System.out.println(); - } - } - - /** - * Obtains atomic sequence. - */ - private static class SequenceClosure implements IgniteRunnable { - /** Sequence name. */ - private final String seqName; - - /** - * @param seqName Sequence name. - */ - SequenceClosure(String seqName) { - this.seqName = seqName; - } - - /** {@inheritDoc} */ - @Override public void run() { - // Create sequence. Only one concurrent call will succeed in creation. - // Rest of the callers will get already created instance. - IgniteAtomicSequence seq = Ignition.ignite().atomicSequence(seqName, 0, true); - - // First value of atomic sequence on this node. - long firstVal = seq.get(); - - System.out.println("Sequence initial value on local node: " + firstVal); - - for (int i = 0; i < RETRIES; i++) - System.out.println("Sequence [currentValue=" + seq.get() + ", afterIncrement=" + - seq.incrementAndGet() + ']'); - - System.out.println("Sequence after incrementing [expected=" + (firstVal + RETRIES) + ", actual=" + - seq.get() + ']'); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicStampedExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicStampedExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicStampedExample.java deleted file mode 100644 index 077ae89..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteAtomicStampedExample.java +++ /dev/null @@ -1,117 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -import java.util.*; - -/** - * Demonstrates a simple usage of distributed atomic stamped. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public final class IgniteAtomicStampedExample { - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Atomic stamped example started."); - - // Make name of atomic stamped. - String stampedName = UUID.randomUUID().toString(); - - // Make value of atomic stamped. - String val = UUID.randomUUID().toString(); - - // Make stamp of atomic stamped. - String stamp = UUID.randomUUID().toString(); - - // Initialize atomic stamped. - IgniteAtomicStamped<String, String> stamped = ignite.atomicStamped(stampedName, val, stamp, true); - - System.out.println("Atomic stamped initial [value=" + stamped.value() + ", stamp=" + stamped.stamp() + ']'); - - // Make closure for checking atomic stamped. - IgniteRunnable c = new StampedUpdateClosure(stampedName); - - // Check atomic stamped on all cluster nodes. - ignite.compute().broadcast(c); - - // Make new value of atomic stamped. - String newVal = UUID.randomUUID().toString(); - - // Make new stamp of atomic stamped. - String newStamp = UUID.randomUUID().toString(); - - System.out.println("Try to change value and stamp of atomic stamped with wrong expected value and stamp."); - - stamped.compareAndSet("WRONG EXPECTED VALUE", newVal, "WRONG EXPECTED STAMP", newStamp); - - // Check atomic stamped on all cluster nodes. - // Atomic stamped value and stamp shouldn't be changed. - ignite.compute().run(c); - - System.out.println("Try to change value and stamp of atomic stamped with correct value and stamp."); - - stamped.compareAndSet(val, newVal, stamp, newStamp); - - // Check atomic stamped on all cluster nodes. - // Atomic stamped value and stamp should be changed. - ignite.compute().run(c); - } - - System.out.println(); - System.out.println("Finished atomic stamped example..."); - System.out.println("Check all nodes for output (this node is also part of the cluster)."); - } - - /** - * Performs update of on an atomic stamped variable in cache. - */ - private static class StampedUpdateClosure implements IgniteRunnable { - /** Atomic stamped variable name. */ - private final String stampedName; - - /** - * @param stampedName Atomic stamped variable name. - */ - StampedUpdateClosure(String stampedName) { - this.stampedName = stampedName; - } - - /** {@inheritDoc} */ - @Override public void run() { - IgniteAtomicStamped<String, String> stamped = Ignition.ignite(). - atomicStamped(stampedName, null, null, true); - - System.out.println("Atomic stamped [value=" + stamped.value() + ", stamp=" + stamped.stamp() + ']'); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteCountDownLatchExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteCountDownLatchExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteCountDownLatchExample.java deleted file mode 100644 index 3882a43..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteCountDownLatchExample.java +++ /dev/null @@ -1,95 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -import java.util.*; - -/** - * Demonstrates a simple usage of distributed count down latch. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public class IgniteCountDownLatchExample { - /** Number of latch initial count */ - private static final int INITIAL_COUNT = 10; - - /** - * Executes example. - * - * @param args Command line arguments, none required. - */ - public static void main(String[] args) { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Cache atomic countdown latch example started."); - - // Make name of count down latch. - final String latchName = UUID.randomUUID().toString(); - - // Initialize count down latch. - IgniteCountDownLatch latch = ignite.countDownLatch(latchName, INITIAL_COUNT, false, true); - - System.out.println("Latch initial value: " + latch.count()); - - // Start waiting on the latch on all cluster nodes. - for (int i = 0; i < INITIAL_COUNT; i++) - ignite.compute().run(new LatchClosure(latchName)); - - // Wait for latch to go down which essentially means that all remote closures completed. - latch.await(); - - System.out.println("All latch closures have completed."); - } - - System.out.println(); - System.out.println("Finished count down latch example..."); - System.out.println("Check all nodes for output (this node is also part of the cluster)."); - } - - /** - * Closure which simply waits on the latch on all nodes. - */ - private static class LatchClosure implements IgniteRunnable { - /** Latch name. */ - private final String latchName; - - /** - * @param latchName Latch name. - */ - LatchClosure(String latchName) { - this.latchName = latchName; - } - - /** {@inheritDoc} */ - @Override public void run() { - IgniteCountDownLatch latch = Ignition.ignite().countDownLatch(latchName, 1, false, true); - - int newCnt = latch.countDown(); - - System.out.println("Counted down [newCnt=" + newCnt + ", nodeId=" + Ignition.ignite().cluster().localNode().id() + ']'); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java deleted file mode 100644 index a857bb0..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteQueueExample.java +++ /dev/null @@ -1,215 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.cache.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -import java.util.*; - -/** - * Ignite cache distributed queue example. This example demonstrates {@code FIFO} unbounded - * cache queue. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public class IgniteQueueExample { - /** Cache name. */ - private static final String CACHE_NAME = IgniteQueueExample.class.getSimpleName(); - - /** Number of retries */ - private static final int RETRIES = 20; - - /** Queue instance. */ - private static IgniteQueue<String> queue; - - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Ignite queue example started."); - - CacheConfiguration<Object, Object> cfg = new CacheConfiguration<>(); - - cfg.setCacheMode(CacheMode.PARTITIONED); - cfg.setName(CACHE_NAME); - cfg.setAtomicWriteOrderMode(CacheAtomicWriteOrderMode.PRIMARY); - - try (IgniteCache<Object, Object> cache = ignite.createCache(cfg)) { - // Make queue name. - String queueName = UUID.randomUUID().toString(); - - queue = initializeQueue(ignite, queueName); - - readFromQueue(ignite); - - writeToQueue(ignite); - - clearAndRemoveQueue(); - } - } - - System.out.println("Cache queue example finished."); - } - - /** - * Initialize queue. - * - * @param ignite Ignite. - * @param queueName Name of queue. - * @return Queue. - * @throws IgniteException If execution failed. - */ - private static IgniteQueue<String> initializeQueue(Ignite ignite, String queueName) throws IgniteException { - CollectionConfiguration colCfg = new CollectionConfiguration(); - - colCfg.setCacheName(CACHE_NAME); - - // Initialize new FIFO queue. - IgniteQueue<String> queue = ignite.queue(queueName, 0, colCfg); - - // Initialize queue items. - // We will be use blocking operation and queue size must be appropriated. - for (int i = 0; i < ignite.cluster().nodes().size() * RETRIES * 2; i++) - queue.put(Integer.toString(i)); - - System.out.println("Queue size after initializing: " + queue.size()); - - return queue; - } - - /** - * Read items from head and tail of queue. - * - * @param ignite Ignite. - * @throws IgniteException If failed. - */ - private static void readFromQueue(Ignite ignite) throws IgniteException { - final String queueName = queue.name(); - - // Read queue items on each node. - ignite.compute().broadcast(new QueueClosure(queueName, false)); - - System.out.println("Queue size after reading [expected=0, actual=" + queue.size() + ']'); - } - - /** - * Write items into queue. - * - * @param ignite Ignite. - * @throws IgniteException If failed. - */ - private static void writeToQueue(Ignite ignite) throws IgniteException { - final String queueName = queue.name(); - - // Write queue items on each node. - ignite.compute().broadcast(new QueueClosure(queueName, true)); - - System.out.println("Queue size after writing [expected=" + ignite.cluster().nodes().size() * RETRIES + - ", actual=" + queue.size() + ']'); - - System.out.println("Iterate over queue."); - - // Iterate over queue. - for (String item : queue) - System.out.println("Queue item: " + item); - } - - /** - * Clear and remove queue. - * - * @throws IgniteException If execution failed. - */ - private static void clearAndRemoveQueue() throws IgniteException { - System.out.println("Queue size before clearing: " + queue.size()); - - // Clear queue. - queue.clear(); - - System.out.println("Queue size after clearing: " + queue.size()); - - // Remove queue. - queue.close(); - - // Try to work with removed queue. - try { - queue.poll(); - } - catch (IllegalStateException expected) { - System.out.println("Expected exception - " + expected.getMessage()); - } - } - - /** - * Closure to populate or poll the queue. - */ - private static class QueueClosure implements IgniteRunnable { - /** Queue name. */ - private final String queueName; - - /** Flag indicating whether to put or poll. */ - private final boolean put; - - /** - * @param queueName Queue name. - * @param put Flag indicating whether to put or poll. - */ - QueueClosure(String queueName, boolean put) { - this.queueName = queueName; - this.put = put; - } - - /** {@inheritDoc} */ - @Override public void run() { - IgniteQueue<String> queue = Ignition.ignite().queue(queueName, 0, null); - - if (put) { - UUID locId = Ignition.ignite().cluster().localNode().id(); - - for (int i = 0; i < RETRIES; i++) { - String item = locId + "_" + Integer.toString(i); - - queue.put(item); - - System.out.println("Queue item has been added: " + item); - } - } - else { - // Take items from queue head. - for (int i = 0; i < RETRIES; i++) - System.out.println("Queue item has been read from queue head: " + queue.take()); - - // Take items from queue head once again. - for (int i = 0; i < RETRIES; i++) - System.out.println("Queue item has been read from queue head: " + queue.poll()); - } - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java deleted file mode 100644 index cfd7d45..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/IgniteSetExample.java +++ /dev/null @@ -1,197 +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.examples.datastructures; - -import org.apache.ignite.*; -import org.apache.ignite.cache.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; - -import java.util.*; - -/** - * Ignite cache distributed set example. - * <p> - * Remote nodes should always be started with special configuration file which - * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will - * start node with {@code examples/config/example-ignite.xml} configuration. - */ -public class IgniteSetExample { - /** Cache name. */ - private static final String CACHE_NAME = IgniteSetExample.class.getSimpleName(); - - /** Set instance. */ - private static IgniteSet<String> set; - - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Ignite set example started."); - - CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>(); - - cfg.setCacheMode(CacheMode.PARTITIONED); - cfg.setName(CACHE_NAME); - cfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); - - NearCacheConfiguration<Integer, String> nearCacheCfg = new NearCacheConfiguration<>(); - - try (IgniteCache<Integer, String> cache = ignite.createCache(cfg, nearCacheCfg)) { - // Make set name. - String setName = UUID.randomUUID().toString(); - - set = initializeSet(ignite, setName); - - writeToSet(ignite); - - clearAndRemoveSet(); - } - } - - System.out.println("Ignite set example finished."); - } - - /** - * Initialize set. - * - * @param ignite Ignite. - * @param setName Name of set. - * @return Set. - * @throws IgniteException If execution failed. - */ - private static IgniteSet<String> initializeSet(Ignite ignite, String setName) throws IgniteException { - CollectionConfiguration setCfg = new CollectionConfiguration(); - - setCfg.setCacheName(CACHE_NAME); - - // Initialize new set. - IgniteSet<String> set = ignite.set(setName, setCfg); - - // Initialize set items. - for (int i = 0; i < 10; i++) - set.add(Integer.toString(i)); - - System.out.println("Set size after initializing: " + set.size()); - - return set; - } - - /** - * Write items into set. - * - * @param ignite Ignite. - * @throws IgniteException If failed. - */ - private static void writeToSet(Ignite ignite) throws IgniteException { - final String setName = set.name(); - - // Write set items on each node. - ignite.compute().broadcast(new SetClosure(setName)); - - System.out.println("Set size after writing [expected=" + (10 + ignite.cluster().nodes().size() * 5) + - ", actual=" + set.size() + ']'); - - System.out.println("Iterate over set."); - - // Iterate over set. - for (String item : set) - System.out.println("Set item: " + item); - - // Set API usage examples. - if (!set.contains("0")) - throw new RuntimeException("Set should contain '0' among its elements."); - - if (set.add("0")) - throw new RuntimeException("Set should not allow duplicates."); - - if (!set.remove("0")) - throw new RuntimeException("Set should correctly remove elements."); - - if (set.contains("0")) - throw new RuntimeException("Set should not contain '0' among its elements."); - - if (!set.add("0")) - throw new RuntimeException("Set should correctly add new elements."); - } - - /** - * Clear and remove set. - * - * @throws IgniteException If execution failed. - */ - private static void clearAndRemoveSet() throws IgniteException { - System.out.println("Set size before clearing: " + set.size()); - - // Clear set. - set.clear(); - - System.out.println("Set size after clearing: " + set.size()); - - // Remove set. - set.close(); - - System.out.println("Set was removed: " + set.removed()); - - // Try to work with removed set. - try { - set.contains("1"); - } - catch (IllegalStateException expected) { - System.out.println("Expected exception - " + expected.getMessage()); - } - } - - /** - * Closure to populate the set. - */ - private static class SetClosure implements IgniteRunnable { - /** Set name. */ - private final String setName; - - /** - * @param setName Set name. - */ - SetClosure(String setName) { - this.setName = setName; - } - - /** {@inheritDoc} */ - @Override public void run() { - IgniteSet<String> set = Ignition.ignite().set(setName, null); - - UUID locId = Ignition.ignite().cluster().localNode().id(); - - for (int i = 0; i < 5; i++) { - String item = locId + "_" + Integer.toString(i); - - set.add(item); - - System.out.println("Set item has been added: " + item); - } - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/datastructures/package-info.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/datastructures/package-info.java b/examples/src/main/java/org/apache/ignite/examples/datastructures/package-info.java deleted file mode 100644 index 962ba44..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/datastructures/package-info.java +++ /dev/null @@ -1,22 +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 description. --> - * Demonstrates using of blocking and non-blocking queues and atomic data structures. - */ -package org.apache.ignite.examples.datastructures; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/events/EventsExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/events/EventsExample.java b/examples/src/main/java/org/apache/ignite/examples/events/EventsExample.java deleted file mode 100644 index dd23e14..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/events/EventsExample.java +++ /dev/null @@ -1,144 +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.examples.events; - -import org.apache.ignite.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.events.*; -import org.apache.ignite.examples.*; -import org.apache.ignite.lang.*; -import org.apache.ignite.resources.*; - -import java.util.*; - -import static org.apache.ignite.events.EventType.*; - -/** - * Demonstrates event consume API that allows to register event listeners on remote nodes. - * Note that ignite events are disabled by default and must be specifically enabled, - * just like in {@code examples/config/example-ignite.xml} file. - * <p> - * Remote nodes should always be started with configuration: {@code 'ignite.sh examples/config/example-ignite.xml'}. - * <p> - * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will start - * node with {@code examples/config/example-ignite.xml} configuration. - */ -public class EventsExample { - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { - System.out.println(); - System.out.println(">>> Events API example started."); - - // Listen to events happening on local node. - localListen(); - - // Listen to events happening on all cluster nodes. - remoteListen(); - - // Wait for a while while callback is notified about remaining puts. - Thread.sleep(1000); - } - } - - /** - * Listen to events that happen only on local node. - * - * @throws IgniteException If failed. - */ - private static void localListen() throws IgniteException { - System.out.println(); - System.out.println(">>> Local event listener example."); - - Ignite ignite = Ignition.ignite(); - - IgnitePredicate<TaskEvent> lsnr = new IgnitePredicate<TaskEvent>() { - @Override public boolean apply(TaskEvent evt) { - System.out.println("Received task event [evt=" + evt.name() + ", taskName=" + evt.taskName() + ']'); - - return true; // Return true to continue listening. - } - }; - - // Register event listener for all local task execution events. - ignite.events().localListen(lsnr, EVTS_TASK_EXECUTION); - - // Generate task events. - ignite.compute().withName("example-event-task").run(new IgniteRunnable() { - @Override public void run() { - System.out.println("Executing sample job."); - } - }); - - // Unsubscribe local task event listener. - ignite.events().stopLocalListen(lsnr); - } - - /** - * Listen to events coming from all cluster nodes. - * - * @throws IgniteException If failed. - */ - private static void remoteListen() throws IgniteException { - System.out.println(); - System.out.println(">>> Remote event listener example."); - - // This optional local callback is called for each event notification - // that passed remote predicate listener. - IgniteBiPredicate<UUID, TaskEvent> locLsnr = new IgniteBiPredicate<UUID, TaskEvent>() { - @Override public boolean apply(UUID nodeId, TaskEvent evt) { - // Remote filter only accepts tasks whose name being with "good-task" prefix. - assert evt.taskName().startsWith("good-task"); - - System.out.println("Received task event [evt=" + evt.name() + ", taskName=" + evt.taskName()); - - return true; // Return true to continue listening. - } - }; - - // Remote filter which only accepts tasks whose name begins with "good-task" prefix. - IgnitePredicate<TaskEvent> rmtLsnr = new IgnitePredicate<TaskEvent>() { - @Override public boolean apply(TaskEvent evt) { - return evt.taskName().startsWith("good-task"); - } - }; - - Ignite ignite = Ignition.ignite(); - - // Register event listeners on all nodes to listen for task events. - ignite.events().remoteListen(locLsnr, rmtLsnr, EVTS_TASK_EXECUTION); - - // Generate task events. - for (int i = 0; i < 10; i++) { - ignite.compute().withName(i < 5 ? "good-task-" + i : "bad-task-" + i).run(new IgniteRunnable() { - // Auto-inject task session. - @TaskSessionResource - private ComputeTaskSession ses; - - @Override public void run() { - System.out.println("Executing sample job for task: " + ses.getTaskName()); - } - }); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/events/package-info.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/events/package-info.java b/examples/src/main/java/org/apache/ignite/examples/events/package-info.java deleted file mode 100644 index 8b66103..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/events/package-info.java +++ /dev/null @@ -1,22 +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 description. --> - * Demonstrates events management API. - */ -package org.apache.ignite.examples.events; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsExample.java b/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsExample.java deleted file mode 100644 index 8bfd38d..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsExample.java +++ /dev/null @@ -1,278 +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.examples.igfs; - -import org.apache.ignite.*; -import org.apache.ignite.igfs.*; -import org.jetbrains.annotations.*; - -import java.io.*; -import java.util.*; - -/** - * Example that shows usage of {@link org.apache.ignite.IgniteFileSystem} API. It starts a node with {@code IgniteFs} - * configured and performs several file system operations (create, write, append, read and delete - * files, create, list and delete directories). - * <p> - * Remote nodes should always be started with configuration file which includes - * IGFS: {@code 'ignite.sh examples/config/filesystem/example-igfs.xml'}. - * <p> - * Alternatively you can run {@link IgfsNodeStartup} in another JVM which will start - * node with {@code examples/config/filesystem/example-igfs.xml} configuration. - */ -public final class IgfsExample { - /** - * Executes example. - * - * @param args Command line arguments, none required. - * @throws Exception If example execution failed. - */ - public static void main(String[] args) throws Exception { - Ignite ignite = Ignition.start("examples/config/filesystem/example-igfs.xml"); - - System.out.println(); - System.out.println(">>> IGFS example started."); - - try { - // Get an instance of Ignite File System. - IgniteFileSystem fs = ignite.fileSystem("igfs"); - - // Working directory path. - IgfsPath workDir = new IgfsPath("/examples/fs"); - - // Cleanup working directory. - delete(fs, workDir); - - // Create empty working directory. - mkdirs(fs, workDir); - - // Print information for working directory. - printInfo(fs, workDir); - - // File path. - IgfsPath filePath = new IgfsPath(workDir, "file.txt"); - - // Create file. - create(fs, filePath, new byte[] {1, 2, 3}); - - // Print information for file. - printInfo(fs, filePath); - - // Append more data to previously created file. - append(fs, filePath, new byte[] {4, 5}); - - // Print information for file. - printInfo(fs, filePath); - - // Read data from file. - read(fs, filePath); - - // Delete file. - delete(fs, filePath); - - // Print information for file. - printInfo(fs, filePath); - - // Create several files. - for (int i = 0; i < 5; i++) - create(fs, new IgfsPath(workDir, "file-" + i + ".txt"), null); - - list(fs, workDir); - } - finally { - Ignition.stop(false); - } - } - - /** - * Deletes file or directory. If directory - * is not empty, it's deleted recursively. - * - * @param fs IGFS. - * @param path File or directory path. - * @throws IgniteException In case of error. - */ - private static void delete(IgniteFileSystem fs, IgfsPath path) throws IgniteException { - assert fs != null; - assert path != null; - - if (fs.exists(path)) { - boolean isFile = fs.info(path).isFile(); - - try { - fs.delete(path, true); - - System.out.println(); - System.out.println(">>> Deleted " + (isFile ? "file" : "directory") + ": " + path); - } - catch (IgfsException e) { - System.out.println(); - System.out.println(">>> Failed to delete " + (isFile ? "file" : "directory") + " [path=" + path + - ", msg=" + e.getMessage() + ']'); - } - } - else { - System.out.println(); - System.out.println(">>> Won't delete file or directory (doesn't exist): " + path); - } - } - - /** - * Creates directories. - * - * @param fs IGFS. - * @param path Directory path. - * @throws IgniteException In case of error. - */ - private static void mkdirs(IgniteFileSystem fs, IgfsPath path) throws IgniteException { - assert fs != null; - assert path != null; - - try { - fs.mkdirs(path); - - System.out.println(); - System.out.println(">>> Created directory: " + path); - } - catch (IgfsException e) { - System.out.println(); - System.out.println(">>> Failed to create a directory [path=" + path + ", msg=" + e.getMessage() + ']'); - } - - System.out.println(); - } - - /** - * Creates file and writes provided data to it. - * - * @param fs IGFS. - * @param path File path. - * @param data Data. - * @throws IgniteException If file can't be created. - * @throws IOException If data can't be written. - */ - private static void create(IgniteFileSystem fs, IgfsPath path, @Nullable byte[] data) - throws IgniteException, IOException { - assert fs != null; - assert path != null; - - try (OutputStream out = fs.create(path, true)) { - System.out.println(); - System.out.println(">>> Created file: " + path); - - if (data != null) { - out.write(data); - - System.out.println(); - System.out.println(">>> Wrote data to file: " + path); - } - } - - System.out.println(); - } - - /** - * Opens file and appends provided data to it. - * - * @param fs IGFS. - * @param path File path. - * @param data Data. - * @throws IgniteException If file can't be created. - * @throws IOException If data can't be written. - */ - private static void append(IgniteFileSystem fs, IgfsPath path, byte[] data) throws IgniteException, IOException { - assert fs != null; - assert path != null; - assert data != null; - assert fs.info(path).isFile(); - - try (OutputStream out = fs.append(path, true)) { - System.out.println(); - System.out.println(">>> Opened file: " + path); - - out.write(data); - } - - System.out.println(); - System.out.println(">>> Appended data to file: " + path); - } - - /** - * Opens file and reads it to byte array. - * - * @param fs IgniteFs. - * @param path File path. - * @throws IgniteException If file can't be opened. - * @throws IOException If data can't be read. - */ - private static void read(IgniteFileSystem fs, IgfsPath path) throws IgniteException, IOException { - assert fs != null; - assert path != null; - assert fs.info(path).isFile(); - - byte[] data = new byte[(int)fs.info(path).length()]; - - try (IgfsInputStream in = fs.open(path)) { - in.read(data); - } - - System.out.println(); - System.out.println(">>> Read data from " + path + ": " + Arrays.toString(data)); - } - - /** - * Lists files in directory. - * - * @param fs IGFS. - * @param path Directory path. - * @throws IgniteException In case of error. - */ - private static void list(IgniteFileSystem fs, IgfsPath path) throws IgniteException { - assert fs != null; - assert path != null; - assert fs.info(path).isDirectory(); - - Collection<IgfsPath> files = fs.listPaths(path); - - if (files.isEmpty()) { - System.out.println(); - System.out.println(">>> No files in directory: " + path); - } - else { - System.out.println(); - System.out.println(">>> List of files in directory: " + path); - - for (IgfsPath f : files) - System.out.println(">>> " + f.name()); - } - - System.out.println(); - } - - /** - * Prints information for file or directory. - * - * @param fs IGFS. - * @param path File or directory path. - * @throws IgniteException In case of error. - */ - private static void printInfo(IgniteFileSystem fs, IgfsPath path) throws IgniteException { - System.out.println(); - System.out.println("Information for " + path + ": " + fs.info(path)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsMapReduceExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsMapReduceExample.java b/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsMapReduceExample.java deleted file mode 100644 index ed0abe4..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsMapReduceExample.java +++ /dev/null @@ -1,249 +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.examples.igfs; - -import org.apache.ignite.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.igfs.*; -import org.apache.ignite.igfs.mapreduce.*; -import org.apache.ignite.igfs.mapreduce.records.*; - -import java.io.*; -import java.util.*; - -/** - * Example that shows how to use {@link org.apache.ignite.igfs.mapreduce.IgfsTask} to find lines matching particular pattern in the file in pretty - * the same way as {@code grep} command does. - * <p> - * Remote nodes should always be started with configuration file which includes - * IGFS: {@code 'ignite.sh examples/config/filesystem/example-igfs.xml'}. - * <p> - * Alternatively you can run {@link IgfsNodeStartup} in another JVM which will start - * node with {@code examples/config/filesystem/example-igfs.xml} configuration. - */ -public class IgfsMapReduceExample { - /** - * Executes example. - * - * @param args Command line arguments. First argument is file name, second argument is regex to look for. - * @throws Exception If failed. - */ - public static void main(String[] args) throws Exception { - if (args.length == 0) - System.out.println("Please provide file name and regular expression."); - else if (args.length == 1) - System.out.println("Please provide regular expression."); - else { - try (Ignite ignite = Ignition.start("examples/config/filesystem/example-igfs.xml")) { - System.out.println(); - System.out.println(">>> IGFS map reduce example started."); - - // Prepare arguments. - String fileName = args[0]; - - File file = new File(fileName); - - String regexStr = args[1]; - - // Get an instance of Ignite File System. - IgniteFileSystem fs = ignite.fileSystem("igfs"); - - // Working directory path. - IgfsPath workDir = new IgfsPath("/examples/fs"); - - // Write file to IGFS. - IgfsPath fsPath = new IgfsPath(workDir, file.getName()); - - writeFile(fs, fsPath, file); - - Collection<Line> lines = fs.execute(new GrepTask(), IgfsNewLineRecordResolver.NEW_LINE, - Collections.singleton(fsPath), regexStr); - - if (lines.isEmpty()) { - System.out.println(); - System.out.println("No lines were found."); - } - else { - for (Line line : lines) - print(line.fileLine()); - } - } - } - } - - /** - * Write file to the Ignite file system. - * - * @param fs Ignite file system. - * @param fsPath Ignite file system path. - * @param file File to write. - * @throws Exception In case of exception. - */ - private static void writeFile(IgniteFileSystem fs, IgfsPath fsPath, File file) throws Exception { - System.out.println(); - System.out.println("Copying file to IGFS: " + file); - - try ( - IgfsOutputStream os = fs.create(fsPath, true); - FileInputStream fis = new FileInputStream(file) - ) { - byte[] buf = new byte[2048]; - - int read = fis.read(buf); - - while (read != -1) { - os.write(buf, 0, read); - - read = fis.read(buf); - } - } - } - - /** - * Print particular string. - * - * @param str String. - */ - private static void print(String str) { - System.out.println(">>> " + str); - } - - /** - * Grep task. - */ - private static class GrepTask extends IgfsTask<String, Collection<Line>> { - /** {@inheritDoc} */ - @Override public IgfsJob createJob(IgfsPath path, IgfsFileRange range, - IgfsTaskArgs<String> args) { - return new GrepJob(args.userArgument()); - } - - /** {@inheritDoc} */ - @Override public Collection<Line> reduce(List<ComputeJobResult> results) { - Collection<Line> lines = new TreeSet<>(new Comparator<Line>() { - @Override public int compare(Line line1, Line line2) { - return line1.rangePosition() < line2.rangePosition() ? -1 : - line1.rangePosition() > line2.rangePosition() ? 1 : line1.lineIndex() - line2.lineIndex(); - } - }); - - for (ComputeJobResult res : results) { - if (res.getException() != null) - throw res.getException(); - - Collection<Line> line = res.getData(); - - if (line != null) - lines.addAll(line); - } - - return lines; - } - } - - /** - * Grep job. - */ - private static class GrepJob extends IgfsInputStreamJobAdapter { - /** Regex string. */ - private final String regex; - - /** - * Constructor. - * - * @param regex Regex string. - */ - private GrepJob(String regex) { - this.regex = regex; - } - - /** {@inheritDoc} */ - @Override public Object execute(IgniteFileSystem igfs, IgfsRangeInputStream in) throws IgniteException, IOException { - Collection<Line> res = null; - - long start = in.startOffset(); - - try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) { - int ctr = 0; - - String line = br.readLine(); - - while (line != null) { - if (line.matches(".*" + regex + ".*")) { - if (res == null) - res = new HashSet<>(); - - res.add(new Line(start, ctr++, line)); - } - - line = br.readLine(); - } - } - - return res; - } - } - - /** - * Single file line with it's position. - */ - private static class Line { - /** Line start position in the file. */ - private long rangePos; - - /** Matching line index within the range. */ - private final int lineIdx; - - /** File line. */ - private String line; - - /** - * Constructor. - * - * @param rangePos Range position. - * @param lineIdx Matching line index within the range. - * @param line File line. - */ - private Line(long rangePos, int lineIdx, String line) { - this.rangePos = rangePos; - this.lineIdx = lineIdx; - this.line = line; - } - - /** - * @return Range position. - */ - public long rangePosition() { - return rangePos; - } - - /** - * @return Matching line index within the range. - */ - public int lineIndex() { - return lineIdx; - } - - /** - * @return File line. - */ - public String fileLine() { - return line; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsNodeStartup.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsNodeStartup.java b/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsNodeStartup.java deleted file mode 100644 index 20ddcbd..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/igfs/IgfsNodeStartup.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.examples.igfs; - -import org.apache.ignite.*; - -/** - * Starts up an empty node with IGFS configuration. - * You can also start a stand-alone Ignite instance by passing the path - * to configuration file to {@code 'ignite.{sh|bat}'} script, like so: - * {@code 'ignite.sh examples/config/filesystem/example-igfs.xml'}. - * <p> - * The difference is that running this class from IDE adds all example classes to classpath - * but running from command line doesn't. - */ -public class IgfsNodeStartup { - /** - * Start up an empty node with specified cache configuration. - * - * @param args Command line arguments, none required. - * @throws IgniteException If example execution failed. - */ - public static void main(String[] args) throws IgniteException { - Ignition.start("examples/config/filesystem/example-igfs.xml"); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/be0e755b/examples/src/main/java/org/apache/ignite/examples/igfs/package-info.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/ignite/examples/igfs/package-info.java b/examples/src/main/java/org/apache/ignite/examples/igfs/package-info.java deleted file mode 100644 index 0fbb5f7..0000000 --- a/examples/src/main/java/org/apache/ignite/examples/igfs/package-info.java +++ /dev/null @@ -1,22 +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 description. --> - * Demonstrates usage of Ignite File System. - */ -package org.apache.ignite.examples.igfs; \ No newline at end of file