Fix issue Felix-813.
XML-Schemas are now embedded in the manipulator. The manipulator tries to use those files to validate the metadata.xml file. If a schema cannot be loaded "internally", the regular downloading process continue.
The internal resolution of schema can also be skipped by setting the ignoreEmbeddedSchemas parameter:
Ant: ignoreEmbeddedSchemas="true" attribute in the iPOJO task
Maven: <ignoreEmbeddedSchemas>true</ignoreEmbeddedSchemas> in the iPOJO plugin configuration
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@712637 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/manipulator/src/main/resources/jmx.xsd b/ipojo/manipulator/src/main/resources/jmx.xsd
new file mode 100644
index 0000000..80152e9
--- /dev/null
+++ b/ipojo/manipulator/src/main/resources/jmx.xsd
@@ -0,0 +1,177 @@
+<!--
+ 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.
+-->
+<xs:schema targetNamespace="org.apache.felix.ipojo.handlers.jmx"
+ xmlns="org.apache.felix.ipojo.handlers.jmx"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified">
+ <xs:element name="config" type="JMXType"></xs:element>
+
+ <xs:complexType name="JMXType">
+
+ <xs:annotation>
+ <xs:documentation>
+ Description of a JMX managed component.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="method" type="JMXMethod">
+ <xs:annotation>
+ <xs:documentation>
+ The list of methods to expose.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="property" type="JMXProperty">
+ <xs:annotation>
+ <xs:documentation>
+ The list of attributes to expose.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ <xs:attribute name="usesMOSGi" type="xs:boolean"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Determines if the component must be register on the
+ MOSGi MBean server or not.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="objectName" type="xs:string"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The complete object name of the managed component.
+ The syntax of this attribute must be compliant with
+ the ObjectName syntax, detailed in the JMX
+ specification. If neither domain nor name attributes
+ are specified, the default value is determined by
+ the package, the type and the instance name of the
+ component. This attribute overrides the domain and
+ name attributes.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="domain" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The domain of the managed object (i.e., the left
+ part of the object name). This attribute must be
+ compliant with the domain syntax, as described in
+ the JMX specification.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="name" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The name property of the managed object. The value
+ of this attribute must comply with the ObjectName
+ value syntax, as described in the JMX specification.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="preRegister" type="xs:string"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies method to carry out operations before
+ beeing registered from the MBean server. The
+ signature of the specified method must be :
+ "ObjectName preRegister(MBeanServer server,
+ ObjectName name) throws Exception".
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="postRegister" type="xs:string"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies method to carry out operations after
+ beeing registered from the MBean server. The
+ signature of the specified method must be : "void
+ postRegister(Boolean registrationDone)".
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="preDeregister" type="xs:string"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies method to carry out operations before
+ beeing unregistered from the MBean server. The
+ signature of the specified method must be : "void
+ preDeregister() throws Exception".
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="postDeregister" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Specifies method to carry out operations after
+ beeing unregistered from the MBean server. The
+ signature of the specified method must be :
+ "void postDeregister()".</xs:documentation>
+ </xs:annotation></xs:attribute>
+ </xs:complexType>
+
+ <xs:complexType name="JMXProperty">
+ <xs:annotation>
+ <xs:documentation>Description of an attribute to expose.</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="field" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>The name of the component's field to expose.</xs:documentation></xs:annotation></xs:attribute>
+ <xs:attribute name="name" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>The name of the property as it will appear in JMX. If unspecified, the default value is the name of the exposed field.</xs:documentation></xs:annotation></xs:attribute>
+ <xs:attribute name="rights" use="optional">
+ <xs:annotation>
+ <xs:documentation>Specify the access permission of the exposed field.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>Access permission of an exposed field. Accepted values are "r" (read-only access, the default value) and "w" (read and write access).</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="r"></xs:enumeration>
+ <xs:enumeration value="w"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="notification" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>Enable or disable attribute change notification sending for this property. If set to "true", a notification is sent each time the value of the field changes.</xs:documentation></xs:annotation></xs:attribute>
+ </xs:complexType>
+
+ <xs:complexType name="JMXMethod">
+ <xs:annotation>
+ <xs:documentation>Description of a method to expose.</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="name" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>The name of the method to expose. If multiple methods have the same name, all of them are exposed.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="description" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>The description of the exposed method, as it will appear in JMX.</xs:documentation></xs:annotation></xs:attribute>
+ </xs:complexType>
+</xs:schema>
\ No newline at end of file