[ 
https://issues.apache.org/jira/browse/OAK-3390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14738974#comment-14738974
 ] 

Julian Reschke commented on OAK-3390:
-------------------------------------

Proposed interface:

{code}
/*
 * 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.jackrabbit.oak.commons;

/**
 * Identifies objects which can be adapted to other types or representations of 
the same object.
 * <p>
 * <em>Inspired by Apache Sling's Adaptable and Java SQL's Wrapper 
interfaces.</em>
 */
public interface Adaptable {

    /**
     * Checks whether the adaptable can be converted to the specified type.
     * 
     * @param type
     *            The generic type to check for
     * @return {@code true} if a call to {link {@link #adaptTo(Class)}} is
     *         likely to succeed
     */
    public boolean isAdaptable(Class<?> type);

    /**
     * Adapts the adaptable to another type.
     * <p>
     * Please note that it is explicitly left as an implementation detail
     * whether each call to this method with the same type yields the same
     * object or a new object on each call.
     * <p>
     * Implementations of this method should document their adapted types as
     * well as their behavior with respect to returning newly created or not
     * instance on each call.
     * 
     * @param <AdapterType>
     *            The generic type to which this object is adapted to
     * @param type
     *            The generic type to which this object is adapted to
     * @return The adapter target or {@code null} if the object cannot adapt to
     *         the requested type
     */
    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type);
}
{code}

> Avoid instanceof check in DocumentNodeStore
> -------------------------------------------
>
>                 Key: OAK-3390
>                 URL: https://issues.apache.org/jira/browse/OAK-3390
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core, mongomk
>    Affects Versions: 1.3.4
>            Reporter: Marcel Reutegger
>             Fix For: 1.3.7
>
>
> The instanceof MongoDocumentStore check does not work anymore when the store 
> is wrapped with e.g. the LeaseCheckDocumentStoreWrapper.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to