You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2013/10/01 21:46:04 UTC
svn commit: r1528188 - in /directory/escimo/branches/json-schema-experiment:
./ client/ client/src/main/java/org/apache/directory/scim/
client/src/main/resources/ common/ common/src/main/resources/ json2java/
json2java/src/ json2java/src/main/ json2jav...
Author: kayyagari
Date: Tue Oct 1 19:46:03 2013
New Revision: 1528188
URL: http://svn.apache.org/r1528188
Log:
o new module for holding the default schema files
o maven plugin to generate java sources from json schema
Added:
directory/escimo/branches/json-schema-experiment/json2java/
directory/escimo/branches/json-schema-experiment/json2java/pom.xml
directory/escimo/branches/json-schema-experiment/json2java/src/
directory/escimo/branches/json-schema-experiment/json2java/src/main/
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/AttributeDetail.java
- copied unchanged from r1527303, directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/AttributeDetail.java
directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/JsonToJava.java
- copied, changed from r1527303, directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/JsonToJava.java
directory/escimo/branches/json-schema-experiment/json2java/src/main/resources/
directory/escimo/branches/json-schema-experiment/json2java/src/main/resources/resource-class.st
- copied unchanged from r1527303, directory/escimo/branches/json-schema-experiment/client/src/main/resources/resource-class.st
directory/escimo/branches/json-schema-experiment/json2java/src/test/
directory/escimo/branches/json-schema-experiment/json2java/src/test/java/
directory/escimo/branches/json-schema-experiment/json2java/src/test/java/org/
directory/escimo/branches/json-schema-experiment/json2java/src/test/java/org/apache/
directory/escimo/branches/json-schema-experiment/json2java/src/test/java/org/apache/directory/
directory/escimo/branches/json-schema-experiment/json2java/src/test/java/org/apache/directory/scim/
directory/escimo/branches/json-schema-experiment/schema/
directory/escimo/branches/json-schema-experiment/schema/pom.xml
directory/escimo/branches/json-schema-experiment/schema/src/
directory/escimo/branches/json-schema-experiment/schema/src/main/
directory/escimo/branches/json-schema-experiment/schema/src/main/java/
directory/escimo/branches/json-schema-experiment/schema/src/main/resources/
directory/escimo/branches/json-schema-experiment/schema/src/main/resources/enterprise-user-schema.json
- copied unchanged from r1525389, directory/escimo/branches/json-schema-experiment/common/src/main/resources/enterprise-user-schema.json
directory/escimo/branches/json-schema-experiment/schema/src/main/resources/group-schema.json
- copied unchanged from r1525389, directory/escimo/branches/json-schema-experiment/common/src/main/resources/group-schema.json
directory/escimo/branches/json-schema-experiment/schema/src/main/resources/user-schema.json
- copied unchanged from r1525389, directory/escimo/branches/json-schema-experiment/common/src/main/resources/user-schema.json
Removed:
directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/AttributeDetail.java
directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/JsonToJava.java
directory/escimo/branches/json-schema-experiment/client/src/main/resources/resource-class.st
directory/escimo/branches/json-schema-experiment/common/src/main/resources/enterprise-user-schema.json
directory/escimo/branches/json-schema-experiment/common/src/main/resources/group-schema.json
directory/escimo/branches/json-schema-experiment/common/src/main/resources/user-schema.json
Modified:
directory/escimo/branches/json-schema-experiment/client/pom.xml
directory/escimo/branches/json-schema-experiment/common/pom.xml
directory/escimo/branches/json-schema-experiment/pom.xml
Modified: directory/escimo/branches/json-schema-experiment/client/pom.xml
URL: http://svn.apache.org/viewvc/directory/escimo/branches/json-schema-experiment/client/pom.xml?rev=1528188&r1=1528187&r2=1528188&view=diff
==============================================================================
--- directory/escimo/branches/json-schema-experiment/client/pom.xml (original)
+++ directory/escimo/branches/json-schema-experiment/client/pom.xml Tue Oct 1 19:46:03 2013
@@ -29,6 +29,12 @@
<dependencies>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>escimo-schema</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.wink</groupId>
<artifactId>wink-client</artifactId>
<version>${wink.version}</version>
@@ -39,12 +45,31 @@
<artifactId>escimo-common</artifactId>
<version>${project.version}</version>
</dependency>
-
- <dependency>
- <groupId>org.antlr</groupId>
- <artifactId>stringtemplate</artifactId>
- <version>3.2.1</version>
- </dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.directory.scim</groupId>
+ <artifactId>escimo-json2java</artifactId>
+ <version>${project.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <generatePackage>escimo</generatePackage>
+ <useDefaultSchemas>true</useDefaultSchemas>
+<!-- <schemaFiles>
+ <param>**/*.java</param>
+ </schemaFiles>
+ --> </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
Modified: directory/escimo/branches/json-schema-experiment/common/pom.xml
URL: http://svn.apache.org/viewvc/directory/escimo/branches/json-schema-experiment/common/pom.xml?rev=1528188&r1=1528187&r2=1528188&view=diff
==============================================================================
--- directory/escimo/branches/json-schema-experiment/common/pom.xml (original)
+++ directory/escimo/branches/json-schema-experiment/common/pom.xml Tue Oct 1 19:46:03 2013
@@ -29,6 +29,12 @@
<name>eSCIMo common API</name>
<dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>escimo-schema</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<!-- for the lack of any API spec jar for jax-rs 2.0 including Wink server in common -->
<dependency>
<groupId>org.apache.wink</groupId>
@@ -38,7 +44,6 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
- <version>2.2.4</version>
</dependency>
</dependencies>
Added: directory/escimo/branches/json-schema-experiment/json2java/pom.xml
URL: http://svn.apache.org/viewvc/directory/escimo/branches/json-schema-experiment/json2java/pom.xml?rev=1528188&view=auto
==============================================================================
--- directory/escimo/branches/json-schema-experiment/json2java/pom.xml (added)
+++ directory/escimo/branches/json-schema-experiment/json2java/pom.xml Tue Oct 1 19:46:03 2013
@@ -0,0 +1,126 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.directory.scim</groupId>
+ <artifactId>escimo</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>escimo-json2java</artifactId>
+ <packaging>maven-plugin</packaging>
+ <name>eSCIMo json2java compiler plugin</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>escimo-schema</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>stringtemplate</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.2.4</version>
+ </dependency>
+
+<!-- <dependency>
+ <groupId>net.sf.corn</groupId>
+ <artifactId>corn-cps</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+ -->
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <version>3.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>3.0.8</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>3.2</version>
+ <configuration>
+ <goalPrefix>json2java</goalPrefix>
+ <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+ </configuration>
+ <executions>
+ <execution>
+ <id>mojo-descriptor</id>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>help-goal</id>
+ <goals>
+ <goal>helpmojo</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <profile>
+ <id>run-its</id>
+ <build>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>1.7</version>
+ <configuration>
+ <debug>true</debug>
+ <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
+ <pomIncludes>
+ <pomInclude>*/pom.xml</pomInclude>
+ </pomIncludes>
+ <postBuildHookScript>verify</postBuildHookScript>
+ <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
+ <settingsFile>src/it/settings.xml</settingsFile>
+ <goals>
+ <goal>clean</goal>
+ <goal>test-compile</goal>
+ </goals>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>install</goal>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ </build>
+ </profile>
+ </profiles>
+</project>
Copied: directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/JsonToJava.java (from r1527303, directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/JsonToJava.java)
URL: http://svn.apache.org/viewvc/directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/JsonToJava.java?p2=directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/JsonToJava.java&p1=directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/JsonToJava.java&r1=1527303&r2=1528188&rev=1528188&view=diff
==============================================================================
--- directory/escimo/branches/json-schema-experiment/client/src/main/java/org/apache/directory/scim/JsonToJava.java (original)
+++ directory/escimo/branches/json-schema-experiment/json2java/src/main/java/org/apache/directory/scim/JsonToJava.java Tue Oct 1 19:46:03 2013
@@ -21,20 +21,31 @@ package org.apache.directory.scim;
import java.io.BufferedReader;
-import java.io.FileReader;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.antlr.stringtemplate.StringTemplate;
import org.antlr.stringtemplate.StringTemplateGroup;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
+import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIConversion.User;
/**
@@ -42,25 +53,181 @@ import com.google.gson.JsonParser;
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
-public class JsonToJava
+@Mojo(name = "generate")
+public class JsonToJava extends AbstractMojo
{
+ @Parameter(defaultValue = "org.apache.directory.scim")
+ private String generatePackage;
+
+ @Parameter
+ private URL schemaBaseUrl;
+
+ @Parameter
+ private List<String> schemaFiles;
+
+ @Parameter
+ private boolean useDefaultSchemas;
+
+ @Parameter(defaultValue = "${project.build.directory}")
+ protected File targetDirectory;
+
private static StringTemplateGroup stg = new StringTemplateGroup( "json" );
-
- public static void compile( String schema )
+
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException
+ {
+ Log log = getLog();
+
+ getLog().warn( "===============" + JsonToJava.class.getName() );
+
+ if ( useDefaultSchemas && ( ( schemaBaseUrl != null ) || ( schemaFiles != null ) ) )
+ {
+ String msg = "Conflicting configuration options. schemaBaseUrl or schemaFiles cannot be specified when useDefaultSchemas is set to true";
+ log.warn( msg );
+ throw new MojoFailureException( msg );
+ }
+
+ String packageDirPath = generatePackage.replace( ".", "/" );
+
+ File srcDir = new File( targetDirectory, "generated-sources/json2java/" + packageDirPath );
+
+ log.debug( "Creating directories for storing generated source files" );
+
+ if( !srcDir.exists() )
+ {
+ boolean created = srcDir.mkdirs();
+ if ( !created )
+ {
+ String msg = "Failed to create the directory " + srcDir.getAbsolutePath()
+ + " to store the generated source files";
+ log.warn( msg );
+ throw new MojoFailureException( msg );
+ }
+ }
+
+ List<URL> lst = null;
+
+ if ( useDefaultSchemas )
+ {
+ log.info( "Generating sources for the default schemas" );
+ lst = getDefaultSchemas();
+
+ if ( lst.isEmpty() )
+ {
+ throw new MojoFailureException( "None of the default schemas found in the classpath" );
+ }
+ }
+
+ for ( URL url : lst )
+ {
+ String schemaJson = getSchemaJson( url );
+ compileAndSave( schemaJson, srcDir );
+ }
+ }
+
+
+ private String getSchemaJson( URL url ) throws MojoExecutionException
+ {
+ BufferedReader br = null;
+ try
+ {
+ getLog().debug( "Fetching the contents of the resource at URL " + url );
+ br = new BufferedReader( new InputStreamReader( url.openStream() ) );
+
+ String s;
+
+ StringBuilder sb = new StringBuilder();
+ while ( ( s = br.readLine() ) != null )
+ {
+ sb.append( s );
+ }
+
+ return sb.toString();
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Failed to read schema data from the URL " + url, e );
+ }
+ finally
+ {
+ if ( br != null )
+ {
+ try
+ {
+ br.close();
+ }
+ catch ( IOException e )
+ {
+ // ignore
+ }
+ }
+ }
+ }
+
+
+ private List<URL> getDefaultSchemas()
+ {
+ String[] stockNames =
+ { "user-schema.json", "group-schema.json", "enterprise-user-schema.json" };
+ List<URL> lst = new ArrayList<URL>();
+
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ for ( String s : stockNames )
+ {
+ URL u = cl.getResource( s );
+ lst.add( u );
+ }
+
+ return lst;
+ }
+
+
+ public void compileAndSave( String schema, File srcDir ) throws MojoExecutionException
{
JsonParser parser = new JsonParser();
JsonObject json = ( JsonObject ) parser.parse( schema );
- List<String> innerClasses = new ArrayList<String>();
+ String className = json.get( "name" ).getAsString();
+ List<String> innerClasses = new ArrayList<String>();
+
StringTemplate template = generateClass( json, innerClasses, null );
template.setAttribute( "allInnerClasses", innerClasses );
-
+
System.out.println( template );
+
+ File javaFile = new File( srcDir, className + ".java" );
+
+ FileWriter fw = null;
+
+ try
+ {
+ fw = new FileWriter( javaFile );
+ fw.write( template.toString() );
+ }
+ catch( IOException e )
+ {
+ throw new MojoExecutionException( "Failed to store the generated source file for schema " + className, e );
+ }
+ finally
+ {
+ if ( fw != null )
+ {
+ try
+ {
+ fw.close();
+ }
+ catch ( IOException e )
+ {
+ // ignore
+ }
+ }
+ }
}
-
- private static StringTemplate generateClass( JsonObject json, List<String> innerClasses, StringTemplate parent )
+
+ private StringTemplate generateClass( JsonObject json, List<String> innerClasses, StringTemplate parent )
{
StringTemplate template = stg.getInstanceOf( "resource-class" );
@@ -69,7 +236,7 @@ public class JsonToJava
String schemaId = json.get( "id" ).getAsString();
template.setAttribute( "schemaId", schemaId );
- template.setAttribute( "package", "org.apache.directory.scim" );
+ template.setAttribute( "package", generatePackage );
template.setAttribute( "visibility", "public" );
@@ -77,7 +244,7 @@ public class JsonToJava
template.setAttribute( "resourceDesc", desc );
}
- if( parent != null )
+ if ( parent != null )
{
template.setAttribute( "static", "static" );
}
@@ -87,10 +254,9 @@ public class JsonToJava
List<AttributeDetail> simpleAttributes = new ArrayList<AttributeDetail>();
-
JsonArray attributes;
-
- if( json.has( "attributes" ) )
+
+ if ( json.has( "attributes" ) )
{
attributes = json.get( "attributes" ).getAsJsonArray();
}
@@ -117,34 +283,46 @@ public class JsonToJava
javaType = "boolean";
}
+ boolean multiValued = false;
+
if ( type.equals( "complex" ) )
{
javaType = Character.toUpperCase( name.charAt( 0 ) ) + name.substring( 1 );
-
- if( javaType.endsWith( "s" ) )
+
+ if ( javaType.endsWith( "s" ) )
{
- javaType = javaType.substring( 0, javaType.length() - 1 );
+ int endPos = javaType.length() - 1;
+
+ // special case for Address'es'
+ if ( javaType.endsWith( "Addresses" ) )
+ {
+ endPos += 1;
+ }
+
+ javaType = javaType.substring( 0, endPos );
}
-
+
// replace the type's name
jo.remove( "name" );
jo.addProperty( "name", javaType );
-
+
javaType = className + "." + javaType;
-
- boolean multiValued = jo.get( "multiValued" ).getAsBoolean();
-
+
+ multiValued = jo.get( "multiValued" ).getAsBoolean();
+
if ( multiValued )
{
javaType = "java.util.List<" + javaType + ">";
}
-
+
//how to add inner classes
StringTemplate inner = generateClass( jo, innerClasses, template );
innerClasses.add( inner.toString() );
}
AttributeDetail nc = new AttributeDetail( name, javaType );
+ nc.setMultiValued( multiValued );
+
simpleAttributes.add( nc );
}
@@ -153,11 +331,50 @@ public class JsonToJava
return template;
}
+
+ /**
+ * @param generatePackage the generatePackage to set
+ */
+ public void setGeneratePackage( String generatePackage )
+ {
+ this.generatePackage = generatePackage;
+ }
+
+
+ /**
+ * @param schemaBaseUrl the schemaBaseUrl to set
+ */
+ public void setSchemaBaseUrl( URL schemaBaseUrl )
+ {
+ this.schemaBaseUrl = schemaBaseUrl;
+ }
+
+
+ /**
+ * @param schemaFiles the schemaFiles to set
+ */
+ public void setSchemaFiles( List<String> schemaFiles )
+ {
+ this.schemaFiles = schemaFiles;
+ }
+
+
+ /**
+ * @param stg the stg to set
+ */
+ public static void setStg( StringTemplateGroup stg )
+ {
+ JsonToJava.stg = stg;
+ }
+
+
public static void main( String[] args ) throws Exception
{
- //InputStream in = JsonToJava.class.getClassLoader().getSystemClassLoader().getResourceAsStream( "user-schema.json" );
- BufferedReader br = new BufferedReader( new FileReader(
- "/Users/dbugger/projects/json-schema-escimo/common/src/main/resources/user-schema.json" ) );
+ InputStream in = JsonToJava.class.getClassLoader().getResourceAsStream( "example-user.json" );
+ BufferedReader br = new BufferedReader( new InputStreamReader( in ) );
+
+ // BufferedReader br = new BufferedReader( new FileReader(
+ // "/Users/dbugger/projects/json-schema-escimo/common/src/main/resources/user-schema.json" ) );
String s;
StringBuilder sb = new StringBuilder();
@@ -166,6 +383,11 @@ public class JsonToJava
sb.append( s );
}
- JsonToJava.compile( sb.toString() );
+ // JsonToJava.compile( sb.toString() );
+ Gson gson = new Gson();
+
+ String json = sb.toString();
+ User u = gson.fromJson( json, User.class );
+ System.out.println( u );
}
}
Modified: directory/escimo/branches/json-schema-experiment/pom.xml
URL: http://svn.apache.org/viewvc/directory/escimo/branches/json-schema-experiment/pom.xml?rev=1528188&r1=1528187&r2=1528188&view=diff
==============================================================================
--- directory/escimo/branches/json-schema-experiment/pom.xml (original)
+++ directory/escimo/branches/json-schema-experiment/pom.xml Tue Oct 1 19:46:03 2013
@@ -37,6 +37,8 @@
<module>client</module>
<module>ldap</module>
<module>tests</module>
+ <module>json2java</module>
+ <module>schema</module>
</modules>
<dependencyManagement>
@@ -46,6 +48,11 @@
<artifactId>wink-client</artifactId>
<version>${wink.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.2.4</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -76,4 +83,4 @@
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
Added: directory/escimo/branches/json-schema-experiment/schema/pom.xml
URL: http://svn.apache.org/viewvc/directory/escimo/branches/json-schema-experiment/schema/pom.xml?rev=1528188&view=auto
==============================================================================
--- directory/escimo/branches/json-schema-experiment/schema/pom.xml (added)
+++ directory/escimo/branches/json-schema-experiment/schema/pom.xml Tue Oct 1 19:46:03 2013
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.directory.scim</groupId>
+ <artifactId>escimo</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>escimo-schema</artifactId>
+ <name>eSCIMo Schema Resources</name>
+ <dependencies>
+ </dependencies>
+</project>