Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/vcardtemp/JcrVcardTempPersistenceManager.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/vcardtemp/JcrVcardTempPersistenceManager.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/vcardtemp/JcrVcardTempPersistenceManager.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/vcardtemp/JcrVcardTempPersistenceManager.java Sat Jun 26 20:39:54 2010 @@ -19,18 +19,18 @@ */ package org.apache.vysper.storage.jcr.vcardtemp; +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + import org.apache.vysper.storage.jcr.JcrStorage; import org.apache.vysper.storage.jcr.JcrStorageException; import org.apache.vysper.xmpp.addressing.Entity; -import org.apache.vysper.xmpp.protocol.NamespaceURIs; import org.apache.vysper.xmpp.modules.extension.xep0054_vcardtemp.VcardTempPersistenceManager; +import org.apache.vysper.xmpp.protocol.NamespaceURIs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.jcr.Session; -import javax.jcr.Node; -import javax.jcr.RepositoryException; - /** * * @author The Apache MINA Project ([email protected]) @@ -57,7 +57,8 @@ public class JcrVcardTempPersistenceMana public String getVcard(Entity entity) { Node entityNode = getEntityNodeSave(entity, false); - if (entityNode == null) return null; + if (entityNode == null) + return null; try { return entityNode.getProperty("content").getString(); } catch (RepositoryException e) { @@ -72,7 +73,8 @@ public class JcrVcardTempPersistenceMana } catch (JcrStorageException e) { return null; } - if (entityNode == null) return null; + if (entityNode == null) + return null; return entityNode; }
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/Entity.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/Entity.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/Entity.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/Entity.java Sat Jun 26 20:39:54 2010 @@ -48,7 +48,9 @@ package org.apache.vysper.xmpp.addressin public interface Entity { String getNode(); + String getDomain(); + String getResource(); /** @@ -64,6 +66,7 @@ public interface Entity { String getCanonicalizedName(); boolean isNodeSet(); + boolean isResourceSet(); } Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityConformance.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityConformance.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityConformance.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityConformance.java Sat Jun 26 20:39:54 2010 @@ -26,15 +26,19 @@ import org.apache.vysper.compliance.Spec * * @author The Apache MINA Project ([email protected]) */ -...@speccompliant(spec="RFC3920", section="3.1") +...@speccompliant(spec = "RFC3920", section = "3.1") public class EntityConformance { public static boolean checkRFC3920Conformance(Entity entity) { - if (!checkPartConformity(entity.getDomain())) return false; - if (!checkPartConformity(entity.getNode())) return false; - if (!checkPartConformity(entity.getResource())) return false; + if (!checkPartConformity(entity.getDomain())) + return false; + if (!checkPartConformity(entity.getNode())) + return false; + if (!checkPartConformity(entity.getResource())) + return false; - if (checkPartIsEmpty(entity.getDomain())) return false; + if (checkPartIsEmpty(entity.getDomain())) + return false; return true; } Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java Sat Jun 26 20:39:54 2010 @@ -55,8 +55,7 @@ public class EntityImpl implements Entit if (entity.contains(CHAR_AT)) { String[] parts = entity.split(CHAR_AT); if (parts.length != 2) - throw new EntityFormatException( - "entity must be of format n...@domain/resource"); + throw new EntityFormatException("entity must be of format n...@domain/resource"); node = parts[0]; node = NodePrep.prepare(node); entity = parts[1]; @@ -70,7 +69,7 @@ public class EntityImpl implements Entit } return new EntityImpl(node, domain, resource); } - + /** * Parse entities, throwing {...@link IllegalArgumentException} on format errors * @param entity @@ -154,21 +153,18 @@ public class EntityImpl implements Entit final Entity that = (Entity) o; - if (domain != null ? !domain.equals(that.getDomain()) : that - .getDomain() != null) + if (domain != null ? !domain.equals(that.getDomain()) : that.getDomain() != null) return false; if (isNodeSet() != that.isNodeSet()) return false; if (isNodeSet()) { - if (node != null ? !node.equals(that.getNode()) - : that.getNode() != null) + if (node != null ? !node.equals(that.getNode()) : that.getNode() != null) return false; } if (isResourceSet() != that.isResourceSet()) return false; if (isResourceSet()) { - if (resource != null ? !resource.equals(that.getResource()) : that - .getResource() != null) + if (resource != null ? !resource.equals(that.getResource()) : that.getResource() != null) return false; } Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/NodePrep.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/NodePrep.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/NodePrep.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/NodePrep.java Sat Jun 26 20:39:54 2010 @@ -19,13 +19,13 @@ */ package org.apache.vysper.xmpp.addressing.stringprep; -import org.apache.vysper.compliance.SpecCompliant; -import org.apache.vysper.compliance.SpecCompliant.ComplianceStatus; - import java.util.HashMap; import java.util.Map; import java.util.Set; +import org.apache.vysper.compliance.SpecCompliant; +import org.apache.vysper.compliance.SpecCompliant.ComplianceStatus; + /** * This class is used to prepare a Node Identifier for further usage. * @@ -38,49 +38,48 @@ import java.util.Set; @SpecCompliant(spec = "RFC3920", section = "A", status = ComplianceStatus.IN_PROGRESS) public class NodePrep extends StringPrep { - private static final NodePrep INSTANCE = new NodePrep(); + private static final NodePrep INSTANCE = new NodePrep(); - /** - * Applies the Nodeprep profile to the given node. - * - * @param node - * the node to prepare - * @return the prepared node - * @throws StringPrepViolationException - * in case the Nodeprep profile can't be applied - */ - public static final String prepare(String node) - throws StringPrepViolationException { - return INSTANCE.prepareString(node); - } - - private NodePrep() { - } - - @Override - @SpecCompliant(spec = "RFC3920", section = "A.3", status = ComplianceStatus.FINISHED) - protected Map<String, String> buildMapping() { - Map<String, String> mapping = new HashMap<String, String>(); - mapping.putAll(StringPrepConstants.B_1_CommonlyMappedtoNothing); - mapping.putAll(StringPrepConstants.B_2_MappingForCaseFoldingUsedWithKFC); - - return mapping; - } - - @Override - @SpecCompliant(spec = "RFC3920", section = "A.5", status = ComplianceStatus.FINISHED) - protected Set<String> buildProhibitedSet() { - Set<String> prohibited = super.buildProhibitedSet(); - - prohibited.add("\\u0022"); - prohibited.add("\u0026"); - prohibited.add("\u0027"); - prohibited.add("\u002F"); - prohibited.add("\u003A"); - prohibited.add("\u003C"); - prohibited.add("\u003E"); - prohibited.add("\u0040"); + /** + * Applies the Nodeprep profile to the given node. + * + * @param node + * the node to prepare + * @return the prepared node + * @throws StringPrepViolationException + * in case the Nodeprep profile can't be applied + */ + public static final String prepare(String node) throws StringPrepViolationException { + return INSTANCE.prepareString(node); + } + + private NodePrep() { + } + + @Override + @SpecCompliant(spec = "RFC3920", section = "A.3", status = ComplianceStatus.FINISHED) + protected Map<String, String> buildMapping() { + Map<String, String> mapping = new HashMap<String, String>(); + mapping.putAll(StringPrepConstants.B_1_CommonlyMappedtoNothing); + mapping.putAll(StringPrepConstants.B_2_MappingForCaseFoldingUsedWithKFC); + + return mapping; + } + + @Override + @SpecCompliant(spec = "RFC3920", section = "A.5", status = ComplianceStatus.FINISHED) + protected Set<String> buildProhibitedSet() { + Set<String> prohibited = super.buildProhibitedSet(); + + prohibited.add("\\u0022"); + prohibited.add("\u0026"); + prohibited.add("\u0027"); + prohibited.add("\u002F"); + prohibited.add("\u003A"); + prohibited.add("\u003C"); + prohibited.add("\u003E"); + prohibited.add("\u0040"); - return prohibited; - } + return prohibited; + } } Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/ResourcePrep.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/ResourcePrep.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/ResourcePrep.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/ResourcePrep.java Sat Jun 26 20:39:54 2010 @@ -37,49 +37,46 @@ import org.apache.vysper.compliance.Spec */ public class ResourcePrep extends StringPrep { - private static final ResourcePrep INSTANCE = new ResourcePrep(); + private static final ResourcePrep INSTANCE = new ResourcePrep(); - /** - * Applies the Resourceprep profile to the given resource. - * - * @param resource - * the resource to prepare - * @return the prepared resource - * @throws StringPrepViolationException - * in case the Resourceprep profile can't be applied - */ - public static String prepare(String resource) - throws StringPrepViolationException { - return INSTANCE.prepareString(resource); - } - - private ResourcePrep() { - - } - - @Override - @SpecCompliant(spec = "RFC3920", section = "B.3", status = ComplianceStatus.FINISHED) - protected Map<String, String> buildMapping() { - return StringPrepConstants.B_1_CommonlyMappedtoNothing; - } - - @Override - @SpecCompliant(spec = "RFC3920", section = "B.5", status = ComplianceStatus.FINISHED) - protected Set<String> buildProhibitedSet() { - Set<String> set = new HashSet<String>(); - set.addAll(StringPrepConstants.C_1_2_NonAsciiSpaceCharacters); - set.addAll(StringPrepConstants.C_2_1_AsciiControlCharacters); - set.addAll(StringPrepConstants.C_2_2_NonAsciiControlCharacters); - set.addAll(StringPrepConstants.C_3_PrivateUse); - set.addAll(StringPrepConstants.C_4_NonCharacterCodePoints); - set.addAll(StringPrepConstants.C_5_SurrogateCodes); - set.addAll(StringPrepConstants.C_6_InappropriateForPlainText); - set - .addAll(StringPrepConstants.C_7_InappropriateForCanonicalRepresentation); - set - .addAll(StringPrepConstants.C_8_ChangeDisplayPropertiesOrAreDeprecated); - set.addAll(StringPrepConstants.C_9_TaggingCharacters); + /** + * Applies the Resourceprep profile to the given resource. + * + * @param resource + * the resource to prepare + * @return the prepared resource + * @throws StringPrepViolationException + * in case the Resourceprep profile can't be applied + */ + public static String prepare(String resource) throws StringPrepViolationException { + return INSTANCE.prepareString(resource); + } + + private ResourcePrep() { + + } + + @Override + @SpecCompliant(spec = "RFC3920", section = "B.3", status = ComplianceStatus.FINISHED) + protected Map<String, String> buildMapping() { + return StringPrepConstants.B_1_CommonlyMappedtoNothing; + } + + @Override + @SpecCompliant(spec = "RFC3920", section = "B.5", status = ComplianceStatus.FINISHED) + protected Set<String> buildProhibitedSet() { + Set<String> set = new HashSet<String>(); + set.addAll(StringPrepConstants.C_1_2_NonAsciiSpaceCharacters); + set.addAll(StringPrepConstants.C_2_1_AsciiControlCharacters); + set.addAll(StringPrepConstants.C_2_2_NonAsciiControlCharacters); + set.addAll(StringPrepConstants.C_3_PrivateUse); + set.addAll(StringPrepConstants.C_4_NonCharacterCodePoints); + set.addAll(StringPrepConstants.C_5_SurrogateCodes); + set.addAll(StringPrepConstants.C_6_InappropriateForPlainText); + set.addAll(StringPrepConstants.C_7_InappropriateForCanonicalRepresentation); + set.addAll(StringPrepConstants.C_8_ChangeDisplayPropertiesOrAreDeprecated); + set.addAll(StringPrepConstants.C_9_TaggingCharacters); - return set; - } + return set; + } } Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/StringPrep.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/StringPrep.java?rev=958281&r1=958280&r2=958281&view=diff ============================================================================== --- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/StringPrep.java (original) +++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/addressing/stringprep/StringPrep.java Sat Jun 26 20:39:54 2010 @@ -39,120 +39,112 @@ import org.apache.vysper.compliance.Spec @SpecCompliant(spec = "RFC3454") public class StringPrep { - private Map<String, String> mapping; - private Set<String> prohibited; + private Map<String, String> mapping; - /** - * Construct. - */ - public StringPrep() { - mapping = buildMapping(); - prohibited = buildProhibitedSet(); - } - - /** - * Prepares the given {...@link String} according to the Stringprep - * specification. - * - * @param str - * the string to prepare - * @return the prepared {...@link String} - * @throws StringPrepViolationException - * in case the {...@link String} cannot be prepared - */ - public String prepareString(String str) throws StringPrepViolationException { - // 1. map -> RFC3454:3 - for (int i = 0; i < str.length(); i++) { - String codePoint = codePointAt(str, i); - if (mapping.containsKey(codePoint)) { - str = str.replace(codePoint, mapping.get(codePoint)); - } - } - // TODO: 2. normalize -> RFC3454:4 - - // 3. prohibit -> RFC3454:5 - for (int i = 0; i < str.length(); i++) { - String codePoint = codePointAt(str, i); - if (prohibited.contains(codePoint)) { - throw new StringPrepViolationException(String.format( - "character '%s' prohibited!", codePoint)); - } - } - - // 4. check bidi -> RFC3454:6 - boolean containsRAndAlCat = false; - boolean containsLCat = false; - for (int i = 0; i < str.length() - && NAND(containsRAndAlCat, containsLCat); i++) { - String codePoint = codePointAt(str, i); - containsRAndAlCat |= StringPrepConstants.D_1_CharactersWithBiDiPropertiesRorAl - .contains(codePoint); - containsLCat |= StringPrepConstants.D_2_CharactersWithBiDiPropertyL - .contains(codePoint); - } - if (containsRAndAlCat && containsLCat) { - throw new StringPrepViolationException("invalid bidi sequence"); - } - if (containsRAndAlCat) { - if (!StringPrepConstants.D_1_CharactersWithBiDiPropertiesRorAl - .contains(codePointAt(str, 0)) - || !StringPrepConstants.D_1_CharactersWithBiDiPropertiesRorAl - .contains(codePointAt(str, str.length() - 1))) { - throw new StringPrepViolationException("invalid bidi sequence"); - } - } - - return str; - } - - /** - * Override this method and return a custom map of character mappings to - * alter the Stringprep behavior. - * - * @return a {...@link Map}<String, String> containing all character mappings - */ - protected Map<String, String> buildMapping() { - Map<String, String> mapping = new HashMap<String, String>(); - mapping.putAll(StringPrepConstants.B_1_CommonlyMappedtoNothing); - mapping - .putAll(StringPrepConstants.B_2_MappingForCaseFoldingUsedWithKFC); - mapping - .putAll(StringPrepConstants.B_3_MappingForCaseFoldingWithNoNormalization); - - return mapping; - } - - /** - * Override this method and return a custom set of prohibited characters to - * alter the Stringprep behavior. - * - * @return a {...@link Set}<String> containing all characters that are - * prohibited - */ - protected Set<String> buildProhibitedSet() { - Set<String> prohibited = new HashSet<String>(); - prohibited.addAll(StringPrepConstants.C_1_1_AsciiSpaceCharacters); - prohibited.addAll(StringPrepConstants.C_1_2_NonAsciiSpaceCharacters); - prohibited.addAll(StringPrepConstants.C_2_1_AsciiControlCharacters); - prohibited.addAll(StringPrepConstants.C_2_2_NonAsciiControlCharacters); - prohibited.addAll(StringPrepConstants.C_3_PrivateUse); - prohibited.addAll(StringPrepConstants.C_4_NonCharacterCodePoints); - prohibited.addAll(StringPrepConstants.C_5_SurrogateCodes); - prohibited.addAll(StringPrepConstants.C_6_InappropriateForPlainText); - prohibited - .addAll(StringPrepConstants.C_7_InappropriateForCanonicalRepresentation); - prohibited - .addAll(StringPrepConstants.C_8_ChangeDisplayPropertiesOrAreDeprecated); - prohibited.addAll(StringPrepConstants.C_9_TaggingCharacters); - return prohibited; - } - - private String codePointAt(String node, int i) { - int c = node.codePointAt(i); - return new String(Character.toChars(c)); - } - - private boolean NAND(boolean a, boolean b) { - return (!(a || b)) || (a ^ b); - } + private Set<String> prohibited; + + /** + * Construct. + */ + public StringPrep() { + mapping = buildMapping(); + prohibited = buildProhibitedSet(); + } + + /** + * Prepares the given {...@link String} according to the Stringprep + * specification. + * + * @param str + * the string to prepare + * @return the prepared {...@link String} + * @throws StringPrepViolationException + * in case the {...@link String} cannot be prepared + */ + public String prepareString(String str) throws StringPrepViolationException { + // 1. map -> RFC3454:3 + for (int i = 0; i < str.length(); i++) { + String codePoint = codePointAt(str, i); + if (mapping.containsKey(codePoint)) { + str = str.replace(codePoint, mapping.get(codePoint)); + } + } + // TODO: 2. normalize -> RFC3454:4 + + // 3. prohibit -> RFC3454:5 + for (int i = 0; i < str.length(); i++) { + String codePoint = codePointAt(str, i); + if (prohibited.contains(codePoint)) { + throw new StringPrepViolationException(String.format("character '%s' prohibited!", codePoint)); + } + } + + // 4. check bidi -> RFC3454:6 + boolean containsRAndAlCat = false; + boolean containsLCat = false; + for (int i = 0; i < str.length() && NAND(containsRAndAlCat, containsLCat); i++) { + String codePoint = codePointAt(str, i); + containsRAndAlCat |= StringPrepConstants.D_1_CharactersWithBiDiPropertiesRorAl.contains(codePoint); + containsLCat |= StringPrepConstants.D_2_CharactersWithBiDiPropertyL.contains(codePoint); + } + if (containsRAndAlCat && containsLCat) { + throw new StringPrepViolationException("invalid bidi sequence"); + } + if (containsRAndAlCat) { + if (!StringPrepConstants.D_1_CharactersWithBiDiPropertiesRorAl.contains(codePointAt(str, 0)) + || !StringPrepConstants.D_1_CharactersWithBiDiPropertiesRorAl.contains(codePointAt(str, str + .length() - 1))) { + throw new StringPrepViolationException("invalid bidi sequence"); + } + } + + return str; + } + + /** + * Override this method and return a custom map of character mappings to + * alter the Stringprep behavior. + * + * @return a {...@link Map}<String, String> containing all character mappings + */ + protected Map<String, String> buildMapping() { + Map<String, String> mapping = new HashMap<String, String>(); + mapping.putAll(StringPrepConstants.B_1_CommonlyMappedtoNothing); + mapping.putAll(StringPrepConstants.B_2_MappingForCaseFoldingUsedWithKFC); + mapping.putAll(StringPrepConstants.B_3_MappingForCaseFoldingWithNoNormalization); + + return mapping; + } + + /** + * Override this method and return a custom set of prohibited characters to + * alter the Stringprep behavior. + * + * @return a {...@link Set}<String> containing all characters that are + * prohibited + */ + protected Set<String> buildProhibitedSet() { + Set<String> prohibited = new HashSet<String>(); + prohibited.addAll(StringPrepConstants.C_1_1_AsciiSpaceCharacters); + prohibited.addAll(StringPrepConstants.C_1_2_NonAsciiSpaceCharacters); + prohibited.addAll(StringPrepConstants.C_2_1_AsciiControlCharacters); + prohibited.addAll(StringPrepConstants.C_2_2_NonAsciiControlCharacters); + prohibited.addAll(StringPrepConstants.C_3_PrivateUse); + prohibited.addAll(StringPrepConstants.C_4_NonCharacterCodePoints); + prohibited.addAll(StringPrepConstants.C_5_SurrogateCodes); + prohibited.addAll(StringPrepConstants.C_6_InappropriateForPlainText); + prohibited.addAll(StringPrepConstants.C_7_InappropriateForCanonicalRepresentation); + prohibited.addAll(StringPrepConstants.C_8_ChangeDisplayPropertiesOrAreDeprecated); + prohibited.addAll(StringPrepConstants.C_9_TaggingCharacters); + return prohibited; + } + + private String codePointAt(String node, int i) { + int c = node.codePointAt(i); + return new String(Character.toChars(c)); + } + + private boolean NAND(boolean a, boolean b) { + return (!(a || b)) || (a ^ b); + } }
