=== removed file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseCollection.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseCollection.java 2014-03-18 08:10:10 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/BaseCollection.java 1970-01-01 00:00:00 +0000 @@ -1,105 +0,0 @@ -package org.hisp.dhis.common; - -/* - * Copyright (c) 2004-2014, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; - -/** - * @author Morten Olav Hansen - */ -@JacksonXmlRootElement( localName = "collection", namespace = DxfNamespaces.DXF_2_0) -public class BaseCollection - implements LinkableObject -{ - private Pager pager; - - private LinkableObject linkableObject; - - public BaseCollection() - { - linkableObject = new BaseLinkableObject(); - } - - //------------------------------------------------------------------------------------- - // Dependencies - //------------------------------------------------------------------------------------- - - @JsonProperty - @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0) - public Pager getPager() - { - return pager; - } - - public void setPager( Pager pager ) - { - this.pager = pager; - } - - public LinkableObject getLinkableObject() - { - return linkableObject; - } - - public void setLinkableObject( LinkableObject linkableObject ) - { - this.linkableObject = linkableObject; - } - - //------------------------------------------------------------------------------------- - // Serializable fields - //------------------------------------------------------------------------------------- - - @JsonProperty - @JacksonXmlProperty( isAttribute = true, namespace = DxfNamespaces.DXF_2_0) - public String getHref() - { - if ( linkableObject == null ) - { - return null; - } - - return linkableObject.getHref(); - } - - /** - * Set link for collection. This will be replaced for 2.7 with a real linkableObject. - * - * @param link - */ - public void setHref( String link ) - { - if ( linkableObject != null ) - { - linkableObject.setHref( link ); - } - } -} === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/IndexController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/IndexController.java 2014-06-28 04:21:56 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/IndexController.java 2014-06-28 05:34:29 +0000 @@ -28,20 +28,19 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.common.DxfNamespaces; +import org.hisp.dhis.node.types.CollectionNode; +import org.hisp.dhis.node.types.ComplexNode; +import org.hisp.dhis.node.types.RootNode; +import org.hisp.dhis.node.types.SimpleNode; import org.hisp.dhis.schema.Schema; import org.hisp.dhis.schema.SchemaService; -import org.hisp.dhis.webapi.utils.ContextUtils; -import org.hisp.dhis.webapi.webdomain.Resource; -import org.hisp.dhis.webapi.webdomain.Resources; +import org.hisp.dhis.webapi.service.ContextService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; +import org.springframework.web.bind.annotation.ResponseBody; /** * @author Morten Olav Hansen @@ -52,37 +51,45 @@ @Autowired private SchemaService schemaService; + @Autowired + private ContextService contextService; + //-------------------------------------------------------------------------- // GET //-------------------------------------------------------------------------- @RequestMapping( value = "/api", method = RequestMethod.GET ) - public void getIndex( HttpServletRequest request, HttpServletResponse response ) throws IOException + public @ResponseBody RootNode getIndex() { - String location = response.encodeRedirectURL( "/" ); - response.sendRedirect( ContextUtils.getRootPath( request ) + location ); + return createRootNode(); } @RequestMapping( value = "/", method = RequestMethod.GET ) - public String getResources( Model model, HttpServletRequest request ) - { - Resources resources = new Resources(); + public @ResponseBody RootNode getIndexSlash() + { + return createRootNode(); + } + + private RootNode createRootNode() + { + RootNode rootNode = new RootNode( "metadata" ); + rootNode.setNamespace( DxfNamespaces.DXF_2_0 ); + rootNode.setDefaultNamespace( DxfNamespaces.DXF_2_0 ); + + CollectionNode collectionNode = rootNode.addChild( new CollectionNode( "resources" ) ); for ( Schema schema : schemaService.getSchemas() ) { if ( schema.haveApiEndpoint() ) { - Resource resource = new Resource(); - resource.setSingular( schema.getSingular() ); - resource.setPlural( schema.getPlural() ); - resource.setHref( ContextUtils.getRootPath( request ) + schema.getApiEndpoint() ); + ComplexNode complexNode = collectionNode.addChild( new ComplexNode( "resource" ) ); - resources.getResources().add( resource ); + complexNode.addChild( new SimpleNode( "singular", schema.getSingular() ) ); + complexNode.addChild( new SimpleNode( "plural", schema.getPlural() ) ); + complexNode.addChild( new SimpleNode( "href", contextService.getContextPath() + "/api" + schema.getApiEndpoint() ) ); } } - model.addAttribute( "model", resources ); - - return "resources"; + return rootNode; } } === removed file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/Resource.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/Resource.java 2014-05-27 13:46:18 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/Resource.java 1970-01-01 00:00:00 +0000 @@ -1,97 +0,0 @@ -package org.hisp.dhis.webapi.webdomain; - -/* - * Copyright (c) 2004-2014, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import org.hisp.dhis.common.DxfNamespaces; - -/** - * At some point this class will be extended to show all available options - * for a current user for this resource. For now it is only used for index page. - * - * @author Morten Olav Hansen - */ -@JacksonXmlRootElement(localName = "resource", namespace = DxfNamespaces.DXF_2_0) -public class Resource -{ - private String singular; - - private String plural; - - private String href; - - public Resource() - { - - } - - public Resource( String singular, String plural ) - { - this.singular = singular; - this.plural = plural; - } - - @JsonProperty - @JacksonXmlProperty( isAttribute = true ) - public String getSingular() - { - return singular; - } - - public void setSingular( String singular ) - { - this.singular = singular; - } - - @JsonProperty - @JacksonXmlProperty( isAttribute = true ) - public String getPlural() - { - return plural; - } - - public void setPlural( String plural ) - { - this.plural = plural; - } - - @JsonProperty - @JacksonXmlProperty( isAttribute = true ) - public String getHref() - { - return href; - } - - public void setHref( String href ) - { - this.href = href; - } -} === removed file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/Resources.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/Resources.java 2014-05-27 13:46:18 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/webdomain/Resources.java 1970-01-01 00:00:00 +0000 @@ -1,67 +0,0 @@ -package org.hisp.dhis.webapi.webdomain; - -/* - * Copyright (c) 2004-2014, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; -import org.hisp.dhis.common.BaseCollection; -import org.hisp.dhis.common.DxfNamespaces; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Morten Olav Hansen - */ -@JacksonXmlRootElement(localName = "dxf2", namespace = DxfNamespaces.DXF_2_0) -public class Resources - extends BaseCollection -{ - private List resources = new ArrayList(); - - public Resources() - { - - } - - @JsonProperty - @JacksonXmlElementWrapper(localName = "resources", namespace = DxfNamespaces.DXF_2_0) - @JacksonXmlProperty(localName = "resource", namespace = DxfNamespaces.DXF_2_0) - public List getResources() - { - return resources; - } - - public void setResources( List resources ) - { - this.resources = resources; - } -}