/**
 *
 * Copyright (c) 2006-2015, Speedment, Inc. All Rights Reserved.
 *
 * Licensed 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 com.speedment.core.platform;

import com.speedment.core.platform.component.Component;
import com.speedment.core.annotations.Api;
import com.speedment.core.platform.component.impl.DbmsHandlerComponentImpl;
import com.speedment.core.platform.component.impl.DefaultClassMapper;
import com.speedment.core.platform.component.impl.EntityManagerImpl;
import com.speedment.core.platform.component.impl.JavaTypeMapperComponentImpl;
import com.speedment.core.platform.component.impl.LoggerFactoryComponentImpl;
import com.speedment.core.platform.component.impl.ManagerComponentImpl;
import com.speedment.core.platform.component.impl.PrimaryKeyFactoryComponentImpl;
import com.speedment.core.platform.component.impl.ProjectComponentImpl;
import com.speedment.core.platform.component.impl.SqlTypeMapperComponentImpl;

/**
 *
 * @author pemi
 */
public final class Platform extends DefaultClassMapper<Component> {

    //private final Logger logger = LogManager.getLogger(getClass());
    private Platform() {
        add(new ManagerComponentImpl());
        add(new ProjectComponentImpl());
        add(new PrimaryKeyFactoryComponentImpl());
        add(new DbmsHandlerComponentImpl());
        add(new SqlTypeMapperComponentImpl());
        add(new JavaTypeMapperComponentImpl());
        add(new EntityManagerImpl());
        add(new LoggerFactoryComponentImpl());
    }

    /**
     * Returns the Platform singleton.
     *
     * @return the Platform singleton
     */
    public static Platform get() {
        return PlatformHolder.INSTANCE;
    }

    /**
     * Gets a Platform Component based on its interface class.
     * <p>
     * Supported interfaces:      
     *     {@link com.speedment.core.platform.component.EntityManager}
     *     {@link com.speedment.core.platform.component.DbmsHandlerComponent}
     *     {@link com.speedment.core.platform.component.ManagerComponent}
     *     {@link com.speedment.core.platform.component.PrimaryKeyFactoryComponent}
     *     {@link com.speedment.core.platform.component.ProjectComponent}
     *     {@link com.speedment.core.platform.component.SqlTypeMapperComponent}
     *     {@link com.speedment.core.platform.component.LoggerFactoryComponent}
     *
     * @param <R> The intended return type
     * @param clazz The class of the intended return type
     * @return The currently mapped instance
     */
    @Override
    public <R extends Component> R get(Class<R> clazz) {
        return super.get(clazz);
    }

    @Override
    @Api(version = 0)
    public Component add(Component item) {
        return add(item, Component::onAdd, Component::onRemove, Component::getComponentClass);
    }

    private static class PlatformHolder {

        private static final Platform INSTANCE = new Platform();
    }
}

@@ -1538,78 +1538,8 @@
  %7B%0A%0A
-    //private final Logger logger = LogManager.getLogger(getClass());%0A
     
@@ -1555,24 +1555,24 @@
 latform() %7B%0A
+
         add(
@@ -2195,17 +2195,21 @@
 %0A     * 
-S
+The s
 upported
@@ -2209,16 +2209,25 @@
 pported 
+standard 
 interfac
@@ -2232,23 +2232,33 @@
 aces
-:      
+ are:%0A     * %3Cul%3E
 %0A     * 
     
@@ -2245,36 +2245,36 @@
   * %3Cul%3E%0A     * 
-    
+%3Cli%3E
 %7B@link com.speed
@@ -2316,24 +2316,29 @@
 Manager%7D
+%3C/li%3E
 %0A     * 
     %7B@li
@@ -2321,36 +2321,36 @@
 er%7D%3C/li%3E%0A     * 
-    
+%3Cli%3E
 %7B@link com.speed
@@ -2395,32 +2395,37 @@
 erComponent%7D
+%3C/li%3E
 %0A     * 
     %7B@link c
@@ -2404,36 +2404,36 @@
 nt%7D%3C/li%3E%0A     * 
-    
+%3Cli%3E
 %7B@link com.speed
@@ -2474,32 +2474,37 @@
 erComponent%7D
+%3C/li%3E
 %0A     * 
     %7B@link c
@@ -2483,36 +2483,36 @@
 nt%7D%3C/li%3E%0A     * 
-    
+%3Cli%3E
 %7B@link com.speed
@@ -2563,32 +2563,37 @@
 ryComponent%7D
+%3C/li%3E
 %0A     * 
     %7B@link c
@@ -2572,36 +2572,36 @@
 nt%7D%3C/li%3E%0A     * 
-    
+%3Cli%3E
 %7B@link com.speed
@@ -2642,32 +2642,37 @@
 ctComponent%7D
+%3C/li%3E
 %0A     * 
     %7B@link c
@@ -2651,36 +2651,36 @@
 nt%7D%3C/li%3E%0A     * 
-    
+%3Cli%3E
 %7B@link com.speed
@@ -2731,24 +2731,29 @@
 mponent%7D
+%3C/li%3E
 %0A     * 
     %7B@li
@@ -2744,20 +2744,20 @@
 %0A     * 
-    
+%3Cli%3E
 %7B@link c
@@ -2816,16 +2816,120 @@
 mponent%7D
+%3C/li%3E%0A     * %3Cli%3E%7B@link com.speedment.core.platform.component.JavaTypeMapperComponent%7D%3C/li%3E%0A     * %3C/ul%3E
 %0A     *%0A

Update JavaDoc