This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push: new b6ae60bf3 CAY-2751 Simplify DataNode configuration - remove leftovers - add upgrade notes b6ae60bf3 is described below commit b6ae60bf37c64435244a11e9d6480e73aee0daed Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Thu Oct 6 11:40:04 2022 +0300 CAY-2751 Simplify DataNode configuration - remove leftovers - add upgrade notes --- UPGRADE.txt | 3 + .../cayenne/configuration/PasswordEncoding.java | 59 -------------- .../configuration/PlainTextPasswordEncoder.java | 38 --------- .../configuration/Rot13PasswordEncoder.java | 81 ------------------- .../configuration/Rot47PasswordEncoder.java | 90 ---------------------- .../configuration/Rot13PasswordEncoderTest.java | 43 ----------- .../configuration/Rot47PasswordEncoderTest.java | 43 ----------- 7 files changed, 3 insertions(+), 354 deletions(-) diff --git a/UPGRADE.txt b/UPGRADE.txt index 2d69d5fb6..b7bf1e789 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -25,6 +25,9 @@ Most notable removals are SelectQuery and these Cayenne modules: * Per CAY-2747 Cayenne XML schemas are updated, so you need to update you projects (just open them in the Modeler or use cayenne-project-compatibility module) +* Per CAY-2751 there's no more JNDI DataSource provided by Cayenne, nor there's a password encoding capabilities. +If you need these you should provide you own custom DataSource. + * Per CAY-2752 code generation configuration has minor changes. You need to review and update Maven, Gradle and Ant configs accordingly. diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/PasswordEncoding.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/PasswordEncoding.java deleted file mode 100644 index f1928a394..000000000 --- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/PasswordEncoding.java +++ /dev/null @@ -1,59 +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 - * - * https://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.cayenne.configuration; - -/** - * Password encoders are used to translate the text of the database password, on loading - * and on saving, from one form to another. It can facilitate the obscuring of the - * password text to make database connection information less obvious to someone who - * stumbles onto the password. Cayenne only includes facilities to obscure, not encrypt, - * the database password. The mechanism is user-extensible, though, so should stronger - * security features be required, they can be added and integrated into both the modeler - * and framework. - * - * @since 3.0 - */ -public interface PasswordEncoding { - - final String[] standardEncoders = new String[] { - PlainTextPasswordEncoder.class.getName(), - Rot13PasswordEncoder.class.getName(), Rot47PasswordEncoder.class.getName() - }; - - /** - * Decodes an encoded database password. - * - * @param encodedPassword - The encoded password to be decoded - * @param key - An optional data element which can be used to unlock the password. - * Some encoders may require the key. - * @return The decoded normal/plain password. - */ - String decodePassword(String encodedPassword, String key); - - /** - * Encodes a normal/plain database password. - * - * @param normalPassword - The normal/plain password to be encoded - * @param key - An optional data element which can be used to lock the password. Some - * encoders may require the key. - * @return The encoded password. - */ - String encodePassword(String normalPassword, String key); -} diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/PlainTextPasswordEncoder.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/PlainTextPasswordEncoder.java deleted file mode 100644 index 6309dcba5..000000000 --- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/PlainTextPasswordEncoder.java +++ /dev/null @@ -1,38 +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 - * - * https://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.cayenne.configuration; - -/** - * The plain text password encoder passes the text of the database password - * straight-through without any alteration. This is identical to the behavior of pre-3.0 - * versions of Cayenne, where the password was stored in the XML model in clear text. - * - * @since 3.0 - */ -public class PlainTextPasswordEncoder implements PasswordEncoding { - - public String decodePassword(String encodedPassword, String key) { - return encodedPassword; - } - - public String encodePassword(String normalPassword, String key) { - return normalPassword; - } -} diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/Rot13PasswordEncoder.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/Rot13PasswordEncoder.java deleted file mode 100644 index 261ac3a98..000000000 --- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/Rot13PasswordEncoder.java +++ /dev/null @@ -1,81 +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 - * - * https://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.cayenne.configuration; - -/** - * The ROT-13 password encoder passes the text of the database password through a simple - * Caesar cipher to obscure the password text. The ROT-13 cipher only processes letters -- - * numbers and symbols are left untouched. ROT-13 is also a symmetrical cipher and - * therefore provides no real encryption since applying the cipher to the encrypted text - * produces the original source text. See the Wikipedia entry on <a - * href="http://en.wikipedia.org/wiki/Rot-13">ROT13</a> for more information on this - * topic. - * - * @since 3.0 - */ -public class Rot13PasswordEncoder implements PasswordEncoding { - - public String decodePassword(String encodedPassword, String key) { - return rotate(encodedPassword); - } - - public String encodePassword(String normalPassword, String key) { - return rotate(normalPassword); - } - - /** - * Applies a ROT-13 Caesar cipher to the supplied value. Each letter in the supplied - * value is substituted with a new value rotated by 13 places in the alphabet. See <a - * href="http://en.wikipedia.org/wiki/ROT13">ROT13</a> for more information. - * <p> - * A Unix command to perform a ROT-13 cipher is: - * - * <pre> - * tr "[a-m][n-z][A-M][N-Z]" "[n-z][a-m][N-Z][A-M]" - * </pre> - * - * @param value The text to be rotated. - * @return The rotated text. - */ - public String rotate(String value) { - if (value == null) { - return null; - } - - int length = value.length(); - StringBuilder result = new StringBuilder(); - - for (int i = 0; i < length; i++) { - char c = value.charAt(i); - - // If c is a letter, rotate it by 13. Numbers/symbols are untouched. - if ((c >= 'a' && c <= 'm') || (c >= 'A' && c <= 'M')) { - c += 13; // The first half of the alphabet goes forward 13 letters - } else if ((c >= 'n' && c <= 'z') || (c >= 'N' && c <= 'Z')) { - c -= 13; // The last half of the alphabet goes backward 13 letters - } - - result.append(c); - } - - return result.toString(); - } - -} diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/Rot47PasswordEncoder.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/Rot47PasswordEncoder.java deleted file mode 100644 index 85185325b..000000000 --- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/Rot47PasswordEncoder.java +++ /dev/null @@ -1,90 +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 - * - * https://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.cayenne.configuration; - -/** - * The ROT-47 password encoder passes the text of the database password through a simple - * Caesar cipher to obscure the password text. The ROT-47 cipher is similar to the ROT-13 - * cipher, but processes numbers and symbols as well. See the Wikipedia entry on <a - * href="http://en.wikipedia.org/wiki/Rot-13">ROT13</a> for more information on this - * topic. - * - * @since 3.0 - */ -public class Rot47PasswordEncoder implements PasswordEncoding { - - public String decodePassword(String encodedPassword, String key) { - return rotate(encodedPassword); - } - - public String encodePassword(String normalPassword, String key) { - return rotate(normalPassword); - } - - /** - * Applies a ROT-47 Caesar cipher to the supplied value. Each letter in the supplied - * value is substituted with a new value rotated by 47 places. See <a - * href="http://en.wikipedia.org/wiki/ROT13">ROT13</a> for more information (there is - * a subsection for ROT-47). - * <p> - * A Unix command to perform a ROT-47 cipher is: - * - * <pre> - * tr '!-~' 'P-~!-O' - * </pre> - * - * @param value The text to be rotated. - * @return The rotated text. - */ - public String rotate(String value) { - if (value == null) { - return null; - } - - int length = value.length(); - StringBuilder result = new StringBuilder(); - - for (int i = 0; i < length; i++) { - char c = value.charAt(i); - - // Process letters, numbers, and symbols -- ignore spaces. - if (c != ' ') { - // Add 47 (it is ROT-47, after all). - c += 47; - - // If character is now above printable range, make it printable. - // Range of printable characters is ! (33) to ~ (126). A value - // of 127 (just above ~) would therefore get rotated down to a - // 33 (the !). The value 94 comes from 127 - 33 = 94, which is - // therefore the value that needs to be subtracted from the - // non-printable character to put it into the correct printable - // range. - if (c > '~') { - c -= 94; - } - } - - result.append(c); - } - - return result.toString(); - } - -} diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/Rot13PasswordEncoderTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/Rot13PasswordEncoderTest.java deleted file mode 100644 index ec0099da0..000000000 --- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/Rot13PasswordEncoderTest.java +++ /dev/null @@ -1,43 +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 - * - * https://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.cayenne.configuration; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class Rot13PasswordEncoderTest { - - private final String message = "The Quick Brown Fox Jumps Over The Lazy Dog"; - private final String encoded = "Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt"; - - @Test - public void testEncode() { - Rot13PasswordEncoder encoder = new Rot13PasswordEncoder(); - assertEquals(encoded, encoder.encodePassword(message, null)); - } - - @Test - public void testDecode() { - Rot13PasswordEncoder encoder = new Rot13PasswordEncoder(); - assertEquals(message, encoder.decodePassword(encoded, null)); - } - -} diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/Rot47PasswordEncoderTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/Rot47PasswordEncoderTest.java deleted file mode 100644 index cb5bfe2df..000000000 --- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/Rot47PasswordEncoderTest.java +++ /dev/null @@ -1,43 +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 - * - * https://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.cayenne.configuration; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class Rot47PasswordEncoderTest { - - private final String message = "The Quick Brown Fox Jumps Over The Lazy Dog"; - private final String encoded = "%96 \"F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8"; - - @Test - public void testEncode() { - Rot47PasswordEncoder encoder = new Rot47PasswordEncoder(); - assertEquals(encoded, encoder.encodePassword(message, null)); - } - - @Test - public void testDecode() { - Rot47PasswordEncoder encoder = new Rot47PasswordEncoder(); - assertEquals(message, encoder.decodePassword(encoded, null)); - } - -}