merge 1.10

This commit is contained in:
2025-05-23 17:11:52 +03:00
18 changed files with 285 additions and 29 deletions

3
.gitignore vendored
View File

@ -6,4 +6,5 @@ gen
.idea/workspace.xml
.idea/misc.xml
ncore-properties-local.xml
*.iml
*.iml
/out

54
.idea/codeStyles/Project.xml generated Normal file
View File

@ -0,0 +1,54 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="FORMATTER_TAGS_ENABLED" value="true" />
<JavaCodeStyleSettings>
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="biz.redsoft" withSubpackages="true" static="false" />
<package name="biz.red_soft" withSubpackages="true" static="false" />
<emptyLine />
<package name="java" withSubpackages="true" static="false" />
<emptyLine />
<package name="javax" withSubpackages="true" static="false" />
<emptyLine />
<package name="org" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="true" />
</value>
</option>
</JavaCodeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="ASSERT_STATEMENT_WRAP" value="1" />
<option name="VARIABLE_ANNOTATION_WRAP" value="2" />
<option name="ENUM_CONSTANTS_WRAP" value="2" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>

6
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@ -0,0 +1,6 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Red" />
</state>
</component>

48
.idea/compiler.xml generated
View File

@ -11,8 +11,56 @@
<entry name="!?*.kt" />
<entry name="!?*.clj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile name="Gradle Imported" enabled="true">
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/biz.redsoft.ncore/ncoreAnnotationProcessor/1.0.10/52f347369a8b6f7467f9be747d42f1386c632c2c/ncoreAnnotationProcessor-1.0.10.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service/1.0.1/c9779f7372192a96c957a3df1faeeabd07881085/auto-service-1.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.13.4/jackson-databind-2.13.4.jar" />
<entry name="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.13.4/jackson-core-2.13.4.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service-annotations/1.0.1/ac86dacc0eb9285ea9d42eee6aad8629ca3a7432/auto-service-annotations-1.0.1.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto/auto-common/1.2/ca270191fd7d2a7297da7c8f29184206df10c67d/auto-common-1.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" />
<entry name="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.13.4/jackson-annotations-2.13.4.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" />
</processorPath>
<module name="biz.redsoft.sample.sample.main" />
</profile>
<profile name="Gradle Imported" enabled="true">
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/biz.redsoft.ncore/ncoreAnnotationProcessor/1.0.10/52f347369a8b6f7467f9be747d42f1386c632c2c/ncoreAnnotationProcessor-1.0.10.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service/1.0.1/c9779f7372192a96c957a3df1faeeabd07881085/auto-service-1.0.1.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.13.4/cf934c681294b97ef6d80082faeefbe1edadf56/jackson-core-2.13.4.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.13.4/858c6cc78e1f08a885b1613e1d817c829df70a6e/jackson-annotations-2.13.4.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.13.4/98b0edfa8e4084078f10b7b356c300ded4a71491/jackson-databind-2.13.4.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service-annotations/1.0.1/ac86dacc0eb9285ea9d42eee6aad8629ca3a7432/auto-service-annotations-1.0.1.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto/auto-common/1.2/ca270191fd7d2a7297da7c8f29184206df10c67d/auto-common-1.2.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/31.0.1-jre/119ea2b2bc205b138974d351777b20f02b92704b/guava-31.0.1-jre.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/failureaccess/1.0.1/1dcf1de382a0bf95a3d8b0849546c88bac1292c9/failureaccess-1.0.1.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/b421526c5f297295adef1c886e5246c39d4ac629/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/3.12.0/d5692f0526415fcc6de94bb5bfbd3afd9dd3b3e5/checker-qual-3.12.0.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.7.1/458d9042f7aa6fa9a634df902b37f544e15aacac/error_prone_annotations-2.7.1.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.3/ba035118bc8bac37d7eff77700720999acd9986d/j2objc-annotations-1.3.jar" />
</processorPath>
<module name="ncore-sample.sample.main" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="biz.redsoft.sample-sample" target="1.8" />
<module name="biz.redsoft.sample.sample" target="1.8" />
<module name="biz.redsoft.sample.sample.main" target="1.8" />
<module name="biz.redsoft.sample.sample.test" target="1.8" />
<module name="ncore-sample.sample.main" target="1.8" />
<module name="sample" target="1.8" />
<module name="sample.test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

View File

@ -21,5 +21,20 @@
<option name="name" value="maven" />
<option name="url" value="http://nexus.red-soft.biz/repository/public" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://nexus.red-soft.ru/repository/public" />
</remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://ncore-repo.red-soft.ru/repository/public" />
</remote-repository>
<remote-repository>
<option name="id" value="MavenLocal" />
<option name="name" value="MavenLocal" />
<option name="url" value="file:$MAVEN_REPOSITORY$/" />
</remote-repository>
</component>
</project>

7
.idea/modules.xml generated
View File

