Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 96875 invoked from network); 5 Sep 2010 17:14:27 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 5 Sep 2010 17:14:27 -0000 Received: (qmail 57951 invoked by uid 500); 5 Sep 2010 17:14:27 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 57908 invoked by uid 500); 5 Sep 2010 17:14:27 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 57901 invoked by uid 99); 5 Sep 2010 17:14:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 05 Sep 2010 17:14:27 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 05 Sep 2010 17:14:23 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 44FD42388AAA; Sun, 5 Sep 2010 17:14:03 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r992827 [4/4] - in /directory/sandbox/kayyagari/http-directory: ./ directory-http-ui/ directory-http-ui/src/ directory-http-ui/src/main/ directory-http-ui/src/main/java/ directory-http-ui/src/main/java/org/ directory-http-ui/src/main/java/o... Date: Sun, 05 Sep 2010 17:14:02 -0000 To: commits@directory.apache.org From: kayyagari@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100905171403.44FD42388AAA@eris.apache.org> Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/LdapResultCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/LdapResultCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/LdapResultCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/LdapResultCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,122 @@ +/* + * 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.server.codec.json; + + +import java.lang.reflect.Type; + +import org.apache.directory.shared.ldap.exception.LdapInvalidDnException; +import org.apache.directory.shared.ldap.message.LdapResultImpl; +import org.apache.directory.shared.ldap.message.ReferralImpl; +import org.apache.directory.shared.ldap.message.ResultCodeEnum; +import org.apache.directory.shared.ldap.name.DN; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO LdapResultSerializer. + * + * @author Apache Directory Project + */ +public class LdapResultCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String ERROR_MESSAGE = "errorMessage"; + private static final String MATCHED_DN = "matchedDn"; + private static final String RESULT_CODE = "resultCode"; + + + public JsonElement serialize( LdapResultImpl result, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject obj = new JsonObject(); + + if ( result.getMatchedDn() != null ) + { + obj.addProperty( MATCHED_DN, result.getMatchedDn().getName() ); + } + + if( result.getErrorMessage() != null ) + { + obj.addProperty( ERROR_MESSAGE, result.getErrorMessage() ); + } + + ResultCodeEnum code = result.getResultCode(); + int codeVal = -1; // for the cases where result code is null + + if ( code != null ) + { + codeVal = code.getValue(); + } + + obj.addProperty( RESULT_CODE, codeVal ); + + ReferralImpl referral = ( ReferralImpl ) result.getReferral(); + if ( referral != null ) + { + obj.addProperty( "referral", JsonBuilder.get().toJson( referral ) ); + } + + return obj; + } + + + public LdapResultImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + try + { + JsonObject json = element.getAsJsonObject(); + + LdapResultImpl result = new LdapResultImpl(); + + JsonElement matchedDn = json.get( MATCHED_DN ); + if( matchedDn != null ) + { + result.setMatchedDn( new DN( matchedDn.getAsString() ) ); + } + + int resultCodeVal = json.get( RESULT_CODE ).getAsInt(); + result.setResultCode( ResultCodeEnum.getResultCode( resultCodeVal ) ); + + JsonElement error = json.get( ERROR_MESSAGE ); + if( error != null ) + { + result.setErrorMessage( error.getAsString() ); + } + + //TODO yet to support Referrals + + return result; + } + catch( LdapInvalidDnException e ) + { + throw new JsonParseException( e ); + } + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/ValueCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/ValueCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/ValueCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/ValueCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,91 @@ +/* + * 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.server.codec.json; + +import java.lang.reflect.Type; + +import org.apache.directory.shared.ldap.entry.AbstractValue; +import org.apache.directory.shared.ldap.entry.BinaryValue; +import org.apache.directory.shared.ldap.entry.StringValue; +import org.apache.directory.shared.ldap.util.Base64; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +/** + * TODO StringValueCodec. + * + * @author Apache Directory Project + */ +public class ValueCodec implements JsonSerializer>, JsonDeserializer> +{ + + public AbstractValue deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + JsonElement binaryElement = json.get( "binary" ); + + boolean isBinary = false; + + if( binaryElement != null ) + { + isBinary = binaryElement.getAsBoolean(); + } + + String value = json.get( "value" ).getAsString(); + + if( isBinary ) + { + return new BinaryValue( Base64.decode( value.toCharArray() ) ); + } + + return new StringValue( value ); + } + + public JsonElement serialize( AbstractValue src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + if( src instanceof BinaryValue ) + { + String val = String.valueOf( Base64.encode( src.getBytes() ) ); + json.addProperty( "binary", true ); + json.addProperty( "value", val ); + } + else if( src instanceof StringValue ) + { + json.addProperty( "value", src.getString() ); + } + else + { + throw new IllegalArgumentException( "unrecogniged attribute value type " + src.getClass().getName() ); + } + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/add/AddRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/add/AddRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/add/AddRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/add/AddRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,71 @@ +/* + * 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.server.codec.json.operations.add; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.server.http.AppConstants; +import org.apache.directory.shared.ldap.entry.DefaultEntry; +import org.apache.directory.shared.ldap.message.AddRequestImpl; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO AddRequestCodec. + * + * @author Apache Directory Project + */ +public class AddRequestCodec implements JsonSerializer, JsonDeserializer +{ + + public AddRequestImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + AddRequestImpl req = new AddRequestImpl( json.get( AppConstants.MESSAGE_ID_KEY ).getAsInt() ); + + req.setEntry( JsonBuilder.fromJson( json.get( "entry" ), DefaultEntry.class ) ); + + return req; + } + + + public JsonElement serialize( AddRequestImpl src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + json.addProperty( AppConstants.MESSAGE_ID_KEY, src.getMessageId() ); + json.add( "entry", JsonBuilder.toJsonTree( src.getEntry() ) ); + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,108 @@ +/* + * 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.server.codec.json.operations.bind; + + +import java.lang.reflect.Type; + +import org.apache.directory.shared.ldap.exception.LdapInvalidDnException; +import org.apache.directory.shared.ldap.message.BindRequestImpl; +import org.apache.directory.shared.ldap.name.DN; +import org.apache.directory.shared.ldap.util.Base64; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO BindRequestDecoder. + * + * @author Apache Directory Project + */ +public class BindRequestCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String SIMPLE = "simple"; + private static final String MECHANISM = "mechanism"; + private static final String VERSION3 = "version3"; + private static final String CREDENTIALS = "credentials"; + private static final String NAME = "name"; + + + public JsonElement serialize( BindRequestImpl src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject jsonObj = new JsonObject(); + + jsonObj.addProperty( NAME, src.getName().getName() ); + jsonObj.addProperty( CREDENTIALS, String.valueOf( Base64.encode( src.getCredentials() ) ) ); + jsonObj.addProperty( VERSION3, src.getVersion3() ); + jsonObj.addProperty( MECHANISM, src.getSaslMechanism() ); + jsonObj.addProperty( SIMPLE, src.isSimple() ); + + return jsonObj; + } + + + public BindRequestImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + try + { + JsonObject jsonObj = element.getAsJsonObject(); + + BindRequestImpl bindReq = new BindRequestImpl(); + bindReq.setName( new DN( jsonObj.get( NAME ).getAsString() ) ); + + String pwd = jsonObj.get( CREDENTIALS ).getAsString(); + bindReq.setCredentials( Base64.decode( pwd.toCharArray() ) ); + + JsonElement version = jsonObj.get( VERSION3 ); + if ( version != null ) + { + bindReq.setVersion3( version.getAsBoolean() ); + } + + JsonElement mechanism = jsonObj.get( MECHANISM ); + if ( mechanism != null ) + { + bindReq.setSaslMechanism( mechanism.getAsString() ); + } + + JsonElement simple = jsonObj.get( SIMPLE ); + if ( simple != null ) + { + bindReq.setSimple( simple.getAsBoolean() ); + } + + return bindReq; + } + catch ( LdapInvalidDnException e ) + { + throw new JsonParseException( e ); + } + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindResponseCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindResponseCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindResponseCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/bind/BindResponseCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,83 @@ +/* + * 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.server.codec.json.operations.bind; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.shared.ldap.message.BindResponseImpl; +import org.apache.directory.shared.ldap.message.LdapResult; +import org.apache.directory.shared.ldap.message.LdapResultImpl; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO BindResponseEncoder. + * + * @author Apache Directory Project + */ +public class BindResponseCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String MESSAGE_ID = "messageId"; + private static final String LDAP_RESULT = "ldapResult"; + + + public JsonElement serialize( BindResponseImpl resp, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + json.addProperty( MESSAGE_ID, resp.getMessageId() ); + + LdapResultImpl result = ( LdapResultImpl ) resp.getLdapResult(); + + json.add( LDAP_RESULT, JsonBuilder.get().toJsonTree( result ) ); + + return json; + } + + + public BindResponseImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + BindResponseImpl resp = new BindResponseImpl( json.get( MESSAGE_ID ).getAsInt() ); + + LdapResultImpl receivedResult = JsonBuilder.get().fromJson( json.get( LDAP_RESULT ), LdapResultImpl.class ); + + LdapResult sendingResult = resp.getLdapResult(); + sendingResult.setResultCode( receivedResult.getResultCode() ); + sendingResult.setErrorMessage( receivedResult.getErrorMessage() ); + sendingResult.setReferral( receivedResult.getReferral() ); + sendingResult.setMatchedDn( receivedResult.getMatchedDn() ); + + return resp; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/compare/CompareRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/compare/CompareRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/compare/CompareRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/compare/CompareRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,88 @@ +/* + * 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.server.codec.json.operations.compare; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.server.http.AppConstants; +import org.apache.directory.shared.ldap.entry.AbstractValue; +import org.apache.directory.shared.ldap.entry.BinaryValue; +import org.apache.directory.shared.ldap.entry.Value; +import org.apache.directory.shared.ldap.message.CompareRequestImpl; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO CompareRequestCodec. + * + * @author Apache Directory Project + */ +public class CompareRequestCodec implements JsonSerializer, JsonDeserializer +{ + + public CompareRequestImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + CompareRequestImpl req = new CompareRequestImpl( json.get( AppConstants.MESSAGE_ID_KEY ).getAsInt() ); + + req.setName( JsonBuilder.decodeDn( json.get( "dn" ) ) ); + + req.setAttributeId( json.get( "attributeId" ).getAsString() ); + + Value val = JsonBuilder.fromJson( json.get( "value" ), AbstractValue.class ); + + if ( val instanceof BinaryValue ) + { + req.setAssertionValue( val.getBytes() ); + } + else + { + req.setAssertionValue( val.getString() ); + } + + return req; + } + + + public JsonElement serialize( CompareRequestImpl src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + json.addProperty( AppConstants.MESSAGE_ID_KEY, src.getMessageId() ); + json.addProperty( "dn", src.getName().getName() ); + json.addProperty( "attributeId", src.getAttributeId() ); + json.add( "value", JsonBuilder.toJsonTree( src.getAssertionValue() ) ); + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/delete/DeleteRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/delete/DeleteRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/delete/DeleteRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/delete/DeleteRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,72 @@ +/* + * 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.server.codec.json.operations.delete; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.server.http.AppConstants; +import org.apache.directory.shared.ldap.message.DeleteRequestImpl; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO DeleteRequestCodec. + * + * @author Apache Directory Project + */ +public class DeleteRequestCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String DN = "dn"; + + + public JsonElement serialize( DeleteRequestImpl src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + json.addProperty( AppConstants.MESSAGE_ID_KEY, src.getMessageId() ); + json.addProperty( DN, src.getName().getName() ); + + return json; + } + + + public DeleteRequestImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + DeleteRequestImpl req = new DeleteRequestImpl( json.get( AppConstants.MESSAGE_ID_KEY ).getAsInt() ); + req.setName( JsonBuilder.decodeDn( json.get( DN ) ) ); + + return req; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/DefaultModificationCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/DefaultModificationCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/DefaultModificationCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/DefaultModificationCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,80 @@ +/* + * 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.server.codec.json.operations.modify; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.shared.ldap.entry.DefaultEntryAttribute; +import org.apache.directory.shared.ldap.entry.DefaultModification; +import org.apache.directory.shared.ldap.entry.EntryAttribute; +import org.apache.directory.shared.ldap.entry.ModificationOperation; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO ModificationCodec. + * + * @author Apache Directory Project + */ +public class DefaultModificationCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String OPERATION = "operation"; + private static final String ATTRIBUTE = "attribute"; + + + public DefaultModification deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + DefaultModification mod = new DefaultModification(); + + ModificationOperation operation = ModificationOperation.valueOf( json.get( OPERATION ).getAsString() ); + mod.setOperation( operation ); + + EntryAttribute at = JsonBuilder.get().fromJson( json.get( ATTRIBUTE ), DefaultEntryAttribute.class ); + mod.setAttribute( at ); + + return mod; + } + + + public JsonElement serialize( DefaultModification src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + json.addProperty( OPERATION, src.getOperation().name() ); + json.add( ATTRIBUTE, JsonBuilder.get().toJsonTree( src.getAttribute() ) ); + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/ModifyRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/ModifyRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/ModifyRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modify/ModifyRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,106 @@ +/* + * 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.server.codec.json.operations.modify; + + +import java.lang.reflect.Type; +import java.util.Collection; +import java.util.Iterator; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.shared.ldap.entry.DefaultModification; +import org.apache.directory.shared.ldap.entry.Modification; +import org.apache.directory.shared.ldap.message.ModifyRequestImpl; + +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO ModifyRequestCodec. + * + * @author Apache Directory Project + */ +public class ModifyRequestCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String MODS = "mods"; + private static final String DN = "dn"; + + + public ModifyRequestImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + + ModifyRequestImpl req = new ModifyRequestImpl(); + + JsonElement messageId = json.get( "messageId" ); + if( messageId != null ) + { + req.setMessageId( messageId.getAsInt() ); + } + + req.setName( JsonBuilder.decodeDn( json.get( DN ) ) ); + + JsonArray modsArray = json.get( MODS ).getAsJsonArray(); + Iterator itr = modsArray.iterator(); + + while ( itr.hasNext() ) + { + JsonElement modString = itr.next(); + DefaultModification mod = JsonBuilder.get().fromJson( modString, DefaultModification.class ); + req.addModification( mod ); + } + + return req; + } + + + public JsonElement serialize( ModifyRequestImpl req, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + json.addProperty( "messageId", req.getMessageId() ); + + json.addProperty( DN, req.getName().getName() ); + + Collection modsList = req.getModifications(); + + JsonArray ja = new JsonArray(); + for ( Modification mod : modsList ) + { + ja.add( JsonBuilder.get().toJsonTree( mod ) ); + } + + json.add( MODS, ja ); + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modifydn/ModifyDnRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modifydn/ModifyDnRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modifydn/ModifyDnRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/modifydn/ModifyDnRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,101 @@ +/* + * 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.server.codec.json.operations.modifydn; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.server.http.AppConstants; +import org.apache.directory.shared.ldap.message.ModifyDnRequestImpl; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO ModifyDnRequestCodec. + * + * @author Apache Directory Project + */ +public class ModifyDnRequestCodec implements JsonSerializer, JsonDeserializer +{ + + private static final String DN_KEY = "dn"; + private static final String NEW_SUPERIOR = "newSuperior"; + private static final String NEW_RDN = "newRdn"; + private static final String DELETE_OLD_RDN = "deleteOldRdn"; + + + public ModifyDnRequestImpl deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + JsonObject json = element.getAsJsonObject(); + + ModifyDnRequestImpl req = new ModifyDnRequestImpl( json.get( AppConstants.MESSAGE_ID_KEY ).getAsInt() ); + req.setName( JsonBuilder.decodeDn( json.get( DN_KEY ) ) ); + + JsonElement newSuperior = json.get( NEW_SUPERIOR ); + if( newSuperior != null ) + { + req.setNewSuperior( JsonBuilder.decodeDn( newSuperior ) ); + } + + JsonElement newRdn = json.get( NEW_RDN ); + if( newRdn != null ) + { + req.setNewRdn( JsonBuilder.decodeDn( newRdn ).getRdn() ); + } + + req.setDeleteOldRdn( json.get( DELETE_OLD_RDN ).getAsBoolean() ); + + return req; + } + + + public JsonElement serialize( ModifyDnRequestImpl src, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + json.addProperty( AppConstants.MESSAGE_ID_KEY, src.getMessageId() ); + json.addProperty( DN_KEY, src.getName().getName() ); + + if ( src.getNewSuperior() != null ) + { + json.addProperty( NEW_SUPERIOR, src.getNewSuperior().getName() ); + } + + if ( src.getNewRdn() != null ) + { + json.addProperty( NEW_RDN, src.getNewRdn().getName() ); + } + + json.addProperty( DELETE_OLD_RDN, src.getDeleteOldRdn() ); + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/ClonedServerEntryCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/ClonedServerEntryCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/ClonedServerEntryCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/ClonedServerEntryCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,59 @@ +/* + * 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.server.codec.json.operations.search; + + +import java.lang.reflect.Type; + +import org.apache.directory.server.core.entry.ClonedServerEntry; +import org.apache.directory.shared.ldap.entry.DefaultEntry; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO ClonedServerEntryEncoder. + * + * @author Apache Directory Project + */ +public class ClonedServerEntryCodec implements JsonSerializer, JsonDeserializer +{ + + public JsonElement serialize( ClonedServerEntry entry, Type typeOfSrc, JsonSerializationContext context ) + { + return DefaultEntryCodec._serialize( entry, typeOfSrc, context ); + } + + + public ClonedServerEntry deserialize( JsonElement json, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + DefaultEntry entry = DefaultEntryCodec._deserialize( json, typeOfT, context ); + + return new ClonedServerEntry( entry ); + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/DefaultEntryCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/DefaultEntryCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/DefaultEntryCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/DefaultEntryCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,141 @@ +/* + * 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.server.codec.json.operations.search; + + +import java.lang.reflect.Type; +import java.util.Iterator; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.shared.ldap.entry.DefaultEntry; +import org.apache.directory.shared.ldap.entry.DefaultEntryAttribute; +import org.apache.directory.shared.ldap.entry.Entry; +import org.apache.directory.shared.ldap.entry.EntryAttribute; +import org.apache.directory.shared.ldap.exception.LdapException; +import org.apache.directory.shared.ldap.name.DN; +import org.apache.directory.shared.ldap.schema.SchemaManager; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO EntryEncoder. + * + * @author Apache Directory Project + */ +public class DefaultEntryCodec implements JsonSerializer, JsonDeserializer +{ + + public JsonElement serialize( DefaultEntry entry, Type typeOfSrc, JsonSerializationContext context ) + { + return _serialize( entry, typeOfSrc, context ); + } + + + public DefaultEntry deserialize( JsonElement json, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + return _deserialize( json, typeOfT, context ); + } + + + public static DefaultEntry _deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + { + try + { + + JsonObject json = element.getAsJsonObject(); + + DN dn = JsonBuilder.decodeDn( json.get( "dn" ) ); + + SchemaManager sm = JsonBuilder.getSchemaManager(); + + DefaultEntry entry = null; + + if ( sm != null ) + { + entry = new DefaultEntry( sm, dn ); + } + else + { + entry = new DefaultEntry( dn ); + } + + JsonElement attributes = json.get( "attributes" ); + if ( attributes != null ) + { + JsonArray atArray = attributes.getAsJsonArray(); + Iterator itr = atArray.iterator(); + while ( itr.hasNext() ) + { + DefaultEntryAttribute at = JsonBuilder.get().fromJson( itr.next(), DefaultEntryAttribute.class ); + entry.add( at ); + } + } + + return entry; + } + catch ( LdapException e ) + { + throw new JsonParseException( e ); + } + + } + + + public static JsonElement _serialize( Entry entry, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + + DN dn = entry.getDn(); + if ( dn == null ) + { + dn = DN.EMPTY_DN; + } + + json.addProperty( "dn", dn.getName() ); + + JsonArray ja = new JsonArray(); + + Gson builder = JsonBuilder.get(); + + for ( EntryAttribute at : entry ) + { + ja.add( builder.toJsonTree( at ) ); + } + + if ( ja.size() > 0 ) + { + json.add( "attributes", ja ); + } + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/EntryAttributeCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/EntryAttributeCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/EntryAttributeCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/EntryAttributeCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,115 @@ +/* + * 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.server.codec.json.operations.search; + + +import java.lang.reflect.Type; +import java.util.Iterator; + +import org.apache.directory.server.codec.json.JsonBuilder; +import org.apache.directory.shared.ldap.entry.AbstractValue; +import org.apache.directory.shared.ldap.entry.DefaultEntryAttribute; +import org.apache.directory.shared.ldap.entry.Value; +import org.apache.directory.shared.ldap.schema.SchemaManager; + +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * + * TODO Attribute. + * + * @author Apache Directory Project + */ +public class EntryAttributeCodec implements JsonSerializer, + JsonDeserializer +{ + + public JsonElement serialize( DefaultEntryAttribute atSrc, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject attrJson = new JsonObject(); + + attrJson.addProperty( "name", atSrc.getId() ); + + JsonArray ja = new JsonArray(); + Iterator> itr = atSrc.iterator(); + while ( itr.hasNext() ) + { + Value val = itr.next(); + ja.add( JsonBuilder.toJsonTree( val ) ); + } + + attrJson.add( "values", ja ); + + return attrJson; + } + + + public DefaultEntryAttribute deserialize( JsonElement element, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + try + { + JsonObject json = element.getAsJsonObject(); + + String name = json.get( "name" ).getAsString(); + + DefaultEntryAttribute at = null; + + SchemaManager sm = JsonBuilder.getSchemaManager(); + + if( sm != null ) + { + at = new DefaultEntryAttribute( sm.lookupAttributeTypeRegistry( name ) ); + } + else + { + at = new DefaultEntryAttribute( name ); + } + + JsonArray values = json.getAsJsonArray( "values" ); + + if( values != null ) + { + Iterator itr = values.iterator(); + while( itr.hasNext() ) + { + JsonElement val = itr.next(); + at.add( JsonBuilder.fromJson( val, AbstractValue.class ) ); + } + } + + return at; + } + catch( Exception e ) + { + throw new JsonParseException( e ); + } + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchRequestCodec.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchRequestCodec.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchRequestCodec.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchRequestCodec.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,158 @@ +/* + * 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.server.codec.json.operations.search; + + +import java.lang.reflect.Type; +import java.util.Iterator; +import java.util.List; + +import org.apache.directory.shared.ldap.filter.SearchScope; +import org.apache.directory.shared.ldap.message.AliasDerefMode; +import org.apache.directory.shared.ldap.message.SearchRequestImpl; +import org.apache.directory.shared.ldap.name.DN; + +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + + +/** + * TODO SearchRequestDecoder. + * + * @author Apache Directory Project + */ +public class SearchRequestCodec implements JsonDeserializer, JsonSerializer +{ + + private static final String BASE_DN = "baseDn"; + private static final String FILTER = "filter"; + private static final String SCOPE = "scope"; + private static final String TYPES_ONLY = "typesOnly"; + private static final String SIZE_LIMIT = "sizeLimit"; + private static final String TIME_LIMIT = "timeLimit"; + private static final String ALIAS_DEREF_MODE = "aliasDerefMode"; + private static final String ATTRIBUTES = "attributes"; + + + public SearchRequestImpl deserialize( JsonElement json, Type typeOfT, JsonDeserializationContext context ) + throws JsonParseException + { + SearchRequestImpl req = null; + + try + { + JsonObject obj = json.getAsJsonObject(); + + req = new SearchRequestImpl(); + + req.setBase( new DN( obj.get( BASE_DN ).getAsString() ) ); + req.setFilter( obj.get( FILTER ).getAsString() ); + + JsonElement scopeEl = obj.get( SCOPE ); + if ( scopeEl != null ) + { + int scope = SearchScope.getSearchScope( scopeEl.getAsString() ); + req.setScope( SearchScope.getSearchScope( scope ) ); + } + + JsonElement typesOnlyEl = obj.get( TYPES_ONLY ); + if ( typesOnlyEl != null ) + { + req.setTypesOnly( typesOnlyEl.getAsBoolean() ); + } + + JsonElement sizeLimitEl = obj.get( SIZE_LIMIT ); + if ( sizeLimitEl != null ) + { + req.setSizeLimit( sizeLimitEl.getAsInt() ); + } + + JsonElement timeLimitEl = obj.get( TIME_LIMIT ); + if ( timeLimitEl != null ) + { + req.setTimeLimit( timeLimitEl.getAsInt() ); + } + + JsonElement aliasDerefModeEl = obj.get( ALIAS_DEREF_MODE ); + if ( aliasDerefModeEl != null ) + { + req.setDerefAliases( AliasDerefMode.getDerefMode( aliasDerefModeEl.getAsInt() ) ); + } + + JsonElement attributesEl = obj.get( ATTRIBUTES ); + if ( attributesEl != null ) + { + JsonArray ja = attributesEl.getAsJsonArray(); + Iterator itr = ja.iterator(); + while( itr.hasNext() ) + { + req.addAttributes( itr.next().getAsString() ); + } + } + } + catch ( Exception e ) + { + e.printStackTrace(); + } + + return req; + } + + + public JsonElement serialize( SearchRequestImpl req, Type typeOfSrc, JsonSerializationContext context ) + { + JsonObject json = new JsonObject(); + json.addProperty( BASE_DN, req.getBase().getName() ); + json.addProperty( FILTER, req.getFilter().toString() ); + + if( req.getScope() != null ) + { + json.addProperty( SCOPE, req.getScope().getLdapUrlValue() ); + } + + json.addProperty( TYPES_ONLY, req.getTypesOnly() ); + json.addProperty( SIZE_LIMIT, req.getSizeLimit() ); + json.addProperty( TIME_LIMIT, req.getTimeLimit() ); + json.addProperty( ALIAS_DEREF_MODE, req.getDerefAliases().getValue() ); + + List attributes = req.getAttributes(); + if( !attributes.isEmpty() ) + { + JsonArray ja = new JsonArray(); + for( String s : attributes ) + { + ja.add( new JsonPrimitive( s ) ); + } + + json.add( ATTRIBUTES, ja ); + } + + return json; + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchResponseEncoder.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchResponseEncoder.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchResponseEncoder.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/codec/json/operations/search/SearchResponseEncoder.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,44 @@ +/* + * 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.server.codec.json.operations.search; + +import java.lang.reflect.Type; + +import org.apache.directory.shared.ldap.message.SearchResultEntryImpl; + +import com.google.gson.JsonElement; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +/** + * TODO SearchResponseEncoder. + * + * @author Apache Directory Project + */ +public class SearchResponseEncoder implements JsonSerializer +{ + + public JsonElement serialize( SearchResultEntryImpl src, Type typeOfSrc, JsonSerializationContext context ) + { + return null;//JsonBuilder.get().toJson( src ); + } + +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/http/AppConstants.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/http/AppConstants.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/http/AppConstants.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/main/java/org/apache/directory/server/http/AppConstants.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,54 @@ +/* + * 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.server.http; + + +/** + * TODO AppConstants. + * + * @author Apache Directory Project + */ +public interface AppConstants +{ + String SESSION_ID = "sessionid"; + + String SEARCH_RESULTS_KEY = "results"; + + String LDAP_RESULT_KEY = "ldapResult"; + + String MESSAGE_ID_KEY = "messageId"; + + String BIND_URI = "/bind"; + + String SEARCH_URI = "/search"; + + String MODIFY_URI = "/modify"; + + String MODIFY_DN_URI = "/modifydn"; + + String UNBIND_URI = "/unbind"; + + String ADD_URI = "/add"; + + String DELETE_URI = "/delete"; + + String COMPARE_URI = "/compare"; +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonDecoderTest.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonDecoderTest.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonDecoderTest.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonDecoderTest.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,81 @@ +/* + * 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.server.codec.json; + +import org.apache.directory.server.core.entry.ClonedServerEntry; +import org.apache.directory.shared.ldap.constants.SchemaConstants; +import org.apache.directory.shared.ldap.entry.DefaultEntry; +import org.apache.directory.shared.ldap.entry.Entry; +import org.apache.directory.shared.ldap.filter.SearchScope; +import org.apache.directory.shared.ldap.message.AliasDerefMode; +import org.apache.directory.shared.ldap.message.SearchRequestImpl; +import org.apache.directory.shared.ldap.name.DN; +import org.junit.Test; + + +/** + * TODO JsonDecoderTest. + * + * @author Apache Directory Project + */ +public class JsonDecoderTest +{ + + @Test + public void testDecodeSearchRequest() throws Exception + { + SearchRequestImpl req = new SearchRequestImpl(); + req.setBase( new DN( "uid=admin,ou=system" ) ); + req.setDerefAliases( AliasDerefMode.NEVER_DEREF_ALIASES ); + req.setFilter( "(objectClass=*)" ); + req.setScope( SearchScope.OBJECT ); + req.setTypesOnly( true ); + req.addAttributes( "cn", "sn" ); + + String json = JsonBuilder.get().toJson( req ); + System.out.println( json ); + + SearchRequestImpl decoded = JsonBuilder.get().fromJson( json, SearchRequestImpl.class ); + System.out.println( decoded ); + + String jsonFromdecoded = JsonBuilder.get().toJson( decoded ); + System.out.println( jsonFromdecoded ); + } + + + @Test + public void testDecodeEntry() throws Exception + { + Entry entry = new DefaultEntry( new DN( "uid=admin,ou=system" ) ); + entry.add( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.PERSON_OC ); + entry.add( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.INET_ORG_PERSON_OC ); + entry.add( SchemaConstants.CN_AT, "at_cn" ); + + entry.add( SchemaConstants.USER_PASSWORD_AT, "secret".getBytes() ); + + String json = JsonBuilder.get().toJson( entry ); + System.out.println( json ); + + ClonedServerEntry clone = new ClonedServerEntry( entry ); + clone.remove( SchemaConstants.CN_AT, "at_cn" ); + System.out.println( JsonBuilder.get().toJsonTree( clone ) ); + } +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonEncoderTest.java URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonEncoderTest.java?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonEncoderTest.java (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/java/org/apache/directory/server/codec/json/JsonEncoderTest.java Sun Sep 5 17:13:58 2010 @@ -0,0 +1,141 @@ +/* + * 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.server.codec.json; + + +import org.apache.directory.shared.ldap.codec.controls.replication.syncInfoValue.SyncInfoValueControl; +import org.apache.directory.shared.ldap.entry.DefaultEntryAttribute; +import org.apache.directory.shared.ldap.entry.DefaultModification; +import org.apache.directory.shared.ldap.entry.EntryAttribute; +import org.apache.directory.shared.ldap.entry.ModificationOperation; +import org.apache.directory.shared.ldap.message.BindRequest; +import org.apache.directory.shared.ldap.message.BindRequestImpl; +import org.apache.directory.shared.ldap.message.BindResponseImpl; +import org.apache.directory.shared.ldap.message.LdapResult; +import org.apache.directory.shared.ldap.message.LdapResultImpl; +import org.apache.directory.shared.ldap.message.ModifyRequest; +import org.apache.directory.shared.ldap.message.ModifyRequestImpl; +import org.apache.directory.shared.ldap.message.ResultCodeEnum; +import org.apache.directory.shared.ldap.message.control.replication.SynchronizationInfoEnum; +import org.apache.directory.shared.ldap.name.DN; +import org.apache.directory.shared.ldap.schema.SchemaManager; +import org.apache.directory.shared.ldap.schema.loader.ldif.SingleLdifSchemaLoader; +import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.google.gson.Gson; + + +/** + * TODO JsonEncoderTest. + * + * @author Apache Directory Project + */ +public class JsonEncoderTest +{ + + private JsonEncoder encoder = new JsonEncoder(); + + private static SchemaManager schemaManager; + + + @BeforeClass + public static void loadSchema() throws Exception + { + SingleLdifSchemaLoader loader = new SingleLdifSchemaLoader(); + schemaManager = new DefaultSchemaManager( loader ); + schemaManager.loadAllEnabled(); + System.out.println( schemaManager.getErrors() ); + } + + + @Test + public void testEncodeBindResp() throws Exception + { + + BindResponseImpl resp = new BindResponseImpl(); + resp.setMessageId( 1 ); + + LdapResult result = resp.getLdapResult(); + result.setErrorMessage( "add response" ); + result.setResultCode( ResultCodeEnum.SUCCESS ); + result.setMatchedDn( new DN( "uid=admin,ou=system" ) ); + SyncInfoValueControl syncCtrl = new SyncInfoValueControl( SynchronizationInfoEnum.NEW_COOKIE ); + syncCtrl.setCookie( "cookie".getBytes() ); + + resp.addControl( syncCtrl ); + String json = encoder.encode( resp ); + System.out.println( json ); + } + + + @Test + public void testEncodeLdapResult() throws Exception + { + LdapResultImpl result = new LdapResultImpl(); + result.setErrorMessage( "add response" ); + result.setResultCode( ResultCodeEnum.SUCCESS ); + result.setMatchedDn( new DN( "uid=admin,ou=system" ) ); + + String json = encoder.encode( result ); + // System.out.println( json ); + } + + + @Test + public void testDecodeBindRequest() throws Exception + { + BindRequestImpl req = new BindRequestImpl(); + req.setCredentials( "secret" ); + req.setMessageId( 1 ); + req.setName( new DN( "uid=admin,ou=suystem" ) ); + + String json = new Gson().toJson( req ); + json = "{\"name\":\"uid\u003dadmin,ou\u003dsuystem\",\"credentials\":\"secret\",\"isSimple\":true,\"version\":3,\"controls\":{},\"messageId\":1}"; + System.out.println( json ); + + BindRequest decoded = JsonBuilder.get().fromJson( json, BindRequestImpl.class ); + // System.out.println( decoded ); + } + + + @Test + public void testModifyRequestCodec() throws Exception + { + DefaultModification mod = new DefaultModification(); + EntryAttribute at = new DefaultEntryAttribute( schemaManager.lookupAttributeTypeRegistry( "cn" ) ); + at.add( "cn_value" ); + mod.setOperation( ModificationOperation.ADD_ATTRIBUTE ); + mod.setAttribute( at ); + + ModifyRequest req = new ModifyRequestImpl( 2 ); + req.setName( new DN( "ou=x" ) ); + req.addModification( mod ); + + String json = JsonBuilder.get().toJson( req ); + System.out.println( json ); + + req = JsonBuilder.fromJson( json, ModifyRequestImpl.class ); + + System.out.println( req ); + } +} Added: directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/resources/log4j.properties URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/resources/log4j.properties?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/resources/log4j.properties (added) +++ directory/sandbox/kayyagari/http-directory/ldap-json-codec/src/test/resources/log4j.properties Sun Sep 5 17:13:58 2010 @@ -0,0 +1,45 @@ +############################################################################# +# 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. +############################################################################# +log4j.rootCategory=warn, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout + +log4j.appender.R=org.apache.log4j.RollingFileAppender +log4j.appender.R.File=apacheds-rolling.log + +log4j.appender.R.MaxFileSize=1024KB +# Keep some backup files +log4j.appender.R.MaxBackupIndex=5 + +log4j.appender.R.layout=org.apache.log4j.PatternLayout +log4j.appender.R.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n + +log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n + +# with these we'll not get innundated when switching to DEBUG +log4j.logger.org.apache.directory.shared.ldap.name=FATAL +log4j.logger.org.apache.directory.shared=warn +log4j.logger.org.apache.directory.server.core=WARN + +log4j.logger.org.apache.directory.server.schema.registries=FATAL +log4j.logger.org.apache.directory.server.http=DEBUG +log4j.logger.org.mortbay.log=WARN +log4j.logger.JdbmTable=WARN +log4j.logger.org.apache.directory.server.xdbm=WARN +log4j.logger.JdbmIndex=WARN +log4j.logger.org.apache.directory.server.config=WARN Added: directory/sandbox/kayyagari/http-directory/pom.xml URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/http-directory/pom.xml?rev=992827&view=auto ============================================================================== --- directory/sandbox/kayyagari/http-directory/pom.xml (added) +++ directory/sandbox/kayyagari/http-directory/pom.xml Sun Sep 5 17:13:58 2010 @@ -0,0 +1,61 @@ + + 4.0.0 + + apacheds-parent + org.apache.directory.server + 1.5.8-SNAPSHOT + + http-directory + pom + 1.5.8-SNAPSHOT + Accessing Apache Directory SerVICE over HTTP + + + 0.9.20-SNAPSHOT + 1.5.11 + 1.5.11 + 1.2.16 + + + + directory-webapp + ldap-json-codec + ldap-http-connection + directory-http-ui + + + + + + + + junit + junit + 4.7 + + + findbugs + annotations + 1.0.0 + + + org.slf4j + slf4j-api + ${slf4j.api.version} + + + + org.slf4j + slf4j-log4j12 + ${slf4j.log4j12.version} + + + + log4j + log4j + ${log4j.version} + + + +