diff --git a/appserver/extras/embedded/common/bootstrap/pom.xml b/appserver/extras/embedded/common/bootstrap/pom.xml index 5e07ddd8b67..0dd36c73a49 100644 --- a/appserver/extras/embedded/common/bootstrap/pom.xml +++ b/appserver/extras/embedded/common/bootstrap/pom.xml @@ -77,11 +77,6 @@ osgi.core provided - - org.osgi - osgi.cmpn - provided - org.glassfish.main.core glassfish diff --git a/appserver/featuresets/debug/pom.xml b/appserver/featuresets/debug/pom.xml index c16799dd21f..03e577ac547 100644 --- a/appserver/featuresets/debug/pom.xml +++ b/appserver/featuresets/debug/pom.xml @@ -45,6 +45,10 @@ Debug + + org.osgi + osgi.core + org.osgi org.osgi.service.resolver @@ -53,16 +57,12 @@ org.apache.felix org.apache.felix.resolver - 2.0.4 org.apache.felix org.apache.felix.framework - 7.0.3 - - - + org.glassfish.main.featuresets glassfish diff --git a/appserver/osgi-platforms/felix-webconsole-extension/pom.xml b/appserver/osgi-platforms/felix-webconsole-extension/pom.xml index e9134f56ee0..a135cf2724c 100644 --- a/appserver/osgi-platforms/felix-webconsole-extension/pom.xml +++ b/appserver/osgi-platforms/felix-webconsole-extension/pom.xml @@ -55,18 +55,17 @@ - org.osgi - osgi.core + org.apache.felix + org.apache.felix.webconsole org.osgi - osgi.cmpn + osgi.enterprise - org.apache.felix - org.apache.felix.webconsole + org.osgi + osgi.core - org.glassfish.main.security security-services @@ -77,6 +76,5 @@ simple-glassfish-api ${project.version} - diff --git a/appserver/osgi-platforms/felix-webconsole-extension/src/main/java/org/glassfish/osgi/felixwebconsoleextension/FelixWebConsoleExtensionActivator.java b/appserver/osgi-platforms/felix-webconsole-extension/src/main/java/org/glassfish/osgi/felixwebconsoleextension/FelixWebConsoleExtensionActivator.java index be9da191b63..4307b1fdf77 100644 --- a/appserver/osgi-platforms/felix-webconsole-extension/src/main/java/org/glassfish/osgi/felixwebconsoleextension/FelixWebConsoleExtensionActivator.java +++ b/appserver/osgi-platforms/felix-webconsole-extension/src/main/java/org/glassfish/osgi/felixwebconsoleextension/FelixWebConsoleExtensionActivator.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2022 Contributors to the Eclipse Foundation * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the @@ -16,18 +17,21 @@ package org.glassfish.osgi.felixwebconsoleextension; -import org.apache.felix.webconsole.BrandingPlugin; -import org.apache.felix.webconsole.WebConsoleSecurityProvider; -import org.osgi.framework.*; -import org.osgi.service.cm.ConfigurationAdmin; -import org.osgi.util.tracker.ServiceTracker; - import java.io.IOException; import java.util.Dictionary; import java.util.Hashtable; import java.util.logging.Level; import java.util.logging.Logger; +import org.apache.felix.webconsole.BrandingPlugin; +import org.apache.felix.webconsole.WebConsoleSecurityProvider; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; +import org.osgi.framework.ServiceReference; +import org.osgi.service.cm.ConfigurationAdmin; +import org.osgi.util.tracker.ServiceTracker; + /** * * This activator servers following purposes: @@ -41,7 +45,7 @@ */ public class FelixWebConsoleExtensionActivator implements BundleActivator { - private Logger logger = Logger.getLogger(getClass().getPackage().getName()); + private final Logger logger = Logger.getLogger(getClass().getPackage().getName()); private BundleContext context; private static final String WEBCONSOLE_PID = "org.apache.felix.webconsole.internal.servlet.OsgiManager"; private static final String PROP_HTTP_SERVICE_SELECTOR = "http.service.filter"; diff --git a/docs/pom.xml b/docs/pom.xml index dc50857df0a..92ec0a65387 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -22,7 +22,7 @@ org.eclipse.ee4j project - 1.0.6 + 1.0.7 7.0.0-SNAPSHOT diff --git a/nucleus/common/common-util/pom.xml b/nucleus/common/common-util/pom.xml index 7e9bcd08796..8152ae8fbac 100755 --- a/nucleus/common/common-util/pom.xml +++ b/nucleus/common/common-util/pom.xml @@ -63,13 +63,11 @@ logging-annotation-processor true - org.osgi osgi.core provided - org.osgi osgi.enterprise diff --git a/nucleus/core/bootstrap/pom.xml b/nucleus/core/bootstrap/pom.xml index 670fde66546..139847aa72c 100755 --- a/nucleus/core/bootstrap/pom.xml +++ b/nucleus/core/bootstrap/pom.xml @@ -63,11 +63,6 @@ osgi.core provided - - org.osgi - osgi.cmpn - provided - org.apache.felix @@ -109,25 +109,6 @@ - - - org.apache.felix - org.apache.felix.scr - - - * - * - - - - - org.osgi - org.osgi.util.promise - - - org.osgi - org.osgi.util.function - org.glassfish.main.osgi-platforms osgi-cli-remote diff --git a/nucleus/hk2/hk2-config/pom.xml b/nucleus/hk2/hk2-config/pom.xml index 25062c649ab..c9ff36894bf 100644 --- a/nucleus/hk2/hk2-config/pom.xml +++ b/nucleus/hk2/hk2-config/pom.xml @@ -118,7 +118,7 @@ jakarta.validation.*;resolution:=optional;version="${jakarta.validation-api.version}", - org.hibernate.validator.*;resolution:=optional;version="[7.0.0,8.0.0)", + org.hibernate.validator.*;resolution:=optional;version="[8.0.0,9.0.0)", org.jvnet.tiger_types;version=${project.version}, * diff --git a/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml b/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml index 92468bc6505..90972cc3127 100644 --- a/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml +++ b/nucleus/osgi-platforms/osgi-cli-interactive/pom.xml @@ -49,7 +49,7 @@ ${project.version} - jline + org.jline jline provided true @@ -71,7 +71,7 @@ ${project.build.outputDirectory} - jline + org.jline jline true diff --git a/nucleus/osgi-platforms/osgi-cli-interactive/src/main/java/org/glassfish/osgi/cli/interactive/LocalOSGiShellCommand.java b/nucleus/osgi-platforms/osgi-cli-interactive/src/main/java/org/glassfish/osgi/cli/interactive/LocalOSGiShellCommand.java index d799c030f21..2830c9874ff 100644 --- a/nucleus/osgi-platforms/osgi-cli-interactive/src/main/java/org/glassfish/osgi/cli/interactive/LocalOSGiShellCommand.java +++ b/nucleus/osgi-platforms/osgi-cli-interactive/src/main/java/org/glassfish/osgi/cli/interactive/LocalOSGiShellCommand.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2022 Contributors to the Eclipse Foundation * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the @@ -25,6 +26,9 @@ import com.sun.enterprise.admin.cli.remote.RemoteCLICommand; import com.sun.enterprise.admin.util.CommandModelData; import com.sun.enterprise.universal.i18n.LocalStringsImpl; + +import jakarta.inject.Inject; + import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; @@ -35,11 +39,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import jakarta.inject.Inject; -import jline.console.ConsoleReader; -import jline.console.completer.Completer; -import jline.console.completer.NullCompleter; -import jline.console.completer.StringsCompleter; + import org.glassfish.api.I18n; import org.glassfish.api.Param; import org.glassfish.api.admin.CommandException; @@ -52,6 +52,13 @@ import org.glassfish.hk2.api.PerLookup; import org.glassfish.hk2.api.ServiceLocator; import org.glassfish.hk2.utilities.BuilderHelper; +import org.jline.reader.Completer; +import org.jline.reader.LineReader; +import org.jline.reader.LineReaderBuilder; +import org.jline.reader.impl.completer.NullCompleter; +import org.jline.reader.impl.completer.StringsCompleter; +import org.jline.terminal.Terminal; +import org.jline.terminal.TerminalBuilder; import org.jvnet.hk2.annotations.Service; /** @@ -75,6 +82,7 @@ public class LocalOSGiShellCommand extends CLICommand { protected static final String SESSION_OPTION_EXECUTE = "execute"; protected static final String SESSION_OPTION_START = "new"; protected static final String SESSION_OPTION_STOP = "stop"; + private static final LocalStringsImpl STRINGS = new LocalStringsImpl(MultimodeCommand.class); @Inject private ServiceLocator locator; @@ -88,33 +96,33 @@ public class LocalOSGiShellCommand extends CLICommand { @Param(name = "printprompt", optional = true) private Boolean printPromptOpt; - private boolean printPrompt; - @Param(optional = true) private String encoding; - private boolean echo; // saved echo flag - private RemoteCLICommand cmd; // the remote sub-command + private boolean echo; + private RemoteCLICommand cmd; private String shellType; - // re-using existing strings... - private static final LocalStringsImpl strings = - new LocalStringsImpl(MultimodeCommand.class); protected String[] enhanceForTarget(String[] args) { - if(instance != null) { - String[] targetArgs = new String[args.length + 2]; - targetArgs[1] = "--instance"; - targetArgs[2] = instance; - System.arraycopy(args, 0, targetArgs, 0, 1); - System.arraycopy(args, 1, targetArgs, 3, args.length - 1); - args = targetArgs; + if (instance == null) { + return null; } - return args; + String[] targetArgs = new String[args.length + 2]; + targetArgs[1] = "--instance"; + targetArgs[2] = instance; + System.arraycopy(args, 0, targetArgs, 0, 1); + System.arraycopy(args, 1, targetArgs, 3, args.length - 1); + return targetArgs; } protected String[] prepareArguments(String sessionId, String[] args) { - if(sessionId != null) { + if (sessionId == null) { + String[] osgiArgs = new String[args.length + 1]; + osgiArgs[0] = REMOTE_COMMAND; + System.arraycopy(args, 0, osgiArgs, 1, args.length); + args = osgiArgs; + } else { // attach command to remote session... String[] sessionArgs = new String[args.length + 5]; sessionArgs[0] = REMOTE_COMMAND; @@ -124,37 +132,24 @@ protected String[] prepareArguments(String sessionId, String[] args) { sessionArgs[4] = sessionId; System.arraycopy(args, 0, sessionArgs, 5, args.length); args = sessionArgs; - } else { - String[] osgiArgs = new String[args.length + 1]; - osgiArgs[0] = REMOTE_COMMAND; - System.arraycopy(args, 0, osgiArgs, 1, args.length); - args = osgiArgs; } return args; } protected String startSession() throws CommandException { - String sessionId = null; - if("gogo".equals(shellType)) { - // start a remote session... - String[] args = {REMOTE_COMMAND, SESSION_OPTION, - SESSION_OPTION_START}; - args = enhanceForTarget(args); - sessionId = cmd.executeAndReturnOutput(args).trim(); + if (!"gogo".equals(shellType)) { + return null; } - return sessionId; + String[] args = {REMOTE_COMMAND, SESSION_OPTION, SESSION_OPTION_START}; + return cmd.executeAndReturnOutput(enhanceForTarget(args)).trim(); } protected int stopSession(String sessionId) throws CommandException { - int rc = 0; - if(sessionId != null) { - // stop the remote session... - String[] args = {REMOTE_COMMAND, SESSION_OPTION, - SESSION_OPTION_STOP, SESSIONID_OPTION, sessionId}; - args = enhanceForTarget(args); - rc = cmd.execute(args); + if (sessionId == null) { + return 0; } - return rc; + String[] args = {REMOTE_COMMAND, SESSION_OPTION, SESSION_OPTION_STOP, SESSIONID_OPTION, sessionId}; + return cmd.execute(enhanceForTarget(args)); } /** @@ -164,18 +159,10 @@ protected int stopSession(String sessionId) throws CommandException { * the environment. */ @Override - protected void validate() - throws CommandException, CommandValidationException { - if (printPromptOpt != null) { - printPrompt = printPromptOpt.booleanValue(); - } else { - printPrompt = programOpts.isInteractive(); - } - /* - * Save value of --echo because CLICommand will reset it - * before calling our executeCommand method but we want it - * to also apply to all commands in multimode. - */ + protected void validate() throws CommandException, CommandValidationException { + // Save value of --echo because CLICommand will reset it + // before calling our executeCommand method but we want it + // to also apply to all commands in multimode. echo = programOpts.isEcho(); } @@ -186,7 +173,7 @@ protected void validate() @Override protected Collection usageOptions() { Collection opts = commandModel.getParameters(); - Set uopts = new LinkedHashSet(); + Set uopts = new LinkedHashSet<>(); ParamModel p = new CommandModelData.ParamModelData("printprompt", boolean.class, true, Boolean.toString(programOpts.isInteractive())); @@ -201,76 +188,59 @@ protected Collection usageOptions() { } @Override - protected int executeCommand() - throws CommandException, CommandValidationException { - ConsoleReader reader = null; - - if(cmd == null) { + protected int executeCommand() throws CommandException, CommandValidationException { + if (cmd == null) { throw new CommandException("Remote command 'osgi' is not available."); } - programOpts.setEcho(echo); // restore echo flag, saved in validate - try { if (encoding != null) { // see Configuration.getEncoding()... System.setProperty("input.encoding", encoding); } - - String[] args = new String[] {REMOTE_COMMAND, - "asadmin-osgi-shell"}; - args = enhanceForTarget(args); + final String[] args = enhanceForTarget(new String[] {REMOTE_COMMAND, "asadmin-osgi-shell"}); shellType = cmd.executeAndReturnOutput(args).trim(); + try (Terminal terminal = createTerminal()) { + LineReader reader = LineReaderBuilder.builder().completer(getCommandCompleter()).appName(REMOTE_COMMAND).terminal(terminal).build(); + return executeCommands(reader); + } catch (IOException e) { + throw new CommandException(e); + } + } - if (file == null) { - System.out.println(strings.get("multimodeIntro")); - reader = new ConsoleReader(REMOTE_COMMAND, - new FileInputStream(FileDescriptor.in), System.out, - null); - } else { - printPrompt = false; - if (!file.canRead()) { - throw new CommandException("File: " + file - + " can not be read"); - } - - OutputStream out = new OutputStream() { - - @Override - public void write(int b) throws IOException { - return; - } - @Override - public void write(byte[] b) throws IOException { - return; - } + private Terminal createTerminal() throws IOException, CommandException { + if (file == null) { + System.out.println(STRINGS.get("multimodeIntro")); + return TerminalBuilder.builder().streams(new FileInputStream(FileDescriptor.in), System.out).build(); + } + if (!file.canRead()) { + throw new CommandException("File: " + file + " can not be read"); + } - @Override - public void write(byte[] b, int off, int len) throws IOException { - return; - } - }; + OutputStream out = new OutputStream() { - reader = new ConsoleReader(REMOTE_COMMAND, - new FileInputStream(file), out, - null); + @Override + public void write(int b) throws IOException { + return; } - reader.setBellEnabled(false); - reader.addCompleter(getCommandCompleter()); + @Override + public void write(byte[] b) throws IOException { + return; + } - return executeCommands(reader); - } catch (IOException e) { - throw new CommandException(e); - } + @Override + public void write(byte[] b, int off, int len) throws IOException { + return; + } + }; + return TerminalBuilder.builder().streams(new FileInputStream(file), out).build(); } + /** * Get the command completion. * - * TODO: make this non-static! - * TODO: ask remote for dynamically added commands - * * @return The command completer */ private Completer getCommandCompleter() { @@ -352,8 +322,7 @@ private Completer getCommandCompleter() { * * @return the exit code of the last command executed */ - private int executeCommands(ConsoleReader reader) - throws CommandException, CommandValidationException, IOException { + private int executeCommands(LineReader reader) throws CommandException, CommandValidationException { String line = null; int rc = 0; @@ -368,14 +337,14 @@ private int executeCommands(ConsoleReader reader) try { for (;;) { - if (printPrompt) { + if (isPromptPrinted()) { line = reader.readLine(shellType + "$ "); } else { line = reader.readLine(); } if (line == null) { - if (printPrompt) { + if (isPromptPrinted()) { System.out.println(); } break; @@ -457,6 +426,10 @@ private int executeCommands(ConsoleReader reader) return rc; } + private boolean isPromptPrinted() { + return file == null; + } + private static void atomicReplace(ServiceLocator locator, ProgramOptions options) { DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class); DynamicConfiguration config = dcs.createDynamicConfiguration(); @@ -469,9 +442,9 @@ private static void atomicReplace(ServiceLocator locator, ProgramOptions options config.commit(); } - private String[] getArgs(String line) - throws ArgumentTokenizer.ArgumentException { - List args = new ArrayList(); + + private String[] getArgs(String line) throws ArgumentTokenizer.ArgumentException { + List args = new ArrayList<>(); ArgumentTokenizer t = new ArgumentTokenizer(line); while (t.hasMoreTokens()) { args.add(t.nextToken()); diff --git a/nucleus/parent/pom.xml b/nucleus/parent/pom.xml index 1842b217bb3..ff708aeee63 100644 --- a/nucleus/parent/pom.xml +++ b/nucleus/parent/pom.xml @@ -24,7 +24,7 @@ org.eclipse.ee4j project - 1.0.6 + 1.0.7 @@ -81,7 +81,7 @@ 3.0.1 - 7.0.3-SNAPSHOT + 8.0.0-SNAPSHOT 3.1.0 - 3.1.0-M4 + 3.1.0-M5 2.1.0 @@ -333,6 +333,12 @@ org.glassfish.corba glassfish-corba-orb ${glassfish-corba.version} + + + org.osgi + org.osgi.core + + org.glassfish.corba @@ -429,26 +435,23 @@ ${ha-api.version} - - - - + org.osgi - osgi.cmpn - 7.0.0 + osgi.promise + 8.0.0 provided org.osgi osgi.annotation - 7.0.0 + 8.1.0 provided org.osgi osgi.core - 7.0.0 + 8.0.0 provided @@ -457,6 +460,17 @@ 7.0.0 provided + + org.osgi + org.osgi.util.promise + 1.2.0 + + + org.osgi + org.osgi.util.function + 1.2.0 + + org.apache.felix org.apache.felix.main @@ -467,16 +481,6 @@ org.apache.felix.webconsole 4.7.2 - - org.osgi - org.osgi.util.promise - 1.1.1 - - - org.osgi - org.osgi.util.function - 1.1.0 - org.apache.felix org.apache.felix.eventadmin @@ -512,29 +516,38 @@ org.apache.felix.configadmin 1.9.22 - org.apache.felix - org.apache.felix.scr - 2.2.0 + org.apache.felix.bundlerepository + 2.0.10 org.apache.felix - org.apache.felix.bundlerepository - 2.0.10 + org.apache.felix.resolver + 2.0.4 + provided + + + org.osgi + org.osgi.core + + + + org.apache.felix + org.apache.felix.framework + 7.0.3 + provided + + - jline + org.jline jline - 2.14.5 + 3.21.0 - - - org.jboss.logging jboss-logging diff --git a/snapshots/hibernate-validator/pom.xml b/snapshots/hibernate-validator/pom.xml index c756519fab1..84bd6bfb873 100644 --- a/snapshots/hibernate-validator/pom.xml +++ b/snapshots/hibernate-validator/pom.xml @@ -31,8 +31,8 @@ pom - https://github.com/omnifaces/hibernate-validator/archive/refs/heads/main.zip - ${project.build.directory}/hibernate-validator-main + https://github.com/dmatej/hibernate-validator/archive/refs/heads/glassfish.zip + ${project.build.directory}/hibernate-validator-glassfish diff --git a/snapshots/pom.xml b/snapshots/pom.xml index 4782a95e57d..393a6b8ce16 100644 --- a/snapshots/pom.xml +++ b/snapshots/pom.xml @@ -27,7 +27,7 @@ org.eclipse.ee4j project - 1.0.6 + 1.0.7