| /* |
| * 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.felix.scrplugin; |
| |
| /** |
| * An enumeration for all available spec versions. |
| * |
| * The versions in the enumeration have to be ordered, higher versions must have |
| * a higher ordinal. |
| */ |
| public enum SpecVersion { |
| |
| VERSION_1_0("1.0", "http://www.osgi.org/xmlns/scr/v1.0.0"), // R4.1 |
| VERSION_1_1("1.1", "http://www.osgi.org/xmlns/scr/v1.1.0"), // R4.2 |
| VERSION_1_1_FELIX("1.1_FELIX", "http://felix.apache.org/xmlns/scr/v1.1.0-felix"), // R4.2 + FELIX-1893 |
| VERSION_1_2("1.2", "http://www.osgi.org/xmlns/scr/v1.2.0"); // R4.3 |
| |
| /** |
| * internal human readable name |
| */ |
| private final String name; |
| |
| /** |
| * Namespace url |
| */ |
| private final String namespaceUrl; |
| |
| /** |
| * Create a type |
| * |
| * @param name A human readable name |
| * @param namespaceUrl The namespace URL for this spec version |
| */ |
| private SpecVersion(final String name, final String namespaceUrl) { |
| this.name = name; |
| this.namespaceUrl = namespaceUrl; |
| } |
| |
| /** |
| * Returns the human readable type name of this type. |
| * |
| * @return the name |
| */ |
| public String getName() { |
| return name; |
| } |
| |
| /** |
| * Return the namespace url. |
| * @return The namespace url. |
| */ |
| public String getNamespaceUrl() { |
| return this.namespaceUrl; |
| } |
| |
| /** |
| * Creates a version for the given name. If the name cannot be mapped |
| * to a enum type or if it's <code>null</code>, <code>null</code> is |
| * returned. |
| * |
| * @param n the name |
| * @return the type or <code>null</code> |
| */ |
| public static SpecVersion fromName(final String n) { |
| if (n == null) { |
| return null; |
| } |
| try { |
| return SpecVersion.valueOf(n.toUpperCase()); |
| } catch (final IllegalArgumentException e) { |
| // ignore |
| } |
| for(final SpecVersion sv : SpecVersion.values() ) { |
| if ( sv.getName().equals(n)) { |
| return sv; |
| } |
| } |
| return null; |
| } |
| |
| /** |
| * Creates a version for the given url. If the url cannot be mapped |
| * to a enum type or if it's <code>null</code>, <code>null</code> is |
| * returned. |
| * |
| * @param n the url |
| * @return the type or <code>null</code> |
| */ |
| public static SpecVersion fromNamespaceUrl(final String n) { |
| if (n == null) { |
| return null; |
| } |
| for(final SpecVersion sv : SpecVersion.values() ) { |
| if ( sv.getNamespaceUrl().equals(n)) { |
| return sv; |
| } |
| } |
| return null; |
| } |
| } |