From c1dc04896af6ba7f93a2f38edfda93ef0f3d2a02 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 04 Dec 2009 09:39:23 +0000
Subject: [PATCH] Remove support for schema attachments as it was not sufficient for implementing thread/schema local object caches.
---
/dev/null | 130 --------------------------
sdk/src/org/opends/sdk/schema/Schema.java | 148 -----------------------------
2 files changed, 0 insertions(+), 278 deletions(-)
diff --git a/sdk/src/org/opends/sdk/schema/Schema.java b/sdk/src/org/opends/sdk/schema/Schema.java
index 5c1a30f..b99fe16 100644
--- a/sdk/src/org/opends/sdk/schema/Schema.java
+++ b/sdk/src/org/opends/sdk/schema/Schema.java
@@ -61,8 +61,6 @@
{
private static class EmptyImpl implements Impl
{
- private final Map<SchemaLocal<?>, Object> attachments;
-
private final SchemaCompatOptions options;
@@ -70,28 +68,6 @@
private EmptyImpl()
{
this.options = SchemaCompatOptions.defaultOptions();
- this.attachments = new WeakHashMap<SchemaLocal<?>, Object>();
- }
-
-
-
- @SuppressWarnings("unchecked")
- public <T> T getAttachment(SchemaLocal<T> attachment)
- {
- T o;
- synchronized (attachments)
- {
- o = (T) attachments.get(attachment);
- if (o == null)
- {
- o = attachment.initialValue();
- if (o != null)
- {
- attachments.put(attachment, o);
- }
- }
- }
- return o;
}
@@ -378,39 +354,12 @@
{
return false;
}
-
-
-
- @SuppressWarnings("unchecked")
- public <T> T removeAttachment(SchemaLocal<T> attachment)
- {
- T o;
- synchronized (attachments)
- {
- o = (T) attachments.remove(attachment);
- }
- return o;
- }
-
-
-
- public <T> void setAttachment(SchemaLocal<T> attachment, T value)
- {
- synchronized (attachments)
- {
- attachments.put(attachment, value);
- }
- }
}
private static interface Impl
{
- <T> T getAttachment(SchemaLocal<T> attachment);
-
-
-
AttributeType getAttributeType(String name)
throws UnknownSchemaElementException;
@@ -563,14 +512,6 @@
boolean isStrict();
-
-
-
- <T> T removeAttachment(SchemaLocal<T> attachment);
-
-
-
- <T> void setAttachment(SchemaLocal<T> attachment, T value);
}
@@ -588,13 +529,6 @@
- public <T> T getAttachment(SchemaLocal<T> attachment)
- {
- return strictImpl.getAttachment(attachment);
- }
-
-
-
public AttributeType getAttributeType(String name)
throws UnknownSchemaElementException
{
@@ -881,28 +815,12 @@
{
return false;
}
-
-
-
- public <T> T removeAttachment(SchemaLocal<T> attachment)
- {
- return strictImpl.removeAttachment(attachment);
- }
-
-
-
- public <T> void setAttachment(SchemaLocal<T> attachment, T value)
- {
- strictImpl.setAttachment(attachment, value);
- }
}
private static class StrictImpl implements Impl
{
- private final Map<SchemaLocal<?>, Object> attachments;
-
private final Map<Integer, DITStructureRule> id2StructureRules;
private final Map<String, List<AttributeType>> name2AttributeTypes;
@@ -994,28 +912,6 @@
this.nameForm2StructureRules = Collections
.unmodifiableMap(nameForm2StructureRules);
this.options = options;
- attachments = new WeakHashMap<SchemaLocal<?>, Object>();
- }
-
-
-
- @SuppressWarnings("unchecked")
- public <T> T getAttachment(SchemaLocal<T> attachment)
- {
- T o;
- synchronized (attachments)
- {
- o = (T) attachments.get(attachment);
- if (o == null)
- {
- o = attachment.initialValue();
- if (o != null)
- {
- attachments.put(attachment, o);
- }
- }
- }
- return o;
}
@@ -1514,29 +1410,6 @@
{
return true;
}
-
-
-
- @SuppressWarnings("unchecked")
- public <T> T removeAttachment(SchemaLocal<T> attachment)
- {
- T o;
- synchronized (attachments)
- {
- o = (T) attachments.remove(attachment);
- }
- return o;
- }
-
-
-
- public <T> void setAttachment(SchemaLocal<T> attachment, T value)
- {
- synchronized (attachments)
- {
- attachments.put(attachment, value);
- }
- }
}
@@ -2503,29 +2376,8 @@
- <T> T getAttachment(SchemaLocal<T> attachment)
- {
- return impl.getAttachment(attachment);
- }
-
-
-
SchemaCompatOptions getSchemaCompatOptions()
{
return impl.getSchemaCompatOptions();
}
-
-
-
- <T> T removeAttachment(SchemaLocal<T> attachment)
- {
- return impl.removeAttachment(attachment);
- }
-
-
-
- <T> void setAttachment(SchemaLocal<T> attachment, T value)
- {
- impl.setAttachment(attachment, value);
- }
}
diff --git a/sdk/src/org/opends/sdk/schema/SchemaLocal.java b/sdk/src/org/opends/sdk/schema/SchemaLocal.java
deleted file mode 100644
index 748ea30..0000000
--- a/sdk/src/org/opends/sdk/schema/SchemaLocal.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE
- * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
- * add the following below this CDDL HEADER, with the fields enclosed
- * by brackets "[]" replaced with your own identifying information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2009 Sun Microsystems, Inc.
- */
-
-package org.opends.sdk.schema;
-
-
-
-/**
- * This class provides schema-local variables. These variables differ
- * from their normal counterparts in that each schema has its own
- * independently initialized copy of the variable. {@code SchemaLocal}
- * instances are typically private static fields in classes that wish to
- * associate state with a schema (e.g., a schema dependent cache).
- *
- * @param <T>
- * The type of the schema-local variable.
- */
-public class SchemaLocal<T>
-{
- /**
- * Creates a schema-local variable.
- */
- public SchemaLocal()
- {
- // Nothing to do.
- }
-
-
-
- /**
- * Returns the value in the provided schema's copy of this
- * schema-local variable. If the variable has no value associated with
- * the schema, it is first initialized to the value returned by an
- * invocation of the {@link #initialValue} method.
- *
- * @param schema
- * The schema whose copy of the schema-local variable is
- * being requested.
- * @return The schema-local value.
- */
- public final T get(Schema schema)
- {
- // Schema calls back to initialValue() if this is the first time.
- return schema.getAttachment(this);
- }
-
-
-
- /**
- * Removes the provided schema's value for this schema-local variable.
- * If this schema-local variable is subsequently read, its value will
- * be reinitialized by invoking its {@link #initialValue} method,
- * unless its value is set in the interim. This may result in multiple
- * invocations of the {@link #initialValue} method.
- *
- * @param schema
- * The schema whose copy of the schema-local variable is
- * being removed.
- */
- public final void remove(Schema schema)
- {
- schema.removeAttachment(this);
- }
-
-
-
- /**
- * Sets the provided schema's copy of this schema-local variable to
- * the specified value.
- *
- * @param schema
- * The schema whose copy of the schema-local variable is
- * being set.
- * @param value
- * The schema-local value.
- */
- public final void set(Schema schema, T value)
- {
- schema.setAttachment(this, value);
- }
-
-
-
- /**
- * Returns the provided schema's "initial value" for this schema-local
- * variable. This method will be invoked the first time the variable
- * is accessed with the {@link #get} method for each schema, unless
- * the {@link #set} method has been previously invoked, in which case
- * the {@link #initialValue} method will not be invoked.
- * <p>
- * Normally, this method is invoked at most once per schema, but it
- * may be invoked again in case of subsequent invocations of
- * {@link #remove} followed by {@link #get}. This implementation
- * simply returns {@code null}; if the programmer desires schema-local
- * variables to have an initial value other than {@code null}, {@code
- * SchemaLocal} must be subclassed, and this method overridden.
- * Typically, an anonymous inner class will be used.
- *
- * @return The initial value for this schema-local.
- */
- protected T initialValue()
- {
- // Default implementation.
- return null;
- }
-}
--
Gitblit v1.10.0