@ApiOperation( "Update an existing store" )
    @ApiResponses( { @ApiResponse( code = 200, message = "The store was updated" ),
        @ApiResponse( code = 400, message = "The store specified in the body JSON didn't match the URL parameters" ), } )
    @ApiImplicitParams( { @ApiImplicitParam( allowMultiple = false, paramType = "body", name = "body", required = true, dataType = "org.commonjava.indy.model.core.ArtifactStore", value = "The artifact store definition JSON" ) } )
    @Path( "/{name}" )
    @PUT
    @Consumes( ApplicationContent.application_json )
    public Response store( final @PathParam( "packageType" ) String packageType,
                           final @ApiParam( allowableValues = "hosted,group,remote", required = true ) @PathParam( "type" ) String type,
                           final @ApiParam( required = true ) @PathParam( "name" ) String name,
                           final @Context HttpServletRequest request,
                           final @Context SecurityContext securityContext )
    {
        final StoreType st = StoreType.get( type );

        Response response = null;
        String json = null;
        try
        {
            json = IOUtils.toString( request.getInputStream() );
            json = objectMapper.patchLegacyStoreJson( json );
        }
        catch ( final IOException e )
        {
            final String message = "Failed to read " + st.getStoreClass()
                                                         .getSimpleName() + " from request body.";

            logger.error( message, e );
            response = formatResponse( e, message );
        }

        if ( response != null )
        {
            return response;
        }

        ArtifactStore store = null;
        try
        {
            store = objectMapper.readValue( json, st.getStoreClass() );
        }
        catch ( final IOException e )
        {
            final String message = "Failed to parse " + st.getStoreClass()
                                                          .getSimpleName() + " from request body.";

            logger.error( message, e );
            response = formatResponse( e, message );
        }

        if ( response != null )
        {
            return response;
        }

        if ( !packageType.equals(store.getPackageType()) || st != store.getType() || !name.equals( store.getName() ) )
        {
            response = Response.status( Status.BAD_REQUEST )
                               .entity( String.format( "Store in URL path is: '%s' but in JSON it is: '%s'",
                                                       new StoreKey( packageType, st, name ), store.getKey() ) )
                               .build();
        }

        try
        {
            String user = securityManager.getUser( securityContext, request );

            logger.info( "Storing: {}", store );
            if ( adminController.store( store, user, false ) )
            {
                response = ok().build();
            }
            else
            {
                logger.warn( "{} NOT modified!", store );
                response = notModified().build();
            }
        }
        catch ( final IndyWorkflowException e )
        {
            logger.error( e.getMessage(), e );
            response = formatResponse( e );
        }

        return response;
    }
@ApiOperation( "Update an existing store" )
    @ApiResponses( { @ApiResponse( code = 200, message = "The store was updated" ),
        @ApiResponse( code = 400, message = "The store specified in the body JSON didn't match the URL parameters" ), } )
    @ApiImplicitParams( { @ApiImplicitParam( allowMultiple = false, paramType = "body", name = "body", required = true, dataType = "org.commonjava.indy.model.core.ArtifactStore", value = "The artifact store definition JSON" ) } )
    @Path( "/{name}" )
    @PUT
    @Consumes( ApplicationContent.application_json )
    public Response store( final @PathParam( "packageType" ) String packageType,
                           final @ApiParam( allowableValues = "hosted,group,remote", required = true ) @PathParam( "type" ) String type,
                           final @ApiParam( required = true ) @PathParam( "name" ) String name,
                           final @Context HttpServletRequest request,
                           final @Context SecurityContext securityContext )
    {
        final StoreType st = StoreType.get( type );

        Response response = null;
        String json = null;
        try
        {
            json = IOUtils.toString( request.getInputStream() );
            json = objectMapper.patchLegacyStoreJson( json );
        }
        catch ( final IOException e )
        {
            final String message = "Failed to read " + st.getStoreClass()
                                                         .getSimpleName() + " from request body.";

            logger.error( message, e );
            response = formatResponse( e, message );
        }

        if ( response != null )
        {
            return response;
        }

        ArtifactStore store = null;
        try
        {
            store = objectMapper.readValue( json, st.getStoreClass() );
        }
        catch ( final IOException e )
        {
            final String message = "Failed to parse " + st.getStoreClass()
                                                          .getSimpleName() + " from request body.";

            logger.error( message, e );
            response = formatResponse( e, message );
        }

        if ( response != null )
        {
            return response;
        }

        if ( !packageType.equals(store.getPackageType()) || st != store.getType() || !name.equals( store.getName() ) )
        {
            response = Response.status( Status.BAD_REQUEST )
                               .entity( String.format( "Store in URL path is: '%s' but in JSON it is: '%s'",
                                                       new StoreKey( packageType, st, name ), store.getKey() ) )
                               .build();
        }

        try
        {
            String user = securityManager.getUser( securityContext, request );

            logger.info( "Storing: {}", store );
            if ( adminController.store( store, user, false ) )
            {
                response = ok().build();
            }
            else
            {
                logger.warn( "{} NOT modified!", store );
                response = notModified().build();
            }
        }
        catch ( final IndyWorkflowException e )
        {
            logger.error( e.getMessage(), e );
            response = formatResponse( e );
        }

        return response;
    }
