You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/05/12 07:40:27 UTC
[isis] branch master updated: ISIS-2340: mitigations (sonar
analysis)
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new eafca29 ISIS-2340: mitigations (sonar analysis)
eafca29 is described below
commit eafca29440e39cbfd3679e6b23f4d53fae8aa65e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 12 09:40:11 2020 +0200
ISIS-2340: mitigations (sonar analysis)
---
.../core/metamodel/facets/MethodFinderUtils.java | 9 ++++---
.../common/model/gridlayout/UiGridLayout.java | 29 +++++++++++++---------
.../resources/InteractionFailureHandler.java | 15 ++++++-----
.../isisapplib/IsisBlobOrClobPanelAbstract.java | 4 +--
4 files changed, 34 insertions(+), 23 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
index 48b64ef..d8a2c1f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MethodFinderUtils.java
@@ -32,6 +32,7 @@ import java.util.stream.Stream;
import org.apache.isis.applib.services.i18n.TranslatableString;
import org.apache.isis.core.commons.collections.Can;
+import org.apache.isis.core.commons.internal.base._NullSafe;
import org.apache.isis.core.commons.internal.reflection._MethodCache;
import org.apache.isis.core.commons.internal.reflection._Reflect;
import org.apache.isis.core.metamodel.commons.MethodUtil;
@@ -42,7 +43,9 @@ import static org.apache.isis.core.commons.internal.reflection._Reflect.Filter.p
import lombok.NonNull;
import lombok.Value;
import lombok.val;
+import lombok.extern.log4j.Log4j2;
+@Log4j2
public final class MethodFinderUtils {
private MethodFinderUtils() {
@@ -134,8 +137,7 @@ public final class MethodFinderUtils {
public static Stream<Method> streamMethods(final Class<?> type, final Can<String> names, final Class<?> returnType) {
try {
- final Method[] methods = type.getMethods();
- return Arrays.stream(methods)
+ return _NullSafe.stream(type.getMethods())
.filter(MethodUtil::isPublic)
.filter(MethodUtil::isNotStatic)
.filter(method -> names.contains(method.getName()))
@@ -143,7 +145,8 @@ public final class MethodFinderUtils {
returnType.isAssignableFrom(method.getReturnType()))
;
} catch (final SecurityException e) {
- return null;
+ log.error("failed to enumerate methods of class %s", type);
+ return Stream.empty();
}
}
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
index d97d1f4..2df6633 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/gridlayout/UiGridLayout.java
@@ -31,6 +31,8 @@ import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
import org.apache.isis.applib.layout.grid.bootstrap3.BS3Row;
import org.apache.isis.applib.layout.grid.bootstrap3.BS3Tab;
import org.apache.isis.applib.layout.grid.bootstrap3.BS3TabGroup;
+import org.apache.isis.core.commons.internal.base._Lazy;
+import org.apache.isis.core.commons.internal.base._NullSafe;
import org.apache.isis.core.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -60,20 +62,12 @@ public class UiGridLayout {
}
@NonNull private final ManagedObject managedObject;
- private Optional<BS3Grid> gridData;
+ private _Lazy<Optional<BS3Grid>> gridData = _Lazy.threadSafe(this::initGridData);
public <T> void visit(Visitor<T> visitor) {
- if(gridData==null) {
- gridData = Optional.ofNullable(
- managedObject.getSpecification().getFacet(GridFacet.class))
- .map(gridFacet->gridFacet.getGrid(managedObject))
- .filter(grid->grid instanceof BS3Grid)
- .map(BS3Grid.class::cast);
- }
-
// recursively visit the grid
- gridData
+ gridData.get()
.ifPresent(bs3Grid->{
for(val bs3Row: bs3Grid.getRows()) {
visitRow(bs3Row, visitor.rootContainer, visitor);
@@ -82,6 +76,14 @@ public class UiGridLayout {
}
+ private Optional<BS3Grid> initGridData() {
+ return Optional.ofNullable(
+ managedObject.getSpecification().getFacet(GridFacet.class))
+ .map(gridFacet->gridFacet.getGrid(managedObject))
+ .filter(grid->grid instanceof BS3Grid)
+ .map(BS3Grid.class::cast);
+ }
+
private <T> void visitRow(BS3Row bs3Row, T container, Visitor<T> visitor) {
val uiRow = visitor.newRow(container, bs3Row);
@@ -126,11 +128,14 @@ public class UiGridLayout {
}
// columns having rows seems not permitted by XML schema
- for(val bs3Row: bS3Col.getRows()) {
+ if(_NullSafe.size(bS3Col.getRows())>0) {
throw _Exceptions.unsupportedOperation();
- //visitRow(bs3Row, uiCol, visitor);
}
+// for(val bs3Row: bS3Col.getRows()) {
+// visitRow(bs3Row, uiCol, visitor);
+// }
+
for(val collectionData : bS3Col.getCollections()) {
visitor.onCollection(uiCol, collectionData);
}
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/InteractionFailureHandler.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/InteractionFailureHandler.java
index 2a81a72..94dfed6 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/InteractionFailureHandler.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/InteractionFailureHandler.java
@@ -26,6 +26,7 @@ import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
+import lombok.NonNull;
import lombok.val;
public class InteractionFailureHandler {
@@ -71,10 +72,12 @@ public class InteractionFailureHandler {
}
public static RestfulObjectsApplicationException onParameterListInvalid(
- @Nullable final InteractionVeto veto,
- @Nullable final JsonRepresentation arguments) {
+ @NonNull final InteractionVeto veto,
+ @NonNull final JsonRepresentation arguments) {
- arguments.mapPut("x-ro-invalidReason", veto.getReason());
+ if(veto!=null) {
+ arguments.mapPut("x-ro-invalidReason", veto.getReason());
+ }
return RestfulObjectsApplicationException
.createWithBody(RestfulResponse.HttpStatusCode.VALIDATION_FAILED,
arguments,
@@ -83,9 +86,9 @@ public class InteractionFailureHandler {
// collect info for each individual param that is not valid
public static void onParameterInvalid(
- @Nullable final ManagedParameter managedParameter,
- @Nullable final InteractionVeto veto,
- @Nullable final JsonRepresentation arguments) {
+ @NonNull final ManagedParameter managedParameter,
+ @NonNull final InteractionVeto veto,
+ @NonNull final JsonRepresentation arguments) {
val paramId = managedParameter.getParameter().getId();
val argRepr = arguments.getRepresentation(paramId);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index b0570b5..f2ce1f6 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -268,7 +268,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
final String disabledReason,
final Optional<AjaxRequestTarget> target) {
- MarkupContainer formComponent = (MarkupContainer) getComponentForRegular();
+ final MarkupContainer formComponent = (MarkupContainer) getComponentForRegular();
sync(formComponent, visibility, editability, disabledReason, target);
final Component component = formComponent.get(ID_SCALAR_VALUE);
@@ -337,7 +337,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
private void addAcceptFilterTo(Component component){
final String filter = getAcceptFilter();
- if(filter==null || filter.isEmpty())
+ if(component==null || filter==null || filter.isEmpty())
return; // ignore
class AcceptAttributeModel extends Model<String> {
private static final long serialVersionUID = 1L;