usedBy
+
+ int usedByCount
}
diff --git a/plugins/nexus-coreui-plugin/src/main/java/org/sonatype/nexus/coreui/internal/log/LogResource.java b/plugins/nexus-coreui-plugin/src/main/java/org/sonatype/nexus/coreui/internal/log/LogResource.java
index c2f8c17505..0a35b97c7b 100644
--- a/plugins/nexus-coreui-plugin/src/main/java/org/sonatype/nexus/coreui/internal/log/LogResource.java
+++ b/plugins/nexus-coreui-plugin/src/main/java/org/sonatype/nexus/coreui/internal/log/LogResource.java
@@ -32,7 +32,9 @@
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.net.HttpHeaders.CONTENT_DISPOSITION;
+import static java.lang.String.format;
import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
+import static org.sonatype.nexus.common.log.LogManager.DEFAULT_LOGGER;
/**
* Log REST resource.
@@ -79,12 +81,14 @@ public Response get(@QueryParam("fromByte") final Long fromByte,
if (count == null) {
count = Long.MAX_VALUE;
}
- InputStream log = logManager.getLogFileStream("nexus.log", from, count);
+ String logName = logManager.getLogFor(DEFAULT_LOGGER)
+ .orElseThrow(() -> new NotFoundException("Failed to determine log file name for " + DEFAULT_LOGGER));
+ InputStream log = logManager.getLogFileStream(logName, from, count);
if (log == null) {
throw new NotFoundException("nexus.log not found");
}
return Response.ok(log)
- .header(CONTENT_DISPOSITION, "attachment; filename=\"nexus.log\"")
+ .header(CONTENT_DISPOSITION, format("attachment; filename=\"%s\"", logName))
.build();
}
}
\ No newline at end of file
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/app/PluginStrings.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/app/PluginStrings.js
index 8411c5b43f..87110ea27e 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/app/PluginStrings.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/app/PluginStrings.js
@@ -508,6 +508,7 @@ Ext.define('NX.coreui.app.PluginStrings', {
Selector_SelectorList_EmptyText: 'No selectors defined',
Selector_SelectorList_Filter_EmptyText: 'No selectors matched "$filter"',
Selector_SelectorFeature_Delete_Button: 'Delete selector',
+ Selector_SelectorFeature_Delete_Disabled_Message: 'This selector cannot be deleted because it is in use by {0}',
Selectors_Delete_Message: 'Selector deleted: {0}',
Selector_SelectorFeature_Settings_Title: 'Settings',
Selector_SelectorSettingsForm_Name_FieldLabel: 'Name',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/SearchApt.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/SearchApt.js
index 9260e4c8d0..92170ea6e2 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/SearchApt.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/SearchApt.js
@@ -15,7 +15,7 @@
/**
* Apt repository search contribution.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.controller.SearchApt', {
extend: 'NX.app.Controller',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/Selectors.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/Selectors.js
index 789d29dc70..feda25040e 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/Selectors.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/controller/Selectors.js
@@ -157,6 +157,69 @@ Ext.define('NX.coreui.controller.Selectors', {
}
},
+ /**
+ * @protected
+ * Enable 'Delete' when user has 'delete' permission for selected content selector.
+ */
+ bindDeleteButton: function(button) {
+ var me = this;
+
+ button.mon(
+ NX.Conditions.and(
+ NX.Conditions.isPermitted(this.permission + ':delete'),
+ NX.Conditions.watchEvents([
+ { observable: me.getStore('Selector'), events: ['load']},
+ { observable: Ext.History, events: ['change']}
+ ], me.watchEventsHandler())
+ ),
+ {
+ satisfied: function () {
+ button.enable();
+ },
+ unsatisfied: function () {
+ button.disable();
+ }
+ }
+ );
+ },
+
+ /**
+ * @private
+ */
+ watchEventsHandler: function() {
+ var me = this,
+ store = me.getStore('Selector');
+
+ return function() {
+ var entityId = me.getModelIdFromBookmark(),
+ model = entityId ? store.findRecord('id', entityId, 0, false, true, true) : undefined,
+ usedBy = model && model.get('usedBy'),
+ usedByCount = model && model.get('usedByCount'),
+ message;
+
+ me.clearInfo();
+
+ if (usedByCount) {
+ message = NX.I18n.format('Selector_SelectorFeature_Delete_Disabled_Message',
+ Ext.util.Format.plural(usedByCount, 'privilege'));
+ if (Array.isArray(usedBy) && usedBy.length) {
+ message = message + ': ' + usedBy.map(me.getLinkToPrivilege).join(', ');
+ }
+ me.showInfo(message);
+ return false;
+ }
+
+ return !!model;
+ };
+ },
+
+ /**
+ * @private
+ */
+ getLinkToPrivilege: function (privilege) {
+ return '' + privilege + '';
+ },
+
recordLoaded: function(formPanel, record) {
var me = this;
@@ -197,6 +260,9 @@ Ext.define('NX.coreui.controller.Selectors', {
text: NX.I18n.format('Selectors_Delete_Message', description), type: 'success'
});
}
+ else if (Ext.isObject(response) && Ext.isDefined(response.errors)) {
+ NX.Messages.error(response.errors['*']);
+ }
});
},
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/BlobstoreType.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/BlobstoreType.js
index cdee45ecff..fb0e4a99a5 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/BlobstoreType.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/BlobstoreType.js
@@ -23,6 +23,7 @@ Ext.define('NX.coreui.model.BlobstoreType', {
{name: 'id', type: 'string', sortType: 'asUCText'},
{name: 'name', type: 'string', sortType: 'asUCText'},
{name: 'formFields', type: 'auto' /*object*/},
+ {name: 'customFormName', type: 'string', sortType: 'asUCText'},
{name: 'isModifiable', type: 'boolean'},
{name: 'isEnabled', type: 'boolean'}
]
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/RoutingRulePreview.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/RoutingRulePreview.js
index ddc9194d3a..efa9a6c70b 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/RoutingRulePreview.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/RoutingRulePreview.js
@@ -15,7 +15,7 @@
/**
* Routing Rule Preview tree model.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.model.RoutingRulePreview', {
extend: 'Ext.data.TreeModel',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/Selector.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/Selector.js
index 7b68fbbbaa..9e829defc6 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/Selector.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/model/Selector.js
@@ -27,6 +27,8 @@ Ext.define('NX.coreui.model.Selector', {
{name: 'name', type: 'string', sortType: 'asUCText'},
{name: 'type', type: 'string', sortType: 'asUCText', defaultValue: 'csel'},
{name: 'description', type: 'string', sortType: 'asUCText', convert: Ext.htmlEncode},
- {name: 'expression', type: 'string', sortType: 'asUCText'}
+ {name: 'expression', type: 'string', sortType: 'asUCText'},
+ {name: 'usedBy', type: 'auto' /* array */},
+ {name: 'usedByCount', type: 'int' }
]
});
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/store/RoutingRulePreview.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/store/RoutingRulePreview.js
index 3a1212c18d..7242d50a92 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/store/RoutingRulePreview.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/store/RoutingRulePreview.js
@@ -15,7 +15,7 @@
/**
* Routing Rule Preview grid store.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.store.RoutingRulePreview', {
extend: 'Ext.data.TreeStore',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/blobstore/BlobstoreSettingsForm.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/blobstore/BlobstoreSettingsForm.js
index 27d0289aba..61c90c19a8 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/blobstore/BlobstoreSettingsForm.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/blobstore/BlobstoreSettingsForm.js
@@ -66,6 +66,15 @@ Ext.define('NX.coreui.view.blobstore.BlobstoreSettingsForm', {
}
var blobstoreTypeModel = NX.getApplication().getStore('BlobstoreType').getById(value);
settingsFieldSet.importProperties(null, blobstoreTypeModel.get('formFields'), me.editableCondition);
+
+ me.remove('blobstore-custom-form');
+ var customFormName = blobstoreTypeModel.get('customFormName');
+ if (customFormName) {
+ me.add({
+ id: 'blobstore-custom-form',
+ xtype: customFormName
+ });
+ }
}
},
{
@@ -128,6 +137,10 @@ Ext.define('NX.coreui.view.blobstore.BlobstoreSettingsForm', {
var type = values['type'].toLowerCase();
values.attributes = {};
values.attributes[type] = me.down('nx-coreui-formfield-settingsfieldset').exportProperties(values);
+ var customForm = me.down('#blobstore-custom-form');
+ if (customForm) {
+ Ext.Object.merge(values.attributes[type], customForm.exportProperties(values));
+ }
return values;
},
setValues: function(values) {
@@ -205,7 +218,7 @@ Ext.define('NX.coreui.view.blobstore.BlobstoreSettingsForm', {
if (me.items != null) {
//then grab all of the dynamically generated fields and make them non-editable
var itemsToDisable = me.getChildItemsToDisable().filter(function(item) {
- return item.ownerCt.xtype === 'nx-coreui-formfield-settingsfieldset';
+ return item.ownerCt.xtype === 'nx-coreui-formfield-settingsfieldset' || item.ownerCt.id === 'blobstore-custom-form';
});
me.setItemsEditable(false, itemsToDisable);
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptFacet.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptFacet.js
index 285d947a19..4bd749178a 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptFacet.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptFacet.js
@@ -13,7 +13,7 @@
/**
* Configuration specific to apt repositories.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.view.repository.facet.AptFacet', {
extend: 'Ext.form.FieldContainer',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptHostedFacet.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptHostedFacet.js
index 6f8f2dc303..4ecba86281 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptHostedFacet.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptHostedFacet.js
@@ -13,7 +13,7 @@
/**
* Configuration specific to apt repositories.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.view.repository.facet.AptHostedFacet', {
extend: 'Ext.form.FieldContainer',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptSigningFacet.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptSigningFacet.js
index c0469d1692..d9774351e3 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptSigningFacet.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/facet/AptSigningFacet.js
@@ -13,7 +13,7 @@
/**
* Configuration specific to apt repositories.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.view.repository.facet.AptSigningFacet', {
extend: 'Ext.form.FieldContainer',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptHosted.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptHosted.js
index f20d7688df..bd506f78fb 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptHosted.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptHosted.js
@@ -13,7 +13,7 @@
/**
* Repository settings form for an apt repository
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.view.repository.recipe.AptHosted', {
extend: 'NX.coreui.view.repository.RepositorySettingsForm',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptProxy.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptProxy.js
index de8f91b2bd..bae5a256ec 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptProxy.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/AptProxy.js
@@ -13,7 +13,7 @@
/**
* Repository settings form for an apt repository
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.view.repository.recipe.AptProxy', {
extend: 'NX.coreui.view.repository.RepositorySettingsForm',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangGroup.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangGroup.js
index cff0e225a1..a33292f6e7 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangGroup.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangGroup.js
@@ -15,7 +15,7 @@
/**
* Repository "Settings" form for a Go Group repository.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.golang.view.repository.recipe.GolangGroup', {
extend: 'NX.coreui.view.repository.RepositorySettingsForm',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangHosted.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangHosted.js
index a5c17354b5..60f0285277 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangHosted.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangHosted.js
@@ -15,7 +15,7 @@
/**
* Repository "Settings" form for a Go Hosted repository.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.golang.view.repository.recipe.GolangHosted', {
extend: 'NX.coreui.view.repository.RepositorySettingsForm',
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangProxy.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangProxy.js
index 31ea2cd238..e93c5c8a1d 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangProxy.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/repository/recipe/GolangProxy.js
@@ -15,13 +15,14 @@
/**
* Repository "Settings" form for a Go Proxy repository
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.golang.view.repository.recipe.GolangProxy', {
extend: 'NX.coreui.view.repository.RepositorySettingsForm',
alias: 'widget.nx-coreui-repository-go-proxy',
requires: [
'NX.coreui.view.repository.facet.ProxyFacet',
+ 'NX.coreui.view.repository.facet.RoutingRuleFacet',
'NX.coreui.view.repository.facet.StorageFacet',
'NX.coreui.view.repository.facet.HttpClientFacet',
'NX.coreui.view.repository.facet.NegativeCacheFacet',
@@ -36,6 +37,7 @@ Ext.define('NX.golang.view.repository.recipe.GolangProxy', {
me.items = [
{xtype: 'nx-coreui-repository-proxy-facet'},
+ {xtype: 'nx-coreui-repository-routing-rule-facet'},
{xtype: 'nx-coreui-repository-storage-facet'},
{xtype: 'nx-coreui-repository-negativecache-facet'},
{xtype: 'nx-coreui-repository-cleanup-policy-facet'},
diff --git a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/routing/RoutingRulesPreview.js b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/routing/RoutingRulesPreview.js
index 947f1ff888..d232583aa8 100644
--- a/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/routing/RoutingRulesPreview.js
+++ b/plugins/nexus-coreui-plugin/src/main/resources/static/rapture/NX/coreui/view/routing/RoutingRulesPreview.js
@@ -15,7 +15,7 @@
/**
* Global Routing Rule Preview window.
*
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.coreui.view.routing.RoutingRulesPreview', {
extend: 'Ext.panel.Panel',
diff --git a/plugins/nexus-coreui-plugin/src/test/java/org/sonatype/nexus/coreui/SelectorComponentTest.java b/plugins/nexus-coreui-plugin/src/test/java/org/sonatype/nexus/coreui/SelectorComponentTest.java
index 52dd4e294c..5934849185 100644
--- a/plugins/nexus-coreui-plugin/src/test/java/org/sonatype/nexus/coreui/SelectorComponentTest.java
+++ b/plugins/nexus-coreui-plugin/src/test/java/org/sonatype/nexus/coreui/SelectorComponentTest.java
@@ -18,19 +18,25 @@
import javax.validation.Path;
import org.sonatype.goodies.testsupport.inject.InjectedTestSupport;
+import org.sonatype.nexus.security.SecuritySystem;
import org.sonatype.nexus.selector.CselSelector;
+import org.sonatype.nexus.selector.SelectorConfiguration;
import org.sonatype.nexus.selector.SelectorManager;
import org.sonatype.nexus.validation.ConstraintViolationFactory;
import com.google.inject.Binder;
import org.eclipse.sisu.space.BeanScanning;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -40,17 +46,24 @@
public class SelectorComponentTest
extends InjectedTestSupport
{
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
@Inject
private SelectorComponent component;
private Path path = mock(Path.class);
+ private SelectorManager mockSelectorManager = mock(SelectorManager.class);
+
@Override
public void configure(final Binder binder) {
ConstraintViolationFactory constraintViolationFactory = mock(ConstraintViolationFactory.class);
ConstraintViolation constraintViolation = mock(ConstraintViolation.class);
+ SecuritySystem securitySystem = mock(SecuritySystem.class);
binder.bind(ConstraintViolationFactory.class).toInstance(constraintViolationFactory);
- binder.bind(SelectorManager.class).toInstance(mock(SelectorManager.class));
+ binder.bind(SelectorManager.class).toInstance(mockSelectorManager);
+ binder.bind(SecuritySystem.class).toInstance(securitySystem);
when(constraintViolationFactory.createViolation(eq("expression"), anyString())).thenReturn(constraintViolation);
when(constraintViolation.getPropertyPath()).thenReturn(path);
}
@@ -123,4 +136,15 @@ public void testUpdateCsel_invalidExpression() {
assertThat(e.getConstraintViolations().iterator().next().getPropertyPath(), is(path));
}
}
+
+ @Test
+ public void testDelete_blobStoreInUse() {
+ when(mockSelectorManager.read(any())).thenReturn(mock(SelectorConfiguration.class));
+ doThrow(new IllegalStateException("a message")).when(mockSelectorManager).delete(any());
+
+ expectedException.expect(ConstraintViolationException.class);
+ expectedException.expectMessage("a message");
+
+ component.remove("someSelector");
+ }
}
diff --git a/plugins/nexus-onboarding-plugin/pom.xml b/plugins/nexus-onboarding-plugin/pom.xml
index 9b455c159f..29cec35fff 100644
--- a/plugins/nexus-onboarding-plugin/pom.xml
+++ b/plugins/nexus-onboarding-plugin/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-onboarding-plugin
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingConfiguration.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingConfiguration.java
index 33ad55c9d3..8c57ed8233 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingConfiguration.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingConfiguration.java
@@ -17,7 +17,7 @@
import javax.inject.Singleton;
/**
- * @since 3.next
+ * @since 3.17
*/
@Singleton
public class OnboardingConfiguration
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingItem.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingItem.java
index 5665db5072..7f0590e024 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingItem.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingItem.java
@@ -16,7 +16,7 @@
* An item that needs to be configured in the onboarding process in the UI, before other actions can be taken.
*
* @see OnboardingManager
- * @since 3.next
+ * @since 3.17
*/
public interface OnboardingItem
{
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingManager.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingManager.java
index 174c7a5405..ffb430ed0c 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingManager.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/OnboardingManager.java
@@ -17,7 +17,7 @@
/**
* Manage the onboarding process, will maintain a list of {@link OnboardingItem}s that need to be acted upon
*
- * @since 3.next
+ * @since 3.17
*/
public interface OnboardingManager
{
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ChangeAdminPasswordOnboardingItem.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ChangeAdminPasswordOnboardingItem.java
index 0acc215cf2..dd428a951e 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ChangeAdminPasswordOnboardingItem.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ChangeAdminPasswordOnboardingItem.java
@@ -28,7 +28,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ConfigureAnonymousAccessItem.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ConfigureAnonymousAccessItem.java
index 4950fee1e5..2595700a95 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ConfigureAnonymousAccessItem.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/ConfigureAnonymousAccessItem.java
@@ -23,7 +23,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingManagerImpl.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingManagerImpl.java
index 82ec958b87..ac3583a2e4 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingManagerImpl.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingManagerImpl.java
@@ -30,7 +30,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingResource.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingResource.java
index 4bf58f6fc0..f08e66a126 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingResource.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingResource.java
@@ -41,7 +41,7 @@
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
/**
- * @since 3.next
+ * @since 3.17
*/
@Singleton
@Named
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingStateContributor.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingStateContributor.java
index b3ffd76772..2c4b93b557 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingStateContributor.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/OnboardingStateContributor.java
@@ -28,7 +28,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
/**
- * @since 3.next
+ * @since 3.17
*/
@Singleton
@Named
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/SecurityDatabaseUpgrade_1_2.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/SecurityDatabaseUpgrade_1_2.java
index 528dccd4d1..84347f2aa8 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/SecurityDatabaseUpgrade_1_2.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/SecurityDatabaseUpgrade_1_2.java
@@ -31,7 +31,7 @@
/**
* Upgrade step to mark admin user as 'changepassword' so user must change it
*
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/UiPluginDescriptorImpl.java b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/UiPluginDescriptorImpl.java
index b734212c49..7c2b67797d 100644
--- a/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/UiPluginDescriptorImpl.java
+++ b/plugins/nexus-onboarding-plugin/src/main/java/org/sonatype/nexus/onboarding/internal/UiPluginDescriptorImpl.java
@@ -24,7 +24,7 @@
/**
* Rapture {@link UiPluginDescriptor} for {@code nexus-onboarding-plugin}.
*
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginConfig.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginConfig.js
index e9e693f502..24ef01abe5 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginConfig.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginConfig.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.app.PluginConfig', {
'@aggregate_priority': 100,
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginStrings.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginStrings.js
index 0ced730557..b1f31effe4 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginStrings.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/app/PluginStrings.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.app.PluginStrings', {
'@aggregate_priority': 90,
@@ -44,7 +44,11 @@ Ext.define('NX.onboarding.app.PluginStrings', {
},
'NX.onboarding.view.ConfigureAnonymousAccessScreen': {
Title: 'Configure Anonymous Access',
- Description: 'Configure whether anonymous access is enabled for the server.
'
+ Description: 'Enabling anonymous access will allow unauthenticated downloads, browsing, and ' +
+ 'searching of repository content by default. Permissions for unauthenticated users can be changed by ' +
+ 'editing the roles assigned to the anonymous user.
' +
+ 'More information
',
+ Label: 'Enable anonymous access'
}
}
}, function(obj) {
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/controller/Onboarding.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/controller/Onboarding.js
index 414cf9d105..33c9691ca5 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/controller/Onboarding.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/controller/Onboarding.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.controller.Onboarding', {
extend: 'NX.wizard.Controller',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/model/Onboarding.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/model/Onboarding.js
index a50bf50511..b69c2354a5 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/model/Onboarding.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/model/Onboarding.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.model.Onboarding', {
extend: 'Ext.data.Model',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/ChangeAdminPasswordStep.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/ChangeAdminPasswordStep.js
index c8954af90f..77ee417a0a 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/ChangeAdminPasswordStep.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/ChangeAdminPasswordStep.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.step.ChangeAdminPasswordStep', {
extend: 'NX.wizard.Step',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingCompleteStep.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingCompleteStep.js
index 1533f860d5..23f80218b7 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingCompleteStep.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingCompleteStep.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.step.OnboardingCompleteStep', {
extend: 'NX.wizard.Step',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingStartStep.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingStartStep.js
index dc41ad86ec..828f636792 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingStartStep.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/OnboardingStartStep.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.step.OnboardingStartStep', {
extend: 'NX.wizard.Step',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/store/Onboarding.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/store/Onboarding.js
index d30e3da040..12c07485f6 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/store/Onboarding.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/store/Onboarding.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.store.Onboarding', {
extend: 'Ext.data.Store',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ChangeAdminPasswordScreen.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ChangeAdminPasswordScreen.js
index e2c9124613..1817709094 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ChangeAdminPasswordScreen.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ChangeAdminPasswordScreen.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.view.ChangeAdminPasswordScreen', {
extend: 'NX.wizard.Screen',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ConfigureAnonymousAccessScreen.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ConfigureAnonymousAccessScreen.js
index bd56055d30..0bd456c0f6 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ConfigureAnonymousAccessScreen.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/ConfigureAnonymousAccessScreen.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.view.ConfigureAnonymousAccessScreen', {
extend: 'NX.wizard.Screen',
@@ -47,7 +47,7 @@ Ext.define('NX.onboarding.view.ConfigureAnonymousAccessScreen', {
name: 'enabled',
itemId: 'anonymousEnabled',
value: false,
- boxLabel: NX.I18n.get('Security_AnonymousSettings_Allow_BoxLabel')
+ boxLabel: NX.I18n.render(me, 'Label')
}
]
}]
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingCompleteScreen.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingCompleteScreen.js
index c3550d2c09..2ebd660640 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingCompleteScreen.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingCompleteScreen.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.view.OnboardingCompleteScreen', {
extend: 'NX.wizard.Screen',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingModal.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingModal.js
index 78c08a1ee8..8ea9434f13 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingModal.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingModal.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.view.OnboardingModal', {
extend: 'NX.view.ModalDialog',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingStartScreen.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingStartScreen.js
index b8a7e13f03..7d2f44f41d 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingStartScreen.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingStartScreen.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.view.OnboardingStartScreen', {
extend: 'NX.wizard.Screen',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingWizard.js b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingWizard.js
index b325218745..f6fded70b7 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingWizard.js
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/view/OnboardingWizard.js
@@ -13,7 +13,7 @@
/*global Ext, NX*/
/**
- * @since 3.next
+ * @since 3.17
*/
Ext.define('NX.onboarding.view.OnboardingWizard', {
extend: 'NX.wizard.Panel',
diff --git a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/resources/nexus-onboarding-plugin-debug.css b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/resources/nexus-onboarding-plugin-debug.css
index 208bd1cd72..ff5216c694 100644
--- a/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/resources/nexus-onboarding-plugin-debug.css
+++ b/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/resources/nexus-onboarding-plugin-debug.css
@@ -11,6 +11,10 @@
* Eclipse Foundation. All other trademarks are the property of their respective owners.
*/
+[id^=nx-onboarding-wizard].nx-wizard-panel {
+ border-top: none !important;
+}
+
[id^=nx-onboarding-wizard].nx-wizard-panel .screenheader {
border: 0 !important;
padding: 0 !important;
diff --git a/plugins/nexus-repository-apt/pom.xml b/plugins/nexus-repository-apt/pom.xml
index 46bdf47e44..dfad0cff0d 100644
--- a/plugins/nexus-repository-apt/pom.xml
+++ b/plugins/nexus-repository-apt/pom.xml
@@ -19,7 +19,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptFacet.java
index 2e51ae5f31..20aba0ca10 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptFacet.java
@@ -24,7 +24,7 @@
import org.sonatype.nexus.repository.view.Payload;
/**
- * @since 3.next
+ * @since 3.17
*/
@Facet.Exposed
public interface AptFacet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptRestoreFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptRestoreFacet.java
index 730fa59070..da37d94563 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptRestoreFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptRestoreFacet.java
@@ -22,7 +22,7 @@
import org.sonatype.nexus.repository.view.Content;
/**
- * @since 3.next
+ * @since 3.17
*/
@Facet.Exposed
public interface AptRestoreFacet extends Facet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptUploadHandler.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptUploadHandler.java
index 49a03643ee..0b0b72a787 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptUploadHandler.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/AptUploadHandler.java
@@ -39,7 +39,7 @@
import org.sonatype.nexus.transaction.UnitOfWork;
/**
- * @since 3.next
+ * @since 3.17
*/
@Singleton
@Named(AptFormat.NAME)
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGenerator.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGenerator.java
index 85a6fd6763..1077e25fd2 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGenerator.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGenerator.java
@@ -27,7 +27,7 @@
import static com.google.common.collect.Lists.newArrayList;
/**
- * @since 3.next
+ * @since 3.17
*/
@Singleton
@Named(AptFormat.NAME)
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirector.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirector.java
index cc8912c001..51c5a66bea 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirector.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirector.java
@@ -36,7 +36,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named(AptFormat.NAME)
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptContentValidator.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptContentValidator.java
index 4736554936..cd76d2cc52 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptContentValidator.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptContentValidator.java
@@ -35,7 +35,7 @@
* Apt-specific {@link ContentValidator} that "hints" default content validator for apt package metadata and format
* specific files
*
- * @since 3.next
+ * @since 3.17
*/
@Named(AptFormat.NAME)
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFacetImpl.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFacetImpl.java
index d3f8aa2bb4..8d24bb4a61 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFacetImpl.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFacetImpl.java
@@ -52,7 +52,7 @@
import static org.sonatype.nexus.repository.apt.internal.debian.Utils.isDebPackageContentType;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
public class AptFacetImpl
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormat.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormat.java
index a192fe58cb..97e0cafdb1 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormat.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormat.java
@@ -18,7 +18,7 @@
import org.sonatype.nexus.repository.Format;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named(AptFormat.NAME)
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormatSecurityContributor.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormatSecurityContributor.java
index 2c93b339bc..ec59e9c851 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormatSecurityContributor.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptFormatSecurityContributor.java
@@ -20,7 +20,7 @@
import org.sonatype.nexus.repository.security.RepositoryFormatSecurityContributor;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptMimeTypes.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptMimeTypes.java
index f9bd1fada0..51f41e3a36 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptMimeTypes.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptMimeTypes.java
@@ -13,7 +13,7 @@
package org.sonatype.nexus.repository.apt.internal;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptMimeTypes
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptPackageParser.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptPackageParser.java
index 69b8ec87c6..9255ca2fba 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptPackageParser.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptPackageParser.java
@@ -30,7 +30,7 @@
import org.sonatype.nexus.repository.apt.internal.org.apache.commons.compress.archivers.ar.ArArchiveInputStream;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptPackageParser
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRecipeSupport.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRecipeSupport.java
index 537c99ea70..3c3d4207eb 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRecipeSupport.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRecipeSupport.java
@@ -16,30 +16,34 @@
import org.sonatype.nexus.repository.Type;
import org.sonatype.nexus.repository.RecipeSupport;
import org.sonatype.nexus.repository.config.Configuration;
-
-import static java.lang.Boolean.parseBoolean;
-import static java.lang.System.getProperty;
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker;
/**
* Support for Apt recipes
*
- * @since 3.next
+ * @since 3.17
*/
public abstract class AptRecipeSupport
extends RecipeSupport
{
+ private HighAvailabilitySupportChecker highAvailabilitySupportChecker;
+
static {
Configuration.addSensitiveFieldName("aptSigning");
}
- protected AptRecipeSupport(final Type type,
+ protected AptRecipeSupport(final HighAvailabilitySupportChecker highAvailabilitySupportChecker,
+ final Type type,
final Format format)
{
super(type, format);
+ this.highAvailabilitySupportChecker = highAvailabilitySupportChecker;
}
@Override
public boolean isFeatureEnabled() {
- return parseBoolean(getProperty("nexus.apt.enabled", "false"));
+ final boolean formatSupportHighAvailability =
+ highAvailabilitySupportChecker.isSupported(getFormat().getValue());
+ return formatSupportHighAvailability;
}
}
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRestoreFacetImpl.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRestoreFacetImpl.java
index ae237d97b7..3428a6c6a4 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRestoreFacetImpl.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptRestoreFacetImpl.java
@@ -40,7 +40,7 @@
import static org.sonatype.nexus.repository.storage.MetadataNodeEntityAdapter.P_NAME;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
public class AptRestoreFacetImpl
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptSecurityFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptSecurityFacet.java
index 64ea8299e6..fef50fcf90 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptSecurityFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptSecurityFacet.java
@@ -20,7 +20,7 @@
import org.sonatype.nexus.repository.security.VariableResolverAdapter;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
public class AptSecurityFacet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptWritePolicySelector.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptWritePolicySelector.java
index a8dec7bf36..872ca9746b 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptWritePolicySelector.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/AptWritePolicySelector.java
@@ -17,7 +17,7 @@
import org.sonatype.nexus.repository.storage.WritePolicySelector;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptWritePolicySelector
implements WritePolicySelector
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/FacetHelper.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/FacetHelper.java
index a1b9e9b01b..29d5d16e30 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/FacetHelper.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/FacetHelper.java
@@ -34,7 +34,7 @@
import static org.sonatype.nexus.repository.apt.internal.ReleaseName.*;
/**
- * @since 3.next
+ * @since 3.17
*/
public class FacetHelper
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/PackageName.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/PackageName.java
index 4bc0b69e6a..e0ddb2c5fa 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/PackageName.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/PackageName.java
@@ -13,7 +13,7 @@
package org.sonatype.nexus.repository.apt.internal;
/**
- * @since 3.next
+ * @since 3.17
*/
public class PackageName
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/ReleaseName.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/ReleaseName.java
index cde35ee4e7..8aee5ff426 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/ReleaseName.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/ReleaseName.java
@@ -13,7 +13,7 @@
package org.sonatype.nexus.repository.apt.internal;
/**
- * @since 3.next
+ * @since 3.17
*/
public class ReleaseName
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFile.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFile.java
index fb7e6a1bc3..ada2e31340 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFile.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFile.java
@@ -24,7 +24,7 @@
import java.util.stream.Stream;
/**
- * @since 3.next
+ * @since 3.17
*/
public class ControlFile
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFileParser.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFileParser.java
index 5f4a3d4d18..fbc2e8e22e 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFileParser.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/ControlFileParser.java
@@ -27,7 +27,7 @@
import com.google.common.base.Charsets;
/**
- * @since 3.next
+ * @since 3.17
*/
public class ControlFileParser
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersion.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersion.java
index ab178ee770..ec92e469c0 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersion.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersion.java
@@ -22,7 +22,7 @@
* More info about debian version could be found by ref:
*
* @see https://www.debian.org/doc/
- * @since 3.next
+ * @since 3.17
*/
public class DebianVersion
implements Comparable
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/PackageInfo.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/PackageInfo.java
index 1bfecd93c3..3aab72279d 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/PackageInfo.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/PackageInfo.java
@@ -13,7 +13,7 @@
package org.sonatype.nexus.repository.apt.internal.debian;
/**
- * @since 3.next
+ * @since 3.17
*/
public class PackageInfo
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Release.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Release.java
index c2d6c70889..d55a9cbf7f 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Release.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Release.java
@@ -17,7 +17,7 @@
import java.util.Optional;
/**
- * @since 3.next
+ * @since 3.17
*/
public class Release
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Utils.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Utils.java
index fca7e65778..5d03a0d925 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Utils.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/debian/Utils.java
@@ -13,7 +13,7 @@
package org.sonatype.nexus.repository.apt.internal.debian;
/**
- * @since 3.next
+ * @since 3.17
*/
public class Utils
{
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningFacet.java
index 4544e9194c..131acd997a 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningFacet.java
@@ -50,7 +50,7 @@
import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Facet.Exposed
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningHandler.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningHandler.java
index 1d72718ebc..c73d33279c 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningHandler.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/gpg/AptSigningHandler.java
@@ -26,7 +26,7 @@
import static org.sonatype.nexus.repository.http.HttpMethods.GET;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedComponentMaintenanceFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedComponentMaintenanceFacet.java
index d34374de89..15ed1f70ad 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedComponentMaintenanceFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedComponentMaintenanceFacet.java
@@ -38,7 +38,7 @@
import static org.sonatype.nexus.repository.storage.AssetEntityAdapter.P_ASSET_KIND;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
public class AptHostedComponentMaintenanceFacet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedFacet.java
index 704fb62ed1..966e084004 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedFacet.java
@@ -70,7 +70,7 @@
import static org.sonatype.nexus.repository.storage.MetadataNodeEntityAdapter.P_NAME;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Facet.Exposed
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedHandler.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedHandler.java
index 0c1bd62257..b0ad45724d 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedHandler.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedHandler.java
@@ -31,7 +31,7 @@
import static org.sonatype.nexus.repository.http.HttpMethods.POST;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedRecipe.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedRecipe.java
index 9dc1bb5129..7331f09345 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedRecipe.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedRecipe.java
@@ -42,16 +42,16 @@
import org.sonatype.nexus.repository.view.handlers.ConditionalRequestHandler;
import org.sonatype.nexus.repository.view.handlers.ContentHeadersHandler;
import org.sonatype.nexus.repository.view.handlers.ExceptionHandler;
+import org.sonatype.nexus.repository.view.handlers.FormatHighAvailabilitySupportHandler;
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker;
import org.sonatype.nexus.repository.view.handlers.LastDownloadedHandler;
import org.sonatype.nexus.repository.view.handlers.TimingHandler;
import org.sonatype.nexus.repository.view.matchers.AlwaysMatcher;
-
-
import static org.sonatype.nexus.repository.http.HttpHandlers.notFound;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named(AptHostedRecipe.NAME)
@Singleton
@@ -64,6 +64,9 @@ public class AptHostedRecipe
@Inject
Provider securityFacet;
+ @Inject
+ FormatHighAvailabilitySupportHandler highAvailabilitySupportHandler;
+
@Inject
Provider viewFacet;
@@ -128,8 +131,11 @@ public class AptHostedRecipe
LastDownloadedHandler lastDownloadedHandler;
@Inject
- public AptHostedRecipe(@Named(HostedType.NAME) final Type type, @Named(AptFormat.NAME) final Format format) {
- super(type, format);
+ public AptHostedRecipe(final HighAvailabilitySupportChecker highAvailabilitySupportChecker,
+ @Named(HostedType.NAME) final Type type,
+ @Named(AptFormat.NAME) final Format format)
+ {
+ super(highAvailabilitySupportChecker, type, format);
}
@Override
@@ -153,6 +159,7 @@ private ViewFacet configure(final ConfigurableViewFacet facet) {
builder.route(new Route.Builder().matcher(new AlwaysMatcher())
.handler(timingHandler)
.handler(securityHandler)
+ .handler(highAvailabilitySupportHandler)
.handler(exceptionHandler)
.handler(conditionalRequestHandler)
.handler(partialFetchHandler)
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedSnapshotFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedSnapshotFacet.java
index d934abcc20..965fc080bf 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedSnapshotFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/AptHostedSnapshotFacet.java
@@ -25,7 +25,7 @@
import org.sonatype.nexus.repository.view.Content;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
public class AptHostedSnapshotFacet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/CompressingTempFileStore.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/CompressingTempFileStore.java
index 80c9e3bb5a..d2d27e19d7 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/CompressingTempFileStore.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/hosted/CompressingTempFileStore.java
@@ -36,7 +36,7 @@
/**
* Stores a set of temp files, automatically compressing each into a GZIP, BZ2 and plain format.
*
- * @since 3.next
+ * @since 3.17
*/
class CompressingTempFileStore
extends ComponentSupport
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyFacet.java
index f6c8146620..7a4eef4c41 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyFacet.java
@@ -61,7 +61,7 @@
import static org.sonatype.nexus.repository.apt.internal.debian.Utils.isDebPackageContentType;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Facet.Exposed
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyRecipe.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyRecipe.java
index 8c288159d4..13a07156f6 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyRecipe.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxyRecipe.java
@@ -44,19 +44,19 @@
import org.sonatype.nexus.repository.view.Route;
import org.sonatype.nexus.repository.view.Router;
import org.sonatype.nexus.repository.view.ViewFacet;
+import org.sonatype.nexus.repository.view.handlers.FormatHighAvailabilitySupportHandler;
import org.sonatype.nexus.repository.view.handlers.ConditionalRequestHandler;
import org.sonatype.nexus.repository.view.handlers.ContentHeadersHandler;
import org.sonatype.nexus.repository.view.handlers.ExceptionHandler;
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker;
import org.sonatype.nexus.repository.view.handlers.LastDownloadedHandler;
import org.sonatype.nexus.repository.view.handlers.TimingHandler;
import org.sonatype.nexus.repository.view.matchers.AlwaysMatcher;
-
-
import static org.sonatype.nexus.repository.http.HttpHandlers.notFound;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named(AptProxyRecipe.NAME)
@Singleton
@@ -69,6 +69,9 @@ public class AptProxyRecipe
@Inject
Provider securityFacet;
+ @Inject
+ FormatHighAvailabilitySupportHandler highAvailabilitySupportHandler;
+
@Inject
Provider viewFacet;
@@ -142,8 +145,10 @@ public class AptProxyRecipe
RoutingRuleHandler routingRuleHandler;
@Inject
- public AptProxyRecipe(@Named(ProxyType.NAME) final Type type, @Named(AptFormat.NAME) final Format format) {
- super(type, format);
+ public AptProxyRecipe(final HighAvailabilitySupportChecker highAvailabilitySupportChecker,
+ @Named(ProxyType.NAME) final Type type, @Named(AptFormat.NAME) final Format format)
+ {
+ super(highAvailabilitySupportChecker, type, format);
}
@Override
@@ -169,6 +174,7 @@ private ViewFacet configure(final ConfigurableViewFacet facet) {
builder.route(new Route.Builder().matcher(new AlwaysMatcher())
.handler(timingHandler)
.handler(securityHandler)
+ .handler(highAvailabilitySupportHandler)
.handler(routingRuleHandler)
.handler(exceptionHandler)
.handler(negativeCacheHandler)
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxySnapshotFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxySnapshotFacet.java
index 7a4da6e30e..f79e064c5e 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxySnapshotFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/proxy/AptProxySnapshotFacet.java
@@ -23,7 +23,7 @@
import org.sonatype.nexus.repository.apt.internal.snapshot.SnapshotItem.ContentSpecifier;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
public class AptProxySnapshotFacet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AllSnapshotComponentSelector.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AllSnapshotComponentSelector.java
index fb1cd2b570..346e2a3e37 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AllSnapshotComponentSelector.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AllSnapshotComponentSelector.java
@@ -17,7 +17,7 @@
import org.sonatype.nexus.repository.apt.internal.debian.Release;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AllSnapshotComponentSelector
implements SnapshotComponentSelector
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacet.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacet.java
index a9dfdd7795..c04475b782 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacet.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacet.java
@@ -20,7 +20,7 @@
import org.sonatype.nexus.repository.view.Content;
/**
- * @since 3.next
+ * @since 3.17
*/
@Facet.Exposed
public interface AptSnapshotFacet
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacetSupport.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacetSupport.java
index 2ae4752841..8301b9f1c4 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacetSupport.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotFacetSupport.java
@@ -49,7 +49,7 @@
import static org.sonatype.nexus.repository.storage.Query.builder;
/**
- * @since 3.next
+ * @since 3.17
*/
public abstract class AptSnapshotFacetSupport
extends FacetSupport
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotHandler.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotHandler.java
index e001ea44fe..8fce3c5b46 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotHandler.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/AptSnapshotHandler.java
@@ -35,7 +35,7 @@
import static org.sonatype.nexus.repository.http.HttpMethods.PUT;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/FilteredSnapshotComponentSelector.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/FilteredSnapshotComponentSelector.java
index ea9a4a8000..6f80809d29 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/FilteredSnapshotComponentSelector.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/FilteredSnapshotComponentSelector.java
@@ -22,7 +22,7 @@
import org.sonatype.nexus.repository.apt.internal.debian.Release;
/**
- * @since 3.next
+ * @since 3.17
*/
public class FilteredSnapshotComponentSelector
implements SnapshotComponentSelector
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotComponentSelector.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotComponentSelector.java
index 6a70066039..94f9b77679 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotComponentSelector.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotComponentSelector.java
@@ -15,7 +15,7 @@
import java.util.List;
/**
- * @since 3.next
+ * @since 3.17
*/
import org.sonatype.nexus.repository.apt.internal.debian.Release;
diff --git a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotItem.java b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotItem.java
index 05f47f8198..8268c8afbf 100644
--- a/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotItem.java
+++ b/plugins/nexus-repository-apt/src/main/java/org/sonatype/nexus/repository/apt/internal/snapshot/SnapshotItem.java
@@ -21,7 +21,7 @@
import static org.sonatype.nexus.repository.apt.internal.AptMimeTypes.XZ;
/**
- * @since 3.next
+ * @since 3.17
*/
public class SnapshotItem
{
diff --git a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGeneratorTest.java b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGeneratorTest.java
index 9aa6b32bdd..dfbb3b1a12 100644
--- a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGeneratorTest.java
+++ b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptBrowseNodeGeneratorTest.java
@@ -26,7 +26,7 @@
import static org.mockito.Mockito.when;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptBrowseNodeGeneratorTest
extends TestSupport
diff --git a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirectorTest.java b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirectorTest.java
index 052fe6ef8b..d82d3b3dae 100644
--- a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirectorTest.java
+++ b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptComponentDirectorTest.java
@@ -37,7 +37,7 @@
import static org.mockito.Mockito.when;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptComponentDirectorTest
extends TestSupport
diff --git a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptRecipeTest.java b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptRecipeTest.java
index 36a9a3cad0..208e855dd2 100644
--- a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptRecipeTest.java
+++ b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/AptRecipeTest.java
@@ -13,13 +13,11 @@
package org.sonatype.nexus.repository.apt.internal;
import org.sonatype.goodies.testsupport.TestSupport;
-import org.sonatype.nexus.common.collect.AttributesMap;
+import org.sonatype.nexus.repository.apt.internal.hosted.AptHostedRecipe;
import org.sonatype.nexus.repository.apt.internal.proxy.AptProxyRecipe;
import org.sonatype.nexus.repository.types.ProxyType;
-import org.sonatype.nexus.repository.view.Context;
-import org.sonatype.nexus.repository.view.Request;
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -27,46 +25,60 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptRecipeTest
extends TestSupport
{
@Mock
- private Request request;
+ AptFormat format;
@Mock
- private Context context;
+ HighAvailabilitySupportChecker highAvailabilitySupportChecker;
- private AttributesMap attributesMap;
+ AptHostedRecipe hostedRecipe;
- private AptRecipeSupport underTest;
+ AptProxyRecipe proxyRecipe;
+
+ final String APT_NAME = "apt";
@Before
public void setUp() {
- underTest = new AptProxyRecipe(new ProxyType(), new AptFormat());
+ hostedRecipe = new AptHostedRecipe(highAvailabilitySupportChecker, new ProxyType(), format);
+ proxyRecipe = new AptProxyRecipe(highAvailabilitySupportChecker, new ProxyType(), format);
+ when(format.getValue()).thenReturn(APT_NAME);
+ }
- attributesMap = new AttributesMap();
- when(context.getRequest()).thenReturn(request);
- when(context.getAttributes()).thenReturn(attributesMap);
+ @Test
+ public void enabledByDefault_AptHostedRepository() {
+ when(highAvailabilitySupportChecker.isSupported(APT_NAME)).thenReturn(true);
+ assertThat(hostedRecipe.isFeatureEnabled(), is(equalTo(true)));
+ verify(highAvailabilitySupportChecker).isSupported(APT_NAME);
}
- @After
- public void tearDown() {
- System.getProperties().remove("nexus.apt.enabled");
+ @Test
+ public void disabledIfNexusIsClusteredAndAptNotCluster_AptHostedRepository() {
+ when(highAvailabilitySupportChecker.isSupported(APT_NAME)).thenReturn(false);
+ assertThat(hostedRecipe.isFeatureEnabled(), is(equalTo(false)));
+ verify(highAvailabilitySupportChecker).isSupported(APT_NAME);
}
@Test
- public void disabledByDefault() {
- assertThat(underTest.isFeatureEnabled(), is(equalTo(false)));
+ public void enabledByDefault_AptProxyRepository() {
+ when(highAvailabilitySupportChecker.isSupported(APT_NAME)).thenReturn(true);
+ assertThat(proxyRecipe.isFeatureEnabled(), is(equalTo(true)));
+ verify(highAvailabilitySupportChecker).isSupported(APT_NAME);
}
@Test
- public void enableApt() {
- System.setProperty("nexus.apt.enabled", "true");
- assertThat(underTest.isFeatureEnabled(), is(equalTo(true)));
+ public void disabledIfNexusIsClusteredAndAptNotCluster_AptProxyRepository() {
+ when(highAvailabilitySupportChecker.isSupported(APT_NAME)).thenReturn(false);
+ assertThat(proxyRecipe.isFeatureEnabled(), is(equalTo(false)));
+ verify(highAvailabilitySupportChecker).isSupported(APT_NAME);
}
+
}
diff --git a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersionTest.java b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersionTest.java
index 2044148aad..69db9ba489 100644
--- a/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersionTest.java
+++ b/plugins/nexus-repository-apt/src/test/java/org/sonatype/nexus/repository/apt/internal/debian/DebianVersionTest.java
@@ -21,7 +21,7 @@
import static org.hamcrest.Matchers.is;
/**
- * @since 3.next
+ * @since 3.17
*/
public class DebianVersionTest
extends TestSupport
diff --git a/plugins/nexus-repository-golang/pom.xml b/plugins/nexus-repository-golang/pom.xml
index 141595940a..c53901f1f5 100644
--- a/plugins/nexus-repository-golang/pom.xml
+++ b/plugins/nexus-repository-golang/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-repository-golang
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/AssetKind.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/AssetKind.java
index 7f1f079843..d37a038afa 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/AssetKind.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/AssetKind.java
@@ -20,7 +20,7 @@
/**
* Asset kinds for go
*
- * @since 3.next
+ * @since 3.17
*/
public enum AssetKind
{
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/GolangFormat.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/GolangFormat.java
index 8e4e1bc2f7..926a8a5d9f 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/GolangFormat.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/GolangFormat.java
@@ -20,7 +20,7 @@
/**
* Go repository format.
*
- * @since 3.next
+ * @since 3.17
*/
@Named(GolangFormat.NAME)
@Singleton
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangContentValidator.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangContentValidator.java
index 47da891112..41225b51b4 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangContentValidator.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangContentValidator.java
@@ -35,7 +35,7 @@
* Go specific {@link ContentValidator} that validates for some go specific file
* extensions and format specific files.
*
- * @since 3.next
+ * @since 3.17
*/
@Named(GolangFormat.NAME)
@Singleton
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangRecipeSupport.groovy b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangRecipeSupport.groovy
index edd7134e58..6a48c49333 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangRecipeSupport.groovy
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/GolangRecipeSupport.groovy
@@ -38,7 +38,9 @@ import org.sonatype.nexus.repository.view.Matcher
import org.sonatype.nexus.repository.view.handlers.ConditionalRequestHandler
import org.sonatype.nexus.repository.view.handlers.ContentHeadersHandler
import org.sonatype.nexus.repository.view.handlers.ExceptionHandler
+import org.sonatype.nexus.repository.view.handlers.FormatHighAvailabilitySupportHandler
import org.sonatype.nexus.repository.view.handlers.HandlerContributor
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker
import org.sonatype.nexus.repository.view.handlers.LastDownloadedHandler
import org.sonatype.nexus.repository.view.handlers.TimingHandler
import org.sonatype.nexus.repository.view.matchers.ActionMatcher
@@ -54,7 +56,7 @@ import static org.sonatype.nexus.repository.golang.AssetKind.PACKAGE
/**
* Support for Go recipes.
*
- * @since 3.next
+ * @since 3.17
*/
abstract class GolangRecipeSupport
extends RecipeSupport
@@ -62,6 +64,9 @@ abstract class GolangRecipeSupport
@Inject
Provider securityFacet
+ @Inject
+ FormatHighAvailabilitySupportHandler highAvailabilitySupportHandler;
+
@Inject
Provider viewFacet
@@ -116,8 +121,14 @@ abstract class GolangRecipeSupport
@Inject
LastDownloadedHandler lastDownloadedHandler
- protected GolangRecipeSupport(final Type type, final Format format) {
+ private HighAvailabilitySupportChecker highAvailabilitySupportChecker;
+
+ protected GolangRecipeSupport(final HighAvailabilitySupportChecker highAvailibilitySupportChecker,
+ final Type type,
+ final Format format)
+ {
super(type, format)
+ this.highAvailabilitySupportChecker = highAvailibilitySupportChecker;
}
/**
@@ -200,4 +211,9 @@ abstract class GolangRecipeSupport
static TokenMatcher tokenMatcherForExtension(final String extension) {
new TokenMatcher("/{module:.+}/@v/{version:.+}.{extension:${extension}}")
}
+
+ @Override
+ boolean isFeatureEnabled() {
+ return highAvailabilitySupportChecker.isSupported(getFormat().getValue());
+ }
}
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/group/GolangGroupRecipe.groovy b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/group/GolangGroupRecipe.groovy
index d5386a5eb9..6eec5625da 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/group/GolangGroupRecipe.groovy
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/group/GolangGroupRecipe.groovy
@@ -31,11 +31,12 @@ import org.sonatype.nexus.repository.view.ConfigurableViewFacet
import org.sonatype.nexus.repository.view.Route
import org.sonatype.nexus.repository.view.Router
import org.sonatype.nexus.repository.view.ViewFacet
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker
/**
* Go group repository recipe.
*
- * @since 3.next
+ * @since 3.17
*/
@Named(GolangGroupRecipe.NAME)
@Singleton
@@ -51,10 +52,11 @@ class GolangGroupRecipe
GroupHandler groupHandler
@Inject
- GolangGroupRecipe(@Named(GroupType.NAME) final Type type,
+ GolangGroupRecipe(final HighAvailabilitySupportChecker highAvailabilitySupportChecker,
+ @Named(GroupType.NAME) final Type type,
@Named(GolangFormat.NAME) final Format format)
{
- super(type, format)
+ super(highAvailabilitySupportChecker, type, format)
}
@Override
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacet.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacet.java
index fda8d8f310..dede70fa60 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacet.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacet.java
@@ -22,7 +22,7 @@
import org.sonatype.nexus.repository.view.Payload;
/**
- * @since 3.next
+ * @since 3.17
*/
@Exposed
public interface GolangHostedFacet
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacetImpl.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacetImpl.java
index f34fa6d64a..997cfe2faa 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacetImpl.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedFacetImpl.java
@@ -58,7 +58,7 @@
/**
* Go hosted implementation
*
- * @since 3.next
+ * @since 3.17
*/
@Named
public class GolangHostedFacetImpl
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipe.groovy b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipe.groovy
index 5bb4aea43c..ef33a1e8b8 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipe.groovy
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipe.groovy
@@ -29,12 +29,13 @@ import org.sonatype.nexus.repository.view.ConfigurableViewFacet
import org.sonatype.nexus.repository.view.Route
import org.sonatype.nexus.repository.view.Router
import org.sonatype.nexus.repository.view.ViewFacet
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker
import static java.lang.Boolean.parseBoolean
import static java.lang.System.getProperty
/**
- * @since 3.next
+ * @since 3.17
*/
@Named(GolangHostedRecipe.NAME)
@Singleton
@@ -50,10 +51,12 @@ class GolangHostedRecipe
Provider hostedFacet
@Inject
- GolangHostedRecipe(@Named(HostedType.NAME) final Type type,
+ GolangHostedRecipe(final HighAvailabilitySupportChecker highAvailabilitySupportChecker,
+ @Named(HostedType.NAME) final Type type,
@Named(GolangFormat.NAME) final Format format)
{
- super(type, format)
+ super(highAvailabilitySupportChecker, type, format)
+
}
@Override
@@ -70,7 +73,7 @@ class GolangHostedRecipe
@Override
boolean isFeatureEnabled() {
- return(parseBoolean(getProperty("nexus.golang.hosted", "false")))
+ return super.isFeatureEnabled() && (parseBoolean(getProperty("nexus.golang.hosted", "false")))
}
/**
@@ -85,6 +88,7 @@ class GolangHostedRecipe
builder.route(new Route.Builder().matcher(matcher)
.handler(timingHandler)
.handler(securityHandler)
+ .handler(highAvailabilitySupportHandler)
.handler(exceptionHandler)
.handler(handlerContributor)
.handler(partialFetchHandler)
@@ -98,6 +102,7 @@ class GolangHostedRecipe
builder.route(new Route.Builder().matcher(matcher)
.handler(timingHandler)
.handler(securityHandler)
+ .handler(highAvailabilitySupportHandler)
.handler(exceptionHandler)
.handler(handlerContributor)
.handler(partialFetchHandler)
@@ -111,6 +116,7 @@ class GolangHostedRecipe
builder.route(new Route.Builder().matcher(uploadMatcher())
.handler(timingHandler)
.handler(securityHandler)
+ .handler(highAvailabilitySupportHandler)
.handler(exceptionHandler)
.handler(handlerContributor)
.handler(conditionalRequestHandler)
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/HostedHandlers.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/HostedHandlers.java
index f1e28cfc97..ceb1f349dc 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/HostedHandlers.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/hosted/HostedHandlers.java
@@ -33,7 +33,7 @@
import static org.sonatype.nexus.repository.http.HttpResponses.ok;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangAttributes.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangAttributes.java
index 559f6a1f31..88608cbefe 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangAttributes.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangAttributes.java
@@ -15,7 +15,7 @@
/**
* Object for storing Go specific attributes
*
- * @since 3.next
+ * @since 3.17
*/
public final class GolangAttributes
{
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangInfo.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangInfo.java
index aac0e98e7f..2717270e2a 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangInfo.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/metadata/GolangInfo.java
@@ -17,7 +17,7 @@
/**
* Object for .info endpoint responses
*
- * @since 3.next
+ * @since 3.17
*/
public class GolangInfo
{
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyFacetImpl.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyFacetImpl.java
index 5747cfb74e..c763e43816 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyFacetImpl.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyFacetImpl.java
@@ -44,7 +44,7 @@
/**
* Go {@link ProxyFacet} implementation.
*
- * @since 3.next
+ * @since 3.17
*/
@Named
public class GolangProxyFacetImpl
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipe.groovy b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipe.groovy
index c9b9c0aa82..7248b9e67d 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipe.groovy
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipe.groovy
@@ -25,16 +25,18 @@ import org.sonatype.nexus.repository.golang.GolangFormat
import org.sonatype.nexus.repository.golang.internal.GolangRecipeSupport
import org.sonatype.nexus.repository.http.HttpHandlers
import org.sonatype.nexus.repository.proxy.ProxyHandler
+import org.sonatype.nexus.repository.routing.RoutingRuleHandler
import org.sonatype.nexus.repository.types.ProxyType
import org.sonatype.nexus.repository.view.ConfigurableViewFacet
import org.sonatype.nexus.repository.view.Route
import org.sonatype.nexus.repository.view.Router
import org.sonatype.nexus.repository.view.ViewFacet
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker
/**
* Go proxy repository recipe.
*
- * @since 3.next
+ * @since 3.17
*/
@Named(GolangProxyRecipe.NAME)
@Singleton
@@ -43,6 +45,9 @@ class GolangProxyRecipe
{
private static final String NAME = 'go-proxy'
+ @Inject
+ RoutingRuleHandler routingRuleHandler
+
@Inject
Provider proxyFacet
@@ -50,9 +55,11 @@ class GolangProxyRecipe
ProxyHandler proxyHandler
@Inject
- GolangProxyRecipe(@Named(ProxyType.NAME) final Type type,
- @Named(GolangFormat.NAME) final Format format) {
- super(type, format)
+ GolangProxyRecipe(final HighAvailabilitySupportChecker highAvailabilitySupportChecker,
+ @Named(ProxyType.NAME) final Type type,
+ @Named(GolangFormat.NAME) final Format format)
+ {
+ super(highAvailabilitySupportChecker, type, format)
}
@Override
@@ -81,6 +88,8 @@ class GolangProxyRecipe
builder.route(new Route.Builder().matcher(matcher)
.handler(timingHandler)
.handler(securityHandler)
+ .handler(highAvailabilitySupportHandler)
+ .handler(routingRuleHandler)
.handler(exceptionHandler)
.handler(handlerContributor)
.handler(negativeCacheHandler)
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangFormatSecurityContributor.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangFormatSecurityContributor.java
index 4986e53680..eb9eacf2d1 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangFormatSecurityContributor.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangFormatSecurityContributor.java
@@ -23,7 +23,7 @@
/**
* Go format security resource.
*
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangSecurityFacet.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangSecurityFacet.java
index 0a8f6a22a7..562c4d1ed9 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangSecurityFacet.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/security/GolangSecurityFacet.java
@@ -22,7 +22,7 @@
/**
* Go format security facet.
*
- * @since 3.next
+ * @since 3.17
*/
@Named
public class GolangSecurityFacet
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/CompressedContentExtractor.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/CompressedContentExtractor.java
index 70b5af298f..6073e61c23 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/CompressedContentExtractor.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/CompressedContentExtractor.java
@@ -30,7 +30,7 @@
/**
* Extracts a file from a zip image
*
- * @since 3.next
+ * @since 3.17
*/
public class CompressedContentExtractor
extends ComponentSupport
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangDataAccess.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangDataAccess.java
index 9cbf488629..91ab69b63e 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangDataAccess.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangDataAccess.java
@@ -51,7 +51,7 @@
/**
* Shared code between Go facets.
*
- * @since 3.next
+ * @since 3.17
*/
@Named
public class GolangDataAccess
diff --git a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangPathUtils.java b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangPathUtils.java
index eac509200d..1a9c6f4412 100644
--- a/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangPathUtils.java
+++ b/plugins/nexus-repository-golang/src/main/java/org/sonatype/nexus/repository/golang/internal/util/GolangPathUtils.java
@@ -24,7 +24,7 @@
/**
* Utility methods for working with Go routes and paths.
*
- * @since 3.next
+ * @since 3.17
*/
@Named
@Singleton
diff --git a/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipeTest.java b/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipeTest.java
index 5578f94fd2..59d6a2dba5 100644
--- a/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipeTest.java
+++ b/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/hosted/GolangHostedRecipeTest.java
@@ -13,11 +13,10 @@
package org.sonatype.nexus.repository.golang.internal.hosted;
import org.sonatype.goodies.testsupport.TestSupport;
-import org.sonatype.nexus.common.collect.AttributesMap;
import org.sonatype.nexus.repository.golang.GolangFormat;
import org.sonatype.nexus.repository.types.HostedType;
-import org.sonatype.nexus.repository.view.Context;
-import org.sonatype.nexus.repository.view.Request;
+import org.sonatype.nexus.repository.types.HostedType;
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker;
import org.junit.After;
import org.junit.Before;
@@ -27,28 +26,22 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class GolangHostedRecipeTest
extends TestSupport
{
@Mock
- private Request request;
-
- @Mock
- private Context context;
+ private HighAvailabilitySupportChecker highAvailabilitySupportChecker;
- private AttributesMap attributesMap;
+ private String GO_NAME = "go";
private GolangHostedRecipe underTest;
@Before
public void setUp() throws Exception {
- underTest = new GolangHostedRecipe(new HostedType(), new GolangFormat());
-
- attributesMap = new AttributesMap();
- when(context.getRequest()).thenReturn(request);
- when(context.getAttributes()).thenReturn(attributesMap);
+ underTest = new GolangHostedRecipe(highAvailabilitySupportChecker, new HostedType(), new GolangFormat());
}
@After
@@ -58,12 +51,32 @@ public void tearDown() throws Exception {
@Test
public void disabledByDefault() {
+ when(highAvailabilitySupportChecker.isSupported(GO_NAME)).thenReturn(true);
assertThat(underTest.isFeatureEnabled(), is(equalTo(false)));
+ verify(highAvailabilitySupportChecker).isSupported(GO_NAME);
}
@Test
public void enableGolang() {
System.setProperty("nexus.golang.hosted", "true");
+ when(highAvailabilitySupportChecker.isSupported(GO_NAME)).thenReturn(true);
assertThat(underTest.isFeatureEnabled(), is(equalTo(true)));
+ verify(highAvailabilitySupportChecker).isSupported(GO_NAME);
+ }
+
+ @Test
+ public void disabledIfNexusIsClusteredAndGoHostedDisabled() {
+ System.setProperty("nexus.golang.hosted", "false");
+ when(highAvailabilitySupportChecker.isSupported(GO_NAME)).thenReturn(false);
+ assertThat(underTest.isFeatureEnabled(), is(equalTo(false)));
+ verify(highAvailabilitySupportChecker).isSupported(GO_NAME);
+ }
+
+ @Test
+ public void disabledIfNexusIsClusteredAndGoHostedEnabled() {
+ System.setProperty("nexus.golang.hosted", "true");
+ when(highAvailabilitySupportChecker.isSupported(GO_NAME)).thenReturn(false);
+ assertThat(underTest.isFeatureEnabled(), is(equalTo(false)));
+ verify(highAvailabilitySupportChecker).isSupported(GO_NAME);
}
}
diff --git a/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipeTest.java b/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipeTest.java
new file mode 100644
index 0000000000..3f551b9b05
--- /dev/null
+++ b/plugins/nexus-repository-golang/src/test/java/org/sonatype/nexus/repository/golang/internal/proxy/GolangProxyRecipeTest.java
@@ -0,0 +1,57 @@
+/*
+ * Sonatype Nexus (TM) Open Source Version
+ * Copyright (c) 2008-present Sonatype, Inc.
+ * All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
+ *
+ * This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
+ * which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
+ * of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
+ * Eclipse Foundation. All other trademarks are the property of their respective owners.
+ */
+package org.sonatype.nexus.repository.golang.internal.proxy;
+
+import org.sonatype.goodies.testsupport.TestSupport;
+import org.sonatype.nexus.repository.golang.GolangFormat;
+import org.sonatype.nexus.repository.types.ProxyType;
+import org.sonatype.nexus.repository.view.handlers.HighAvailabilitySupportChecker;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class GolangProxyRecipeTest extends TestSupport
+{
+ @Mock
+ private HighAvailabilitySupportChecker highAvailabilitySupportChecker;
+
+ private String GO_NAME = "go";
+
+ private GolangProxyRecipe proxyUnderTest;
+
+ @Before
+ public void setUp() throws Exception {
+ proxyUnderTest = new GolangProxyRecipe(highAvailabilitySupportChecker, new ProxyType(), new GolangFormat());
+ }
+
+ @Test
+ public void enabledByDefault_GoProxyRepository() {
+ when(highAvailabilitySupportChecker.isSupported(GO_NAME)).thenReturn(true);
+ assertThat(proxyUnderTest.isFeatureEnabled(), is(equalTo(true)));
+ verify(highAvailabilitySupportChecker).isSupported(GO_NAME);
+ }
+
+ @Test
+ public void disabledIfNexusIsClusteredAndGoNotCluster_GoProxyRepository() {
+ when(highAvailabilitySupportChecker.isSupported(GO_NAME)).thenReturn(false);
+ assertThat(proxyUnderTest.isFeatureEnabled(), is(equalTo(false)));
+ verify(highAvailabilitySupportChecker).isSupported(GO_NAME);
+ }
+}
diff --git a/plugins/nexus-repository-httpbridge/pom.xml b/plugins/nexus-repository-httpbridge/pom.xml
index 23c2d323ae..8d52e5b483 100644
--- a/plugins/nexus-repository-httpbridge/pom.xml
+++ b/plugins/nexus-repository-httpbridge/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-repository-httpbridge
diff --git a/plugins/nexus-repository-maven/pom.xml b/plugins/nexus-repository-maven/pom.xml
index f55cdef372..ac52f3df9e 100644
--- a/plugins/nexus-repository-maven/pom.xml
+++ b/plugins/nexus-repository-maven/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-repository-maven
diff --git a/plugins/nexus-repository-maven/src/main/java/org/sonatype/nexus/repository/maven/internal/hosted/metadata/MetadataException.java b/plugins/nexus-repository-maven/src/main/java/org/sonatype/nexus/repository/maven/internal/hosted/metadata/MetadataException.java
index 34a52e32bd..ab78077bb4 100644
--- a/plugins/nexus-repository-maven/src/main/java/org/sonatype/nexus/repository/maven/internal/hosted/metadata/MetadataException.java
+++ b/plugins/nexus-repository-maven/src/main/java/org/sonatype/nexus/repository/maven/internal/hosted/metadata/MetadataException.java
@@ -13,7 +13,7 @@
package org.sonatype.nexus.repository.maven.internal.hosted.metadata;
/**
- * @since 3.next
+ * @since 3.17
*/
public class MetadataException
extends Exception
diff --git a/plugins/nexus-repository-npm/pom.xml b/plugins/nexus-repository-npm/pom.xml
index 9479f4c585..6311e64684 100644
--- a/plugins/nexus-repository-npm/pom.xml
+++ b/plugins/nexus-repository-npm/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-repository-npm
diff --git a/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmFieldUnmatcher.java b/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmFieldUnmatcher.java
index f97a0e5b36..6f9f8b1acd 100644
--- a/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmFieldUnmatcher.java
+++ b/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmFieldUnmatcher.java
@@ -19,7 +19,7 @@
/**
* A NPM Json Field Matcher the test whether we never matched a field.
*
- * @since 3.next
+ * @since 3.17
*/
public class NpmFieldUnmatcher
extends NpmFieldMatcher
diff --git a/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmRevisionUpgradeRequestEvent.java b/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmRevisionUpgradeRequestEvent.java
index 5b0f112803..c09001636a 100644
--- a/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmRevisionUpgradeRequestEvent.java
+++ b/plugins/nexus-repository-npm/src/main/java/org/sonatype/nexus/repository/npm/internal/NpmRevisionUpgradeRequestEvent.java
@@ -19,7 +19,7 @@
/**
* Event for requesting an upgrade on the revision field of an NPM package root.
*
- * @since 3.next
+ * @since 3.17
*/
public class NpmRevisionUpgradeRequestEvent
{
diff --git a/plugins/nexus-repository-pypi/pom.xml b/plugins/nexus-repository-pypi/pom.xml
index 2b316a1870..408e9d46e7 100644
--- a/plugins/nexus-repository-pypi/pom.xml
+++ b/plugins/nexus-repository-pypi/pom.xml
@@ -21,7 +21,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-repository-pypi
diff --git a/plugins/nexus-repository-raw/pom.xml b/plugins/nexus-repository-raw/pom.xml
index e5e193deec..6ca754fed3 100644
--- a/plugins/nexus-repository-raw/pom.xml
+++ b/plugins/nexus-repository-raw/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-repository-raw
diff --git a/plugins/nexus-restore-apt/pom.xml b/plugins/nexus-restore-apt/pom.xml
index 0e598619d5..e280281b2d 100644
--- a/plugins/nexus-restore-apt/pom.xml
+++ b/plugins/nexus-restore-apt/pom.xml
@@ -19,7 +19,7 @@
nexus-plugins
org.sonatype.nexus.plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
4.0.0
diff --git a/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobData.java b/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobData.java
index 966cd649b8..a786fd3759 100644
--- a/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobData.java
+++ b/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobData.java
@@ -16,7 +16,7 @@
import org.sonatype.nexus.blobstore.restore.RestoreBlobDataSupport;
/**
- * @since 3.next
+ * @since 3.17
*/
public class AptRestoreBlobData
extends RestoreBlobDataSupport
diff --git a/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobStrategy.java b/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobStrategy.java
index 9b90c0da7b..02e14f82b4 100644
--- a/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobStrategy.java
+++ b/plugins/nexus-restore-apt/src/main/java/org/sonatype/nexus/blobstore/restore/apt/internal/AptRestoreBlobStrategy.java
@@ -41,7 +41,7 @@
import static org.sonatype.nexus.common.hash.HashAlgorithm.SHA256;
/**
- * @since 3.next
+ * @since 3.17
*/
@Named("apt")
@Singleton
diff --git a/plugins/nexus-restore-maven/pom.xml b/plugins/nexus-restore-maven/pom.xml
index 2c85ccdfaf..c721321862 100644
--- a/plugins/nexus-restore-maven/pom.xml
+++ b/plugins/nexus-restore-maven/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-restore-maven
diff --git a/plugins/nexus-restore-npm/pom.xml b/plugins/nexus-restore-npm/pom.xml
index 1b95d51bd1..96d2225865 100644
--- a/plugins/nexus-restore-npm/pom.xml
+++ b/plugins/nexus-restore-npm/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-restore-npm
diff --git a/plugins/nexus-restore-pypi/pom.xml b/plugins/nexus-restore-pypi/pom.xml
index 391385e51b..18267214ef 100644
--- a/plugins/nexus-restore-pypi/pom.xml
+++ b/plugins/nexus-restore-pypi/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-restore-pypi
diff --git a/plugins/nexus-restore-raw/pom.xml b/plugins/nexus-restore-raw/pom.xml
index 4ea6cb5446..545f33dc7a 100644
--- a/plugins/nexus-restore-raw/pom.xml
+++ b/plugins/nexus-restore-raw/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-restore-raw
diff --git a/plugins/nexus-script-plugin/pom.xml b/plugins/nexus-script-plugin/pom.xml
index 413aef5771..eead30dbf2 100644
--- a/plugins/nexus-script-plugin/pom.xml
+++ b/plugins/nexus-script-plugin/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-script-plugin
diff --git a/plugins/nexus-ssl-plugin/pom.xml b/plugins/nexus-ssl-plugin/pom.xml
index fc046ad263..c465592bb9 100644
--- a/plugins/nexus-ssl-plugin/pom.xml
+++ b/plugins/nexus-ssl-plugin/pom.xml
@@ -21,7 +21,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-ssl-plugin
diff --git a/plugins/nexus-task-log-cleanup/pom.xml b/plugins/nexus-task-log-cleanup/pom.xml
index 5ebd47d314..c2c7eccd8e 100644
--- a/plugins/nexus-task-log-cleanup/pom.xml
+++ b/plugins/nexus-task-log-cleanup/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus.plugins
nexus-plugins
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
nexus-task-log-cleanup
diff --git a/plugins/pom.xml b/plugins/pom.xml
index 48dfc44ce9..b9c6bbf0cb 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -20,7 +20,7 @@
org.sonatype.nexus
nexus-parent
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
org.sonatype.nexus.plugins
@@ -60,7 +60,7 @@
org.sonatype.nexus.buildsupport
nexus-buildsupport-all
pom
- 3.17.0-SNAPSHOT
+ 3.18.0-SNAPSHOT
import