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/08/10 20:13:46 UTC
svn commit: r1512812 - in /directory/escimo/trunk:
common/src/main/java/org/apache/directory/scim/
common/src/main/java/org/apache/directory/scim/util/
ldap/src/main/java/org/apache/directory/scim/ldap/ ldap/src/main/resources/
server/src/main/java/org...
Author: kayyagari
Date: Sat Aug 10 18:13:46 2013
New Revision: 1512812
URL: http://svn.apache.org/r1512812
Log:
o added meta attribute handler
o added support for deriving the location
Added:
directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/util/
directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/util/ResourceUtil.java
Modified:
directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/RequestContext.java
directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/User.java
directory/escimo/trunk/ldap/src/main/java/org/apache/directory/scim/ldap/LdapResourceProvider.java
directory/escimo/trunk/ldap/src/main/resources/escimo-ldap-mapping.xml
directory/escimo/trunk/server/src/main/java/org/apache/directory/scim/rest/UserService.java
Modified: directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/RequestContext.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/RequestContext.java?rev=1512812&r1=1512811&r2=1512812&view=diff
==============================================================================
--- directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/RequestContext.java (original)
+++ directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/RequestContext.java Sat Aug 10 18:13:46 2013
@@ -19,6 +19,8 @@
*/
package org.apache.directory.scim;
+import javax.ws.rs.core.UriInfo;
+
/**
* TODO RequestContext.
*
@@ -27,7 +29,7 @@ package org.apache.directory.scim;
public class RequestContext
{
private Object resourceConnection;
- //private Uri
+ private UriInfo uriInfo;
private User user;
@@ -50,5 +52,15 @@ public class RequestContext
{
this.user = user;
}
+
+ public UriInfo getUriInfo()
+ {
+ return uriInfo;
+ }
+
+ public void setUriInfo( UriInfo uriInfo )
+ {
+ this.uriInfo = uriInfo;
+ }
}
Modified: directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/User.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/User.java?rev=1512812&r1=1512811&r2=1512812&view=diff
==============================================================================
--- directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/User.java (original)
+++ directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/User.java Sat Aug 10 18:13:46 2013
@@ -33,6 +33,8 @@ public class User
{
private Map<String,List<AbstractAttribute>> uriAtMap = new HashMap<String, List<AbstractAttribute>>();
+ private String id;
+
public void addAttribute( String uri, AbstractAttribute at )
{
List<AbstractAttribute> atList = uriAtMap.get( uri );
@@ -51,6 +53,16 @@ public class User
return uriAtMap;
}
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
@Override
public String toString()
{
Added: directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/util/ResourceUtil.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/util/ResourceUtil.java?rev=1512812&view=auto
==============================================================================
--- directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/util/ResourceUtil.java (added)
+++ directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/util/ResourceUtil.java Sat Aug 10 18:13:46 2013
@@ -0,0 +1,70 @@
+/*
+ * 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.directory.scim.util;
+
+
+/**
+ * TODO ResourceUtil.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ResourceUtil
+{
+ public static String formatDate( String zTime )
+ {
+ //parse a value like 20120302164134Z to 2012-03-02T16:41:34Z
+ StringBuilder sb = new StringBuilder();
+ int start = 0;
+ int end = 4;
+ sb.append( zTime.substring( start, end ) )
+ .append( "-" );
+
+ start = end;
+ end += 2;
+ sb.append( zTime.substring( start, end ) )
+ .append( "-" );
+
+ start = end;
+ end += 2;
+ sb.append( zTime.substring( start, end ) )
+ .append( "-" );
+
+ sb.append( "T" );
+
+ start = end;
+ end += 2;
+ sb.append( zTime.substring( start, end ) )
+ .append( ":" );
+
+ start = end;
+ end += 2;
+ sb.append( zTime.substring( start, end ) )
+ .append( ":" );
+
+ start = end;
+ end += 2;
+ sb.append( zTime.substring( start, end ) );
+
+ sb.append( "Z" );
+
+ return sb.toString();
+ }
+
+}
Modified: directory/escimo/trunk/ldap/src/main/java/org/apache/directory/scim/ldap/LdapResourceProvider.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/ldap/src/main/java/org/apache/directory/scim/ldap/LdapResourceProvider.java?rev=1512812&r1=1512811&r2=1512812&view=diff
==============================================================================
--- directory/escimo/trunk/ldap/src/main/java/org/apache/directory/scim/ldap/LdapResourceProvider.java (original)
+++ directory/escimo/trunk/ldap/src/main/java/org/apache/directory/scim/ldap/LdapResourceProvider.java Sat Aug 10 18:13:46 2013
@@ -62,9 +62,9 @@ import org.apache.directory.ldap.client.
import org.apache.directory.ldap.client.api.LdapNetworkConnection;
import org.apache.directory.scim.AttributeHandler;
import org.apache.directory.scim.ComplexAttribute;
-import org.apache.directory.scim.RequestContext;
import org.apache.directory.scim.MultiValAttribute;
import org.apache.directory.scim.ProviderService;
+import org.apache.directory.scim.RequestContext;
import org.apache.directory.scim.ResourceNotFoundException;
import org.apache.directory.scim.SimpleAttribute;
import org.apache.directory.scim.SimpleAttributeGroup;
@@ -77,6 +77,7 @@ import org.apache.directory.scim.ldap.sc
import org.apache.directory.scim.ldap.schema.TypedType;
import org.apache.directory.scim.ldap.schema.UserSchema;
import org.apache.directory.scim.schema.BaseType;
+import org.apache.directory.scim.util.ResourceUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -222,6 +223,13 @@ public class LdapResourceProvider implem
ctx.setUser( user );
+ // first fill in the id, we need this for deriving location
+ SimpleType idType = ( SimpleType ) userSchema.getCoreAttribute( "id" );
+ SimpleAttribute idAttribute = getValueForSimpleType( idType, entry, ctx );
+ user.addAttribute( idType.getUri(), idAttribute );
+
+ user.setId( ( String ) idAttribute.getValue() );
+
for ( BaseType bt : coreTypes )
{
if ( bt instanceof SimpleType )
@@ -233,6 +241,12 @@ public class LdapResourceProvider implem
continue;
}
+ // skip id attribute, it was already added above
+ if( st == idType )
+ {
+ continue;
+ }
+
SimpleAttribute at = getValueForSimpleType( st, entry, ctx );
if ( at != null )
{
@@ -511,7 +525,7 @@ public class LdapResourceProvider implem
}
else if ( sc instanceof GeneralizedTimeSyntaxChecker )
{
- return formatDate( ldapValue.getString() );
+ return ResourceUtil.formatDate( ldapValue.getString() );
}
}
@@ -519,46 +533,6 @@ public class LdapResourceProvider implem
}
- public String formatDate( String zTime )
- {
- //parse a value like 20120302164134Z to 2012-03-02T16:41:34Z
- StringBuilder sb = new StringBuilder();
- int start = 0;
- int end = 4;
- sb.append( zTime.substring( start, end ) )
- .append( "-" );
-
- start = end;
- end += 2;
- sb.append( zTime.substring( start, end ) )
- .append( "-" );
-
- start = end;
- end += 2;
- sb.append( zTime.substring( start, end ) )
- .append( "-" );
-
- sb.append( "T" );
-
- start = end;
- end += 2;
- sb.append( zTime.substring( start, end ) )
- .append( ":" );
-
- start = end;
- end += 2;
- sb.append( zTime.substring( start, end ) )
- .append( ":" );
-
- start = end;
- end += 2;
- sb.append( zTime.substring( start, end ) );
-
- sb.append( "Z" );
-
- return sb.toString();
- }
-
// public List<SimpleAttribute> getValuesInto( SimpleTypeGroup stg, RequestContext ctx ) throws LdapException
// {
Modified: directory/escimo/trunk/ldap/src/main/resources/escimo-ldap-mapping.xml
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/ldap/src/main/resources/escimo-ldap-mapping.xml?rev=1512812&r1=1512811&r2=1512812&view=diff
==============================================================================
--- directory/escimo/trunk/ldap/src/main/resources/escimo-ldap-mapping.xml (original)
+++ directory/escimo/trunk/ldap/src/main/resources/escimo-ldap-mapping.xml Sat Aug 10 18:13:46 2013
@@ -76,12 +76,7 @@
</at-group>
</multival-attribute>
- <complex-attribute name="meta">
- <at-group>
- <attribute name="created" mappedTo="createTimestamp" />
- <attribute name="lastModified" mappedTo="lastModifiedTimestamp" />
- </at-group>
- </complex-attribute>
+ <complex-attribute name="meta" handlerRef="metaHandler" />
</schema>
@@ -112,5 +107,7 @@
<atHandlers>
<handler name="activeHandler"
class="org.apache.directory.scim.ldap.handlers.ActiveAttributeHandler" />
+ <handler name="metaHandler"
+ class="org.apache.directory.scim.ldap.handlers.MetaAttributeHandler" />
</atHandlers>
</entities>
\ No newline at end of file
Modified: directory/escimo/trunk/server/src/main/java/org/apache/directory/scim/rest/UserService.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/server/src/main/java/org/apache/directory/scim/rest/UserService.java?rev=1512812&r1=1512811&r2=1512812&view=diff
==============================================================================
--- directory/escimo/trunk/server/src/main/java/org/apache/directory/scim/rest/UserService.java (original)
+++ directory/escimo/trunk/server/src/main/java/org/apache/directory/scim/rest/UserService.java Sat Aug 10 18:13:46 2013
@@ -55,6 +55,7 @@ public class UserService
try
{
RequestContext ctx = new RequestContext();
+ ctx.setUriInfo( uriInfo );
User user = provider.getUser( ctx, userId );
String json = ResourceSerializer.serialize( user );