class ClientCacheGetOrCreateWithConfigurationRequest extends ClientRequest {
    /** Cache configuration. */
    private final CacheConfiguration cacheCfg;

    /**
     * Constructor.
     *
     * @param reader Reader.
     * @param protocolCtx Client protocol context.
     */
    public ClientCacheGetOrCreateWithConfigurationRequest(BinaryRawReader reader, ClientProtocolContext protocolCtx) {
        super(reader);

        cacheCfg = ClientCacheConfigurationSerializer.read(reader, protocolCtx);
    }

    /** {@inheritDoc} */
    @Override public ClientResponse process(ClientConnectionContext ctx) {<FILL_FUNCTION_BODY>}
}

        checkClientCacheConfiguration(cacheCfg);

        try {
            ctx.kernalContext().grid().getOrCreateCache(cacheCfg);
        }
        catch (CacheExistsException e) {
            throw new IgniteClientException(ClientStatus.CACHE_EXISTS, e.getMessage());
        }

        return super.process(ctx);
    
<methods>public void <init>(org.apache.ignite.binary.BinaryRawReader) ,public void <init>(long) ,public boolean isAsync(org.apache.ignite.internal.processors.platform.client.ClientConnectionContext) ,public org.apache.ignite.internal.processors.platform.client.ClientResponse process(org.apache.ignite.internal.processors.platform.client.ClientConnectionContext) ,public IgniteInternalFuture<org.apache.ignite.internal.processors.platform.client.ClientResponse> processAsync(org.apache.ignite.internal.processors.platform.client.ClientConnectionContext) ,public long requestId() <variables>private final non-sealed long reqId