public SystemStatus getSystemStatus() { return applicationStatusSource.getSystemStatus(); }
public void initialize() throws InitializationException { logInitialize(); artifactPackagingMapper.setPropertiesFile( new File( nexusConfiguration.getConfigurationDirectory(), MAPPING_PROPERTIES_FILE ) ); // load locally present plugins getLogger().info( "Activating locally installed plugins..." ); Collection<PluginManagerResponse> activationResponse = nexusPluginManager.activateInstalledPlugins(); for ( PluginManagerResponse response : activationResponse ) { if ( response.isSuccessful() ) { getLogger().info( response.formatAsString( getLogger().isDebugEnabled() ) ); } else { getLogger().warn( response.formatAsString( getLogger().isDebugEnabled() ) ); } } applicationStatusSource.setState( SystemState.STOPPED ); applicationStatusSource.getSystemStatus().setOperationMode( OperationMode.STANDALONE ); applicationStatusSource.getSystemStatus().setInitializedAt( new Date() ); eventBus.post( new NexusInitializedEvent( this ) ); }
public String getVersion() { final SystemStatus status = applicationStatusSource.getSystemStatus(); return status.getVersion(); }
@Inject public NexusContentServlet(final RepositoryRouter repositoryRouter, final Renderer renderer, final GlobalRestApiSettings globalRestApiSettings, final ApplicationStatusSource applicationStatusSource) { this.repositoryRouter = checkNotNull(repositoryRouter); this.renderer = checkNotNull(renderer); this.globalRestApiSettings = checkNotNull(globalRestApiSettings); this.serverString = "Nexus/" + checkNotNull(applicationStatusSource).getSystemStatus().getVersion(); logger.debug("bufferSize={}, dereferenceLinks={}", BUFFER_SIZE, DEREFERENCE_LINKS); }
@Override public String asDiagnosticsFormat() { StringBuilder sb = new StringBuilder(); sb.append( "Nexus Version: " ); sb.append( applicationStatus.getSystemStatus().getVersion() ); sb.append( LINE_SEPERATOR ); sb.append( "Nexus Edition: " ); sb.append( applicationStatus.getSystemStatus().getEditionLong() ); sb.append( LINE_SEPERATOR ); return sb.toString(); }
@Inject public VelocityRenderer(final Velocity velocity, final ApplicationStatusSource applicationStatusSource, final GlobalRestApiSettings globalRestApiSettings) { this.velocity = checkNotNull(velocity); this.applicationVersion = checkNotNull(applicationStatusSource).getSystemStatus().getVersion(); this.globalRestApiSettings = checkNotNull(globalRestApiSettings); }
protected synchronized String getUserAgentPlatformInfo() { // TODO: this is a workaround, see NXCM-363 SystemStatus status = applicationStatusSource.getSystemStatus(); if ( platformEditionShort == null || !platformEditionShort.equals( status.getEditionShort() ) || userAgentPlatformInfo == null ) { platformEditionShort = status.getEditionShort(); userAgentPlatformInfo = new StringBuilder( "Nexus/" ).append( status.getVersion() ).append( " (" ).append( status.getEditionShort() ).append( "; " ).append( System.getProperty( "os.name" ) ).append( "; " ).append( System.getProperty( "os.version" ) ).append( "; " ).append( System.getProperty( "os.arch" ) ).append( "; " ).append( System.getProperty( "java.version" ) ).append( ")" ).toString(); } return userAgentPlatformInfo; }
protected String getSenderId() { SystemStatus status = applicationStatusSource.getSystemStatus(); if ( platformEditionShort == null || !platformEditionShort.equals( status.getEditionShort() ) || userAgentPlatformInfo == null ) { // make it "remember" to be able to detect license changes later platformEditionShort = status.getEditionShort(); userAgentPlatformInfo = new StringBuilder( "Nexus/" ).append( status.getVersion() ).append( " (" ) .append( status.getEditionShort() ).append( "; " ).append( System.getProperty( "os.name" ) ) .append( "; " ).append( System.getProperty( "os.version" ) ).append( "; " ) .append( System.getProperty( "os.arch" ) ).append( "; " ) .append( System.getProperty( "java.version" ) ).append( ") " ).toString(); } return userAgentPlatformInfo; }
/** * Builds the "author" field from Nexus version. */ protected String getNexusAuthor() { return "Nexus " + getApplicationStatusSource().getSystemStatus().getVersion(); }
protected boolean isNexusStarted() { return getApplicationStatusSource().getSystemStatus().isNexusStarted(); } }
public Representation getRepresentation(final Status status, final Request request, final Response response) { final HashMap<String, Object> dataModel = new HashMap<String, Object>(); final SystemStatus systemStatus = applicationStatusSource.getSystemStatus(); dataModel.put("request", request); dataModel.put("nexusVersion", systemStatus.getVersion()); dataModel.put("nexusRoot", BaseUrlHolder.get()); dataModel.put("statusCode", status.getCode()); dataModel.put("statusName", status.getName()); dataModel.put("errorDescription", StringEscapeUtils.escapeHtml(status.getDescription())); if (null != status.getThrowable()) { dataModel.put("errorStackTrace", StringEscapeUtils.escapeHtml(ExceptionUtils.getStackTrace(status.getThrowable()))); } final VelocityRepresentation representation = new VelocityRepresentation(Context.getCurrent(), "/templates/errorPageContentHtml.vm", getClass().getClassLoader(), dataModel, MediaType.TEXT_HTML); return representation; } }
private byte[] renderTemplate(final String templateName) throws IOException { SystemStatus systemStatus = applicationStatusSource.getSystemStatus(); Map<String, Object> params = Maps.newHashMap(); params.put("serviceBase", "service/local"); params.put("contentBase", "content"); params.put("nexusVersion", systemStatus.getVersion()); params.put("nexusRoot", BaseUrlHolder.get()); params.put("appName", systemStatus.getAppName()); params.put("formattedAppName", systemStatus.getFormattedAppName()); boolean debugMode = isDebugMode(); params.put("debug", debugMode); List<UiContribution> contributions = Lists.newArrayList(); for (UiContributor contributor : uiContributors) { UiContribution contribution = contributor.contribute(debugMode); if (contribution.isEnabled()) { contributions.add(contribution); } } params.put("rJsContributions", contributions); params.put("buildQualifier", buildNumberService.getBuildNumber()); URL template = getClass().getResource(templateName); checkState(template != null, "Missing template: %s", templateName); log.debug("Rendering template: {}", template); String content = templateEngine.render(this, template, params); return content.getBytes(); }
protected Representation serialize(Context context, Request req, Variant variant, Object payload) throws IOException { // TEXT_HTML is requested by direct browsing (IE) // APPLICATION_XML is requested by direct browsing (FF) if (MediaType.TEXT_HTML.equals(variant.getMediaType())) { HashMap<String, Object> dataModel = new HashMap<String, Object>(); dataModel.put("listItems", sortContentListResource(((ContentListResourceResponse) payload).getData())); dataModel.put("request", req); dataModel.put("nexusVersion", applicationStatusSource.getSystemStatus().getVersion()); dataModel.put("nexusRoot", BaseUrlHolder.get()); final VelocityRepresentation representation = new VelocityRepresentation(context, "/templates/repositoryContentHtml.vm", getClass().getClassLoader(), dataModel, variant.getMediaType()); return representation; } return null; }
protected void inspect(Event<?> evt) { if (evt instanceof NexusStartedEvent) { getFeedRecorder().addSystemEvent( FeedRecorder.SYSTEM_BOOT_ACTION, "Started Nexus (version " + getApplicationStatusSource().getSystemStatus().getVersion() + " " + getApplicationStatusSource().getSystemStatus().getEditionShort() + ")"); } else if (evt instanceof NexusStoppedEvent) { getFeedRecorder().addSystemEvent( FeedRecorder.SYSTEM_BOOT_ACTION, "Stopping Nexus (version " + getApplicationStatusSource().getSystemStatus().getVersion() + " " + getApplicationStatusSource().getSystemStatus().getEditionShort() + ")"); getFeedRecorder().shutdown(); } }
@Subscribe @AllowConcurrentEvents public void inspect(final RepositoryRegistryEventAdd evt) { if (!applicationStatusSource.getSystemStatus().isNexusStarted()) { return; } final UpdateSiteProxyRepository updateSite = ((RepositoryRegistryEventAdd) evt).getRepository().adaptToFacet(UpdateSiteProxyRepository.class); if (updateSite != null) { updateSite.setExposed(false); final ScheduledTask<?> mirrorTask = UpdateSiteMirrorTask.submit(scheduler, updateSite, true); log.debug("Submitted " + mirrorTask.getName()); } } }
/** * If request comes from a web-browser render an error page, else perform default challenge. */ @Override protected boolean sendChallenge(final ServletRequest request, final ServletResponse response) { if (browserDetector.isBrowserInitiated(request)) { HttpServletRequest httpRequest = WebUtils.toHttp(request); HttpServletResponse httpResponse = WebUtils.toHttp(response); httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // omit WWW-Authenticate we do NOT want to have browser prompt Map<String,Object> params = ImmutableMap.of( "nexusVersion", applicationStatusSource.getSystemStatus().getVersion(), "nexusRoot", (Object)templateRenderer.getAppRootUrl(httpRequest) ); try { templateRenderer.render("/org/sonatype/nexus/web/internal/accessDeniedHtml.vm", params, httpResponse); } catch (IOException e) { throw Throwables.propagate(e); } return false; } else { return super.sendChallenge(request, response); } }
protected void upgradeNexusVersion() throws IOException { final String currentVersion = checkNotNull( applicationStatusSource.getSystemStatus().getVersion() ); final String previousVersion = getConfiguration().getNexusVersion(); if ( currentVersion.equals( previousVersion ) ) { setInstanceUpgraded( false ); } else { setInstanceUpgraded( true ); getConfiguration().setNexusVersion( currentVersion ); storeConfiguration(); } }
protected void startService() throws Exception applicationStatusSource.getSystemStatus().setState( SystemState.STARTING ); applicationStatusSource.getSystemStatus().setLastConfigChange( new Date() ); applicationStatusSource.getSystemStatus().setFirstStart( nexusConfiguration.isConfigurationDefaulted() ); applicationStatusSource.getSystemStatus().setInstanceUpgraded( nexusConfiguration.isInstanceUpgraded() ); applicationStatusSource.getSystemStatus().setConfigurationUpgraded( nexusConfiguration.isConfigurationUpgraded() ); if ( applicationStatusSource.getSystemStatus().isFirstStart() ) if ( applicationStatusSource.getSystemStatus().isInstanceUpgraded() ) applicationStatusSource.getSystemStatus().setState( SystemState.STARTED ); applicationStatusSource.getSystemStatus().setStartedAt( new Date() ); applicationStatusSource.getSystemStatus().setState( SystemState.BROKEN_IO ); applicationStatusSource.getSystemStatus().setErrorCause( e ); applicationStatusSource.getSystemStatus().setState( SystemState.BROKEN_CONFIGURATION ); applicationStatusSource.getSystemStatus().setErrorCause( e );
protected void inspect(Event<?> evt) { if (!applicationStatusSource.getSystemStatus().isNexusStarted()) { return; } Repository repository = null; if (evt instanceof RepositoryRegistryRepositoryEvent) { repository = ((RepositoryRegistryRepositoryEvent) evt).getRepository(); } else if (evt instanceof RepositoryConfigurationUpdatedEvent) { repository = ((RepositoryConfigurationUpdatedEvent) evt).getRepository(); } try { // check registry for existance, wont be able to do much // if doesn't exist yet repoRegistry.getRepositoryWithFacet(repository.getId(), MavenRepository.class); inspectForIndexerManager(evt, repository); } catch (NoSuchRepositoryException e) { log.debug("Attempted to handle repository that isn't yet in registry"); } }
protected void stopService() throws Exception { applicationStatusSource.getSystemStatus().setState( SystemState.STOPPING ); // Due to no dependency mechanism in NX for components, we need to fire off a hint about shutdown first eventBus.post( new NexusStoppingEvent( this ) ); nexusScheduler.shutdown(); eventBus.post( new NexusStoppedEvent( this ) ); nexusConfiguration.dropInternals(); securitySystem.stop(); applicationStatusSource.getSystemStatus().setState( SystemState.STOPPED ); // Now a cleanup, to kill dangling thread of HttpClients CustomMultiThreadedHttpConnectionManager.shutdownAll(); getLogger().info( "Stopped {}", getNexusNameForLogs()); }