001/*
002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Nuxeo - initial API and implementation
011 *
012 * $Id$
013 */
014
015package org.nuxeo.runtime.model;
016
017/**
018 * Empty implementation for a component.
019 *
020 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a>
021 */
022public class DefaultComponent implements Component, Adaptable {
023
024    /**
025     * @since 5.6
026     */
027    protected Long lastModified;
028
029    @Override
030    public void activate(ComponentContext context) {
031        setModifiedNow();
032    }
033
034    @Override
035    public void deactivate(ComponentContext context) {
036        setModifiedNow();
037    }
038
039    @Override
040    public void registerExtension(Extension extension) {
041        Object[] contribs = extension.getContributions();
042        if (contribs == null) {
043            return;
044        }
045        for (Object contrib : contribs) {
046            registerContribution(contrib, extension.getExtensionPoint(), extension.getComponent());
047        }
048        setModifiedNow();
049    }
050
051    @Override
052    public void unregisterExtension(Extension extension) {
053        Object[] contribs = extension.getContributions();
054        if (contribs == null) {
055            return;
056        }
057        for (Object contrib : contribs) {
058            unregisterContribution(contrib, extension.getExtensionPoint(), extension.getComponent());
059        }
060        setModifiedNow();
061    }
062
063    public void registerContribution(Object contribution, String extensionPoint, ComponentInstance contributor) {
064    }
065
066    public void unregisterContribution(Object contribution, String extensionPoint, ComponentInstance contributor) {
067    }
068
069    @Override
070    public <T> T getAdapter(Class<T> adapter) {
071        return adapter.cast(this);
072    }
073
074    @Override
075    public int getApplicationStartedOrder() {
076        return 1000;
077    }
078
079    @Override
080    public void applicationStarted(ComponentContext context) {
081        // do nothing by default
082    }
083
084    /**
085     * Sets the last modified date to current date timestamp
086     *
087     * @since 5.6
088     */
089    protected void setModifiedNow() {
090        setLastModified(Long.valueOf(System.currentTimeMillis()));
091    }
092
093    @Override
094    public Long getLastModified() {
095        return lastModified;
096    }
097
098    @Override
099    public void setLastModified(Long lastModified) {
100        this.lastModified = lastModified;
101    }
102}