@ ApiOperation ( "Update an existing store" ) @ ApiResponses ( { @ ApiResponse ( code = 200 , message = "The store was updated" ) , @ ApiResponse ( code = 400 , message = "The store specified in the body JSON didn't match the URL parameters" ) , } ) @ ApiImplicitParams ( { @ ApiImplicitParam ( allowMultiple = false , paramType = "body" , name = "body" , required = true , dataType = "org.commonjava.indy.model.core.ArtifactStore" , value = "The artifact store definition JSON" ) } ) @ Path ( "/{name}" ) @ PUT @ Consumes ( ApplicationContent . application_json ) public Response store ( final @ PathParam ( "packageType" ) String packageType , final @ ApiParam ( allowableValues = "hosted,group,remote" , required = true ) @ PathParam ( "type" ) String type , final @ ApiParam ( required = true ) @ PathParam ( "name" ) String name , final @ Context HttpServletRequest request , final @ Context SecurityContext securityContext ) { final StoreType st = StoreType . get ( type ) ; Response response = null ; String json = null ; try { json = IOUtils . toString ( request . getInputStream ( ) ) ; json = objectMapper . patchLegacyStoreJson ( json ) ; } catch ( final IOException e ) { final String message = "Failed to read " + st . getStoreClass ( ) . getSimpleName ( ) + " from request body." ; logger . error ( message , e ) ; response = formatResponse ( e , message ) ; } if ( response != null ) { return response ; } ArtifactStore store = null ; try { store = objectMapper . readValue ( json , st . getStoreClass ( ) ) ; } catch ( final IOException e ) { final String message = "Failed to parse " + st . getStoreClass ( ) . getSimpleName ( ) + " from request body." ; logger . error ( message , e ) ; response = formatResponse ( e , message ) ; } if ( response != null ) { return response ; } if ( ! packageType . equals ( store . getPackageType ( ) ) || st != store . getType ( ) || ! name . equals ( store . getName ( ) ) ) { response = Response . status ( Status . BAD_REQUEST ) . entity ( String . format ( "Store in URL path is: '%s' but in JSON it is: '%s'" , new StoreKey ( packageType , st , name ) , store . getKey ( ) ) ) . build ( ) ; } try { String user = securityManager . getUser ( securityContext , request ) ; logger . info ( "Storing: {}" , store ) ; if ( adminController . store ( store , user , false ) ) { response = ok ( ) . build ( ) ; } else { logger . warn ( "{} NOT modified!" , store ) ; response = notModified ( ) . build ( ) ; } } catch ( final IndyWorkflowException e ) { logger . error ( e . getMessage ( ) , e ) ; response = formatResponse ( e ) ; } return response ; }
/*
(non-Javadoc)
@see org.commonjava.indy.core.rest.admin.DeployPointAdminResource#store(java.lang.String)
/ * ( non - Javadoc )