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}