Repository: syncope Updated Branches: refs/heads/master c53e17c54 -> c910a7a66
Upgrading Camel to 2.15.2 and CXF to 3.0.1-SNAPSHOT + fixing WADL generation Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/c910a7a6 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/c910a7a6 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/c910a7a6 Branch: refs/heads/master Commit: c910a7a66370164e86524b3e470626865ad4ee68 Parents: c53e17c Author: Francesco Chicchiriccò <[email protected]> Authored: Mon May 4 16:11:19 2015 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Mon May 4 16:11:19 2015 +0200 ---------------------------------------------------------------------- .../syncope/common/lib/to/AbstractPolicyTO.java | 4 ++ .../syncope/common/lib/to/AccountPolicyTO.java | 4 -- .../apache/syncope/common/lib/to/ErrorTO.java | 4 +- .../syncope/common/lib/to/PasswordPolicyTO.java | 2 +- core/rest-cxf/pom.xml | 13 ++++ .../rest/cxf/RestServiceExceptionMapper.java | 72 +++++++++++-------- .../src/main/resources/wadl2html/index.xsl | 76 ++------------------ fit/core-reference/pom.xml | 2 +- .../fit/core/reference/PolicyITCase.java | 2 +- .../syncope/fit/core/reference/RealmITCase.java | 2 +- pom.xml | 11 ++- 11 files changed, 81 insertions(+), 111 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java index 5f3027b..aadb0d0 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java @@ -48,6 +48,10 @@ public abstract class AbstractPolicyTO extends AbstractBaseBean { private final List<String> usedByRealms = new ArrayList<>(); + private AbstractPolicyTO() { + throw new UnsupportedOperationException("No-arg constructor is just to keep JAXB from complaining"); + } + protected AbstractPolicyTO(final PolicyType type) { this.type = type; } http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/common/lib/src/main/java/org/apache/syncope/common/lib/to/AccountPolicyTO.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AccountPolicyTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AccountPolicyTO.java index 460bc20..a701899 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AccountPolicyTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AccountPolicyTO.java @@ -39,10 +39,6 @@ public class AccountPolicyTO extends AbstractPolicyTO { private final List<String> resources = new ArrayList<>(); public AccountPolicyTO() { - this(false); - } - - public AccountPolicyTO(final boolean global) { super(PolicyType.ACCOUNT); } http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/common/lib/src/main/java/org/apache/syncope/common/lib/to/ErrorTO.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ErrorTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ErrorTO.java index e0f14ad..f643b88 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ErrorTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ErrorTO.java @@ -38,7 +38,7 @@ public class ErrorTO extends AbstractBaseBean { private ClientExceptionType type; - private final List<Object> elements = new ArrayList<>(); + private final List<String> elements = new ArrayList<>(); public int getStatus() { return status; @@ -59,7 +59,7 @@ public class ErrorTO extends AbstractBaseBean { @XmlElementWrapper(name = "elements") @XmlElement(name = "element") @JsonProperty("elements") - public List<Object> getElements() { + public List<String> getElements() { return elements; } http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java ---------------------------------------------------------------------- diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java index 621ab26..a0a21ea 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java +++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java @@ -39,7 +39,7 @@ public class PasswordPolicyTO extends AbstractPolicyTO { return specification; } - public void setSpecification(PasswordPolicySpec specification) { + public void setSpecification(final PasswordPolicySpec specification) { this.specification = specification; } http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/core/rest-cxf/pom.xml ---------------------------------------------------------------------- diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml index 66522eb..2bbefa0 100644 --- a/core/rest-cxf/pom.xml +++ b/core/rest-cxf/pom.xml @@ -120,6 +120,19 @@ under the License. <artifactId>syncope-common-rest-api</artifactId> <version>${project.version}</version> </dependency> + + <dependency> + <groupId>org.webjars</groupId> + <artifactId>jquery</artifactId> + </dependency> + <dependency> + <groupId>org.webjars</groupId> + <artifactId>jquery-ui</artifactId> + </dependency> + <dependency> + <groupId>org.webjars</groupId> + <artifactId>highlightjs</artifactId> + </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java index 92b93a2..3bccdba 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java @@ -106,20 +106,20 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R ErrorTO error = new ErrorTO(); error.setStatus(response.getStatus()); error.setType(ClientExceptionType.Unknown); - error.getElements().add(getExMessage(ex)); + error.getElements().add(ExceptionUtils.getRootCauseMessage(ex)); - builder = JAXRSUtils.fromResponse(response).entity(error); + builder = builder(response).entity(error); } else if (ex instanceof AccessDeniedException) { builder = Response.status(Response.Status.UNAUTHORIZED). header(HttpHeaders.WWW_AUTHENTICATE, BASIC_REALM_UNAUTHORIZED); } else if (ex instanceof UnauthorizedException) { - builder = builder(ClientExceptionType.Unauthorized, getExMessage(ex)); + builder = builder(ClientExceptionType.Unauthorized, ExceptionUtils.getRootCauseMessage(ex)); } else if (ex instanceof EntityExistsException || ex instanceof DuplicateException) { builder = builder(ClientExceptionType.EntityExists, getJPAMessage(ex)); } else if (ex instanceof DataIntegrityViolationException || ex instanceof JpaSystemException) { builder = builder(ClientExceptionType.DataIntegrityViolation, getJPAMessage(ex)); } else if (ex instanceof ConnectorException) { - builder = builder(ClientExceptionType.ConnectorException, getExMessage(ex)); + builder = builder(ClientExceptionType.ConnectorException, ExceptionUtils.getRootCauseMessage(ex)); } else { builder = processNotFoundExceptions(ex); if (builder == null) { @@ -129,27 +129,29 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R } // process JAX-RS validation errors if (builder == null && ex instanceof ValidationException) { - builder = JAXRSUtils.fromResponse(validationEM.toResponse((ValidationException) ex)). + builder = builder(validationEM.toResponse((ValidationException) ex)). header(RESTHeaders.ERROR_CODE, ClientExceptionType.RESTValidation.getHeaderValue()). - header(RESTHeaders.ERROR_INFO, - ClientExceptionType.RESTValidation.getInfoHeaderValue(getExMessage(ex))); + header(RESTHeaders.ERROR_INFO, ClientExceptionType.RESTValidation.getInfoHeaderValue( + ExceptionUtils.getRootCauseMessage(ex))); ErrorTO error = new ErrorTO(); error.setStatus(ClientExceptionType.RESTValidation.getResponseStatus().getStatusCode()); error.setType(ClientExceptionType.RESTValidation); - error.getElements().add(getExMessage(ex)); + error.getElements().add(ExceptionUtils.getRootCauseMessage(ex)); + builder.entity(error); } // ...or just report as InternalServerError if (builder == null) { builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR). - header(RESTHeaders.ERROR_INFO, - ClientExceptionType.Unknown.getInfoHeaderValue(getExMessage(ex))); + header(RESTHeaders.ERROR_INFO, ClientExceptionType.Unknown.getInfoHeaderValue( + ExceptionUtils.getRootCauseMessage(ex))); ErrorTO error = new ErrorTO(); error.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); error.setType(ClientExceptionType.Unknown); - error.getElements().add(getExMessage(ex)); + error.getElements().add(ExceptionUtils.getRootCauseMessage(ex)); + builder.entity(error); } } @@ -159,7 +161,7 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R } @Override - public Exception fromResponse(final Response r) { + public Exception fromResponse(final Response response) { throw new UnsupportedOperationException( "Call of fromResponse() method is not expected in RestServiceExceptionMapper"); } @@ -208,7 +210,7 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R private ResponseBuilder processNotFoundExceptions(final Exception ex) { if (ex instanceof javax.ws.rs.NotFoundException || ex instanceof NotFoundException) { - return builder(ClientExceptionType.NotFound, getExMessage(ex)); + return builder(ClientExceptionType.NotFound, ExceptionUtils.getRootCauseMessage(ex)); } return null; @@ -267,23 +269,22 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R if (((BadRequestException) ex).getResponse() == null) { return builder; } else { - return JAXRSUtils.fromResponse(((BadRequestException) ex).getResponse()); + return builder(((BadRequestException) ex).getResponse()); } } else if (ex instanceof WorkflowException) { - return builder(ClientExceptionType.Workflow, getExMessage(ex)); + return builder(ClientExceptionType.Workflow, ExceptionUtils.getRootCauseMessage(ex)); } else if (ex instanceof PersistenceException) { - return builder(ClientExceptionType.GenericPersistence, getExMessage(ex)); + return builder(ClientExceptionType.GenericPersistence, ExceptionUtils.getRootCauseMessage(ex)); } else if (ibatisPersistenceException != null && ibatisPersistenceException.isAssignableFrom(ex.getClass())) { - return builder(ClientExceptionType.Workflow, - getMessage(ex, "Currently unavailable. Please try later.")); + return builder(ClientExceptionType.Workflow, "Currently unavailable. Please try later."); } else if (ex instanceof JpaSystemException) { - return builder(ClientExceptionType.DataIntegrityViolation, getExMessage(ex)); + return builder(ClientExceptionType.DataIntegrityViolation, ExceptionUtils.getRootCauseMessage(ex)); } else if (ex instanceof ConfigurationException) { - return builder(ClientExceptionType.InvalidConnIdConf, getExMessage(ex)); + return builder(ClientExceptionType.InvalidConnIdConf, ExceptionUtils.getRootCauseMessage(ex)); } else if (ex instanceof ParsingValidationException) { - return builder(ClientExceptionType.InvalidValues, getExMessage(ex)); + return builder(ClientExceptionType.InvalidValues, ExceptionUtils.getRootCauseMessage(ex)); } else if (ex instanceof MalformedPathException) { - return builder(ClientExceptionType.InvalidPath, getExMessage(ex)); + return builder(ClientExceptionType.InvalidPath, ExceptionUtils.getRootCauseMessage(ex)); } return null; @@ -302,12 +303,25 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R return builder.entity(error); } - private String getMessage(final Throwable ex, final String msg) { - return (msg == null) ? getExMessage(ex) : msg; - } + /** + * Overriding {@link JAXRSUtils#fromResponse(javax.ws.rs.core.Response)} in order to avoid setting + * {@code Content-Type} from original {@code response}. + * + * @param response model to construct {@link ResponseBuilder} from + * @return new {@link ResponseBuilder} instance initialized from given response + */ + private ResponseBuilder builder(final Response response) { + ResponseBuilder builder = JAXRSUtils.toResponseBuilder(response.getStatus()); + builder.entity(response.getEntity()); + for (Map.Entry<String, List<Object>> entry : response.getMetadata().entrySet()) { + if (!HttpHeaders.CONTENT_TYPE.equals(entry.getKey())) { + for (Object value : entry.getValue()) { + builder.header(entry.getKey(), value); + } + } + } - private String getExMessage(final Throwable ex) { - return (ex.getCause() == null) ? ex.getMessage() : ex.getCause().getMessage(); + return builder; } private String getJPAMessage(final Throwable ex) { @@ -321,6 +335,8 @@ public class RestServiceExceptionMapper implements ExceptionMapper<Exception>, R } } - return message == null ? getExMessage(ex) : message; + return message == null + ? (ex.getCause() == null) ? ex.getMessage() : ex.getCause().getMessage() + : message; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/core/rest-cxf/src/main/resources/wadl2html/index.xsl ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/resources/wadl2html/index.xsl b/core/rest-cxf/src/main/resources/wadl2html/index.xsl index e238b99..a4809a7 100644 --- a/core/rest-cxf/src/main/resources/wadl2html/index.xsl +++ b/core/rest-cxf/src/main/resources/wadl2html/index.xsl @@ -46,7 +46,7 @@ <xsl:value-of select="wadl:doc/@title"/> </title> - <link rel="stylesheet" href="{$contextPath}/webjars/jquery-ui/${jquery-ui.version}/themes/base/minified/jquery-ui.min.css"/> + <link rel="stylesheet" href="{$contextPath}/webjars/jquery-ui/${jquery-ui.version}/jquery-ui.min.css"/> <style> body { font-family: "Verdana,Arial,sans-serif"; @@ -96,7 +96,7 @@ <script src="{$contextPath}/webjars/jquery/${jquery.version}/jquery.min.js"> </script> - <script src="{$contextPath}/webjars/jquery-ui/${jquery-ui.version}/ui/minified/jquery-ui.min.js"> + <script src="{$contextPath}/webjars/jquery-ui/${jquery-ui.version}/jquery-ui.min.js"> </script> <script> //<![CDATA[ @@ -113,12 +113,12 @@ }); </xsl:text> - <xsl:variable name="parentResourcePath" select="translate(@path, '/{}', '___')"/> + <xsl:variable name="parentResourcePath" select="translate(@path, '/{}:.*', '______')"/> <xsl:call-template name="dialog-init"> <xsl:with-param name="resourcePath" select="$parentResourcePath"/> </xsl:call-template> <xsl:for-each select="wadl:resource"> - <xsl:variable name="childResourcePath" select="translate(@path, '/{}', '___')"/> + <xsl:variable name="childResourcePath" select="translate(@path, '/{}:.*', '______')"/> <xsl:call-template name="dialog-init"> <xsl:with-param name="resourcePath" select="concat($parentResourcePath, $childResourcePath)"/> </xsl:call-template> @@ -128,72 +128,6 @@ $( "#tabs" ).tabs().addClass( "ui-tabs-vertical ui-helper-clearfix" ); $( "#tabs li" ).removeClass( "ui-corner-top" ).addClass( "ui-corner-left" ); }); - - /* - * hoverIntent | Copyright 2011 Brian Cherne - * http://cherne.net/brian/resources/jquery.hoverIntent.html - * modified by the jQuery UI team - */ - $.event.special.hoverintent = { - setup: function() { - $( this ).bind( "mouseover", jQuery.event.special.hoverintent.handler ); - }, - teardown: function() { - $( this ).unbind( "mouseover", jQuery.event.special.hoverintent.handler ); - }, - handler: function( event ) { - var currentX, currentY, timeout, - args = arguments, - target = $( event.target ), - previousX = event.pageX, - previousY = event.pageY; - - function track( event ) { - currentX = event.pageX; - currentY = event.pageY; - }; - - function clear() { - target - .unbind( "mousemove", track ) - .unbind( "mouseout", clear ); - clearTimeout( timeout ); - } - - function handler() { - var prop, - orig = event; - - if ( ( Math.abs( previousX - currentX ) + - Math.abs( previousY - currentY ) ) < 7 ) { - clear(); - - event = $.Event( "hoverintent" ); - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - // Prevent accessing the original event since the new event - // is fired asynchronously and the old event is no longer - // usable (#6028) - delete event.originalEvent; - - target.trigger( event ); - } else { - previousX = currentX; - previousY = currentY; - timeout = setTimeout( handler, 100 ); - } - } - - timeout = setTimeout( handler, 100 ); - target.bind({ - mousemove: track, - mouseout: clear - }); - } - }; //]]> </script> </head> @@ -314,7 +248,7 @@ <xsl:template name="methods"> <xsl:param name="resourcePath"/> - <xsl:variable name="escapedPath" select="translate($resourcePath, '/{}', '___')"/> + <xsl:variable name="escapedPath" select="translate($resourcePath, '/{}:.*', '______')"/> <div class="methods"> <xsl:for-each select="wadl:method"> <button id="opener{$escapedPath}_{position()}"> http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/fit/core-reference/pom.xml ---------------------------------------------------------------------- diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml index 35b2a41..0d867f2 100644 --- a/fit/core-reference/pom.xml +++ b/fit/core-reference/pom.xml @@ -680,7 +680,7 @@ under the License. <configuration> <configuration> <properties> - <cargo.jvmargs>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n + <cargo.jvmargs>-Xdebug -Djaxb.debug=true -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs> </properties> </configuration> http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PolicyITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PolicyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PolicyITCase.java index 0c00e40..2e526af 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PolicyITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PolicyITCase.java @@ -167,7 +167,7 @@ public class PolicyITCase extends AbstractITCase { @Test public void issueSYNCOPE553() { - AccountPolicyTO policy = new AccountPolicyTO(false); + AccountPolicyTO policy = new AccountPolicyTO(); policy.setDescription("SYNCOPE553"); final AccountPolicySpec accountPolicySpec = new AccountPolicySpec(); http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/RealmITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/RealmITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/RealmITCase.java index 4bd882d..edb2366 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/RealmITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/RealmITCase.java @@ -133,7 +133,7 @@ public class RealmITCase extends AbstractITCase { @Test public void deletingAccountPolicy() { // 1. create account policy - AccountPolicyTO policy = new AccountPolicyTO(false); + AccountPolicyTO policy = new AccountPolicyTO(); policy.setDescription("deletingAccountPolicy"); final AccountPolicySpec accountPolicySpec = new AccountPolicySpec(); http://git-wip-us.apache.org/repos/asf/syncope/blob/c910a7a6/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 722071f..2dc8fbf 100644 --- a/pom.xml +++ b/pom.xml @@ -326,9 +326,9 @@ under the License. <connid.ldap.version>1.4.0</connid.ldap.version> <connid.ad.version>1.2.3</connid.ad.version> - <cxf.version>3.0.5-SNAPSHOT</cxf.version> + <cxf.version>3.1.0-SNAPSHOT</cxf.version> - <camel.version>2.15.1</camel.version> + <camel.version>2.15.2</camel.version> <jackson.version>2.5.3</jackson.version> @@ -371,6 +371,8 @@ under the License. <log.directory>${project.build.directory}/log</log.directory> <activiti-modeler.directory>${project.build.directory}/activiti-modeler</activiti-modeler.directory> + <jquery.version>2.1.3</jquery.version> + <jquery-ui.version>1.11.4</jquery-ui.version> <bootstrap.version>3.3.4</bootstrap.version> <bootstrap-select.version>1.6.3</bootstrap-select.version> <font-awesome.version>4.3.0</font-awesome.version> @@ -907,6 +909,11 @@ under the License. <dependency> <groupId>org.webjars</groupId> + <artifactId>jquery</artifactId> + <version>${jquery.version}</version> + </dependency> + <dependency> + <groupId>org.webjars</groupId> <artifactId>jquery-ui</artifactId> <version>${jquery-ui.version}</version> </dependency>
