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/01/09 16:15:51 UTC
[isis] 02/02: ISIS-2158: further decouple from resteasy
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
commit 76d8846e6c07d2b9bc15ab95dd4d7d1ac6732ade
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 9 17:15:40 2020 +0100
ISIS-2158: further decouple from resteasy
(in the prospect of deploying to a jee container)
---
.../IsisJaxrsUtilityServiceResteasy4.java | 42 -----------------
.../IsisModuleRestfulObjectsJaxrsResteasy4.java | 1 -
.../conneg/RestfulObjectsJaxbWriterForXml.java | 12 +++--
.../restfulobjects/jaxrsresteasy4/conneg/Util.java | 33 -------------
.../viewer/IsisJaxrsUtilityService.java | 32 -------------
.../viewer/mappers/ExceptionMapperAbstract.java | 5 +-
.../mappers/ExceptionMapperForObjectNotFound.java | 8 ----
...xceptionMapperForRestfulObjectsApplication.java | 12 +----
.../ExceptionMapperForRuntimeException.java | 9 ----
.../restfulobjects/viewer/mappers/FailureUtil.java | 54 ++++++++++++++++++++++
...tsApplicationExceptionMapper_Test_Contract.java | 7 ---
.../isis/testdomain/jdo/InventoryManager.java | 15 ++++--
12 files changed, 75 insertions(+), 155 deletions(-)
diff --git a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java
deleted file mode 100644
index 7754201..0000000
--- a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisJaxrsUtilityServiceResteasy4.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.restfulobjects.jaxrsresteasy4;
-
-import org.jboss.resteasy.spi.Failure;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
-import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
-
-/**
- * @since 2.0
- */
-@Service
-public class IsisJaxrsUtilityServiceResteasy4 implements IsisJaxrsUtilityService {
-
- @Override
- public HttpStatusCode getFailureStatusCodeIfAny(Throwable ex) {
-
- return (ex instanceof Failure)
- ? RestfulResponse.HttpStatusCode.statusFor(((Failure)ex).getErrorCode())
- : null;
- }
-
-}
diff --git a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisModuleRestfulObjectsJaxrsResteasy4.java b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisModuleRestfulObjectsJaxrsResteasy4.java
index 5920701..c254076 100644
--- a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisModuleRestfulObjectsJaxrsResteasy4.java
+++ b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/IsisModuleRestfulObjectsJaxrsResteasy4.java
@@ -13,7 +13,6 @@ import org.apache.isis.viewer.restfulobjects.viewer.IsisModuleRestfulObjectsView
IsisModuleRestfulObjectsViewer.class,
// @Service's
- IsisJaxrsUtilityServiceResteasy4.class,
WebModuleJaxrsResteasy4.class,
// @Component's
diff --git a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.java b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.java
index 18a836e..217fc5e 100644
--- a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.java
+++ b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.java
@@ -53,10 +53,6 @@ public class RestfulObjectsJaxbWriterForXml extends JAXBXmlRootElementProvider {
hasXRoDomainTypeParameter(mediaType);
}
- protected boolean hasXRoDomainTypeParameter(final MediaType mediaType) {
- return Util.hasXRoDomainTypeParameter(mediaType);
- }
-
@Override
protected Marshaller getMarshaller(
final Class<?> type,
@@ -69,6 +65,12 @@ public class RestfulObjectsJaxbWriterForXml extends JAXBXmlRootElementProvider {
marshaller.setAdapter(PersistentEntityAdapter.class, adapter);
return marshaller;
}
-
+
+ // HELPER
+
+ private static boolean hasXRoDomainTypeParameter(final MediaType mediaType) {
+ final boolean retval = mediaType.getParameters().containsKey("x-ro-domain-type");
+ return retval;
+ }
}
diff --git a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/Util.java b/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/Util.java
deleted file mode 100644
index d77b85b..0000000
--- a/core/viewers/restfulobjects/jaxrs-resteasy-4/src/main/java/org/apache/isis/viewer/restfulobjects/jaxrsresteasy4/conneg/Util.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.restfulobjects.jaxrsresteasy4.conneg;
-
-import javax.ws.rs.core.MediaType;
-
-final class Util {
-
- private Util(){
- }
-
- static boolean hasXRoDomainTypeParameter(final MediaType mediaType) {
- final boolean retval = mediaType.getParameters().containsKey("x-ro-domain-type");
- return retval;
- }
-
-}
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java
deleted file mode 100644
index 7a81215..0000000
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/IsisJaxrsUtilityService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer;
-
-import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
-
-/**
- * Replaces the former 'IsisJaxrsServerPlugin'.
- *
- * @since 2.0
- */
-public interface IsisJaxrsUtilityService {
-
- HttpStatusCode getFailureStatusCodeIfAny(Throwable ex);
-
-}
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java
index ceffa51..7add1ba 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperAbstract.java
@@ -35,7 +35,6 @@ import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.rendering.ExceptionWithBody;
import org.apache.isis.viewer.restfulobjects.rendering.ExceptionWithHttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
import org.apache.isis.viewer.restfulobjects.viewer.mappers.entity.ExceptionDetail;
import org.apache.isis.viewer.restfulobjects.viewer.mappers.entity.ExceptionPojo;
import org.apache.isis.viewer.restfulobjects.viewer.resources.serialization.SerializationStrategy;
@@ -86,13 +85,11 @@ public abstract class ExceptionMapperAbstract<T extends Throwable> implements Ex
return builder.build();
}
- protected abstract IsisJaxrsUtilityService getIsisJaxrsUtilityService();
-
private RestfulResponse.HttpStatusCode determineStatusCode(final T ex) {
RestfulResponse.HttpStatusCode statusCode;
- statusCode = getIsisJaxrsUtilityService().getFailureStatusCodeIfAny(ex);
+ statusCode = FailureUtil.getFailureStatusCodeIfAny(ex);
if(statusCode!=null) {
return statusCode;
}
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForObjectNotFound.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForObjectNotFound.java
index 389d8dd..884c40a 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForObjectNotFound.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForObjectNotFound.java
@@ -18,25 +18,17 @@
*/
package org.apache.isis.viewer.restfulobjects.viewer.mappers;
-import javax.inject.Inject;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import org.springframework.stereotype.Component;
import org.apache.isis.metamodel.exceptions.persistence.ObjectNotFoundException;
-import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
-
-import lombok.AccessLevel;
-import lombok.Getter;
@Component
@Provider
public class ExceptionMapperForObjectNotFound extends ExceptionMapperAbstract<ObjectNotFoundException> {
- @Inject @Getter(onMethod = @__(@Override), value = AccessLevel.PROTECTED)
- IsisJaxrsUtilityService isisJaxrsUtilityService;
-
@Override
public Response toResponse(final ObjectNotFoundException ex) {
return buildResponse(ex);
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRestfulObjectsApplication.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRestfulObjectsApplication.java
index 7841ada..de6eeea 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRestfulObjectsApplication.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRestfulObjectsApplication.java
@@ -18,25 +18,18 @@
*/
package org.apache.isis.viewer.restfulobjects.viewer.mappers;
-import javax.inject.Inject;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import org.springframework.stereotype.Component;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
-import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
-
-import lombok.AccessLevel;
-import lombok.Getter;
@Component
@Provider
-public class ExceptionMapperForRestfulObjectsApplication extends ExceptionMapperAbstract<RestfulObjectsApplicationException> {
+public class ExceptionMapperForRestfulObjectsApplication
+extends ExceptionMapperAbstract<RestfulObjectsApplicationException> {
- @Inject @Getter(onMethod = @__(@Override), value = AccessLevel.PROTECTED)
- IsisJaxrsUtilityService isisJaxrsUtilityService;
-
@Override
public Response toResponse(final RestfulObjectsApplicationException ex) {
//XXX code not used, so commented out
@@ -45,5 +38,4 @@ public class ExceptionMapperForRestfulObjectsApplication extends ExceptionMapper
return buildResponse(ex);
}
-
}
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRuntimeException.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRuntimeException.java
index ebc7ba2..7aff4b2 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRuntimeException.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/ExceptionMapperForRuntimeException.java
@@ -18,24 +18,15 @@
*/
package org.apache.isis.viewer.restfulobjects.viewer.mappers;
-import javax.inject.Inject;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import org.springframework.stereotype.Component;
-import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-
@Component
@Provider
public class ExceptionMapperForRuntimeException extends ExceptionMapperAbstract<RuntimeException> {
- @Inject @Getter(onMethod = @__(@Override), value = AccessLevel.PROTECTED)
- IsisJaxrsUtilityService isisJaxrsUtilityService;
-
@Override
public Response toResponse(final RuntimeException ex) {
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/FailureUtil.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/FailureUtil.java
new file mode 100644
index 0000000..f792264
--- /dev/null
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/FailureUtil.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.viewer.mappers;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.isis.metamodel.facets.MethodFinderUtils;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse;
+import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
+
+import lombok.val;
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+final class FailureUtil {
+
+ public static HttpStatusCode getFailureStatusCodeIfAny(Throwable ex) {
+
+ // legacy of
+ // return (ex instanceof org.jboss.resteasy.spi.Failure)
+ // ? RestfulResponse.HttpStatusCode.statusFor(((org.jboss.resteasy.spi.Failure)ex).getErrorCode())
+ // : null;
+
+ val errorCodeGetter = MethodFinderUtils.findMethod(ex.getClass(), "getErrorCode", int.class);
+ if(errorCodeGetter!=null) {
+ try {
+ val errorCode = (int)errorCodeGetter.invoke(ex);
+ return RestfulResponse.HttpStatusCode.statusFor(errorCode);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ // ignore
+ }
+ }
+
+ return null;
+
+ }
+
+}
diff --git a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java
index 4c76551..fdf002f 100644
--- a/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java
+++ b/core/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/mappers/RestfulObjectsApplicationExceptionMapper_Test_Contract.java
@@ -36,7 +36,6 @@ import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
import org.apache.isis.viewer.restfulobjects.rendering.RestfulObjectsApplicationException;
-import org.apache.isis.viewer.restfulobjects.viewer.IsisJaxrsUtilityService;
/**
* contract test.
@@ -55,12 +54,6 @@ public abstract class RestfulObjectsApplicationExceptionMapper_Test_Contract {
public void setUp() throws Exception {
exceptionMapper = new ExceptionMapperForRestfulObjectsApplication();
exceptionMapper.httpHeaders = mockHttpHeaders;
- exceptionMapper.isisJaxrsUtilityService = new IsisJaxrsUtilityService() {
- @Override
- public HttpStatusCode getFailureStatusCodeIfAny(Throwable ex) {
- return null;
- }
- };
}
@Test
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java
index 7281608..855d787 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.testdomain.jdo;
+import java.util.List;
+
import javax.inject.Inject;
import org.apache.isis.applib.annotation.Action;
@@ -28,6 +30,8 @@ import org.apache.isis.applib.services.repository.RepositoryService;
@ViewModel
public class InventoryManager {
+ @Inject private RepositoryService repository;
+
// -- UPDATE PRODUCT PRICE
public static class UpdateProductPriceEvent extends ActionDomainEvent {}
@@ -42,11 +46,14 @@ public class InventoryManager {
@Action
public int countProducts() {
- return repository.allInstances(Product.class).size();
+ return listAllProducts().size();
+ }
+
+ @Action
+ public List<Product> listAllProducts() {
+ return repository.allInstances(Product.class);
}
- // -- DEPENDENCIES
-
- @Inject RepositoryService repository;
+
}