/******************************************************************************* * Copyright (c) 2008 Cambridge Semantics Incorporated. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * File: $Source$ * Created by: Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com </a>) * Created on: Aug 4, 2008 * Revision: $Id$ * * Contributors: * Cambridge Semantics Incorporated - initial API and implementation *******************************************************************************/ package org.openanzo.servlet.internal; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import org.openanzo.osgi.attributes.ServicesAttributes; import org.openanzo.servlet.attributes.ServletAttributes; import org.osgi.service.metatype.AttributeDefinition; import org.osgi.service.metatype.ObjectClassDefinition; /** * Abstract class def for servlets * * @author Matthew Roy ( <a href="mailto:mroy@cambridgesemantics.com">mroy@cambridgesemantics.com</a>) * */ public class BaseServletClassDef implements ObjectClassDefinition { ArrayList<AttributeDefinition> required = new ArrayList<AttributeDefinition>() { private static final long serialVersionUID = 1L; { this.add(ServicesAttributes.Enabled); this.add(ServletAttributes.AuthorizationType); this.add(ServletAttributes.ContextPath); this.add(ServletAttributes.PathSpec); } }; ArrayList<AttributeDefinition> optional = new ArrayList<AttributeDefinition>(); ArrayList<AttributeDefinition> all = null; private String name = null; private String pid = null; private String description = null; /** * Base classdef for servlet * * @param pid * pid for servlet * @param name * name of servlet * @param description * description of servlet * @param additionalRequired * additional required attributes that must be in config * @param additionalOptional * additional optional attributes that may be in config */ public BaseServletClassDef(String pid, String name, String description, Collection<AttributeDefinition> additionalRequired, Collection<AttributeDefinition> additionalOptional) { this.pid = pid; this.name = name; this.description = description; if (additionalRequired != null) this.required.addAll(additionalRequired); if (additionalOptional != null) this.optional.addAll(additionalOptional); all = new ArrayList<AttributeDefinition>() { private static final long serialVersionUID = 1L; { this.addAll(required); this.addAll(optional); } }; } public AttributeDefinition[] getAttributeDefinitions(int type) { switch (type) { case ObjectClassDefinition.ALL: return all.toArray(new AttributeDefinition[0]); case ObjectClassDefinition.REQUIRED: return required.toArray(new AttributeDefinition[0]); case ObjectClassDefinition.OPTIONAL: return optional.toArray(new AttributeDefinition[0]); default: return null; } } public String getDescription() { return description; } public String getID() { return pid; } public InputStream getIcon(int arg0) throws IOException { return null; } public String getName() { return name; } }