@ -3,7 +3,12 @@
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample-sample.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample-sample.iml" group="sample" />
<module fileurl="file://$PROJECT_DIR$/sample.iml" filepath="$PROJECT_DIR$/sample.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.main.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.main.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.test.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.test.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/2142120877/ncore-sample.sample.main.iml" filepath="$PROJECT_DIR$/.idea/modules/2142120877/ncore-sample.sample.main.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/2142120877/sample.iml" filepath="$PROJECT_DIR$/.idea/modules/2142120877/sample.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/2142120877/sample.test.iml" filepath="$PROJECT_DIR$/.idea/modules/2142120877/sample.test.iml" />
</modules>
</component>
</project>

View File

@ -3,7 +3,7 @@
<option name="ALTERNATIVE_JRE_PATH" value="1.8 (2)" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="MAIN_CLASS_NAME" value="biz.redsoft.ncore.client.MainForm" />
<module name="biz.redsoft.sample-sample" />
<module name="sample.main" />
<option name="PROGRAM_PARAMETERS" value="-config ncore-properties.xml -config ncore-properties-local.xml" />
<option name="VM_PARAMETERS" value="-Dlog.console.encoding=UTF-8" />
<method v="2">

View File

@ -5,7 +5,7 @@
Для данного проекта можно использовать базу ядра.
Таски запускаются с помощью gradle wrapper. Версия Gradle - 4.10.3.
Таски запускаются с помощью gradle wrapper. Версия Gradle - 7.5.1.
Nix
```bash

View File

@ -5,11 +5,9 @@ plugins {
id 'application'
id 'java-library'
id 'war'
id 'gradle-ncore' version("$pluginVersion")
id 'gradle-ncore' version('3.0.59')
}
apply from: "dependencies.gradle"
targetCompatibility = 1.8
ncore {
@ -17,6 +15,7 @@ ncore {
sourceEncoding = 'UTF-8'
}
repositories {
maven {
url 'https://ncore-repo.red-soft.ru/repository/ncore'
@ -39,6 +38,8 @@ dependencies {
}
group = 'biz.redsoft.sample'
// writing build process to a log file
// --------------------- BUILD LOG SETTINGS ----------------------
def tstamp = new Date().format('yyyy-MM-dd_HH-mm-ss')
@ -129,8 +130,10 @@ startScripts {
}
distTar {
duplicatesStrategy = DuplicatesStrategy.WARN
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
distZip {
duplicatesStrategy = DuplicatesStrategy.WARN
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
ncoreRestoreDB.writeToWebProps = false
ncoreRestoreDB.generateUniqueDBPath = false

Binary file not shown.

View File

@ -1,12 +1,9 @@
repositories {
mavenLocal()
maven {
url 'https://ncore-repo.red-soft.ru/repository/public'
if (project.credentials.user != null && project.credentials.password != null) {
credentials {
username project.credentials.user
password project.credentials.password
}
}
}
}
dependencies {
implementation("biz.redsoft.ncore:ncore:1.10.275.0")
updates("biz.redsoft.ncore:ncore:1.10.275.0:updates")
codemaker("biz.redsoft.ncore:ncore:1.10.275.0")
implementation("biz.redsoft.ncore:ncore-util:1.10.275.0")
implementation("biz.redsoft.ncore:ncore-cryptoapisec:1.10.275.0")
implementation("biz.redsoft.ncore:ncore-jna:1.10.275.0")
codemaker("biz.redsoft.ncore:ncore-gen:1.10.275.0")
}

View File

@ -1,2 +1,4 @@
biz.redsoft.ncore.version=1.9.19.251
pluginVersion=3.0.82
biz.redsoft.ncore.version=1.10.275.0
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.daemon=false
org.gradle.configureondemand=true

View File

@ -2,8 +2,10 @@
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="ncore.developer.mode">true</entry>
<!-- <entry key="ncore.db.url">jdbc:firebirdsql:localhost:ncore-sample-dev?lc_ctype=WIN1251</entry> -->
<!-- <entry key="ncore.db.url">jdbc:firebirdsql:localhost:ncore-sample-dev?lc_ctype=WIN1251</entry> -->
<!-- Для автоматизированного рестора базы данных запустить gradlew nRDB-->
<!-- На линуксе файл должен быть доступен группе firbird/reddatabase!!! -->
<entry key="ncore.db.backup.path">db/ncore.zip</entry>
<entry key="ncore.db.restore.path">~/sample-db/ncore-sample.fdb</entry>
<!-- На линуксе файл должен быть доступен группе firbird/reddatabase!!! -->
<entry key="ncore.db.restore.path">/db/ncore-sample.fdb</entry>
</properties>

View File

@ -1,5 +1,6 @@
pluginManagement{
repositories {
mavenLocal()
maven { url 'https://ncore-repo.red-soft.ru/repository/public' }
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 953 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

View File

@ -22,11 +22,12 @@
</context-param>
<servlet>
<servlet-name>ncore</servlet-name>
<servlet-class>biz.redsoft.ncore.server.NcoreApplicationServlet</servlet-class>
<!-- <servlet-class>biz.redsoft.ncore_vaadin.server.NcoreApplicationServlet</servlet-class> -->
<!-- <servlet-class>biz.redsoft.ncore_vaadinflow.server.NcoreApplicationServlet</servlet-class> -->
<init-param>
<description>Vaadin application class to start</description>
<param-name>UI</param-name>
<param-value>biz.redsoft.ncore.client.vaadin.WebApplication</param-value>
<param-value>biz.redsoft.ncore_vaadin.client.vaadin.WebApplication</param-value>
</init-param>
<init-param>
<description>Application widgetset</description>
@ -50,6 +51,7 @@
<listener-class>biz.redsoft.ncore.dx.init.DxInitializationListener</listener-class>
</listener>
<listener>
<listener-class>biz.redsoft.ncore.client.vaadin.VaadinSessionListener</listener-class>
<!-- <listener-class>biz.redsoft.ncore_vaadin.client.vaadin.VaadinSessionListener</listener-class> -->
<!-- <listener-class>biz.redsoft.ncore_vaadinflow.client.vaadin.VaadinSessionListener</listener-class> -->
</listener>
</web-app>

View File

@ -0,0 +1,120 @@
/*
* Copyright (C) 2017 Red Soft Corporation.
*
* This file is part of Red nCore.
*
* Red nCore is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* Red nCore is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Red nCore; see the file COPYING. If not, write to the
* Red Soft Corporation, 117105, Russia, Moscow, Nagornyy proyezd, 5.
*
* Linking this library statically or dynamically with other modules is
* making a combined work based on this library. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* As a special exception, the copyright holders of this library give you
* permission to link this library with independent modules to produce an
* executable, regardless of the license terms of these independent
* modules, and to copy and distribute the resulting executable under
* terms of your choice, provided that you also meet, for each linked
* independent module, the terms and conditions of the license of that
* module. An independent module is a module which is not derived from
* or based on this library. If you modify this library, you may extend
* this exception to your version of the library, but you are not
* obligated to do so. If you do not wish to do so, delete this
* exception statement from your version.
*/
package biz.redsoft.sample;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import javax.servlet.ServletException;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Server;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.FileResourceSet;
import org.apache.catalina.webresources.StandardRoot;
import org.apache.tomcat.util.scan.StandardJarScanner;
public class TomcatStarter {
private String contextPath = "/ncore";
private int port = 8080;
private int shutdownPort = 8020;
private String shutdownCommand = "SHUTDOWN";
public void start() throws ServletException, LifecycleException {
System.setProperty("catalina.home", new File(".").getAbsolutePath());
final Tomcat tomcat = new Tomcat();
tomcat.setPort(port);
tomcat.setBaseDir(".");
tomcat.getHost().setAppBase(".");
tomcat.getConnector(); // initialize standard HTTP 1.1 connector
tomcat.enableNaming();
final Server server = tomcat.getServer();
server.setPort(shutdownPort);
server.setShutdown(shutdownCommand);
final StandardContext webContext = (StandardContext) tomcat.addWebapp(contextPath, "src/main/webapp");
webContext.setUseNaming(true);
final WebResourceRoot resources = new StandardRoot(webContext);
//aliases to resources
final String base = ap("");
resources.addPreResources(new DirResourceSet(resources, "/META-INF/resources", ap("src/main/resources"), "/META-INF/resources"));
//resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes/export_templates", base, "/export_templates"));
if (new File(base, "ncore-properties-local.xml").exists())
resources.addPreResources(new FileResourceSet(resources, "/WEB-INF/ncore-properties-local.xml", base, "/ncore-properties-local.xml"));
//resources.addPreResources(new FileResourceSet(resources, "/WEB-INF/ncore-properties-local-openid.xml", base, "/ncore-properties-local-openid.xml"));
resources.addPreResources(new FileResourceSet(resources, "/WEB-INF/logback.xml", base, "/logback.xml"));
webContext.setResources(resources);
// IDEA не всегда корректно формирует пути. Отключим проверку ресурсов.
((StandardJarScanner)webContext.getJarScanner()).setScanClassPath(false);
webContext.setWorkDir("build/tomcat/work");
tomcat.start();
server.await();
tomcat.stop();
}
private String ap(String s) {
return new File(s).getAbsolutePath();
}
public void stop() throws IOException {
final InetAddress serverAddress = InetAddress.getByName("localhost");
final Socket socket = new Socket(serverAddress, shutdownPort);
try (OutputStream os = socket.getOutputStream()) {
final byte[] buffer = shutdownCommand.getBytes();
os.write(buffer, 0, buffer.length);
os.flush();
}
}
public static void main(String[] args) throws ServletException, LifecycleException, IOException {
if (args.length > 0) {
String command = args[0];
if ("start".equals(command))
new TomcatStarter().start();
else if ("stop".equals(command))
new TomcatStarter().stop();
}
}
}